File: | gromacs/fileio/tpxio.c |
Location: | line 2901, column 13 |
Description: | Value stored to 'ip' is never read |
1 | /* |
2 | * This file is part of the GROMACS molecular simulation package. |
3 | * |
4 | * Copyright (c) 1991-2000, University of Groningen, The Netherlands. |
5 | * Copyright (c) 2001-2004, The GROMACS development team. |
6 | * Copyright (c) 2013,2014, by the GROMACS development team, led by |
7 | * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, |
8 | * and including many others, as listed in the AUTHORS file in the |
9 | * top-level source directory and at http://www.gromacs.org. |
10 | * |
11 | * GROMACS is free software; you can redistribute it and/or |
12 | * modify it under the terms of the GNU Lesser General Public License |
13 | * as published by the Free Software Foundation; either version 2.1 |
14 | * of the License, or (at your option) any later version. |
15 | * |
16 | * GROMACS is distributed in the hope that it will be useful, |
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
19 | * Lesser General Public License for more details. |
20 | * |
21 | * You should have received a copy of the GNU Lesser General Public |
22 | * License along with GROMACS; if not, see |
23 | * http://www.gnu.org/licenses, or write to the Free Software Foundation, |
24 | * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
25 | * |
26 | * If you want to redistribute modifications to GROMACS, please |
27 | * consider that scientific software is very special. Version |
28 | * control is crucial - bugs must be traceable. We will be happy to |
29 | * consider code for inclusion in the official distribution, but |
30 | * derived work must not be called official GROMACS. Details are found |
31 | * in the README & COPYING files - if they are missing, get the |
32 | * official version at http://www.gromacs.org. |
33 | * |
34 | * To help us fund GROMACS development, we humbly ask that you cite |
35 | * the research papers on the package. Check out http://www.gromacs.org. |
36 | */ |
37 | #ifdef HAVE_CONFIG_H1 |
38 | #include <config.h> |
39 | #endif |
40 | |
41 | /* This file is completely threadsafe - keep it that way! */ |
42 | |
43 | #include <stdlib.h> |
44 | #include <string.h> |
45 | |
46 | #include "gromacs/utility/smalloc.h" |
47 | #include "gromacs/utility/cstringutil.h" |
48 | #include "gromacs/utility/fatalerror.h" |
49 | #include "macros.h" |
50 | #include "names.h" |
51 | #include "symtab.h" |
52 | #include "gromacs/utility/futil.h" |
53 | #include "filenm.h" |
54 | #include "gmxfio.h" |
55 | #include "tpxio.h" |
56 | #include "txtdump.h" |
57 | #include "confio.h" |
58 | #include "atomprop.h" |
59 | #include "copyrite.h" |
60 | #include "gromacs/math/vec.h" |
61 | #include "mtop_util.h" |
62 | |
63 | #define TPX_TAG_RELEASE"release" "release" |
64 | |
65 | /*! \brief Tag string for the file format written to run input files |
66 | * written by this version of the code. |
67 | * |
68 | * Change this if you want to change the run input format in a feature |
69 | * branch. This ensures that there will not be different run input |
70 | * formats around which cannot be distinguished, while not causing |
71 | * problems rebasing the feature branch onto upstream changes. When |
72 | * merging with mainstream GROMACS, set this tag string back to |
73 | * TPX_TAG_RELEASE, and instead add an element to tpxv and set |
74 | * tpx_version to that. |
75 | */ |
76 | static const char *tpx_tag = TPX_TAG_RELEASE"release"; |
77 | |
78 | /*! \brief Enum of values that describe the contents of a tpr file |
79 | * whose format matches a version number |
80 | * |
81 | * The enum helps the code be more self-documenting and ensure merges |
82 | * do not silently resolve when two patches make the same bump. When |
83 | * adding new functionality, add a new element to the end of this |
84 | * enumeration, change the definition of tpx_version, and write code |
85 | * below that does the right thing according to the value of |
86 | * file_version. */ |
87 | enum tpxv { |
88 | tpxv_ComputationalElectrophysiology = 96, /**< support for ion/water position swaps (computational electrophysiology) */ |
89 | tpxv_Use64BitRandomSeed, /**< change ld_seed from int to gmx_int64_t */ |
90 | tpxv_RestrictedBendingAndCombinedAngleTorsionPotentials, /**< potentials for supporting coarse-grained force fields */ |
91 | tpxv_InteractiveMolecularDynamics /**< interactive molecular dynamics (IMD) */ |
92 | }; |
93 | |
94 | /*! \brief Version number of the file format written to run input |
95 | * files by this version of the code. |
96 | * |
97 | * The tpx_version number should be increased whenever the file format |
98 | * in the main development branch changes, generally to the highest |
99 | * value present in tpxv. Backward compatibility for reading old run |
100 | * input files is maintained by checking this version number against |
101 | * that of the file and then using the correct code path. |
102 | * |
103 | * When developing a feature branch that needs to change the run input |
104 | * file format, change tpx_tag instead. */ |
105 | static const int tpx_version = tpxv_InteractiveMolecularDynamics; |
106 | |
107 | |
108 | /* This number should only be increased when you edit the TOPOLOGY section |
109 | * or the HEADER of the tpx format. |
110 | * This way we can maintain forward compatibility too for all analysis tools |
111 | * and/or external programs that only need to know the atom/residue names, |
112 | * charges, and bond connectivity. |
113 | * |
114 | * It first appeared in tpx version 26, when I also moved the inputrecord |
115 | * to the end of the tpx file, so we can just skip it if we only |
116 | * want the topology. |
117 | * |
118 | * In particular, it must be increased when adding new elements to |
119 | * ftupd, so that old code can read new .tpr files. |
120 | */ |
121 | static const int tpx_generation = 26; |
122 | |
123 | /* This number should be the most recent backwards incompatible version |
124 | * I.e., if this number is 9, we cannot read tpx version 9 with this code. |
125 | */ |
126 | static const int tpx_incompatible_version = 9; |
127 | |
128 | |
129 | |
130 | /* Struct used to maintain tpx compatibility when function types are added */ |
131 | typedef struct { |
132 | int fvnr; /* file version number in which the function type first appeared */ |
133 | int ftype; /* function type */ |
134 | } t_ftupd; |
135 | |
136 | /* |
137 | * The entries should be ordered in: |
138 | * 1. ascending file version number |
139 | * 2. ascending function type number |
140 | */ |
141 | /*static const t_ftupd ftupd[] = { |
142 | { 20, F_CUBICBONDS }, |
143 | { 20, F_CONNBONDS }, |
144 | { 20, F_HARMONIC }, |
145 | { 20, F_EQM, }, |
146 | { 22, F_DISRESVIOL }, |
147 | { 22, F_ORIRES }, |
148 | { 22, F_ORIRESDEV }, |
149 | { 26, F_FOURDIHS }, |
150 | { 26, F_PIDIHS }, |
151 | { 26, F_DIHRES }, |
152 | { 26, F_DIHRESVIOL }, |
153 | { 30, F_CROSS_BOND_BONDS }, |
154 | { 30, F_CROSS_BOND_ANGLES }, |
155 | { 30, F_UREY_BRADLEY }, |
156 | { 30, F_POLARIZATION }, |
157 | { 54, F_DHDL_CON }, |
158 | };*/ |
159 | /* |
160 | * The entries should be ordered in: |
161 | * 1. ascending function type number |
162 | * 2. ascending file version number |
163 | */ |
164 | /* question; what is the purpose of the commented code above? */ |
165 | static const t_ftupd ftupd[] = { |
166 | { 20, F_CUBICBONDS }, |
167 | { 20, F_CONNBONDS }, |
168 | { 20, F_HARMONIC }, |
169 | { 34, F_FENEBONDS }, |
170 | { 43, F_TABBONDS }, |
171 | { 43, F_TABBONDSNC }, |
172 | { 70, F_RESTRBONDS }, |
173 | { tpxv_RestrictedBendingAndCombinedAngleTorsionPotentials, F_RESTRANGLES }, |
174 | { 76, F_LINEAR_ANGLES }, |
175 | { 30, F_CROSS_BOND_BONDS }, |
176 | { 30, F_CROSS_BOND_ANGLES }, |
177 | { 30, F_UREY_BRADLEY }, |
178 | { 34, F_QUARTIC_ANGLES }, |
179 | { 43, F_TABANGLES }, |
180 | { tpxv_RestrictedBendingAndCombinedAngleTorsionPotentials, F_RESTRDIHS }, |
181 | { tpxv_RestrictedBendingAndCombinedAngleTorsionPotentials, F_CBTDIHS }, |
182 | { 26, F_FOURDIHS }, |
183 | { 26, F_PIDIHS }, |
184 | { 43, F_TABDIHS }, |
185 | { 65, F_CMAP }, |
186 | { 60, F_GB12 }, |
187 | { 61, F_GB13 }, |
188 | { 61, F_GB14 }, |
189 | { 72, F_GBPOL }, |
190 | { 72, F_NPSOLVATION }, |
191 | { 41, F_LJC14_Q }, |
192 | { 41, F_LJC_PAIRS_NB }, |
193 | { 32, F_BHAM_LR }, |
194 | { 32, F_RF_EXCL }, |
195 | { 32, F_COUL_RECIP }, |
196 | { 93, F_LJ_RECIP }, |
197 | { 46, F_DPD }, |
198 | { 30, F_POLARIZATION }, |
199 | { 36, F_THOLE_POL }, |
200 | { 90, F_FBPOSRES }, |
201 | { 22, F_DISRESVIOL }, |
202 | { 22, F_ORIRES }, |
203 | { 22, F_ORIRESDEV }, |
204 | { 26, F_DIHRES }, |
205 | { 26, F_DIHRESVIOL }, |
206 | { 49, F_VSITE4FDN }, |
207 | { 50, F_VSITEN }, |
208 | { 46, F_COM_PULL }, |
209 | { 20, F_EQM }, |
210 | { 46, F_ECONSERVED }, |
211 | { 69, F_VTEMP_NOLONGERUSED}, |
212 | { 66, F_PDISPCORR }, |
213 | { 54, F_DVDL_CONSTR }, |
214 | { 76, F_ANHARM_POL }, |
215 | { 79, F_DVDL_COUL }, |
216 | { 79, F_DVDL_VDW, }, |
217 | { 79, F_DVDL_BONDED, }, |
218 | { 79, F_DVDL_RESTRAINT }, |
219 | { 79, F_DVDL_TEMPERATURE }, |
220 | }; |
221 | #define NFTUPD((int)(sizeof(ftupd)/sizeof((ftupd)[0]))) asize(ftupd)((int)(sizeof(ftupd)/sizeof((ftupd)[0]))) |
222 | |
223 | /* Needed for backward compatibility */ |
224 | #define MAXNODES256 256 |
225 | |
226 | static void _do_section(t_fileio *fio, int key, gmx_bool bRead, const char *src, |
227 | int line) |
228 | { |
229 | char buf[STRLEN4096]; |
230 | gmx_bool bDbg; |
231 | |
232 | if (gmx_fio_getftp(fio) == efTPA) |
233 | { |
234 | if (!bRead) |
235 | { |
236 | gmx_fio_write_string(fio, itemstr[key])gmx_fio_writee_string(fio, itemstr[key], ("itemstr[key]"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 236); |
237 | bDbg = gmx_fio_getdebug(fio); |
238 | gmx_fio_setdebug(fio, FALSE0); |
239 | gmx_fio_write_string(fio, comment_str[key])gmx_fio_writee_string(fio, comment_str[key], ("comment_str[key]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 239); |
240 | gmx_fio_setdebug(fio, bDbg); |
241 | } |
242 | else |
243 | { |
244 | if (gmx_fio_getdebug(fio)) |
245 | { |
246 | fprintf(stderrstderr, "Looking for section %s (%s, %d)", |
247 | itemstr[key], src, line); |
248 | } |
249 | |
250 | do |
251 | { |
252 | gmx_fio_do_string(fio, buf)gmx_fio_doe_string(fio, buf, ("buf"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 252); |
253 | } |
254 | while ((gmx_strcasecmp(buf, itemstr[key]) != 0)); |
255 | |
256 | if (gmx_strcasecmp(buf, itemstr[key]) != 0) |
257 | { |
258 | gmx_fatal(FARGS0, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 258, "\nCould not find section heading %s", itemstr[key]); |
259 | } |
260 | else if (gmx_fio_getdebug(fio)) |
261 | { |
262 | fprintf(stderrstderr, " and found it\n"); |
263 | } |
264 | } |
265 | } |
266 | } |
267 | |
268 | #define do_section(fio, key, bRead)_do_section(fio, key, bRead, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 268) _do_section(fio, key, bRead, __FILE__"/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", __LINE__268) |
269 | |
270 | /************************************************************** |
271 | * |
272 | * Now the higer level routines that do io of the structures and arrays |
273 | * |
274 | **************************************************************/ |
275 | static void do_pullgrp_tpx_pre95(t_fileio *fio, |
276 | t_pull_group *pgrp, |
277 | t_pull_coord *pcrd, |
278 | gmx_bool bRead, |
279 | int file_version) |
280 | { |
281 | int i; |
282 | rvec tmp; |
283 | |
284 | gmx_fio_do_int(fio, pgrp->nat)gmx_fio_doe_int(fio, &pgrp->nat, ("pgrp->nat"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 284); |
285 | if (bRead) |
286 | { |
287 | snew(pgrp->ind, pgrp->nat)(pgrp->ind) = save_calloc("pgrp->ind", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 287, (pgrp->nat), sizeof(*(pgrp->ind))); |
288 | } |
289 | gmx_fio_ndo_int(fio, pgrp->ind, pgrp->nat)gmx_fio_ndoe_int(fio, pgrp->ind, pgrp->nat, ("pgrp->ind" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 289); |
290 | gmx_fio_do_int(fio, pgrp->nweight)gmx_fio_doe_int(fio, &pgrp->nweight, ("pgrp->nweight" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 290); |
291 | if (bRead) |
292 | { |
293 | snew(pgrp->weight, pgrp->nweight)(pgrp->weight) = save_calloc("pgrp->weight", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 293, (pgrp->nweight), sizeof(*(pgrp->weight))); |
294 | } |
295 | gmx_fio_ndo_real(fio, pgrp->weight, pgrp->nweight)gmx_fio_ndoe_real(fio, pgrp->weight, pgrp->nweight, ("pgrp->weight" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 295); |
296 | gmx_fio_do_int(fio, pgrp->pbcatom)gmx_fio_doe_int(fio, &pgrp->pbcatom, ("pgrp->pbcatom" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 296); |
297 | gmx_fio_do_rvec(fio, pcrd->vec)gmx_fio_doe_rvec(fio, &pcrd->vec, ("pcrd->vec"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 297); |
298 | clear_rvec(pcrd->origin); |
299 | gmx_fio_do_rvec(fio, tmp)gmx_fio_doe_rvec(fio, &tmp, ("tmp"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 299); |
300 | pcrd->init = tmp[0]; |
301 | gmx_fio_do_real(fio, pcrd->rate)gmx_fio_doe_real(fio, &pcrd->rate, ("pcrd->rate"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 301); |
302 | gmx_fio_do_real(fio, pcrd->k)gmx_fio_doe_real(fio, &pcrd->k, ("pcrd->k"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 302); |
303 | if (file_version >= 56) |
304 | { |
305 | gmx_fio_do_real(fio, pcrd->kB)gmx_fio_doe_real(fio, &pcrd->kB, ("pcrd->kB"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 305); |
306 | } |
307 | else |
308 | { |
309 | pcrd->kB = pcrd->k; |
310 | } |
311 | } |
312 | |
313 | static void do_pull_group(t_fileio *fio, t_pull_group *pgrp, gmx_bool bRead) |
314 | { |
315 | int i; |
316 | |
317 | gmx_fio_do_int(fio, pgrp->nat)gmx_fio_doe_int(fio, &pgrp->nat, ("pgrp->nat"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 317); |
318 | if (bRead) |
319 | { |
320 | snew(pgrp->ind, pgrp->nat)(pgrp->ind) = save_calloc("pgrp->ind", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 320, (pgrp->nat), sizeof(*(pgrp->ind))); |
321 | } |
322 | gmx_fio_ndo_int(fio, pgrp->ind, pgrp->nat)gmx_fio_ndoe_int(fio, pgrp->ind, pgrp->nat, ("pgrp->ind" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 322); |
323 | gmx_fio_do_int(fio, pgrp->nweight)gmx_fio_doe_int(fio, &pgrp->nweight, ("pgrp->nweight" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 323); |
324 | if (bRead) |
325 | { |
326 | snew(pgrp->weight, pgrp->nweight)(pgrp->weight) = save_calloc("pgrp->weight", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 326, (pgrp->nweight), sizeof(*(pgrp->weight))); |
327 | } |
328 | gmx_fio_ndo_real(fio, pgrp->weight, pgrp->nweight)gmx_fio_ndoe_real(fio, pgrp->weight, pgrp->nweight, ("pgrp->weight" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 328); |
329 | gmx_fio_do_int(fio, pgrp->pbcatom)gmx_fio_doe_int(fio, &pgrp->pbcatom, ("pgrp->pbcatom" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 329); |
330 | } |
331 | |
332 | static void do_pull_coord(t_fileio *fio, t_pull_coord *pcrd) |
333 | { |
334 | int i; |
335 | |
336 | gmx_fio_do_int(fio, pcrd->group[0])gmx_fio_doe_int(fio, &pcrd->group[0], ("pcrd->group[0]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 336); |
337 | gmx_fio_do_int(fio, pcrd->group[1])gmx_fio_doe_int(fio, &pcrd->group[1], ("pcrd->group[1]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 337); |
338 | gmx_fio_do_rvec(fio, pcrd->origin)gmx_fio_doe_rvec(fio, &pcrd->origin, ("pcrd->origin" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 338); |
339 | gmx_fio_do_rvec(fio, pcrd->vec)gmx_fio_doe_rvec(fio, &pcrd->vec, ("pcrd->vec"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 339); |
340 | gmx_fio_do_real(fio, pcrd->init)gmx_fio_doe_real(fio, &pcrd->init, ("pcrd->init"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 340); |
341 | gmx_fio_do_real(fio, pcrd->rate)gmx_fio_doe_real(fio, &pcrd->rate, ("pcrd->rate"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 341); |
342 | gmx_fio_do_real(fio, pcrd->k)gmx_fio_doe_real(fio, &pcrd->k, ("pcrd->k"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 342); |
343 | gmx_fio_do_real(fio, pcrd->kB)gmx_fio_doe_real(fio, &pcrd->kB, ("pcrd->kB"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 343); |
344 | } |
345 | |
346 | static void do_expandedvals(t_fileio *fio, t_expanded *expand, t_lambda *fepvals, gmx_bool bRead, int file_version) |
347 | { |
348 | /* i is used in the ndo_double macro*/ |
349 | int i; |
350 | real fv; |
351 | real rdum; |
352 | int n_lambda = fepvals->n_lambda; |
353 | |
354 | /* reset the lambda calculation window */ |
355 | fepvals->lambda_start_n = 0; |
356 | fepvals->lambda_stop_n = n_lambda; |
357 | if (file_version >= 79) |
358 | { |
359 | if (n_lambda > 0) |
360 | { |
361 | if (bRead) |
362 | { |
363 | snew(expand->init_lambda_weights, n_lambda)(expand->init_lambda_weights) = save_calloc("expand->init_lambda_weights" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 363 , (n_lambda), sizeof(*(expand->init_lambda_weights))); |
364 | } |
365 | gmx_fio_ndo_real(fio, expand->init_lambda_weights, n_lambda)gmx_fio_ndoe_real(fio, expand->init_lambda_weights, n_lambda , ("expand->init_lambda_weights"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 365); |
366 | gmx_fio_do_gmx_bool(fio, expand->bInit_weights)gmx_fio_doe_gmx_bool(fio, &expand->bInit_weights, ("expand->bInit_weights" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 366); |
367 | } |
368 | |
369 | gmx_fio_do_int(fio, expand->nstexpanded)gmx_fio_doe_int(fio, &expand->nstexpanded, ("expand->nstexpanded" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 369); |
370 | gmx_fio_do_int(fio, expand->elmcmove)gmx_fio_doe_int(fio, &expand->elmcmove, ("expand->elmcmove" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 370); |
371 | gmx_fio_do_int(fio, expand->elamstats)gmx_fio_doe_int(fio, &expand->elamstats, ("expand->elamstats" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 371); |
372 | gmx_fio_do_int(fio, expand->lmc_repeats)gmx_fio_doe_int(fio, &expand->lmc_repeats, ("expand->lmc_repeats" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 372); |
373 | gmx_fio_do_int(fio, expand->gibbsdeltalam)gmx_fio_doe_int(fio, &expand->gibbsdeltalam, ("expand->gibbsdeltalam" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 373); |
374 | gmx_fio_do_int(fio, expand->lmc_forced_nstart)gmx_fio_doe_int(fio, &expand->lmc_forced_nstart, ("expand->lmc_forced_nstart" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 374); |
375 | gmx_fio_do_int(fio, expand->lmc_seed)gmx_fio_doe_int(fio, &expand->lmc_seed, ("expand->lmc_seed" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 375); |
376 | gmx_fio_do_real(fio, expand->mc_temp)gmx_fio_doe_real(fio, &expand->mc_temp, ("expand->mc_temp" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 376); |
377 | gmx_fio_do_int(fio, expand->bSymmetrizedTMatrix)gmx_fio_doe_int(fio, &expand->bSymmetrizedTMatrix, ("expand->bSymmetrizedTMatrix" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 377); |
378 | gmx_fio_do_int(fio, expand->nstTij)gmx_fio_doe_int(fio, &expand->nstTij, ("expand->nstTij" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 378); |
379 | gmx_fio_do_int(fio, expand->minvarmin)gmx_fio_doe_int(fio, &expand->minvarmin, ("expand->minvarmin" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 379); |
380 | gmx_fio_do_int(fio, expand->c_range)gmx_fio_doe_int(fio, &expand->c_range, ("expand->c_range" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 380); |
381 | gmx_fio_do_real(fio, expand->wl_scale)gmx_fio_doe_real(fio, &expand->wl_scale, ("expand->wl_scale" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 381); |
382 | gmx_fio_do_real(fio, expand->wl_ratio)gmx_fio_doe_real(fio, &expand->wl_ratio, ("expand->wl_ratio" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 382); |
383 | gmx_fio_do_real(fio, expand->init_wl_delta)gmx_fio_doe_real(fio, &expand->init_wl_delta, ("expand->init_wl_delta" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 383); |
384 | gmx_fio_do_gmx_bool(fio, expand->bWLoneovert)gmx_fio_doe_gmx_bool(fio, &expand->bWLoneovert, ("expand->bWLoneovert" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 384); |
385 | gmx_fio_do_int(fio, expand->elmceq)gmx_fio_doe_int(fio, &expand->elmceq, ("expand->elmceq" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 385); |
386 | gmx_fio_do_int(fio, expand->equil_steps)gmx_fio_doe_int(fio, &expand->equil_steps, ("expand->equil_steps" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 386); |
387 | gmx_fio_do_int(fio, expand->equil_samples)gmx_fio_doe_int(fio, &expand->equil_samples, ("expand->equil_samples" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 387); |
388 | gmx_fio_do_int(fio, expand->equil_n_at_lam)gmx_fio_doe_int(fio, &expand->equil_n_at_lam, ("expand->equil_n_at_lam" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 388); |
389 | gmx_fio_do_real(fio, expand->equil_wl_delta)gmx_fio_doe_real(fio, &expand->equil_wl_delta, ("expand->equil_wl_delta" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 389); |
390 | gmx_fio_do_real(fio, expand->equil_ratio)gmx_fio_doe_real(fio, &expand->equil_ratio, ("expand->equil_ratio" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 390); |
391 | } |
392 | } |
393 | |
394 | static void do_simtempvals(t_fileio *fio, t_simtemp *simtemp, int n_lambda, gmx_bool bRead, |
395 | int file_version) |
396 | { |
397 | if (file_version >= 79) |
398 | { |
399 | gmx_fio_do_int(fio, simtemp->eSimTempScale)gmx_fio_doe_int(fio, &simtemp->eSimTempScale, ("simtemp->eSimTempScale" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 399); |
400 | gmx_fio_do_real(fio, simtemp->simtemp_high)gmx_fio_doe_real(fio, &simtemp->simtemp_high, ("simtemp->simtemp_high" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 400); |
401 | gmx_fio_do_real(fio, simtemp->simtemp_low)gmx_fio_doe_real(fio, &simtemp->simtemp_low, ("simtemp->simtemp_low" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 401); |
402 | if (n_lambda > 0) |
403 | { |
404 | if (bRead) |
405 | { |
406 | snew(simtemp->temperatures, n_lambda)(simtemp->temperatures) = save_calloc("simtemp->temperatures" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 406 , (n_lambda), sizeof(*(simtemp->temperatures))); |
407 | } |
408 | gmx_fio_ndo_real(fio, simtemp->temperatures, n_lambda)gmx_fio_ndoe_real(fio, simtemp->temperatures, n_lambda, ("simtemp->temperatures" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 408); |
409 | } |
410 | } |
411 | } |
412 | |
413 | static void do_imd(t_fileio *fio, t_IMD *imd, gmx_bool bRead) |
414 | { |
415 | gmx_fio_do_int(fio, imd->nat)gmx_fio_doe_int(fio, &imd->nat, ("imd->nat"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 415); |
416 | if (bRead) |
417 | { |
418 | snew(imd->ind, imd->nat)(imd->ind) = save_calloc("imd->ind", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 418, (imd->nat), sizeof(*(imd->ind))); |
419 | } |
420 | gmx_fio_ndo_int(fio, imd->ind, imd->nat)gmx_fio_ndoe_int(fio, imd->ind, imd->nat, ("imd->ind" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 420); |
421 | } |
422 | |
423 | static void do_fepvals(t_fileio *fio, t_lambda *fepvals, gmx_bool bRead, int file_version) |
424 | { |
425 | /* i is defined in the ndo_double macro; use g to iterate. */ |
426 | int i, g; |
427 | real fv; |
428 | real rdum; |
429 | |
430 | /* free energy values */ |
431 | |
432 | if (file_version >= 79) |
433 | { |
434 | gmx_fio_do_int(fio, fepvals->init_fep_state)gmx_fio_doe_int(fio, &fepvals->init_fep_state, ("fepvals->init_fep_state" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 434); |
435 | gmx_fio_do_double(fio, fepvals->init_lambda)gmx_fio_doe_double(fio, &fepvals->init_lambda, ("fepvals->init_lambda" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 435); |
436 | gmx_fio_do_double(fio, fepvals->delta_lambda)gmx_fio_doe_double(fio, &fepvals->delta_lambda, ("fepvals->delta_lambda" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 436); |
437 | } |
438 | else if (file_version >= 59) |
439 | { |
440 | gmx_fio_do_double(fio, fepvals->init_lambda)gmx_fio_doe_double(fio, &fepvals->init_lambda, ("fepvals->init_lambda" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 440); |
441 | gmx_fio_do_double(fio, fepvals->delta_lambda)gmx_fio_doe_double(fio, &fepvals->delta_lambda, ("fepvals->delta_lambda" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 441); |
442 | } |
443 | else |
444 | { |
445 | gmx_fio_do_real(fio, rdum)gmx_fio_doe_real(fio, &rdum, ("rdum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 445); |
446 | fepvals->init_lambda = rdum; |
447 | gmx_fio_do_real(fio, rdum)gmx_fio_doe_real(fio, &rdum, ("rdum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 447); |
448 | fepvals->delta_lambda = rdum; |
449 | } |
450 | if (file_version >= 79) |
451 | { |
452 | gmx_fio_do_int(fio, fepvals->n_lambda)gmx_fio_doe_int(fio, &fepvals->n_lambda, ("fepvals->n_lambda" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 452); |
453 | if (bRead) |
454 | { |
455 | snew(fepvals->all_lambda, efptNR)(fepvals->all_lambda) = save_calloc("fepvals->all_lambda" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 455 , (efptNR), sizeof(*(fepvals->all_lambda))); |
456 | } |
457 | for (g = 0; g < efptNR; g++) |
458 | { |
459 | if (fepvals->n_lambda > 0) |
460 | { |
461 | if (bRead) |
462 | { |
463 | snew(fepvals->all_lambda[g], fepvals->n_lambda)(fepvals->all_lambda[g]) = save_calloc("fepvals->all_lambda[g]" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 463 , (fepvals->n_lambda), sizeof(*(fepvals->all_lambda[g]) )); |
464 | } |
465 | gmx_fio_ndo_double(fio, fepvals->all_lambda[g], fepvals->n_lambda)gmx_fio_ndoe_double(fio, fepvals->all_lambda[g], fepvals-> n_lambda, ("fepvals->all_lambda[g]"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 465); |
466 | gmx_fio_ndo_int(fio, fepvals->separate_dvdl, efptNR)gmx_fio_ndoe_int(fio, fepvals->separate_dvdl, efptNR, ("fepvals->separate_dvdl" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 466); |
467 | } |
468 | else if (fepvals->init_lambda >= 0) |
469 | { |
470 | fepvals->separate_dvdl[efptFEP] = TRUE1; |
471 | } |
472 | } |
473 | } |
474 | else if (file_version >= 64) |
475 | { |
476 | gmx_fio_do_int(fio, fepvals->n_lambda)gmx_fio_doe_int(fio, &fepvals->n_lambda, ("fepvals->n_lambda" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 476); |
477 | if (bRead) |
478 | { |
479 | int g; |
480 | |
481 | snew(fepvals->all_lambda, efptNR)(fepvals->all_lambda) = save_calloc("fepvals->all_lambda" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 481 , (efptNR), sizeof(*(fepvals->all_lambda))); |
482 | /* still allocate the all_lambda array's contents. */ |
483 | for (g = 0; g < efptNR; g++) |
484 | { |
485 | if (fepvals->n_lambda > 0) |
486 | { |
487 | snew(fepvals->all_lambda[g], fepvals->n_lambda)(fepvals->all_lambda[g]) = save_calloc("fepvals->all_lambda[g]" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 487 , (fepvals->n_lambda), sizeof(*(fepvals->all_lambda[g]) )); |
488 | } |
489 | } |
490 | } |
491 | gmx_fio_ndo_double(fio, fepvals->all_lambda[efptFEP],gmx_fio_ndoe_double(fio, fepvals->all_lambda[efptFEP], fepvals ->n_lambda, ("fepvals->all_lambda[efptFEP]"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 492) |
492 | fepvals->n_lambda)gmx_fio_ndoe_double(fio, fepvals->all_lambda[efptFEP], fepvals ->n_lambda, ("fepvals->all_lambda[efptFEP]"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 492); |
493 | if (fepvals->init_lambda >= 0) |
494 | { |
495 | int g, h; |
496 | |
497 | fepvals->separate_dvdl[efptFEP] = TRUE1; |
498 | |
499 | if (bRead) |
500 | { |
501 | /* copy the contents of the efptFEP lambda component to all |
502 | the other components */ |
503 | for (g = 0; g < efptNR; g++) |
504 | { |
505 | for (h = 0; h < fepvals->n_lambda; h++) |
506 | { |
507 | if (g != efptFEP) |
508 | { |
509 | fepvals->all_lambda[g][h] = |
510 | fepvals->all_lambda[efptFEP][h]; |
511 | } |
512 | } |
513 | } |
514 | } |
515 | } |
516 | } |
517 | else |
518 | { |
519 | fepvals->n_lambda = 0; |
520 | fepvals->all_lambda = NULL((void*)0); |
521 | if (fepvals->init_lambda >= 0) |
522 | { |
523 | fepvals->separate_dvdl[efptFEP] = TRUE1; |
524 | } |
525 | } |
526 | if (file_version >= 13) |
527 | { |
528 | gmx_fio_do_real(fio, fepvals->sc_alpha)gmx_fio_doe_real(fio, &fepvals->sc_alpha, ("fepvals->sc_alpha" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 528); |
529 | } |
530 | else |
531 | { |
532 | fepvals->sc_alpha = 0; |
533 | } |
534 | if (file_version >= 38) |
535 | { |
536 | gmx_fio_do_int(fio, fepvals->sc_power)gmx_fio_doe_int(fio, &fepvals->sc_power, ("fepvals->sc_power" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 536); |
537 | } |
538 | else |
539 | { |
540 | fepvals->sc_power = 2; |
541 | } |
542 | if (file_version >= 79) |
543 | { |
544 | gmx_fio_do_real(fio, fepvals->sc_r_power)gmx_fio_doe_real(fio, &fepvals->sc_r_power, ("fepvals->sc_r_power" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 544); |
545 | } |
546 | else |
547 | { |
548 | fepvals->sc_r_power = 6.0; |
549 | } |
550 | if (file_version >= 15) |
551 | { |
552 | gmx_fio_do_real(fio, fepvals->sc_sigma)gmx_fio_doe_real(fio, &fepvals->sc_sigma, ("fepvals->sc_sigma" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 552); |
553 | } |
554 | else |
555 | { |
556 | fepvals->sc_sigma = 0.3; |
557 | } |
558 | if (bRead) |
559 | { |
560 | if (file_version >= 71) |
561 | { |
562 | fepvals->sc_sigma_min = fepvals->sc_sigma; |
563 | } |
564 | else |
565 | { |
566 | fepvals->sc_sigma_min = 0; |
567 | } |
568 | } |
569 | if (file_version >= 79) |
570 | { |
571 | gmx_fio_do_int(fio, fepvals->bScCoul)gmx_fio_doe_int(fio, &fepvals->bScCoul, ("fepvals->bScCoul" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 571); |
572 | } |
573 | else |
574 | { |
575 | fepvals->bScCoul = TRUE1; |
576 | } |
577 | if (file_version >= 64) |
578 | { |
579 | gmx_fio_do_int(fio, fepvals->nstdhdl)gmx_fio_doe_int(fio, &fepvals->nstdhdl, ("fepvals->nstdhdl" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 579); |
580 | } |
581 | else |
582 | { |
583 | fepvals->nstdhdl = 1; |
584 | } |
585 | |
586 | if (file_version >= 73) |
587 | { |
588 | gmx_fio_do_int(fio, fepvals->separate_dhdl_file)gmx_fio_doe_int(fio, &fepvals->separate_dhdl_file, ("fepvals->separate_dhdl_file" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 588); |
589 | gmx_fio_do_int(fio, fepvals->dhdl_derivatives)gmx_fio_doe_int(fio, &fepvals->dhdl_derivatives, ("fepvals->dhdl_derivatives" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 589); |
590 | } |
591 | else |
592 | { |
593 | fepvals->separate_dhdl_file = esepdhdlfileYES; |
594 | fepvals->dhdl_derivatives = edhdlderivativesYES; |
595 | } |
596 | if (file_version >= 71) |
597 | { |
598 | gmx_fio_do_int(fio, fepvals->dh_hist_size)gmx_fio_doe_int(fio, &fepvals->dh_hist_size, ("fepvals->dh_hist_size" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 598); |
599 | gmx_fio_do_double(fio, fepvals->dh_hist_spacing)gmx_fio_doe_double(fio, &fepvals->dh_hist_spacing, ("fepvals->dh_hist_spacing" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 599); |
600 | } |
601 | else |
602 | { |
603 | fepvals->dh_hist_size = 0; |
604 | fepvals->dh_hist_spacing = 0.1; |
605 | } |
606 | if (file_version >= 79) |
607 | { |
608 | gmx_fio_do_int(fio, fepvals->bPrintEnergy)gmx_fio_doe_int(fio, &fepvals->bPrintEnergy, ("fepvals->bPrintEnergy" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 608); |
609 | } |
610 | else |
611 | { |
612 | fepvals->bPrintEnergy = FALSE0; |
613 | } |
614 | |
615 | /* handle lambda_neighbors */ |
616 | if ((file_version >= 83 && file_version < 90) || file_version >= 92) |
617 | { |
618 | gmx_fio_do_int(fio, fepvals->lambda_neighbors)gmx_fio_doe_int(fio, &fepvals->lambda_neighbors, ("fepvals->lambda_neighbors" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 618); |
619 | if ( (fepvals->lambda_neighbors >= 0) && (fepvals->init_fep_state >= 0) && |
620 | (fepvals->init_lambda < 0) ) |
621 | { |
622 | fepvals->lambda_start_n = (fepvals->init_fep_state - |
623 | fepvals->lambda_neighbors); |
624 | fepvals->lambda_stop_n = (fepvals->init_fep_state + |
625 | fepvals->lambda_neighbors + 1); |
626 | if (fepvals->lambda_start_n < 0) |
627 | { |
628 | fepvals->lambda_start_n = 0;; |
629 | } |
630 | if (fepvals->lambda_stop_n >= fepvals->n_lambda) |
631 | { |
632 | fepvals->lambda_stop_n = fepvals->n_lambda; |
633 | } |
634 | } |
635 | else |
636 | { |
637 | fepvals->lambda_start_n = 0; |
638 | fepvals->lambda_stop_n = fepvals->n_lambda; |
639 | } |
640 | } |
641 | else |
642 | { |
643 | fepvals->lambda_start_n = 0; |
644 | fepvals->lambda_stop_n = fepvals->n_lambda; |
645 | } |
646 | } |
647 | |
648 | static void do_pull(t_fileio *fio, t_pull *pull, gmx_bool bRead, int file_version) |
649 | { |
650 | int g; |
651 | |
652 | if (file_version >= 95) |
653 | { |
654 | gmx_fio_do_int(fio, pull->ngroup)gmx_fio_doe_int(fio, &pull->ngroup, ("pull->ngroup" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 654); |
655 | } |
656 | gmx_fio_do_int(fio, pull->ncoord)gmx_fio_doe_int(fio, &pull->ncoord, ("pull->ncoord" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 656); |
657 | if (file_version < 95) |
658 | { |
659 | pull->ngroup = pull->ncoord + 1; |
660 | } |
661 | gmx_fio_do_int(fio, pull->eGeom)gmx_fio_doe_int(fio, &pull->eGeom, ("pull->eGeom"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 661 ); |
662 | gmx_fio_do_ivec(fio, pull->dim)gmx_fio_doe_ivec(fio, &pull->dim, ("pull->dim"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 662); |
663 | gmx_fio_do_real(fio, pull->cyl_r1)gmx_fio_doe_real(fio, &pull->cyl_r1, ("pull->cyl_r1" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 663); |
664 | gmx_fio_do_real(fio, pull->cyl_r0)gmx_fio_doe_real(fio, &pull->cyl_r0, ("pull->cyl_r0" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 664); |
665 | gmx_fio_do_real(fio, pull->constr_tol)gmx_fio_doe_real(fio, &pull->constr_tol, ("pull->constr_tol" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 665); |
666 | if (file_version >= 95) |
667 | { |
668 | gmx_fio_do_int(fio, pull->bPrintRef)gmx_fio_doe_int(fio, &pull->bPrintRef, ("pull->bPrintRef" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 668); |
669 | } |
670 | gmx_fio_do_int(fio, pull->nstxout)gmx_fio_doe_int(fio, &pull->nstxout, ("pull->nstxout" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 670); |
671 | gmx_fio_do_int(fio, pull->nstfout)gmx_fio_doe_int(fio, &pull->nstfout, ("pull->nstfout" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 671); |
672 | if (bRead) |
673 | { |
674 | snew(pull->group, pull->ngroup)(pull->group) = save_calloc("pull->group", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 674, (pull->ngroup), sizeof(*(pull->group))); |
675 | snew(pull->coord, pull->ncoord)(pull->coord) = save_calloc("pull->coord", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 675, (pull->ncoord), sizeof(*(pull->coord))); |
676 | } |
677 | if (file_version < 95) |
678 | { |
679 | /* epullgPOS for position pulling, before epullgDIRPBC was removed */ |
680 | if (pull->eGeom == epullgDIRPBC) |
681 | { |
682 | gmx_fatal(FARGS0, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 682, "pull-geometry=position is no longer supported"); |
683 | } |
684 | if (pull->eGeom > epullgDIRPBC) |
685 | { |
686 | pull->eGeom -= 1; |
687 | } |
688 | |
689 | for (g = 0; g < pull->ngroup; g++) |
690 | { |
691 | /* We read and ignore a pull coordinate for group 0 */ |
692 | do_pullgrp_tpx_pre95(fio, &pull->group[g], &pull->coord[max(g-1, 0)(((g-1) > (0)) ? (g-1) : (0) )], |
693 | bRead, file_version); |
694 | if (g > 0) |
695 | { |
696 | pull->coord[g-1].group[0] = 0; |
697 | pull->coord[g-1].group[1] = g; |
698 | } |
699 | } |
700 | |
701 | pull->bPrintRef = (pull->group[0].nat > 0); |
702 | } |
703 | else |
704 | { |
705 | for (g = 0; g < pull->ngroup; g++) |
706 | { |
707 | do_pull_group(fio, &pull->group[g], bRead); |
708 | } |
709 | for (g = 0; g < pull->ncoord; g++) |
710 | { |
711 | do_pull_coord(fio, &pull->coord[g]); |
712 | } |
713 | } |
714 | } |
715 | |
716 | |
717 | static void do_rotgrp(t_fileio *fio, t_rotgrp *rotg, gmx_bool bRead) |
718 | { |
719 | int i; |
720 | |
721 | gmx_fio_do_int(fio, rotg->eType)gmx_fio_doe_int(fio, &rotg->eType, ("rotg->eType"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 721 ); |
722 | gmx_fio_do_int(fio, rotg->bMassW)gmx_fio_doe_int(fio, &rotg->bMassW, ("rotg->bMassW" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 722); |
723 | gmx_fio_do_int(fio, rotg->nat)gmx_fio_doe_int(fio, &rotg->nat, ("rotg->nat"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 723); |
724 | if (bRead) |
725 | { |
726 | snew(rotg->ind, rotg->nat)(rotg->ind) = save_calloc("rotg->ind", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 726, (rotg->nat), sizeof(*(rotg->ind))); |
727 | } |
728 | gmx_fio_ndo_int(fio, rotg->ind, rotg->nat)gmx_fio_ndoe_int(fio, rotg->ind, rotg->nat, ("rotg->ind" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 728); |
729 | if (bRead) |
730 | { |
731 | snew(rotg->x_ref, rotg->nat)(rotg->x_ref) = save_calloc("rotg->x_ref", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 731, (rotg->nat), sizeof(*(rotg->x_ref))); |
732 | } |
733 | gmx_fio_ndo_rvec(fio, rotg->x_ref, rotg->nat)gmx_fio_ndoe_rvec(fio, rotg->x_ref, rotg->nat, ("rotg->x_ref" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 733); |
734 | gmx_fio_do_rvec(fio, rotg->vec)gmx_fio_doe_rvec(fio, &rotg->vec, ("rotg->vec"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 734); |
735 | gmx_fio_do_rvec(fio, rotg->pivot)gmx_fio_doe_rvec(fio, &rotg->pivot, ("rotg->pivot") , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 735 ); |
736 | gmx_fio_do_real(fio, rotg->rate)gmx_fio_doe_real(fio, &rotg->rate, ("rotg->rate"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 736); |
737 | gmx_fio_do_real(fio, rotg->k)gmx_fio_doe_real(fio, &rotg->k, ("rotg->k"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 737); |
738 | gmx_fio_do_real(fio, rotg->slab_dist)gmx_fio_doe_real(fio, &rotg->slab_dist, ("rotg->slab_dist" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 738); |
739 | gmx_fio_do_real(fio, rotg->min_gaussian)gmx_fio_doe_real(fio, &rotg->min_gaussian, ("rotg->min_gaussian" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 739); |
740 | gmx_fio_do_real(fio, rotg->eps)gmx_fio_doe_real(fio, &rotg->eps, ("rotg->eps"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 740); |
741 | gmx_fio_do_int(fio, rotg->eFittype)gmx_fio_doe_int(fio, &rotg->eFittype, ("rotg->eFittype" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 741); |
742 | gmx_fio_do_int(fio, rotg->PotAngle_nstep)gmx_fio_doe_int(fio, &rotg->PotAngle_nstep, ("rotg->PotAngle_nstep" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 742); |
743 | gmx_fio_do_real(fio, rotg->PotAngle_step)gmx_fio_doe_real(fio, &rotg->PotAngle_step, ("rotg->PotAngle_step" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 743); |
744 | } |
745 | |
746 | static void do_rot(t_fileio *fio, t_rot *rot, gmx_bool bRead) |
747 | { |
748 | int g; |
749 | |
750 | gmx_fio_do_int(fio, rot->ngrp)gmx_fio_doe_int(fio, &rot->ngrp, ("rot->ngrp"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 750); |
751 | gmx_fio_do_int(fio, rot->nstrout)gmx_fio_doe_int(fio, &rot->nstrout, ("rot->nstrout" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 751); |
752 | gmx_fio_do_int(fio, rot->nstsout)gmx_fio_doe_int(fio, &rot->nstsout, ("rot->nstsout" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 752); |
753 | if (bRead) |
754 | { |
755 | snew(rot->grp, rot->ngrp)(rot->grp) = save_calloc("rot->grp", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 755, (rot->ngrp), sizeof(*(rot->grp))); |
756 | } |
757 | for (g = 0; g < rot->ngrp; g++) |
758 | { |
759 | do_rotgrp(fio, &rot->grp[g], bRead); |
760 | } |
761 | } |
762 | |
763 | |
764 | static void do_swapcoords(t_fileio *fio, t_swapcoords *swap, gmx_bool bRead) |
765 | { |
766 | int i, j; |
767 | |
768 | |
769 | gmx_fio_do_int(fio, swap->nat)gmx_fio_doe_int(fio, &swap->nat, ("swap->nat"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 769); |
770 | gmx_fio_do_int(fio, swap->nat_sol)gmx_fio_doe_int(fio, &swap->nat_sol, ("swap->nat_sol" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 770); |
771 | for (j = 0; j < 2; j++) |
772 | { |
773 | gmx_fio_do_int(fio, swap->nat_split[j])gmx_fio_doe_int(fio, &swap->nat_split[j], ("swap->nat_split[j]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 773); |
774 | gmx_fio_do_int(fio, swap->massw_split[j])gmx_fio_doe_int(fio, &swap->massw_split[j], ("swap->massw_split[j]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 774); |
775 | } |
776 | gmx_fio_do_int(fio, swap->nstswap)gmx_fio_doe_int(fio, &swap->nstswap, ("swap->nstswap" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 776); |
777 | gmx_fio_do_int(fio, swap->nAverage)gmx_fio_doe_int(fio, &swap->nAverage, ("swap->nAverage" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 777); |
778 | gmx_fio_do_real(fio, swap->threshold)gmx_fio_doe_real(fio, &swap->threshold, ("swap->threshold" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 778); |
779 | gmx_fio_do_real(fio, swap->cyl0r)gmx_fio_doe_real(fio, &swap->cyl0r, ("swap->cyl0r") , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 779 ); |
780 | gmx_fio_do_real(fio, swap->cyl0u)gmx_fio_doe_real(fio, &swap->cyl0u, ("swap->cyl0u") , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 780 ); |
781 | gmx_fio_do_real(fio, swap->cyl0l)gmx_fio_doe_real(fio, &swap->cyl0l, ("swap->cyl0l") , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 781 ); |
782 | gmx_fio_do_real(fio, swap->cyl1r)gmx_fio_doe_real(fio, &swap->cyl1r, ("swap->cyl1r") , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 782 ); |
783 | gmx_fio_do_real(fio, swap->cyl1u)gmx_fio_doe_real(fio, &swap->cyl1u, ("swap->cyl1u") , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 783 ); |
784 | gmx_fio_do_real(fio, swap->cyl1l)gmx_fio_doe_real(fio, &swap->cyl1l, ("swap->cyl1l") , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 784 ); |
785 | |
786 | if (bRead) |
787 | { |
788 | snew(swap->ind, swap->nat)(swap->ind) = save_calloc("swap->ind", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 788, (swap->nat), sizeof(*(swap->ind))); |
789 | snew(swap->ind_sol, swap->nat_sol)(swap->ind_sol) = save_calloc("swap->ind_sol", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 789, (swap->nat_sol), sizeof(*(swap->ind_sol))); |
790 | for (j = 0; j < 2; j++) |
791 | { |
792 | snew(swap->ind_split[j], swap->nat_split[j])(swap->ind_split[j]) = save_calloc("swap->ind_split[j]" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 792 , (swap->nat_split[j]), sizeof(*(swap->ind_split[j]))); |
793 | } |
794 | } |
795 | |
796 | gmx_fio_ndo_int(fio, swap->ind, swap->nat)gmx_fio_ndoe_int(fio, swap->ind, swap->nat, ("swap->ind" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 796); |
797 | gmx_fio_ndo_int(fio, swap->ind_sol, swap->nat_sol)gmx_fio_ndoe_int(fio, swap->ind_sol, swap->nat_sol, ("swap->ind_sol" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 797); |
798 | for (j = 0; j < 2; j++) |
799 | { |
800 | gmx_fio_ndo_int(fio, swap->ind_split[j], swap->nat_split[j])gmx_fio_ndoe_int(fio, swap->ind_split[j], swap->nat_split [j], ("swap->ind_split[j]"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 800); |
801 | } |
802 | |
803 | for (j = 0; j < eCompNR; j++) |
804 | { |
805 | gmx_fio_do_int(fio, swap->nanions[j])gmx_fio_doe_int(fio, &swap->nanions[j], ("swap->nanions[j]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 805); |
806 | gmx_fio_do_int(fio, swap->ncations[j])gmx_fio_doe_int(fio, &swap->ncations[j], ("swap->ncations[j]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 806); |
807 | } |
808 | |
809 | } |
810 | |
811 | |
812 | static void do_inputrec(t_fileio *fio, t_inputrec *ir, gmx_bool bRead, |
813 | int file_version, real *fudgeQQ) |
814 | { |
815 | int i, j, k, *tmp, idum = 0; |
816 | real rdum, bd_temp; |
817 | rvec vdum; |
818 | gmx_bool bSimAnn; |
819 | real zerotemptime, finish_t, init_temp, finish_temp; |
820 | |
821 | if (file_version != tpx_version) |
822 | { |
823 | /* Give a warning about features that are not accessible */ |
824 | fprintf(stderrstderr, "Note: file tpx version %d, software tpx version %d\n", |
825 | file_version, tpx_version); |
826 | } |
827 | |
828 | if (bRead) |
829 | { |
830 | init_inputrec(ir); |
831 | } |
832 | |
833 | if (file_version == 0) |
834 | { |
835 | return; |
836 | } |
837 | |
838 | /* Basic inputrec stuff */ |
839 | gmx_fio_do_int(fio, ir->eI)gmx_fio_doe_int(fio, &ir->eI, ("ir->eI"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 839); |
840 | if (file_version >= 62) |
841 | { |
842 | gmx_fio_do_int64(fio, ir->nsteps)gmx_fio_doe_int64(fio, &ir->nsteps, ("ir->nsteps"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 842 ); |
843 | } |
844 | else |
845 | { |
846 | gmx_fio_do_int(fio, idum)gmx_fio_doe_int(fio, &idum, ("idum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 846); |
847 | ir->nsteps = idum; |
848 | } |
849 | if (file_version > 25) |
850 | { |
851 | if (file_version >= 62) |
852 | { |
853 | gmx_fio_do_int64(fio, ir->init_step)gmx_fio_doe_int64(fio, &ir->init_step, ("ir->init_step" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 853); |
854 | } |
855 | else |
856 | { |
857 | gmx_fio_do_int(fio, idum)gmx_fio_doe_int(fio, &idum, ("idum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 857); |
858 | ir->init_step = idum; |
859 | } |
860 | } |
861 | else |
862 | { |
863 | ir->init_step = 0; |
864 | } |
865 | |
866 | if (file_version >= 58) |
867 | { |
868 | gmx_fio_do_int(fio, ir->simulation_part)gmx_fio_doe_int(fio, &ir->simulation_part, ("ir->simulation_part" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 868); |
869 | } |
870 | else |
871 | { |
872 | ir->simulation_part = 1; |
873 | } |
874 | |
875 | if (file_version >= 67) |
876 | { |
877 | gmx_fio_do_int(fio, ir->nstcalcenergy)gmx_fio_doe_int(fio, &ir->nstcalcenergy, ("ir->nstcalcenergy" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 877); |
878 | } |
879 | else |
880 | { |
881 | ir->nstcalcenergy = 1; |
882 | } |
883 | if (file_version < 53) |
884 | { |
885 | /* The pbc info has been moved out of do_inputrec, |
886 | * since we always want it, also without reading the inputrec. |
887 | */ |
888 | gmx_fio_do_int(fio, ir->ePBC)gmx_fio_doe_int(fio, &ir->ePBC, ("ir->ePBC"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 888); |
889 | if ((file_version <= 15) && (ir->ePBC == 2)) |
890 | { |
891 | ir->ePBC = epbcNONE; |
892 | } |
893 | if (file_version >= 45) |
894 | { |
895 | gmx_fio_do_int(fio, ir->bPeriodicMols)gmx_fio_doe_int(fio, &ir->bPeriodicMols, ("ir->bPeriodicMols" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 895); |
896 | } |
897 | else |
898 | { |
899 | if (ir->ePBC == 2) |
900 | { |
901 | ir->ePBC = epbcXYZ; |
902 | ir->bPeriodicMols = TRUE1; |
903 | } |
904 | else |
905 | { |
906 | ir->bPeriodicMols = FALSE0; |
907 | } |
908 | } |
909 | } |
910 | if (file_version >= 81) |
911 | { |
912 | gmx_fio_do_int(fio, ir->cutoff_scheme)gmx_fio_doe_int(fio, &ir->cutoff_scheme, ("ir->cutoff_scheme" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 912); |
913 | if (file_version < 94) |
914 | { |
915 | ir->cutoff_scheme = 1 - ir->cutoff_scheme; |
916 | } |
917 | } |
918 | else |
919 | { |
920 | ir->cutoff_scheme = ecutsGROUP; |
921 | } |
922 | gmx_fio_do_int(fio, ir->ns_type)gmx_fio_doe_int(fio, &ir->ns_type, ("ir->ns_type"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 922 ); |
923 | gmx_fio_do_int(fio, ir->nstlist)gmx_fio_doe_int(fio, &ir->nstlist, ("ir->nstlist"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 923 ); |
924 | gmx_fio_do_int(fio, ir->ndelta)gmx_fio_doe_int(fio, &ir->ndelta, ("ir->ndelta"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 924); |
925 | if (file_version < 41) |
926 | { |
927 | gmx_fio_do_int(fio, idum)gmx_fio_doe_int(fio, &idum, ("idum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 927); |
928 | gmx_fio_do_int(fio, idum)gmx_fio_doe_int(fio, &idum, ("idum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 928); |
929 | } |
930 | if (file_version >= 45) |
931 | { |
932 | gmx_fio_do_real(fio, ir->rtpi)gmx_fio_doe_real(fio, &ir->rtpi, ("ir->rtpi"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 932); |
933 | } |
934 | else |
935 | { |
936 | ir->rtpi = 0.05; |
937 | } |
938 | gmx_fio_do_int(fio, ir->nstcomm)gmx_fio_doe_int(fio, &ir->nstcomm, ("ir->nstcomm"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 938 ); |
939 | if (file_version > 34) |
940 | { |
941 | gmx_fio_do_int(fio, ir->comm_mode)gmx_fio_doe_int(fio, &ir->comm_mode, ("ir->comm_mode" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 941); |
942 | } |
943 | else if (ir->nstcomm < 0) |
944 | { |
945 | ir->comm_mode = ecmANGULAR; |
946 | } |
947 | else |
948 | { |
949 | ir->comm_mode = ecmLINEAR; |
950 | } |
951 | ir->nstcomm = abs(ir->nstcomm); |
952 | |
953 | if (file_version > 25) |
954 | { |
955 | gmx_fio_do_int(fio, ir->nstcheckpoint)gmx_fio_doe_int(fio, &ir->nstcheckpoint, ("ir->nstcheckpoint" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 955); |
956 | } |
957 | else |
958 | { |
959 | ir->nstcheckpoint = 0; |
960 | } |
961 | |
962 | gmx_fio_do_int(fio, ir->nstcgsteep)gmx_fio_doe_int(fio, &ir->nstcgsteep, ("ir->nstcgsteep" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 962); |
963 | |
964 | if (file_version >= 30) |
965 | { |
966 | gmx_fio_do_int(fio, ir->nbfgscorr)gmx_fio_doe_int(fio, &ir->nbfgscorr, ("ir->nbfgscorr" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 966); |
967 | } |
968 | else if (bRead) |
969 | { |
970 | ir->nbfgscorr = 10; |
971 | } |
972 | |
973 | gmx_fio_do_int(fio, ir->nstlog)gmx_fio_doe_int(fio, &ir->nstlog, ("ir->nstlog"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 973); |
974 | gmx_fio_do_int(fio, ir->nstxout)gmx_fio_doe_int(fio, &ir->nstxout, ("ir->nstxout"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 974 ); |
975 | gmx_fio_do_int(fio, ir->nstvout)gmx_fio_doe_int(fio, &ir->nstvout, ("ir->nstvout"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 975 ); |
976 | gmx_fio_do_int(fio, ir->nstfout)gmx_fio_doe_int(fio, &ir->nstfout, ("ir->nstfout"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 976 ); |
977 | gmx_fio_do_int(fio, ir->nstenergy)gmx_fio_doe_int(fio, &ir->nstenergy, ("ir->nstenergy" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 977); |
978 | gmx_fio_do_int(fio, ir->nstxout_compressed)gmx_fio_doe_int(fio, &ir->nstxout_compressed, ("ir->nstxout_compressed" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 978); |
979 | if (file_version >= 59) |
980 | { |
981 | gmx_fio_do_double(fio, ir->init_t)gmx_fio_doe_double(fio, &ir->init_t, ("ir->init_t") , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 981 ); |
982 | gmx_fio_do_double(fio, ir->delta_t)gmx_fio_doe_double(fio, &ir->delta_t, ("ir->delta_t" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 982); |
983 | } |
984 | else |
985 | { |
986 | gmx_fio_do_real(fio, rdum)gmx_fio_doe_real(fio, &rdum, ("rdum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 986); |
987 | ir->init_t = rdum; |
988 | gmx_fio_do_real(fio, rdum)gmx_fio_doe_real(fio, &rdum, ("rdum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 988); |
989 | ir->delta_t = rdum; |
990 | } |
991 | gmx_fio_do_real(fio, ir->x_compression_precision)gmx_fio_doe_real(fio, &ir->x_compression_precision, ("ir->x_compression_precision" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 991); |
992 | if (file_version < 19) |
993 | { |
994 | gmx_fio_do_int(fio, idum)gmx_fio_doe_int(fio, &idum, ("idum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 994); |
995 | gmx_fio_do_int(fio, idum)gmx_fio_doe_int(fio, &idum, ("idum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 995); |
996 | } |
997 | if (file_version < 18) |
998 | { |
999 | gmx_fio_do_int(fio, idum)gmx_fio_doe_int(fio, &idum, ("idum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 999); |
1000 | } |
1001 | if (file_version >= 81) |
1002 | { |
1003 | gmx_fio_do_real(fio, ir->verletbuf_tol)gmx_fio_doe_real(fio, &ir->verletbuf_tol, ("ir->verletbuf_tol" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1003); |
1004 | } |
1005 | else |
1006 | { |
1007 | ir->verletbuf_tol = 0; |
1008 | } |
1009 | gmx_fio_do_real(fio, ir->rlist)gmx_fio_doe_real(fio, &ir->rlist, ("ir->rlist"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1009); |
1010 | if (file_version >= 67) |
1011 | { |
1012 | gmx_fio_do_real(fio, ir->rlistlong)gmx_fio_doe_real(fio, &ir->rlistlong, ("ir->rlistlong" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1012); |
1013 | } |
1014 | if (file_version >= 82 && file_version != 90) |
1015 | { |
1016 | gmx_fio_do_int(fio, ir->nstcalclr)gmx_fio_doe_int(fio, &ir->nstcalclr, ("ir->nstcalclr" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1016); |
1017 | } |
1018 | else |
1019 | { |
1020 | /* Calculate at NS steps */ |
1021 | ir->nstcalclr = ir->nstlist; |
1022 | } |
1023 | gmx_fio_do_int(fio, ir->coulombtype)gmx_fio_doe_int(fio, &ir->coulombtype, ("ir->coulombtype" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1023); |
1024 | if (file_version < 32 && ir->coulombtype == eelRF) |
1025 | { |
1026 | ir->coulombtype = eelRF_NEC; |
1027 | } |
1028 | if (file_version >= 81) |
1029 | { |
1030 | gmx_fio_do_int(fio, ir->coulomb_modifier)gmx_fio_doe_int(fio, &ir->coulomb_modifier, ("ir->coulomb_modifier" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1030); |
1031 | } |
1032 | else |
1033 | { |
1034 | ir->coulomb_modifier = (ir->cutoff_scheme == ecutsVERLET ? eintmodPOTSHIFT : eintmodNONE); |
1035 | } |
1036 | gmx_fio_do_real(fio, ir->rcoulomb_switch)gmx_fio_doe_real(fio, &ir->rcoulomb_switch, ("ir->rcoulomb_switch" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1036); |
1037 | gmx_fio_do_real(fio, ir->rcoulomb)gmx_fio_doe_real(fio, &ir->rcoulomb, ("ir->rcoulomb" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1037); |
1038 | gmx_fio_do_int(fio, ir->vdwtype)gmx_fio_doe_int(fio, &ir->vdwtype, ("ir->vdwtype"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1038 ); |
1039 | if (file_version >= 81) |
1040 | { |
1041 | gmx_fio_do_int(fio, ir->vdw_modifier)gmx_fio_doe_int(fio, &ir->vdw_modifier, ("ir->vdw_modifier" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1041); |
1042 | } |
1043 | else |
1044 | { |
1045 | ir->vdw_modifier = (ir->cutoff_scheme == ecutsVERLET ? eintmodPOTSHIFT : eintmodNONE); |
1046 | } |
1047 | gmx_fio_do_real(fio, ir->rvdw_switch)gmx_fio_doe_real(fio, &ir->rvdw_switch, ("ir->rvdw_switch" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1047); |
1048 | gmx_fio_do_real(fio, ir->rvdw)gmx_fio_doe_real(fio, &ir->rvdw, ("ir->rvdw"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1048); |
1049 | if (file_version < 67) |
1050 | { |
1051 | ir->rlistlong = max_cutoff(ir->rlist, max_cutoff(ir->rvdw, ir->rcoulomb)); |
1052 | } |
1053 | gmx_fio_do_int(fio, ir->eDispCorr)gmx_fio_doe_int(fio, &ir->eDispCorr, ("ir->eDispCorr" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1053); |
1054 | gmx_fio_do_real(fio, ir->epsilon_r)gmx_fio_doe_real(fio, &ir->epsilon_r, ("ir->epsilon_r" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1054); |
1055 | if (file_version >= 37) |
1056 | { |
1057 | gmx_fio_do_real(fio, ir->epsilon_rf)gmx_fio_doe_real(fio, &ir->epsilon_rf, ("ir->epsilon_rf" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1057); |
1058 | } |
1059 | else |
1060 | { |
1061 | if (EEL_RF(ir->coulombtype)((ir->coulombtype) == eelRF || (ir->coulombtype) == eelGRF || (ir->coulombtype) == eelRF_NEC || (ir->coulombtype) == eelRF_ZERO )) |
1062 | { |
1063 | ir->epsilon_rf = ir->epsilon_r; |
1064 | ir->epsilon_r = 1.0; |
1065 | } |
1066 | else |
1067 | { |
1068 | ir->epsilon_rf = 1.0; |
1069 | } |
1070 | } |
1071 | if (file_version >= 29) |
1072 | { |
1073 | gmx_fio_do_real(fio, ir->tabext)gmx_fio_doe_real(fio, &ir->tabext, ("ir->tabext"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1073); |
1074 | } |
1075 | else |
1076 | { |
1077 | ir->tabext = 1.0; |
1078 | } |
1079 | |
1080 | if (file_version > 25) |
1081 | { |
1082 | gmx_fio_do_int(fio, ir->gb_algorithm)gmx_fio_doe_int(fio, &ir->gb_algorithm, ("ir->gb_algorithm" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1082); |
1083 | gmx_fio_do_int(fio, ir->nstgbradii)gmx_fio_doe_int(fio, &ir->nstgbradii, ("ir->nstgbradii" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1083); |
1084 | gmx_fio_do_real(fio, ir->rgbradii)gmx_fio_doe_real(fio, &ir->rgbradii, ("ir->rgbradii" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1084); |
1085 | gmx_fio_do_real(fio, ir->gb_saltconc)gmx_fio_doe_real(fio, &ir->gb_saltconc, ("ir->gb_saltconc" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1085); |
1086 | gmx_fio_do_int(fio, ir->implicit_solvent)gmx_fio_doe_int(fio, &ir->implicit_solvent, ("ir->implicit_solvent" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1086); |
1087 | } |
1088 | else |
1089 | { |
1090 | ir->gb_algorithm = egbSTILL; |
1091 | ir->nstgbradii = 1; |
1092 | ir->rgbradii = 1.0; |
1093 | ir->gb_saltconc = 0; |
1094 | ir->implicit_solvent = eisNO; |
1095 | } |
1096 | if (file_version >= 55) |
1097 | { |
1098 | gmx_fio_do_real(fio, ir->gb_epsilon_solvent)gmx_fio_doe_real(fio, &ir->gb_epsilon_solvent, ("ir->gb_epsilon_solvent" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1098); |
1099 | gmx_fio_do_real(fio, ir->gb_obc_alpha)gmx_fio_doe_real(fio, &ir->gb_obc_alpha, ("ir->gb_obc_alpha" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1099); |
1100 | gmx_fio_do_real(fio, ir->gb_obc_beta)gmx_fio_doe_real(fio, &ir->gb_obc_beta, ("ir->gb_obc_beta" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1100); |
1101 | gmx_fio_do_real(fio, ir->gb_obc_gamma)gmx_fio_doe_real(fio, &ir->gb_obc_gamma, ("ir->gb_obc_gamma" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1101); |
1102 | if (file_version >= 60) |
1103 | { |
1104 | gmx_fio_do_real(fio, ir->gb_dielectric_offset)gmx_fio_doe_real(fio, &ir->gb_dielectric_offset, ("ir->gb_dielectric_offset" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1104); |
1105 | gmx_fio_do_int(fio, ir->sa_algorithm)gmx_fio_doe_int(fio, &ir->sa_algorithm, ("ir->sa_algorithm" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1105); |
1106 | } |
1107 | else |
1108 | { |
1109 | ir->gb_dielectric_offset = 0.009; |
1110 | ir->sa_algorithm = esaAPPROX; |
1111 | } |
1112 | gmx_fio_do_real(fio, ir->sa_surface_tension)gmx_fio_doe_real(fio, &ir->sa_surface_tension, ("ir->sa_surface_tension" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1112); |
1113 | |
1114 | /* Override sa_surface_tension if it is not changed in the mpd-file */ |
1115 | if (ir->sa_surface_tension < 0) |
1116 | { |
1117 | if (ir->gb_algorithm == egbSTILL) |
1118 | { |
1119 | ir->sa_surface_tension = 0.0049 * 100 * CAL2JOULE(4.184); |
1120 | } |
1121 | else if (ir->gb_algorithm == egbHCT || ir->gb_algorithm == egbOBC) |
1122 | { |
1123 | ir->sa_surface_tension = 0.0054 * 100 * CAL2JOULE(4.184); |
1124 | } |
1125 | } |
1126 | |
1127 | } |
1128 | else |
1129 | { |
1130 | /* Better use sensible values than insane (0.0) ones... */ |
1131 | ir->gb_epsilon_solvent = 80; |
1132 | ir->gb_obc_alpha = 1.0; |
1133 | ir->gb_obc_beta = 0.8; |
1134 | ir->gb_obc_gamma = 4.85; |
1135 | ir->sa_surface_tension = 2.092; |
1136 | } |
1137 | |
1138 | |
1139 | if (file_version >= 81) |
1140 | { |
1141 | gmx_fio_do_real(fio, ir->fourier_spacing)gmx_fio_doe_real(fio, &ir->fourier_spacing, ("ir->fourier_spacing" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1141); |
1142 | } |
1143 | else |
1144 | { |
1145 | ir->fourier_spacing = 0.0; |
1146 | } |
1147 | gmx_fio_do_int(fio, ir->nkx)gmx_fio_doe_int(fio, &ir->nkx, ("ir->nkx"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1147); |
1148 | gmx_fio_do_int(fio, ir->nky)gmx_fio_doe_int(fio, &ir->nky, ("ir->nky"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1148); |
1149 | gmx_fio_do_int(fio, ir->nkz)gmx_fio_doe_int(fio, &ir->nkz, ("ir->nkz"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1149); |
1150 | gmx_fio_do_int(fio, ir->pme_order)gmx_fio_doe_int(fio, &ir->pme_order, ("ir->pme_order" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1150); |
1151 | gmx_fio_do_real(fio, ir->ewald_rtol)gmx_fio_doe_real(fio, &ir->ewald_rtol, ("ir->ewald_rtol" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1151); |
1152 | |
1153 | if (file_version >= 93) |
1154 | { |
1155 | gmx_fio_do_real(fio, ir->ewald_rtol_lj)gmx_fio_doe_real(fio, &ir->ewald_rtol_lj, ("ir->ewald_rtol_lj" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1155); |
1156 | } |
1157 | else |
1158 | { |
1159 | ir->ewald_rtol_lj = ir->ewald_rtol; |
1160 | } |
1161 | |
1162 | if (file_version >= 24) |
1163 | { |
1164 | gmx_fio_do_int(fio, ir->ewald_geometry)gmx_fio_doe_int(fio, &ir->ewald_geometry, ("ir->ewald_geometry" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1164); |
1165 | } |
1166 | else |
1167 | { |
1168 | ir->ewald_geometry = eewg3D; |
1169 | } |
1170 | |
1171 | if (file_version <= 17) |
1172 | { |
1173 | ir->epsilon_surface = 0; |
1174 | if (file_version == 17) |
1175 | { |
1176 | gmx_fio_do_int(fio, idum)gmx_fio_doe_int(fio, &idum, ("idum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1176); |
1177 | } |
1178 | } |
1179 | else |
1180 | { |
1181 | gmx_fio_do_real(fio, ir->epsilon_surface)gmx_fio_doe_real(fio, &ir->epsilon_surface, ("ir->epsilon_surface" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1181); |
1182 | } |
1183 | |
1184 | gmx_fio_do_gmx_bool(fio, ir->bOptFFT)gmx_fio_doe_gmx_bool(fio, &ir->bOptFFT, ("ir->bOptFFT" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1184); |
1185 | |
1186 | if (file_version >= 93) |
1187 | { |
1188 | gmx_fio_do_int(fio, ir->ljpme_combination_rule)gmx_fio_doe_int(fio, &ir->ljpme_combination_rule, ("ir->ljpme_combination_rule" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1188); |
1189 | } |
1190 | gmx_fio_do_gmx_bool(fio, ir->bContinuation)gmx_fio_doe_gmx_bool(fio, &ir->bContinuation, ("ir->bContinuation" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1190); |
1191 | gmx_fio_do_int(fio, ir->etc)gmx_fio_doe_int(fio, &ir->etc, ("ir->etc"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1191); |
1192 | /* before version 18, ir->etc was a gmx_bool (ir->btc), |
1193 | * but the values 0 and 1 still mean no and |
1194 | * berendsen temperature coupling, respectively. |
1195 | */ |
1196 | if (file_version >= 79) |
1197 | { |
1198 | gmx_fio_do_gmx_bool(fio, ir->bPrintNHChains)gmx_fio_doe_gmx_bool(fio, &ir->bPrintNHChains, ("ir->bPrintNHChains" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1198); |
1199 | } |
1200 | if (file_version >= 71) |
1201 | { |
1202 | gmx_fio_do_int(fio, ir->nsttcouple)gmx_fio_doe_int(fio, &ir->nsttcouple, ("ir->nsttcouple" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1202); |
1203 | } |
1204 | else |
1205 | { |
1206 | ir->nsttcouple = ir->nstcalcenergy; |
1207 | } |
1208 | if (file_version <= 15) |
1209 | { |
1210 | gmx_fio_do_int(fio, idum)gmx_fio_doe_int(fio, &idum, ("idum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1210); |
1211 | } |
1212 | if (file_version <= 17) |
1213 | { |
1214 | gmx_fio_do_int(fio, ir->epct)gmx_fio_doe_int(fio, &ir->epct, ("ir->epct"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1214); |
1215 | if (file_version <= 15) |
1216 | { |
1217 | if (ir->epct == 5) |
1218 | { |
1219 | ir->epct = epctSURFACETENSION; |
1220 | } |
1221 | gmx_fio_do_int(fio, idum)gmx_fio_doe_int(fio, &idum, ("idum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1221); |
1222 | } |
1223 | ir->epct -= 1; |
1224 | /* we have removed the NO alternative at the beginning */ |
1225 | if (ir->epct == -1) |
1226 | { |
1227 | ir->epc = epcNO; |
1228 | ir->epct = epctISOTROPIC; |
1229 | } |
1230 | else |
1231 | { |
1232 | ir->epc = epcBERENDSEN; |
1233 | } |
1234 | } |
1235 | else |
1236 | { |
1237 | gmx_fio_do_int(fio, ir->epc)gmx_fio_doe_int(fio, &ir->epc, ("ir->epc"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1237); |
1238 | gmx_fio_do_int(fio, ir->epct)gmx_fio_doe_int(fio, &ir->epct, ("ir->epct"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1238); |
1239 | } |
1240 | if (file_version >= 71) |
1241 | { |
1242 | gmx_fio_do_int(fio, ir->nstpcouple)gmx_fio_doe_int(fio, &ir->nstpcouple, ("ir->nstpcouple" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1242); |
1243 | } |
1244 | else |
1245 | { |
1246 | ir->nstpcouple = ir->nstcalcenergy; |
1247 | } |
1248 | gmx_fio_do_real(fio, ir->tau_p)gmx_fio_doe_real(fio, &ir->tau_p, ("ir->tau_p"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1248); |
1249 | if (file_version <= 15) |
1250 | { |
1251 | gmx_fio_do_rvec(fio, vdum)gmx_fio_doe_rvec(fio, &vdum, ("vdum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1251); |
1252 | clear_mat(ir->ref_p); |
1253 | for (i = 0; i < DIM3; i++) |
1254 | { |
1255 | ir->ref_p[i][i] = vdum[i]; |
1256 | } |
1257 | } |
1258 | else |
1259 | { |
1260 | gmx_fio_do_rvec(fio, ir->ref_p[XX])gmx_fio_doe_rvec(fio, &ir->ref_p[0], ("ir->ref_p[XX]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1260); |
1261 | gmx_fio_do_rvec(fio, ir->ref_p[YY])gmx_fio_doe_rvec(fio, &ir->ref_p[1], ("ir->ref_p[YY]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1261); |
1262 | gmx_fio_do_rvec(fio, ir->ref_p[ZZ])gmx_fio_doe_rvec(fio, &ir->ref_p[2], ("ir->ref_p[ZZ]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1262); |
1263 | } |
1264 | if (file_version <= 15) |
1265 | { |
1266 | gmx_fio_do_rvec(fio, vdum)gmx_fio_doe_rvec(fio, &vdum, ("vdum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1266); |
1267 | clear_mat(ir->compress); |
1268 | for (i = 0; i < DIM3; i++) |
1269 | { |
1270 | ir->compress[i][i] = vdum[i]; |
1271 | } |
1272 | } |
1273 | else |
1274 | { |
1275 | gmx_fio_do_rvec(fio, ir->compress[XX])gmx_fio_doe_rvec(fio, &ir->compress[0], ("ir->compress[XX]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1275); |
1276 | gmx_fio_do_rvec(fio, ir->compress[YY])gmx_fio_doe_rvec(fio, &ir->compress[1], ("ir->compress[YY]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1276); |
1277 | gmx_fio_do_rvec(fio, ir->compress[ZZ])gmx_fio_doe_rvec(fio, &ir->compress[2], ("ir->compress[ZZ]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1277); |
1278 | } |
1279 | if (file_version >= 47) |
1280 | { |
1281 | gmx_fio_do_int(fio, ir->refcoord_scaling)gmx_fio_doe_int(fio, &ir->refcoord_scaling, ("ir->refcoord_scaling" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1281); |
1282 | gmx_fio_do_rvec(fio, ir->posres_com)gmx_fio_doe_rvec(fio, &ir->posres_com, ("ir->posres_com" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1282); |
1283 | gmx_fio_do_rvec(fio, ir->posres_comB)gmx_fio_doe_rvec(fio, &ir->posres_comB, ("ir->posres_comB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1283); |
1284 | } |
1285 | else |
1286 | { |
1287 | ir->refcoord_scaling = erscNO; |
1288 | clear_rvec(ir->posres_com); |
1289 | clear_rvec(ir->posres_comB); |
1290 | } |
1291 | if ((file_version > 25) && (file_version < 79)) |
1292 | { |
1293 | gmx_fio_do_int(fio, ir->andersen_seed)gmx_fio_doe_int(fio, &ir->andersen_seed, ("ir->andersen_seed" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1293); |
1294 | } |
1295 | else |
1296 | { |
1297 | ir->andersen_seed = 0; |
1298 | } |
1299 | if (file_version < 26) |
1300 | { |
1301 | gmx_fio_do_gmx_bool(fio, bSimAnn)gmx_fio_doe_gmx_bool(fio, &bSimAnn, ("bSimAnn"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1301); |
1302 | gmx_fio_do_real(fio, zerotemptime)gmx_fio_doe_real(fio, &zerotemptime, ("zerotemptime"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1302); |
1303 | } |
1304 | |
1305 | if (file_version < 37) |
1306 | { |
1307 | gmx_fio_do_real(fio, rdum)gmx_fio_doe_real(fio, &rdum, ("rdum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1307); |
1308 | } |
1309 | |
1310 | gmx_fio_do_real(fio, ir->shake_tol)gmx_fio_doe_real(fio, &ir->shake_tol, ("ir->shake_tol" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1310); |
1311 | if (file_version < 54) |
1312 | { |
1313 | gmx_fio_do_real(fio, *fudgeQQ)gmx_fio_doe_real(fio, &*fudgeQQ, ("*fudgeQQ"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1313); |
1314 | } |
1315 | |
1316 | gmx_fio_do_int(fio, ir->efep)gmx_fio_doe_int(fio, &ir->efep, ("ir->efep"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1316); |
1317 | if (file_version <= 14 && ir->efep != efepNO) |
1318 | { |
1319 | ir->efep = efepYES; |
1320 | } |
1321 | do_fepvals(fio, ir->fepvals, bRead, file_version); |
1322 | |
1323 | if (file_version >= 79) |
1324 | { |
1325 | gmx_fio_do_gmx_bool(fio, ir->bSimTemp)gmx_fio_doe_gmx_bool(fio, &ir->bSimTemp, ("ir->bSimTemp" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1325); |
1326 | if (ir->bSimTemp) |
1327 | { |
1328 | ir->bSimTemp = TRUE1; |
1329 | } |
1330 | } |
1331 | else |
1332 | { |
1333 | ir->bSimTemp = FALSE0; |
1334 | } |
1335 | if (ir->bSimTemp) |
1336 | { |
1337 | do_simtempvals(fio, ir->simtempvals, ir->fepvals->n_lambda, bRead, file_version); |
1338 | } |
1339 | |
1340 | if (file_version >= 79) |
1341 | { |
1342 | gmx_fio_do_gmx_bool(fio, ir->bExpanded)gmx_fio_doe_gmx_bool(fio, &ir->bExpanded, ("ir->bExpanded" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1342); |
1343 | if (ir->bExpanded) |
1344 | { |
1345 | ir->bExpanded = TRUE1; |
1346 | } |
1347 | else |
1348 | { |
1349 | ir->bExpanded = FALSE0; |
1350 | } |
1351 | } |
1352 | if (ir->bExpanded) |
1353 | { |
1354 | do_expandedvals(fio, ir->expandedvals, ir->fepvals, bRead, file_version); |
1355 | } |
1356 | if (file_version >= 57) |
1357 | { |
1358 | gmx_fio_do_int(fio, ir->eDisre)gmx_fio_doe_int(fio, &ir->eDisre, ("ir->eDisre"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1358); |
1359 | } |
1360 | gmx_fio_do_int(fio, ir->eDisreWeighting)gmx_fio_doe_int(fio, &ir->eDisreWeighting, ("ir->eDisreWeighting" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1360); |
1361 | if (file_version < 22) |
1362 | { |
1363 | if (ir->eDisreWeighting == 0) |
1364 | { |
1365 | ir->eDisreWeighting = edrwEqual; |
1366 | } |
1367 | else |
1368 | { |
1369 | ir->eDisreWeighting = edrwConservative; |
1370 | } |
1371 | } |
1372 | gmx_fio_do_gmx_bool(fio, ir->bDisreMixed)gmx_fio_doe_gmx_bool(fio, &ir->bDisreMixed, ("ir->bDisreMixed" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1372); |
1373 | gmx_fio_do_real(fio, ir->dr_fc)gmx_fio_doe_real(fio, &ir->dr_fc, ("ir->dr_fc"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1373); |
1374 | gmx_fio_do_real(fio, ir->dr_tau)gmx_fio_doe_real(fio, &ir->dr_tau, ("ir->dr_tau"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1374); |
1375 | gmx_fio_do_int(fio, ir->nstdisreout)gmx_fio_doe_int(fio, &ir->nstdisreout, ("ir->nstdisreout" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1375); |
1376 | if (file_version >= 22) |
1377 | { |
1378 | gmx_fio_do_real(fio, ir->orires_fc)gmx_fio_doe_real(fio, &ir->orires_fc, ("ir->orires_fc" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1378); |
1379 | gmx_fio_do_real(fio, ir->orires_tau)gmx_fio_doe_real(fio, &ir->orires_tau, ("ir->orires_tau" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1379); |
1380 | gmx_fio_do_int(fio, ir->nstorireout)gmx_fio_doe_int(fio, &ir->nstorireout, ("ir->nstorireout" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1380); |
1381 | } |
1382 | else |
1383 | { |
1384 | ir->orires_fc = 0; |
1385 | ir->orires_tau = 0; |
1386 | ir->nstorireout = 0; |
1387 | } |
1388 | if (file_version >= 26 && file_version < 79) |
1389 | { |
1390 | gmx_fio_do_real(fio, ir->dihre_fc)gmx_fio_doe_real(fio, &ir->dihre_fc, ("ir->dihre_fc" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1390); |
1391 | if (file_version < 56) |
1392 | { |
1393 | gmx_fio_do_real(fio, rdum)gmx_fio_doe_real(fio, &rdum, ("rdum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1393); |
1394 | gmx_fio_do_int(fio, idum)gmx_fio_doe_int(fio, &idum, ("idum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1394); |
1395 | } |
1396 | } |
1397 | else |
1398 | { |
1399 | ir->dihre_fc = 0; |
1400 | } |
1401 | |
1402 | gmx_fio_do_real(fio, ir->em_stepsize)gmx_fio_doe_real(fio, &ir->em_stepsize, ("ir->em_stepsize" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1402); |
1403 | gmx_fio_do_real(fio, ir->em_tol)gmx_fio_doe_real(fio, &ir->em_tol, ("ir->em_tol"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1403); |
1404 | if (file_version >= 22) |
1405 | { |
1406 | gmx_fio_do_gmx_bool(fio, ir->bShakeSOR)gmx_fio_doe_gmx_bool(fio, &ir->bShakeSOR, ("ir->bShakeSOR" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1406); |
1407 | } |
1408 | else if (bRead) |
1409 | { |
1410 | ir->bShakeSOR = TRUE1; |
1411 | } |
1412 | if (file_version >= 11) |
1413 | { |
1414 | gmx_fio_do_int(fio, ir->niter)gmx_fio_doe_int(fio, &ir->niter, ("ir->niter"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1414); |
1415 | } |
1416 | else if (bRead) |
1417 | { |
1418 | ir->niter = 25; |
1419 | fprintf(stderrstderr, "Note: niter not in run input file, setting it to %d\n", |
1420 | ir->niter); |
1421 | } |
1422 | if (file_version >= 21) |
1423 | { |
1424 | gmx_fio_do_real(fio, ir->fc_stepsize)gmx_fio_doe_real(fio, &ir->fc_stepsize, ("ir->fc_stepsize" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1424); |
1425 | } |
1426 | else |
1427 | { |
1428 | ir->fc_stepsize = 0; |
1429 | } |
1430 | gmx_fio_do_int(fio, ir->eConstrAlg)gmx_fio_doe_int(fio, &ir->eConstrAlg, ("ir->eConstrAlg" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1430); |
1431 | gmx_fio_do_int(fio, ir->nProjOrder)gmx_fio_doe_int(fio, &ir->nProjOrder, ("ir->nProjOrder" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1431); |
1432 | gmx_fio_do_real(fio, ir->LincsWarnAngle)gmx_fio_doe_real(fio, &ir->LincsWarnAngle, ("ir->LincsWarnAngle" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1432); |
1433 | if (file_version <= 14) |
1434 | { |
1435 | gmx_fio_do_int(fio, idum)gmx_fio_doe_int(fio, &idum, ("idum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1435); |
1436 | } |
1437 | if (file_version >= 26) |
1438 | { |
1439 | gmx_fio_do_int(fio, ir->nLincsIter)gmx_fio_doe_int(fio, &ir->nLincsIter, ("ir->nLincsIter" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1439); |
1440 | } |
1441 | else if (bRead) |
1442 | { |
1443 | ir->nLincsIter = 1; |
1444 | fprintf(stderrstderr, "Note: nLincsIter not in run input file, setting it to %d\n", |
1445 | ir->nLincsIter); |
1446 | } |
1447 | if (file_version < 33) |
1448 | { |
1449 | gmx_fio_do_real(fio, bd_temp)gmx_fio_doe_real(fio, &bd_temp, ("bd_temp"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1449); |
1450 | } |
1451 | gmx_fio_do_real(fio, ir->bd_fric)gmx_fio_doe_real(fio, &ir->bd_fric, ("ir->bd_fric") , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1451 ); |
1452 | if (file_version >= tpxv_Use64BitRandomSeed) |
1453 | { |
1454 | gmx_fio_do_int64(fio, ir->ld_seed)gmx_fio_doe_int64(fio, &ir->ld_seed, ("ir->ld_seed" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1454); |
1455 | } |
1456 | else |
1457 | { |
1458 | gmx_fio_do_int(fio, idum)gmx_fio_doe_int(fio, &idum, ("idum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1458); |
1459 | ir->ld_seed = idum; |
1460 | } |
1461 | if (file_version >= 33) |
1462 | { |
1463 | for (i = 0; i < DIM3; i++) |
1464 | { |
1465 | gmx_fio_do_rvec(fio, ir->deform[i])gmx_fio_doe_rvec(fio, &ir->deform[i], ("ir->deform[i]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1465); |
1466 | } |
1467 | } |
1468 | else |
1469 | { |
1470 | for (i = 0; i < DIM3; i++) |
1471 | { |
1472 | clear_rvec(ir->deform[i]); |
1473 | } |
1474 | } |
1475 | if (file_version >= 14) |
1476 | { |
1477 | gmx_fio_do_real(fio, ir->cos_accel)gmx_fio_doe_real(fio, &ir->cos_accel, ("ir->cos_accel" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1477); |
1478 | } |
1479 | else if (bRead) |
1480 | { |
1481 | ir->cos_accel = 0; |
1482 | } |
1483 | gmx_fio_do_int(fio, ir->userint1)gmx_fio_doe_int(fio, &ir->userint1, ("ir->userint1" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1483); |
1484 | gmx_fio_do_int(fio, ir->userint2)gmx_fio_doe_int(fio, &ir->userint2, ("ir->userint2" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1484); |
1485 | gmx_fio_do_int(fio, ir->userint3)gmx_fio_doe_int(fio, &ir->userint3, ("ir->userint3" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1485); |
1486 | gmx_fio_do_int(fio, ir->userint4)gmx_fio_doe_int(fio, &ir->userint4, ("ir->userint4" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1486); |
1487 | gmx_fio_do_real(fio, ir->userreal1)gmx_fio_doe_real(fio, &ir->userreal1, ("ir->userreal1" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1487); |
1488 | gmx_fio_do_real(fio, ir->userreal2)gmx_fio_doe_real(fio, &ir->userreal2, ("ir->userreal2" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1488); |
1489 | gmx_fio_do_real(fio, ir->userreal3)gmx_fio_doe_real(fio, &ir->userreal3, ("ir->userreal3" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1489); |
1490 | gmx_fio_do_real(fio, ir->userreal4)gmx_fio_doe_real(fio, &ir->userreal4, ("ir->userreal4" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1490); |
1491 | |
1492 | /* AdResS stuff */ |
1493 | if (file_version >= 77) |
1494 | { |
1495 | gmx_fio_do_gmx_bool(fio, ir->bAdress)gmx_fio_doe_gmx_bool(fio, &ir->bAdress, ("ir->bAdress" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1495); |
1496 | if (ir->bAdress) |
1497 | { |
1498 | if (bRead) |
1499 | { |
1500 | snew(ir->adress, 1)(ir->adress) = save_calloc("ir->adress", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1500, (1), sizeof(*(ir->adress))); |
1501 | } |
1502 | gmx_fio_do_int(fio, ir->adress->type)gmx_fio_doe_int(fio, &ir->adress->type, ("ir->adress->type" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1502); |
1503 | gmx_fio_do_real(fio, ir->adress->const_wf)gmx_fio_doe_real(fio, &ir->adress->const_wf, ("ir->adress->const_wf" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1503); |
1504 | gmx_fio_do_real(fio, ir->adress->ex_width)gmx_fio_doe_real(fio, &ir->adress->ex_width, ("ir->adress->ex_width" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1504); |
1505 | gmx_fio_do_real(fio, ir->adress->hy_width)gmx_fio_doe_real(fio, &ir->adress->hy_width, ("ir->adress->hy_width" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1505); |
1506 | gmx_fio_do_int(fio, ir->adress->icor)gmx_fio_doe_int(fio, &ir->adress->icor, ("ir->adress->icor" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1506); |
1507 | gmx_fio_do_int(fio, ir->adress->site)gmx_fio_doe_int(fio, &ir->adress->site, ("ir->adress->site" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1507); |
1508 | gmx_fio_do_rvec(fio, ir->adress->refs)gmx_fio_doe_rvec(fio, &ir->adress->refs, ("ir->adress->refs" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1508); |
1509 | gmx_fio_do_int(fio, ir->adress->n_tf_grps)gmx_fio_doe_int(fio, &ir->adress->n_tf_grps, ("ir->adress->n_tf_grps" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1509); |
1510 | gmx_fio_do_real(fio, ir->adress->ex_forcecap)gmx_fio_doe_real(fio, &ir->adress->ex_forcecap, ("ir->adress->ex_forcecap" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1510); |
1511 | gmx_fio_do_int(fio, ir->adress->n_energy_grps)gmx_fio_doe_int(fio, &ir->adress->n_energy_grps, ("ir->adress->n_energy_grps" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1511); |
1512 | gmx_fio_do_int(fio, ir->adress->do_hybridpairs)gmx_fio_doe_int(fio, &ir->adress->do_hybridpairs, ( "ir->adress->do_hybridpairs"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1512); |
1513 | |
1514 | if (bRead) |
1515 | { |
1516 | snew(ir->adress->tf_table_index, ir->adress->n_tf_grps)(ir->adress->tf_table_index) = save_calloc("ir->adress->tf_table_index" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1516 , (ir->adress->n_tf_grps), sizeof(*(ir->adress->tf_table_index ))); |
1517 | } |
1518 | if (ir->adress->n_tf_grps > 0) |
1519 | { |
1520 | gmx_fio_ndo_int(fio, ir->adress->tf_table_index, ir->adress->n_tf_grps)gmx_fio_ndoe_int(fio, ir->adress->tf_table_index, ir-> adress->n_tf_grps, ("ir->adress->tf_table_index"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1520); |
1521 | } |
1522 | if (bRead) |
1523 | { |
1524 | snew(ir->adress->group_explicit, ir->adress->n_energy_grps)(ir->adress->group_explicit) = save_calloc("ir->adress->group_explicit" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1524 , (ir->adress->n_energy_grps), sizeof(*(ir->adress-> group_explicit))); |
1525 | } |
1526 | if (ir->adress->n_energy_grps > 0) |
1527 | { |
1528 | gmx_fio_ndo_int(fio, ir->adress->group_explicit, ir->adress->n_energy_grps)gmx_fio_ndoe_int(fio, ir->adress->group_explicit, ir-> adress->n_energy_grps, ("ir->adress->group_explicit" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1528); |
1529 | } |
1530 | } |
1531 | } |
1532 | else |
1533 | { |
1534 | ir->bAdress = FALSE0; |
1535 | } |
1536 | |
1537 | /* pull stuff */ |
1538 | if (file_version >= 48) |
1539 | { |
1540 | gmx_fio_do_int(fio, ir->ePull)gmx_fio_doe_int(fio, &ir->ePull, ("ir->ePull"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1540); |
1541 | if (ir->ePull != epullNO) |
1542 | { |
1543 | if (bRead) |
1544 | { |
1545 | snew(ir->pull, 1)(ir->pull) = save_calloc("ir->pull", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1545, (1), sizeof(*(ir->pull))); |
1546 | } |
1547 | do_pull(fio, ir->pull, bRead, file_version); |
1548 | } |
1549 | } |
1550 | else |
1551 | { |
1552 | ir->ePull = epullNO; |
1553 | } |
1554 | |
1555 | /* Enforced rotation */ |
1556 | if (file_version >= 74) |
1557 | { |
1558 | gmx_fio_do_int(fio, ir->bRot)gmx_fio_doe_int(fio, &ir->bRot, ("ir->bRot"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1558); |
1559 | if (ir->bRot == TRUE1) |
1560 | { |
1561 | if (bRead) |
1562 | { |
1563 | snew(ir->rot, 1)(ir->rot) = save_calloc("ir->rot", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1563, (1), sizeof(*(ir->rot))); |
1564 | } |
1565 | do_rot(fio, ir->rot, bRead); |
1566 | } |
1567 | } |
1568 | else |
1569 | { |
1570 | ir->bRot = FALSE0; |
1571 | } |
1572 | |
1573 | /* Interactive molecular dynamics */ |
1574 | if (file_version >= tpxv_InteractiveMolecularDynamics) |
1575 | { |
1576 | gmx_fio_do_int(fio, ir->bIMD)gmx_fio_doe_int(fio, &ir->bIMD, ("ir->bIMD"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1576); |
1577 | if (TRUE1 == ir->bIMD) |
1578 | { |
1579 | if (bRead) |
1580 | { |
1581 | snew(ir->imd, 1)(ir->imd) = save_calloc("ir->imd", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1581, (1), sizeof(*(ir->imd))); |
1582 | } |
1583 | do_imd(fio, ir->imd, bRead); |
1584 | } |
1585 | } |
1586 | else |
1587 | { |
1588 | /* We don't support IMD sessions for old .tpr files */ |
1589 | ir->bIMD = FALSE0; |
1590 | } |
1591 | |
1592 | /* grpopts stuff */ |
1593 | gmx_fio_do_int(fio, ir->opts.ngtc)gmx_fio_doe_int(fio, &ir->opts.ngtc, ("ir->opts.ngtc" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1593); |
1594 | if (file_version >= 69) |
1595 | { |
1596 | gmx_fio_do_int(fio, ir->opts.nhchainlength)gmx_fio_doe_int(fio, &ir->opts.nhchainlength, ("ir->opts.nhchainlength" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1596); |
1597 | } |
1598 | else |
1599 | { |
1600 | ir->opts.nhchainlength = 1; |
1601 | } |
1602 | gmx_fio_do_int(fio, ir->opts.ngacc)gmx_fio_doe_int(fio, &ir->opts.ngacc, ("ir->opts.ngacc" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1602); |
1603 | gmx_fio_do_int(fio, ir->opts.ngfrz)gmx_fio_doe_int(fio, &ir->opts.ngfrz, ("ir->opts.ngfrz" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1603); |
1604 | gmx_fio_do_int(fio, ir->opts.ngener)gmx_fio_doe_int(fio, &ir->opts.ngener, ("ir->opts.ngener" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1604); |
1605 | |
1606 | if (bRead) |
1607 | { |
1608 | snew(ir->opts.nrdf, ir->opts.ngtc)(ir->opts.nrdf) = save_calloc("ir->opts.nrdf", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1608, (ir->opts.ngtc), sizeof(*(ir->opts.nrdf))); |
1609 | snew(ir->opts.ref_t, ir->opts.ngtc)(ir->opts.ref_t) = save_calloc("ir->opts.ref_t", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1609, (ir->opts.ngtc), sizeof(*(ir->opts.ref_t))); |
1610 | snew(ir->opts.annealing, ir->opts.ngtc)(ir->opts.annealing) = save_calloc("ir->opts.annealing" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1610 , (ir->opts.ngtc), sizeof(*(ir->opts.annealing))); |
1611 | snew(ir->opts.anneal_npoints, ir->opts.ngtc)(ir->opts.anneal_npoints) = save_calloc("ir->opts.anneal_npoints" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1611 , (ir->opts.ngtc), sizeof(*(ir->opts.anneal_npoints))); |
1612 | snew(ir->opts.anneal_time, ir->opts.ngtc)(ir->opts.anneal_time) = save_calloc("ir->opts.anneal_time" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1612 , (ir->opts.ngtc), sizeof(*(ir->opts.anneal_time))); |
1613 | snew(ir->opts.anneal_temp, ir->opts.ngtc)(ir->opts.anneal_temp) = save_calloc("ir->opts.anneal_temp" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1613 , (ir->opts.ngtc), sizeof(*(ir->opts.anneal_temp))); |
1614 | snew(ir->opts.tau_t, ir->opts.ngtc)(ir->opts.tau_t) = save_calloc("ir->opts.tau_t", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1614, (ir->opts.ngtc), sizeof(*(ir->opts.tau_t))); |
1615 | snew(ir->opts.nFreeze, ir->opts.ngfrz)(ir->opts.nFreeze) = save_calloc("ir->opts.nFreeze", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1615, (ir->opts.ngfrz), sizeof(*(ir->opts.nFreeze))); |
1616 | snew(ir->opts.acc, ir->opts.ngacc)(ir->opts.acc) = save_calloc("ir->opts.acc", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1616, (ir->opts.ngacc), sizeof(*(ir->opts.acc))); |
1617 | snew(ir->opts.egp_flags, ir->opts.ngener*ir->opts.ngener)(ir->opts.egp_flags) = save_calloc("ir->opts.egp_flags" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1617 , (ir->opts.ngener*ir->opts.ngener), sizeof(*(ir->opts .egp_flags))); |
1618 | } |
1619 | if (ir->opts.ngtc > 0) |
1620 | { |
1621 | if (bRead && file_version < 13) |
1622 | { |
1623 | snew(tmp, ir->opts.ngtc)(tmp) = save_calloc("tmp", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1623, (ir->opts.ngtc), sizeof(*(tmp))); |
1624 | gmx_fio_ndo_int(fio, tmp, ir->opts.ngtc)gmx_fio_ndoe_int(fio, tmp, ir->opts.ngtc, ("tmp"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1624); |
1625 | for (i = 0; i < ir->opts.ngtc; i++) |
1626 | { |
1627 | ir->opts.nrdf[i] = tmp[i]; |
1628 | } |
1629 | sfree(tmp)save_free("tmp", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1629, (tmp)); |
1630 | } |
1631 | else |
1632 | { |
1633 | gmx_fio_ndo_real(fio, ir->opts.nrdf, ir->opts.ngtc)gmx_fio_ndoe_real(fio, ir->opts.nrdf, ir->opts.ngtc, ("ir->opts.nrdf" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1633); |
1634 | } |
1635 | gmx_fio_ndo_real(fio, ir->opts.ref_t, ir->opts.ngtc)gmx_fio_ndoe_real(fio, ir->opts.ref_t, ir->opts.ngtc, ( "ir->opts.ref_t"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1635); |
1636 | gmx_fio_ndo_real(fio, ir->opts.tau_t, ir->opts.ngtc)gmx_fio_ndoe_real(fio, ir->opts.tau_t, ir->opts.ngtc, ( "ir->opts.tau_t"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1636); |
1637 | if (file_version < 33 && ir->eI == eiBD) |
1638 | { |
1639 | for (i = 0; i < ir->opts.ngtc; i++) |
1640 | { |
1641 | ir->opts.tau_t[i] = bd_temp; |
1642 | } |
1643 | } |
1644 | } |
1645 | if (ir->opts.ngfrz > 0) |
1646 | { |
1647 | gmx_fio_ndo_ivec(fio, ir->opts.nFreeze, ir->opts.ngfrz)gmx_fio_ndoe_ivec(fio, ir->opts.nFreeze, ir->opts.ngfrz , ("ir->opts.nFreeze"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1647); |
1648 | } |
1649 | if (ir->opts.ngacc > 0) |
1650 | { |
1651 | gmx_fio_ndo_rvec(fio, ir->opts.acc, ir->opts.ngacc)gmx_fio_ndoe_rvec(fio, ir->opts.acc, ir->opts.ngacc, ("ir->opts.acc" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1651); |
1652 | } |
1653 | if (file_version >= 12) |
1654 | { |
1655 | gmx_fio_ndo_int(fio, ir->opts.egp_flags,gmx_fio_ndoe_int(fio, ir->opts.egp_flags, ir->opts.ngener *ir->opts.ngener, ("ir->opts.egp_flags"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1656) |
1656 | ir->opts.ngener*ir->opts.ngener)gmx_fio_ndoe_int(fio, ir->opts.egp_flags, ir->opts.ngener *ir->opts.ngener, ("ir->opts.egp_flags"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1656); |
1657 | } |
1658 | |
1659 | if (bRead && file_version < 26) |
1660 | { |
1661 | for (i = 0; i < ir->opts.ngtc; i++) |
1662 | { |
1663 | if (bSimAnn) |
1664 | { |
1665 | ir->opts.annealing[i] = eannSINGLE; |
1666 | ir->opts.anneal_npoints[i] = 2; |
1667 | snew(ir->opts.anneal_time[i], 2)(ir->opts.anneal_time[i]) = save_calloc("ir->opts.anneal_time[i]" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1667 , (2), sizeof(*(ir->opts.anneal_time[i]))); |
1668 | snew(ir->opts.anneal_temp[i], 2)(ir->opts.anneal_temp[i]) = save_calloc("ir->opts.anneal_temp[i]" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1668 , (2), sizeof(*(ir->opts.anneal_temp[i]))); |
1669 | /* calculate the starting/ending temperatures from reft, zerotemptime, and nsteps */ |
1670 | finish_t = ir->init_t + ir->nsteps * ir->delta_t; |
1671 | init_temp = ir->opts.ref_t[i]*(1-ir->init_t/zerotemptime); |
1672 | finish_temp = ir->opts.ref_t[i]*(1-finish_t/zerotemptime); |
1673 | ir->opts.anneal_time[i][0] = ir->init_t; |
1674 | ir->opts.anneal_time[i][1] = finish_t; |
1675 | ir->opts.anneal_temp[i][0] = init_temp; |
1676 | ir->opts.anneal_temp[i][1] = finish_temp; |
1677 | } |
1678 | else |
1679 | { |
1680 | ir->opts.annealing[i] = eannNO; |
1681 | ir->opts.anneal_npoints[i] = 0; |
1682 | } |
1683 | } |
1684 | } |
1685 | else |
1686 | { |
1687 | /* file version 26 or later */ |
1688 | /* First read the lists with annealing and npoints for each group */ |
1689 | gmx_fio_ndo_int(fio, ir->opts.annealing, ir->opts.ngtc)gmx_fio_ndoe_int(fio, ir->opts.annealing, ir->opts.ngtc , ("ir->opts.annealing"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1689); |
1690 | gmx_fio_ndo_int(fio, ir->opts.anneal_npoints, ir->opts.ngtc)gmx_fio_ndoe_int(fio, ir->opts.anneal_npoints, ir->opts .ngtc, ("ir->opts.anneal_npoints"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1690); |
1691 | for (j = 0; j < (ir->opts.ngtc); j++) |
1692 | { |
1693 | k = ir->opts.anneal_npoints[j]; |
1694 | if (bRead) |
1695 | { |
1696 | snew(ir->opts.anneal_time[j], k)(ir->opts.anneal_time[j]) = save_calloc("ir->opts.anneal_time[j]" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1696 , (k), sizeof(*(ir->opts.anneal_time[j]))); |
1697 | snew(ir->opts.anneal_temp[j], k)(ir->opts.anneal_temp[j]) = save_calloc("ir->opts.anneal_temp[j]" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1697 , (k), sizeof(*(ir->opts.anneal_temp[j]))); |
1698 | } |
1699 | gmx_fio_ndo_real(fio, ir->opts.anneal_time[j], k)gmx_fio_ndoe_real(fio, ir->opts.anneal_time[j], k, ("ir->opts.anneal_time[j]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1699); |
1700 | gmx_fio_ndo_real(fio, ir->opts.anneal_temp[j], k)gmx_fio_ndoe_real(fio, ir->opts.anneal_temp[j], k, ("ir->opts.anneal_temp[j]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1700); |
1701 | } |
1702 | } |
1703 | /* Walls */ |
1704 | if (file_version >= 45) |
1705 | { |
1706 | gmx_fio_do_int(fio, ir->nwall)gmx_fio_doe_int(fio, &ir->nwall, ("ir->nwall"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1706); |
1707 | gmx_fio_do_int(fio, ir->wall_type)gmx_fio_doe_int(fio, &ir->wall_type, ("ir->wall_type" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1707); |
1708 | if (file_version >= 50) |
1709 | { |
1710 | gmx_fio_do_real(fio, ir->wall_r_linpot)gmx_fio_doe_real(fio, &ir->wall_r_linpot, ("ir->wall_r_linpot" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1710); |
1711 | } |
1712 | else |
1713 | { |
1714 | ir->wall_r_linpot = -1; |
1715 | } |
1716 | gmx_fio_do_int(fio, ir->wall_atomtype[0])gmx_fio_doe_int(fio, &ir->wall_atomtype[0], ("ir->wall_atomtype[0]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1716); |
1717 | gmx_fio_do_int(fio, ir->wall_atomtype[1])gmx_fio_doe_int(fio, &ir->wall_atomtype[1], ("ir->wall_atomtype[1]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1717); |
1718 | gmx_fio_do_real(fio, ir->wall_density[0])gmx_fio_doe_real(fio, &ir->wall_density[0], ("ir->wall_density[0]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1718); |
1719 | gmx_fio_do_real(fio, ir->wall_density[1])gmx_fio_doe_real(fio, &ir->wall_density[1], ("ir->wall_density[1]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1719); |
1720 | gmx_fio_do_real(fio, ir->wall_ewald_zfac)gmx_fio_doe_real(fio, &ir->wall_ewald_zfac, ("ir->wall_ewald_zfac" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1720); |
1721 | } |
1722 | else |
1723 | { |
1724 | ir->nwall = 0; |
1725 | ir->wall_type = 0; |
1726 | ir->wall_atomtype[0] = -1; |
1727 | ir->wall_atomtype[1] = -1; |
1728 | ir->wall_density[0] = 0; |
1729 | ir->wall_density[1] = 0; |
1730 | ir->wall_ewald_zfac = 3; |
1731 | } |
1732 | /* Cosine stuff for electric fields */ |
1733 | for (j = 0; (j < DIM3); j++) |
1734 | { |
1735 | gmx_fio_do_int(fio, ir->ex[j].n)gmx_fio_doe_int(fio, &ir->ex[j].n, ("ir->ex[j].n"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1735 ); |
1736 | gmx_fio_do_int(fio, ir->et[j].n)gmx_fio_doe_int(fio, &ir->et[j].n, ("ir->et[j].n"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1736 ); |
1737 | if (bRead) |
1738 | { |
1739 | snew(ir->ex[j].a, ir->ex[j].n)(ir->ex[j].a) = save_calloc("ir->ex[j].a", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1739, (ir->ex[j].n), sizeof(*(ir->ex[j].a))); |
1740 | snew(ir->ex[j].phi, ir->ex[j].n)(ir->ex[j].phi) = save_calloc("ir->ex[j].phi", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1740, (ir->ex[j].n), sizeof(*(ir->ex[j].phi))); |
1741 | snew(ir->et[j].a, ir->et[j].n)(ir->et[j].a) = save_calloc("ir->et[j].a", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1741, (ir->et[j].n), sizeof(*(ir->et[j].a))); |
1742 | snew(ir->et[j].phi, ir->et[j].n)(ir->et[j].phi) = save_calloc("ir->et[j].phi", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1742, (ir->et[j].n), sizeof(*(ir->et[j].phi))); |
1743 | } |
1744 | gmx_fio_ndo_real(fio, ir->ex[j].a, ir->ex[j].n)gmx_fio_ndoe_real(fio, ir->ex[j].a, ir->ex[j].n, ("ir->ex[j].a" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1744); |
1745 | gmx_fio_ndo_real(fio, ir->ex[j].phi, ir->ex[j].n)gmx_fio_ndoe_real(fio, ir->ex[j].phi, ir->ex[j].n, ("ir->ex[j].phi" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1745); |
1746 | gmx_fio_ndo_real(fio, ir->et[j].a, ir->et[j].n)gmx_fio_ndoe_real(fio, ir->et[j].a, ir->et[j].n, ("ir->et[j].a" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1746); |
1747 | gmx_fio_ndo_real(fio, ir->et[j].phi, ir->et[j].n)gmx_fio_ndoe_real(fio, ir->et[j].phi, ir->et[j].n, ("ir->et[j].phi" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1747); |
1748 | } |
1749 | |
1750 | /* Swap ions */ |
1751 | if (file_version >= tpxv_ComputationalElectrophysiology) |
1752 | { |
1753 | gmx_fio_do_int(fio, ir->eSwapCoords)gmx_fio_doe_int(fio, &ir->eSwapCoords, ("ir->eSwapCoords" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1753); |
1754 | if (ir->eSwapCoords != eswapNO) |
1755 | { |
1756 | if (bRead) |
1757 | { |
1758 | snew(ir->swap, 1)(ir->swap) = save_calloc("ir->swap", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1758, (1), sizeof(*(ir->swap))); |
1759 | } |
1760 | do_swapcoords(fio, ir->swap, bRead); |
1761 | } |
1762 | } |
1763 | |
1764 | /* QMMM stuff */ |
1765 | if (file_version >= 39) |
1766 | { |
1767 | gmx_fio_do_gmx_bool(fio, ir->bQMMM)gmx_fio_doe_gmx_bool(fio, &ir->bQMMM, ("ir->bQMMM") , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1767 ); |
1768 | gmx_fio_do_int(fio, ir->QMMMscheme)gmx_fio_doe_int(fio, &ir->QMMMscheme, ("ir->QMMMscheme" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1768); |
1769 | gmx_fio_do_real(fio, ir->scalefactor)gmx_fio_doe_real(fio, &ir->scalefactor, ("ir->scalefactor" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1769); |
1770 | gmx_fio_do_int(fio, ir->opts.ngQM)gmx_fio_doe_int(fio, &ir->opts.ngQM, ("ir->opts.ngQM" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1770); |
1771 | if (bRead) |
1772 | { |
1773 | snew(ir->opts.QMmethod, ir->opts.ngQM)(ir->opts.QMmethod) = save_calloc("ir->opts.QMmethod", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1773, (ir->opts.ngQM), sizeof(*(ir->opts.QMmethod))); |
1774 | snew(ir->opts.QMbasis, ir->opts.ngQM)(ir->opts.QMbasis) = save_calloc("ir->opts.QMbasis", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1774, (ir->opts.ngQM), sizeof(*(ir->opts.QMbasis))); |
1775 | snew(ir->opts.QMcharge, ir->opts.ngQM)(ir->opts.QMcharge) = save_calloc("ir->opts.QMcharge", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1775, (ir->opts.ngQM), sizeof(*(ir->opts.QMcharge))); |
1776 | snew(ir->opts.QMmult, ir->opts.ngQM)(ir->opts.QMmult) = save_calloc("ir->opts.QMmult", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1776, (ir->opts.ngQM), sizeof(*(ir->opts.QMmult))); |
1777 | snew(ir->opts.bSH, ir->opts.ngQM)(ir->opts.bSH) = save_calloc("ir->opts.bSH", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1777, (ir->opts.ngQM), sizeof(*(ir->opts.bSH))); |
1778 | snew(ir->opts.CASorbitals, ir->opts.ngQM)(ir->opts.CASorbitals) = save_calloc("ir->opts.CASorbitals" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1778 , (ir->opts.ngQM), sizeof(*(ir->opts.CASorbitals))); |
1779 | snew(ir->opts.CASelectrons, ir->opts.ngQM)(ir->opts.CASelectrons) = save_calloc("ir->opts.CASelectrons" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1779 , (ir->opts.ngQM), sizeof(*(ir->opts.CASelectrons))); |
1780 | snew(ir->opts.SAon, ir->opts.ngQM)(ir->opts.SAon) = save_calloc("ir->opts.SAon", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1780, (ir->opts.ngQM), sizeof(*(ir->opts.SAon))); |
1781 | snew(ir->opts.SAoff, ir->opts.ngQM)(ir->opts.SAoff) = save_calloc("ir->opts.SAoff", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1781, (ir->opts.ngQM), sizeof(*(ir->opts.SAoff))); |
1782 | snew(ir->opts.SAsteps, ir->opts.ngQM)(ir->opts.SAsteps) = save_calloc("ir->opts.SAsteps", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1782, (ir->opts.ngQM), sizeof(*(ir->opts.SAsteps))); |
1783 | snew(ir->opts.bOPT, ir->opts.ngQM)(ir->opts.bOPT) = save_calloc("ir->opts.bOPT", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1783, (ir->opts.ngQM), sizeof(*(ir->opts.bOPT))); |
1784 | snew(ir->opts.bTS, ir->opts.ngQM)(ir->opts.bTS) = save_calloc("ir->opts.bTS", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1784, (ir->opts.ngQM), sizeof(*(ir->opts.bTS))); |
1785 | } |
1786 | if (ir->opts.ngQM > 0) |
1787 | { |
1788 | gmx_fio_ndo_int(fio, ir->opts.QMmethod, ir->opts.ngQM)gmx_fio_ndoe_int(fio, ir->opts.QMmethod, ir->opts.ngQM, ("ir->opts.QMmethod"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1788); |
1789 | gmx_fio_ndo_int(fio, ir->opts.QMbasis, ir->opts.ngQM)gmx_fio_ndoe_int(fio, ir->opts.QMbasis, ir->opts.ngQM, ( "ir->opts.QMbasis"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1789); |
1790 | gmx_fio_ndo_int(fio, ir->opts.QMcharge, ir->opts.ngQM)gmx_fio_ndoe_int(fio, ir->opts.QMcharge, ir->opts.ngQM, ("ir->opts.QMcharge"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1790); |
1791 | gmx_fio_ndo_int(fio, ir->opts.QMmult, ir->opts.ngQM)gmx_fio_ndoe_int(fio, ir->opts.QMmult, ir->opts.ngQM, ( "ir->opts.QMmult"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1791); |
1792 | gmx_fio_ndo_gmx_bool(fio, ir->opts.bSH, ir->opts.ngQM)gmx_fio_ndoe_gmx_bool(fio, ir->opts.bSH, ir->opts.ngQM, ("ir->opts.bSH"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1792); |
1793 | gmx_fio_ndo_int(fio, ir->opts.CASorbitals, ir->opts.ngQM)gmx_fio_ndoe_int(fio, ir->opts.CASorbitals, ir->opts.ngQM , ("ir->opts.CASorbitals"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1793); |
1794 | gmx_fio_ndo_int(fio, ir->opts.CASelectrons, ir->opts.ngQM)gmx_fio_ndoe_int(fio, ir->opts.CASelectrons, ir->opts.ngQM , ("ir->opts.CASelectrons"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1794); |
1795 | gmx_fio_ndo_real(fio, ir->opts.SAon, ir->opts.ngQM)gmx_fio_ndoe_real(fio, ir->opts.SAon, ir->opts.ngQM, ("ir->opts.SAon" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1795); |
1796 | gmx_fio_ndo_real(fio, ir->opts.SAoff, ir->opts.ngQM)gmx_fio_ndoe_real(fio, ir->opts.SAoff, ir->opts.ngQM, ( "ir->opts.SAoff"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1796); |
1797 | gmx_fio_ndo_int(fio, ir->opts.SAsteps, ir->opts.ngQM)gmx_fio_ndoe_int(fio, ir->opts.SAsteps, ir->opts.ngQM, ( "ir->opts.SAsteps"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1797); |
1798 | gmx_fio_ndo_gmx_bool(fio, ir->opts.bOPT, ir->opts.ngQM)gmx_fio_ndoe_gmx_bool(fio, ir->opts.bOPT, ir->opts.ngQM , ("ir->opts.bOPT"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1798); |
1799 | gmx_fio_ndo_gmx_bool(fio, ir->opts.bTS, ir->opts.ngQM)gmx_fio_ndoe_gmx_bool(fio, ir->opts.bTS, ir->opts.ngQM, ("ir->opts.bTS"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1799); |
1800 | } |
1801 | /* end of QMMM stuff */ |
1802 | } |
1803 | } |
1804 | |
1805 | |
1806 | static void do_harm(t_fileio *fio, t_iparams *iparams) |
1807 | { |
1808 | gmx_fio_do_real(fio, iparams->harmonic.rA)gmx_fio_doe_real(fio, &iparams->harmonic.rA, ("iparams->harmonic.rA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1808); |
1809 | gmx_fio_do_real(fio, iparams->harmonic.krA)gmx_fio_doe_real(fio, &iparams->harmonic.krA, ("iparams->harmonic.krA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1809); |
1810 | gmx_fio_do_real(fio, iparams->harmonic.rB)gmx_fio_doe_real(fio, &iparams->harmonic.rB, ("iparams->harmonic.rB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1810); |
1811 | gmx_fio_do_real(fio, iparams->harmonic.krB)gmx_fio_doe_real(fio, &iparams->harmonic.krB, ("iparams->harmonic.krB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1811); |
1812 | } |
1813 | |
1814 | void do_iparams(t_fileio *fio, t_functype ftype, t_iparams *iparams, |
1815 | gmx_bool bRead, int file_version) |
1816 | { |
1817 | int idum; |
1818 | real rdum; |
1819 | |
1820 | if (!bRead) |
1821 | { |
1822 | gmx_fio_set_comment(fio, interaction_function[ftype].name); |
1823 | } |
1824 | switch (ftype) |
1825 | { |
1826 | case F_ANGLES: |
1827 | case F_G96ANGLES: |
1828 | case F_BONDS: |
1829 | case F_G96BONDS: |
1830 | case F_HARMONIC: |
1831 | case F_IDIHS: |
1832 | do_harm(fio, iparams); |
1833 | if ((ftype == F_ANGRES || ftype == F_ANGRESZ) && bRead) |
1834 | { |
1835 | /* Correct incorrect storage of parameters */ |
1836 | iparams->pdihs.phiB = iparams->pdihs.phiA; |
1837 | iparams->pdihs.cpB = iparams->pdihs.cpA; |
1838 | } |
1839 | break; |
1840 | case F_RESTRANGLES: |
1841 | gmx_fio_do_real(fio, iparams->harmonic.rA)gmx_fio_doe_real(fio, &iparams->harmonic.rA, ("iparams->harmonic.rA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1841); |
1842 | gmx_fio_do_real(fio, iparams->harmonic.krA)gmx_fio_doe_real(fio, &iparams->harmonic.krA, ("iparams->harmonic.krA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1842); |
1843 | break; |
1844 | case F_LINEAR_ANGLES: |
1845 | gmx_fio_do_real(fio, iparams->linangle.klinA)gmx_fio_doe_real(fio, &iparams->linangle.klinA, ("iparams->linangle.klinA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1845); |
1846 | gmx_fio_do_real(fio, iparams->linangle.aA)gmx_fio_doe_real(fio, &iparams->linangle.aA, ("iparams->linangle.aA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1846); |
1847 | gmx_fio_do_real(fio, iparams->linangle.klinB)gmx_fio_doe_real(fio, &iparams->linangle.klinB, ("iparams->linangle.klinB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1847); |
1848 | gmx_fio_do_real(fio, iparams->linangle.aB)gmx_fio_doe_real(fio, &iparams->linangle.aB, ("iparams->linangle.aB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1848); |
1849 | break; |
1850 | case F_FENEBONDS: |
1851 | gmx_fio_do_real(fio, iparams->fene.bm)gmx_fio_doe_real(fio, &iparams->fene.bm, ("iparams->fene.bm" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1851); |
1852 | gmx_fio_do_real(fio, iparams->fene.kb)gmx_fio_doe_real(fio, &iparams->fene.kb, ("iparams->fene.kb" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1852); |
1853 | break; |
1854 | |
1855 | case F_RESTRBONDS: |
1856 | gmx_fio_do_real(fio, iparams->restraint.lowA)gmx_fio_doe_real(fio, &iparams->restraint.lowA, ("iparams->restraint.lowA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1856); |
1857 | gmx_fio_do_real(fio, iparams->restraint.up1A)gmx_fio_doe_real(fio, &iparams->restraint.up1A, ("iparams->restraint.up1A" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1857); |
1858 | gmx_fio_do_real(fio, iparams->restraint.up2A)gmx_fio_doe_real(fio, &iparams->restraint.up2A, ("iparams->restraint.up2A" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1858); |
1859 | gmx_fio_do_real(fio, iparams->restraint.kA)gmx_fio_doe_real(fio, &iparams->restraint.kA, ("iparams->restraint.kA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1859); |
1860 | gmx_fio_do_real(fio, iparams->restraint.lowB)gmx_fio_doe_real(fio, &iparams->restraint.lowB, ("iparams->restraint.lowB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1860); |
1861 | gmx_fio_do_real(fio, iparams->restraint.up1B)gmx_fio_doe_real(fio, &iparams->restraint.up1B, ("iparams->restraint.up1B" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1861); |
1862 | gmx_fio_do_real(fio, iparams->restraint.up2B)gmx_fio_doe_real(fio, &iparams->restraint.up2B, ("iparams->restraint.up2B" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1862); |
1863 | gmx_fio_do_real(fio, iparams->restraint.kB)gmx_fio_doe_real(fio, &iparams->restraint.kB, ("iparams->restraint.kB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1863); |
1864 | break; |
1865 | case F_TABBONDS: |
1866 | case F_TABBONDSNC: |
1867 | case F_TABANGLES: |
1868 | case F_TABDIHS: |
1869 | gmx_fio_do_real(fio, iparams->tab.kA)gmx_fio_doe_real(fio, &iparams->tab.kA, ("iparams->tab.kA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1869); |
1870 | gmx_fio_do_int(fio, iparams->tab.table)gmx_fio_doe_int(fio, &iparams->tab.table, ("iparams->tab.table" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1870); |
1871 | gmx_fio_do_real(fio, iparams->tab.kB)gmx_fio_doe_real(fio, &iparams->tab.kB, ("iparams->tab.kB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1871); |
1872 | break; |
1873 | case F_CROSS_BOND_BONDS: |
1874 | gmx_fio_do_real(fio, iparams->cross_bb.r1e)gmx_fio_doe_real(fio, &iparams->cross_bb.r1e, ("iparams->cross_bb.r1e" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1874); |
1875 | gmx_fio_do_real(fio, iparams->cross_bb.r2e)gmx_fio_doe_real(fio, &iparams->cross_bb.r2e, ("iparams->cross_bb.r2e" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1875); |
1876 | gmx_fio_do_real(fio, iparams->cross_bb.krr)gmx_fio_doe_real(fio, &iparams->cross_bb.krr, ("iparams->cross_bb.krr" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1876); |
1877 | break; |
1878 | case F_CROSS_BOND_ANGLES: |
1879 | gmx_fio_do_real(fio, iparams->cross_ba.r1e)gmx_fio_doe_real(fio, &iparams->cross_ba.r1e, ("iparams->cross_ba.r1e" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1879); |
1880 | gmx_fio_do_real(fio, iparams->cross_ba.r2e)gmx_fio_doe_real(fio, &iparams->cross_ba.r2e, ("iparams->cross_ba.r2e" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1880); |
1881 | gmx_fio_do_real(fio, iparams->cross_ba.r3e)gmx_fio_doe_real(fio, &iparams->cross_ba.r3e, ("iparams->cross_ba.r3e" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1881); |
1882 | gmx_fio_do_real(fio, iparams->cross_ba.krt)gmx_fio_doe_real(fio, &iparams->cross_ba.krt, ("iparams->cross_ba.krt" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1882); |
1883 | break; |
1884 | case F_UREY_BRADLEY: |
1885 | gmx_fio_do_real(fio, iparams->u_b.thetaA)gmx_fio_doe_real(fio, &iparams->u_b.thetaA, ("iparams->u_b.thetaA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1885); |
1886 | gmx_fio_do_real(fio, iparams->u_b.kthetaA)gmx_fio_doe_real(fio, &iparams->u_b.kthetaA, ("iparams->u_b.kthetaA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1886); |
1887 | gmx_fio_do_real(fio, iparams->u_b.r13A)gmx_fio_doe_real(fio, &iparams->u_b.r13A, ("iparams->u_b.r13A" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1887); |
1888 | gmx_fio_do_real(fio, iparams->u_b.kUBA)gmx_fio_doe_real(fio, &iparams->u_b.kUBA, ("iparams->u_b.kUBA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1888); |
1889 | if (file_version >= 79) |
1890 | { |
1891 | gmx_fio_do_real(fio, iparams->u_b.thetaB)gmx_fio_doe_real(fio, &iparams->u_b.thetaB, ("iparams->u_b.thetaB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1891); |
1892 | gmx_fio_do_real(fio, iparams->u_b.kthetaB)gmx_fio_doe_real(fio, &iparams->u_b.kthetaB, ("iparams->u_b.kthetaB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1892); |
1893 | gmx_fio_do_real(fio, iparams->u_b.r13B)gmx_fio_doe_real(fio, &iparams->u_b.r13B, ("iparams->u_b.r13B" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1893); |
1894 | gmx_fio_do_real(fio, iparams->u_b.kUBB)gmx_fio_doe_real(fio, &iparams->u_b.kUBB, ("iparams->u_b.kUBB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1894); |
1895 | } |
1896 | else |
1897 | { |
1898 | iparams->u_b.thetaB = iparams->u_b.thetaA; |
1899 | iparams->u_b.kthetaB = iparams->u_b.kthetaA; |
1900 | iparams->u_b.r13B = iparams->u_b.r13A; |
1901 | iparams->u_b.kUBB = iparams->u_b.kUBA; |
1902 | } |
1903 | break; |
1904 | case F_QUARTIC_ANGLES: |
1905 | gmx_fio_do_real(fio, iparams->qangle.theta)gmx_fio_doe_real(fio, &iparams->qangle.theta, ("iparams->qangle.theta" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1905); |
1906 | gmx_fio_ndo_real(fio, iparams->qangle.c, 5)gmx_fio_ndoe_real(fio, iparams->qangle.c, 5, ("iparams->qangle.c" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1906); |
1907 | break; |
1908 | case F_BHAM: |
1909 | gmx_fio_do_real(fio, iparams->bham.a)gmx_fio_doe_real(fio, &iparams->bham.a, ("iparams->bham.a" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1909); |
1910 | gmx_fio_do_real(fio, iparams->bham.b)gmx_fio_doe_real(fio, &iparams->bham.b, ("iparams->bham.b" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1910); |
1911 | gmx_fio_do_real(fio, iparams->bham.c)gmx_fio_doe_real(fio, &iparams->bham.c, ("iparams->bham.c" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1911); |
1912 | break; |
1913 | case F_MORSE: |
1914 | gmx_fio_do_real(fio, iparams->morse.b0A)gmx_fio_doe_real(fio, &iparams->morse.b0A, ("iparams->morse.b0A" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1914); |
1915 | gmx_fio_do_real(fio, iparams->morse.cbA)gmx_fio_doe_real(fio, &iparams->morse.cbA, ("iparams->morse.cbA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1915); |
1916 | gmx_fio_do_real(fio, iparams->morse.betaA)gmx_fio_doe_real(fio, &iparams->morse.betaA, ("iparams->morse.betaA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1916); |
1917 | if (file_version >= 79) |
1918 | { |
1919 | gmx_fio_do_real(fio, iparams->morse.b0B)gmx_fio_doe_real(fio, &iparams->morse.b0B, ("iparams->morse.b0B" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1919); |
1920 | gmx_fio_do_real(fio, iparams->morse.cbB)gmx_fio_doe_real(fio, &iparams->morse.cbB, ("iparams->morse.cbB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1920); |
1921 | gmx_fio_do_real(fio, iparams->morse.betaB)gmx_fio_doe_real(fio, &iparams->morse.betaB, ("iparams->morse.betaB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1921); |
1922 | } |
1923 | else |
1924 | { |
1925 | iparams->morse.b0B = iparams->morse.b0A; |
1926 | iparams->morse.cbB = iparams->morse.cbA; |
1927 | iparams->morse.betaB = iparams->morse.betaA; |
1928 | } |
1929 | break; |
1930 | case F_CUBICBONDS: |
1931 | gmx_fio_do_real(fio, iparams->cubic.b0)gmx_fio_doe_real(fio, &iparams->cubic.b0, ("iparams->cubic.b0" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1931); |
1932 | gmx_fio_do_real(fio, iparams->cubic.kb)gmx_fio_doe_real(fio, &iparams->cubic.kb, ("iparams->cubic.kb" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1932); |
1933 | gmx_fio_do_real(fio, iparams->cubic.kcub)gmx_fio_doe_real(fio, &iparams->cubic.kcub, ("iparams->cubic.kcub" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1933); |
1934 | break; |
1935 | case F_CONNBONDS: |
1936 | break; |
1937 | case F_POLARIZATION: |
1938 | gmx_fio_do_real(fio, iparams->polarize.alpha)gmx_fio_doe_real(fio, &iparams->polarize.alpha, ("iparams->polarize.alpha" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1938); |
1939 | break; |
1940 | case F_ANHARM_POL: |
1941 | gmx_fio_do_real(fio, iparams->anharm_polarize.alpha)gmx_fio_doe_real(fio, &iparams->anharm_polarize.alpha, ("iparams->anharm_polarize.alpha"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1941); |
1942 | gmx_fio_do_real(fio, iparams->anharm_polarize.drcut)gmx_fio_doe_real(fio, &iparams->anharm_polarize.drcut, ("iparams->anharm_polarize.drcut"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1942); |
1943 | gmx_fio_do_real(fio, iparams->anharm_polarize.khyp)gmx_fio_doe_real(fio, &iparams->anharm_polarize.khyp, ( "iparams->anharm_polarize.khyp"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 1943); |
1944 | break; |
1945 | case F_WATER_POL: |
1946 | if (file_version < 31) |
1947 | { |
1948 | gmx_fatal(FARGS0, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1948, "Old tpr files with water_polarization not supported. Make a new."); |
1949 | } |
1950 | gmx_fio_do_real(fio, iparams->wpol.al_x)gmx_fio_doe_real(fio, &iparams->wpol.al_x, ("iparams->wpol.al_x" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1950); |
1951 | gmx_fio_do_real(fio, iparams->wpol.al_y)gmx_fio_doe_real(fio, &iparams->wpol.al_y, ("iparams->wpol.al_y" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1951); |
1952 | gmx_fio_do_real(fio, iparams->wpol.al_z)gmx_fio_doe_real(fio, &iparams->wpol.al_z, ("iparams->wpol.al_z" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1952); |
1953 | gmx_fio_do_real(fio, iparams->wpol.rOH)gmx_fio_doe_real(fio, &iparams->wpol.rOH, ("iparams->wpol.rOH" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1953); |
1954 | gmx_fio_do_real(fio, iparams->wpol.rHH)gmx_fio_doe_real(fio, &iparams->wpol.rHH, ("iparams->wpol.rHH" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1954); |
1955 | gmx_fio_do_real(fio, iparams->wpol.rOD)gmx_fio_doe_real(fio, &iparams->wpol.rOD, ("iparams->wpol.rOD" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1955); |
1956 | break; |
1957 | case F_THOLE_POL: |
1958 | gmx_fio_do_real(fio, iparams->thole.a)gmx_fio_doe_real(fio, &iparams->thole.a, ("iparams->thole.a" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1958); |
1959 | gmx_fio_do_real(fio, iparams->thole.alpha1)gmx_fio_doe_real(fio, &iparams->thole.alpha1, ("iparams->thole.alpha1" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1959); |
1960 | gmx_fio_do_real(fio, iparams->thole.alpha2)gmx_fio_doe_real(fio, &iparams->thole.alpha2, ("iparams->thole.alpha2" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1960); |
1961 | gmx_fio_do_real(fio, iparams->thole.rfac)gmx_fio_doe_real(fio, &iparams->thole.rfac, ("iparams->thole.rfac" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1961); |
1962 | break; |
1963 | case F_LJ: |
1964 | gmx_fio_do_real(fio, iparams->lj.c6)gmx_fio_doe_real(fio, &iparams->lj.c6, ("iparams->lj.c6" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1964); |
1965 | gmx_fio_do_real(fio, iparams->lj.c12)gmx_fio_doe_real(fio, &iparams->lj.c12, ("iparams->lj.c12" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1965); |
1966 | break; |
1967 | case F_LJ14: |
1968 | gmx_fio_do_real(fio, iparams->lj14.c6A)gmx_fio_doe_real(fio, &iparams->lj14.c6A, ("iparams->lj14.c6A" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1968); |
1969 | gmx_fio_do_real(fio, iparams->lj14.c12A)gmx_fio_doe_real(fio, &iparams->lj14.c12A, ("iparams->lj14.c12A" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1969); |
1970 | gmx_fio_do_real(fio, iparams->lj14.c6B)gmx_fio_doe_real(fio, &iparams->lj14.c6B, ("iparams->lj14.c6B" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1970); |
1971 | gmx_fio_do_real(fio, iparams->lj14.c12B)gmx_fio_doe_real(fio, &iparams->lj14.c12B, ("iparams->lj14.c12B" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1971); |
1972 | break; |
1973 | case F_LJC14_Q: |
1974 | gmx_fio_do_real(fio, iparams->ljc14.fqq)gmx_fio_doe_real(fio, &iparams->ljc14.fqq, ("iparams->ljc14.fqq" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1974); |
1975 | gmx_fio_do_real(fio, iparams->ljc14.qi)gmx_fio_doe_real(fio, &iparams->ljc14.qi, ("iparams->ljc14.qi" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1975); |
1976 | gmx_fio_do_real(fio, iparams->ljc14.qj)gmx_fio_doe_real(fio, &iparams->ljc14.qj, ("iparams->ljc14.qj" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1976); |
1977 | gmx_fio_do_real(fio, iparams->ljc14.c6)gmx_fio_doe_real(fio, &iparams->ljc14.c6, ("iparams->ljc14.c6" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1977); |
1978 | gmx_fio_do_real(fio, iparams->ljc14.c12)gmx_fio_doe_real(fio, &iparams->ljc14.c12, ("iparams->ljc14.c12" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1978); |
1979 | break; |
1980 | case F_LJC_PAIRS_NB: |
1981 | gmx_fio_do_real(fio, iparams->ljcnb.qi)gmx_fio_doe_real(fio, &iparams->ljcnb.qi, ("iparams->ljcnb.qi" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1981); |
1982 | gmx_fio_do_real(fio, iparams->ljcnb.qj)gmx_fio_doe_real(fio, &iparams->ljcnb.qj, ("iparams->ljcnb.qj" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1982); |
1983 | gmx_fio_do_real(fio, iparams->ljcnb.c6)gmx_fio_doe_real(fio, &iparams->ljcnb.c6, ("iparams->ljcnb.c6" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1983); |
1984 | gmx_fio_do_real(fio, iparams->ljcnb.c12)gmx_fio_doe_real(fio, &iparams->ljcnb.c12, ("iparams->ljcnb.c12" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1984); |
1985 | break; |
1986 | case F_PDIHS: |
1987 | case F_PIDIHS: |
1988 | case F_ANGRES: |
1989 | case F_ANGRESZ: |
1990 | gmx_fio_do_real(fio, iparams->pdihs.phiA)gmx_fio_doe_real(fio, &iparams->pdihs.phiA, ("iparams->pdihs.phiA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1990); |
1991 | gmx_fio_do_real(fio, iparams->pdihs.cpA)gmx_fio_doe_real(fio, &iparams->pdihs.cpA, ("iparams->pdihs.cpA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1991); |
1992 | if ((ftype == F_ANGRES || ftype == F_ANGRESZ) && file_version < 42) |
1993 | { |
1994 | /* Read the incorrectly stored multiplicity */ |
1995 | gmx_fio_do_real(fio, iparams->harmonic.rB)gmx_fio_doe_real(fio, &iparams->harmonic.rB, ("iparams->harmonic.rB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1995); |
1996 | gmx_fio_do_real(fio, iparams->harmonic.krB)gmx_fio_doe_real(fio, &iparams->harmonic.krB, ("iparams->harmonic.krB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 1996); |
1997 | iparams->pdihs.phiB = iparams->pdihs.phiA; |
1998 | iparams->pdihs.cpB = iparams->pdihs.cpA; |
1999 | } |
2000 | else |
2001 | { |
2002 | gmx_fio_do_real(fio, iparams->pdihs.phiB)gmx_fio_doe_real(fio, &iparams->pdihs.phiB, ("iparams->pdihs.phiB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2002); |
2003 | gmx_fio_do_real(fio, iparams->pdihs.cpB)gmx_fio_doe_real(fio, &iparams->pdihs.cpB, ("iparams->pdihs.cpB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2003); |
2004 | gmx_fio_do_int(fio, iparams->pdihs.mult)gmx_fio_doe_int(fio, &iparams->pdihs.mult, ("iparams->pdihs.mult" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2004); |
2005 | } |
2006 | break; |
2007 | case F_RESTRDIHS: |
2008 | gmx_fio_do_real(fio, iparams->pdihs.phiA)gmx_fio_doe_real(fio, &iparams->pdihs.phiA, ("iparams->pdihs.phiA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2008); |
2009 | gmx_fio_do_real(fio, iparams->pdihs.cpA)gmx_fio_doe_real(fio, &iparams->pdihs.cpA, ("iparams->pdihs.cpA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2009); |
2010 | break; |
2011 | case F_DISRES: |
2012 | gmx_fio_do_int(fio, iparams->disres.label)gmx_fio_doe_int(fio, &iparams->disres.label, ("iparams->disres.label" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2012); |
2013 | gmx_fio_do_int(fio, iparams->disres.type)gmx_fio_doe_int(fio, &iparams->disres.type, ("iparams->disres.type" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2013); |
2014 | gmx_fio_do_real(fio, iparams->disres.low)gmx_fio_doe_real(fio, &iparams->disres.low, ("iparams->disres.low" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2014); |
2015 | gmx_fio_do_real(fio, iparams->disres.up1)gmx_fio_doe_real(fio, &iparams->disres.up1, ("iparams->disres.up1" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2015); |
2016 | gmx_fio_do_real(fio, iparams->disres.up2)gmx_fio_doe_real(fio, &iparams->disres.up2, ("iparams->disres.up2" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2016); |
2017 | gmx_fio_do_real(fio, iparams->disres.kfac)gmx_fio_doe_real(fio, &iparams->disres.kfac, ("iparams->disres.kfac" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2017); |
2018 | break; |
2019 | case F_ORIRES: |
2020 | gmx_fio_do_int(fio, iparams->orires.ex)gmx_fio_doe_int(fio, &iparams->orires.ex, ("iparams->orires.ex" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2020); |
2021 | gmx_fio_do_int(fio, iparams->orires.label)gmx_fio_doe_int(fio, &iparams->orires.label, ("iparams->orires.label" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2021); |
2022 | gmx_fio_do_int(fio, iparams->orires.power)gmx_fio_doe_int(fio, &iparams->orires.power, ("iparams->orires.power" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2022); |
2023 | gmx_fio_do_real(fio, iparams->orires.c)gmx_fio_doe_real(fio, &iparams->orires.c, ("iparams->orires.c" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2023); |
2024 | gmx_fio_do_real(fio, iparams->orires.obs)gmx_fio_doe_real(fio, &iparams->orires.obs, ("iparams->orires.obs" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2024); |
2025 | gmx_fio_do_real(fio, iparams->orires.kfac)gmx_fio_doe_real(fio, &iparams->orires.kfac, ("iparams->orires.kfac" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2025); |
2026 | break; |
2027 | case F_DIHRES: |
2028 | if (file_version < 82) |
2029 | { |
2030 | gmx_fio_do_int(fio, idum)gmx_fio_doe_int(fio, &idum, ("idum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2030); |
2031 | gmx_fio_do_int(fio, idum)gmx_fio_doe_int(fio, &idum, ("idum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2031); |
2032 | } |
2033 | gmx_fio_do_real(fio, iparams->dihres.phiA)gmx_fio_doe_real(fio, &iparams->dihres.phiA, ("iparams->dihres.phiA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2033); |
2034 | gmx_fio_do_real(fio, iparams->dihres.dphiA)gmx_fio_doe_real(fio, &iparams->dihres.dphiA, ("iparams->dihres.dphiA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2034); |
2035 | gmx_fio_do_real(fio, iparams->dihres.kfacA)gmx_fio_doe_real(fio, &iparams->dihres.kfacA, ("iparams->dihres.kfacA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2035); |
2036 | if (file_version >= 82) |
2037 | { |
2038 | gmx_fio_do_real(fio, iparams->dihres.phiB)gmx_fio_doe_real(fio, &iparams->dihres.phiB, ("iparams->dihres.phiB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2038); |
2039 | gmx_fio_do_real(fio, iparams->dihres.dphiB)gmx_fio_doe_real(fio, &iparams->dihres.dphiB, ("iparams->dihres.dphiB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2039); |
2040 | gmx_fio_do_real(fio, iparams->dihres.kfacB)gmx_fio_doe_real(fio, &iparams->dihres.kfacB, ("iparams->dihres.kfacB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2040); |
2041 | } |
2042 | else |
2043 | { |
2044 | iparams->dihres.phiB = iparams->dihres.phiA; |
2045 | iparams->dihres.dphiB = iparams->dihres.dphiA; |
2046 | iparams->dihres.kfacB = iparams->dihres.kfacA; |
2047 | } |
2048 | break; |
2049 | case F_POSRES: |
2050 | gmx_fio_do_rvec(fio, iparams->posres.pos0A)gmx_fio_doe_rvec(fio, &iparams->posres.pos0A, ("iparams->posres.pos0A" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2050); |
2051 | gmx_fio_do_rvec(fio, iparams->posres.fcA)gmx_fio_doe_rvec(fio, &iparams->posres.fcA, ("iparams->posres.fcA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2051); |
2052 | if (bRead && file_version < 27) |
2053 | { |
2054 | copy_rvec(iparams->posres.pos0A, iparams->posres.pos0B); |
2055 | copy_rvec(iparams->posres.fcA, iparams->posres.fcB); |
2056 | } |
2057 | else |
2058 | { |
2059 | gmx_fio_do_rvec(fio, iparams->posres.pos0B)gmx_fio_doe_rvec(fio, &iparams->posres.pos0B, ("iparams->posres.pos0B" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2059); |
2060 | gmx_fio_do_rvec(fio, iparams->posres.fcB)gmx_fio_doe_rvec(fio, &iparams->posres.fcB, ("iparams->posres.fcB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2060); |
2061 | } |
2062 | break; |
2063 | case F_FBPOSRES: |
2064 | gmx_fio_do_int(fio, iparams->fbposres.geom)gmx_fio_doe_int(fio, &iparams->fbposres.geom, ("iparams->fbposres.geom" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2064); |
2065 | gmx_fio_do_rvec(fio, iparams->fbposres.pos0)gmx_fio_doe_rvec(fio, &iparams->fbposres.pos0, ("iparams->fbposres.pos0" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2065); |
2066 | gmx_fio_do_real(fio, iparams->fbposres.r)gmx_fio_doe_real(fio, &iparams->fbposres.r, ("iparams->fbposres.r" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2066); |
2067 | gmx_fio_do_real(fio, iparams->fbposres.k)gmx_fio_doe_real(fio, &iparams->fbposres.k, ("iparams->fbposres.k" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2067); |
2068 | break; |
2069 | case F_CBTDIHS: |
2070 | gmx_fio_ndo_real(fio, iparams->cbtdihs.cbtcA, NR_CBTDIHS)gmx_fio_ndoe_real(fio, iparams->cbtdihs.cbtcA, 6, ("iparams->cbtdihs.cbtcA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2070); |
2071 | break; |
2072 | case F_RBDIHS: |
2073 | gmx_fio_ndo_real(fio, iparams->rbdihs.rbcA, NR_RBDIHS)gmx_fio_ndoe_real(fio, iparams->rbdihs.rbcA, 6, ("iparams->rbdihs.rbcA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2073); |
2074 | if (file_version >= 25) |
2075 | { |
2076 | gmx_fio_ndo_real(fio, iparams->rbdihs.rbcB, NR_RBDIHS)gmx_fio_ndoe_real(fio, iparams->rbdihs.rbcB, 6, ("iparams->rbdihs.rbcB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2076); |
2077 | } |
2078 | break; |
2079 | case F_FOURDIHS: |
2080 | /* Fourier dihedrals are internally represented |
2081 | * as Ryckaert-Bellemans since those are faster to compute. |
2082 | */ |
2083 | gmx_fio_ndo_real(fio, iparams->rbdihs.rbcA, NR_RBDIHS)gmx_fio_ndoe_real(fio, iparams->rbdihs.rbcA, 6, ("iparams->rbdihs.rbcA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2083); |
2084 | gmx_fio_ndo_real(fio, iparams->rbdihs.rbcB, NR_RBDIHS)gmx_fio_ndoe_real(fio, iparams->rbdihs.rbcB, 6, ("iparams->rbdihs.rbcB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2084); |
2085 | break; |
2086 | case F_CONSTR: |
2087 | case F_CONSTRNC: |
2088 | gmx_fio_do_real(fio, iparams->constr.dA)gmx_fio_doe_real(fio, &iparams->constr.dA, ("iparams->constr.dA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2088); |
2089 | gmx_fio_do_real(fio, iparams->constr.dB)gmx_fio_doe_real(fio, &iparams->constr.dB, ("iparams->constr.dB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2089); |
2090 | break; |
2091 | case F_SETTLE: |
2092 | gmx_fio_do_real(fio, iparams->settle.doh)gmx_fio_doe_real(fio, &iparams->settle.doh, ("iparams->settle.doh" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2092); |
2093 | gmx_fio_do_real(fio, iparams->settle.dhh)gmx_fio_doe_real(fio, &iparams->settle.dhh, ("iparams->settle.dhh" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2093); |
2094 | break; |
2095 | case F_VSITE2: |
2096 | gmx_fio_do_real(fio, iparams->vsite.a)gmx_fio_doe_real(fio, &iparams->vsite.a, ("iparams->vsite.a" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2096); |
2097 | break; |
2098 | case F_VSITE3: |
2099 | case F_VSITE3FD: |
2100 | case F_VSITE3FAD: |
2101 | gmx_fio_do_real(fio, iparams->vsite.a)gmx_fio_doe_real(fio, &iparams->vsite.a, ("iparams->vsite.a" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2101); |
2102 | gmx_fio_do_real(fio, iparams->vsite.b)gmx_fio_doe_real(fio, &iparams->vsite.b, ("iparams->vsite.b" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2102); |
2103 | break; |
2104 | case F_VSITE3OUT: |
2105 | case F_VSITE4FD: |
2106 | case F_VSITE4FDN: |
2107 | gmx_fio_do_real(fio, iparams->vsite.a)gmx_fio_doe_real(fio, &iparams->vsite.a, ("iparams->vsite.a" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2107); |
2108 | gmx_fio_do_real(fio, iparams->vsite.b)gmx_fio_doe_real(fio, &iparams->vsite.b, ("iparams->vsite.b" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2108); |
2109 | gmx_fio_do_real(fio, iparams->vsite.c)gmx_fio_doe_real(fio, &iparams->vsite.c, ("iparams->vsite.c" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2109); |
2110 | break; |
2111 | case F_VSITEN: |
2112 | gmx_fio_do_int(fio, iparams->vsiten.n)gmx_fio_doe_int(fio, &iparams->vsiten.n, ("iparams->vsiten.n" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2112); |
2113 | gmx_fio_do_real(fio, iparams->vsiten.a)gmx_fio_doe_real(fio, &iparams->vsiten.a, ("iparams->vsiten.a" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2113); |
2114 | break; |
2115 | case F_GB12: |
2116 | case F_GB13: |
2117 | case F_GB14: |
2118 | /* We got rid of some parameters in version 68 */ |
2119 | if (bRead && file_version < 68) |
2120 | { |
2121 | gmx_fio_do_real(fio, rdum)gmx_fio_doe_real(fio, &rdum, ("rdum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2121); |
2122 | gmx_fio_do_real(fio, rdum)gmx_fio_doe_real(fio, &rdum, ("rdum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2122); |
2123 | gmx_fio_do_real(fio, rdum)gmx_fio_doe_real(fio, &rdum, ("rdum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2123); |
2124 | gmx_fio_do_real(fio, rdum)gmx_fio_doe_real(fio, &rdum, ("rdum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2124); |
2125 | } |
2126 | gmx_fio_do_real(fio, iparams->gb.sar)gmx_fio_doe_real(fio, &iparams->gb.sar, ("iparams->gb.sar" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2126); |
2127 | gmx_fio_do_real(fio, iparams->gb.st)gmx_fio_doe_real(fio, &iparams->gb.st, ("iparams->gb.st" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2127); |
2128 | gmx_fio_do_real(fio, iparams->gb.pi)gmx_fio_doe_real(fio, &iparams->gb.pi, ("iparams->gb.pi" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2128); |
2129 | gmx_fio_do_real(fio, iparams->gb.gbr)gmx_fio_doe_real(fio, &iparams->gb.gbr, ("iparams->gb.gbr" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2129); |
2130 | gmx_fio_do_real(fio, iparams->gb.bmlt)gmx_fio_doe_real(fio, &iparams->gb.bmlt, ("iparams->gb.bmlt" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2130); |
2131 | break; |
2132 | case F_CMAP: |
2133 | gmx_fio_do_int(fio, iparams->cmap.cmapA)gmx_fio_doe_int(fio, &iparams->cmap.cmapA, ("iparams->cmap.cmapA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2133); |
2134 | gmx_fio_do_int(fio, iparams->cmap.cmapB)gmx_fio_doe_int(fio, &iparams->cmap.cmapB, ("iparams->cmap.cmapB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2134); |
2135 | break; |
2136 | default: |
2137 | gmx_fatal(FARGS0, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2137, "unknown function type %d (%s) in %s line %d", |
2138 | ftype, interaction_function[ftype].name, __FILE__"/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", __LINE__2138); |
2139 | } |
2140 | if (!bRead) |
2141 | { |
2142 | gmx_fio_unset_comment(fio); |
2143 | } |
2144 | } |
2145 | |
2146 | static void do_ilist(t_fileio *fio, t_ilist *ilist, gmx_bool bRead, int file_version, |
2147 | int ftype) |
2148 | { |
2149 | int i, k, idum; |
2150 | |
2151 | if (!bRead) |
2152 | { |
2153 | gmx_fio_set_comment(fio, interaction_function[ftype].name); |
2154 | } |
2155 | if (file_version < 44) |
2156 | { |
2157 | for (i = 0; i < MAXNODES256; i++) |
2158 | { |
2159 | gmx_fio_do_int(fio, idum)gmx_fio_doe_int(fio, &idum, ("idum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2159); |
2160 | } |
2161 | } |
2162 | gmx_fio_do_int(fio, ilist->nr)gmx_fio_doe_int(fio, &ilist->nr, ("ilist->nr"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2162); |
2163 | if (bRead) |
2164 | { |
2165 | snew(ilist->iatoms, ilist->nr)(ilist->iatoms) = save_calloc("ilist->iatoms", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2165, (ilist->nr), sizeof(*(ilist->iatoms))); |
2166 | } |
2167 | gmx_fio_ndo_int(fio, ilist->iatoms, ilist->nr)gmx_fio_ndoe_int(fio, ilist->iatoms, ilist->nr, ("ilist->iatoms" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2167); |
2168 | if (!bRead) |
2169 | { |
2170 | gmx_fio_unset_comment(fio); |
2171 | } |
2172 | } |
2173 | |
2174 | static void do_ffparams(t_fileio *fio, gmx_ffparams_t *ffparams, |
2175 | gmx_bool bRead, int file_version) |
2176 | { |
2177 | int idum, i, j; |
2178 | unsigned int k; |
2179 | |
2180 | gmx_fio_do_int(fio, ffparams->atnr)gmx_fio_doe_int(fio, &ffparams->atnr, ("ffparams->atnr" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2180); |
2181 | if (file_version < 57) |
2182 | { |
2183 | gmx_fio_do_int(fio, idum)gmx_fio_doe_int(fio, &idum, ("idum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2183); |
2184 | } |
2185 | gmx_fio_do_int(fio, ffparams->ntypes)gmx_fio_doe_int(fio, &ffparams->ntypes, ("ffparams->ntypes" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2185); |
2186 | if (bRead && debug) |
2187 | { |
2188 | fprintf(debug, "ffparams->atnr = %d, ntypes = %d\n", |
2189 | ffparams->atnr, ffparams->ntypes); |
2190 | } |
2191 | if (bRead) |
2192 | { |
2193 | snew(ffparams->functype, ffparams->ntypes)(ffparams->functype) = save_calloc("ffparams->functype" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2193 , (ffparams->ntypes), sizeof(*(ffparams->functype))); |
2194 | snew(ffparams->iparams, ffparams->ntypes)(ffparams->iparams) = save_calloc("ffparams->iparams", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2194, (ffparams->ntypes), sizeof(*(ffparams->iparams) )); |
2195 | } |
2196 | /* Read/write all the function types */ |
2197 | gmx_fio_ndo_int(fio, ffparams->functype, ffparams->ntypes)gmx_fio_ndoe_int(fio, ffparams->functype, ffparams->ntypes , ("ffparams->functype"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2197); |
2198 | if (bRead && debug) |
2199 | { |
2200 | pr_ivec(debug, 0, "functype", ffparams->functype, ffparams->ntypes, TRUE1); |
2201 | } |
2202 | |
2203 | if (file_version >= 66) |
2204 | { |
2205 | gmx_fio_do_double(fio, ffparams->reppow)gmx_fio_doe_double(fio, &ffparams->reppow, ("ffparams->reppow" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2205); |
2206 | } |
2207 | else |
2208 | { |
2209 | ffparams->reppow = 12.0; |
2210 | } |
2211 | |
2212 | if (file_version >= 57) |
2213 | { |
2214 | gmx_fio_do_real(fio, ffparams->fudgeQQ)gmx_fio_doe_real(fio, &ffparams->fudgeQQ, ("ffparams->fudgeQQ" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2214); |
2215 | } |
2216 | |
2217 | /* Check whether all these function types are supported by the code. |
2218 | * In practice the code is backwards compatible, which means that the |
2219 | * numbering may have to be altered from old numbering to new numbering |
2220 | */ |
2221 | for (i = 0; (i < ffparams->ntypes); i++) |
2222 | { |
2223 | if (bRead) |
2224 | { |
2225 | /* Loop over file versions */ |
2226 | for (k = 0; (k < NFTUPD((int)(sizeof(ftupd)/sizeof((ftupd)[0])))); k++) |
2227 | { |
2228 | /* Compare the read file_version to the update table */ |
2229 | if ((file_version < ftupd[k].fvnr) && |
2230 | (ffparams->functype[i] >= ftupd[k].ftype)) |
2231 | { |
2232 | ffparams->functype[i] += 1; |
2233 | if (debug) |
2234 | { |
2235 | fprintf(debug, "Incrementing function type %d to %d (due to %s)\n", |
2236 | i, ffparams->functype[i], |
2237 | interaction_function[ftupd[k].ftype].longname); |
2238 | fflush(debug); |
2239 | } |
2240 | } |
2241 | } |
2242 | } |
2243 | |
2244 | do_iparams(fio, ffparams->functype[i], &ffparams->iparams[i], bRead, |
2245 | file_version); |
2246 | if (bRead && debug) |
2247 | { |
2248 | pr_iparams(debug, ffparams->functype[i], &ffparams->iparams[i]); |
2249 | } |
2250 | } |
2251 | } |
2252 | |
2253 | static void add_settle_atoms(t_ilist *ilist) |
2254 | { |
2255 | int i; |
2256 | |
2257 | /* Settle used to only store the first atom: add the other two */ |
2258 | srenew(ilist->iatoms, 2*ilist->nr)(ilist->iatoms) = save_realloc("ilist->iatoms", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2258, (ilist->iatoms), (2*ilist->nr), sizeof(*(ilist-> iatoms))); |
2259 | for (i = ilist->nr/2-1; i >= 0; i--) |
2260 | { |
2261 | ilist->iatoms[4*i+0] = ilist->iatoms[2*i+0]; |
2262 | ilist->iatoms[4*i+1] = ilist->iatoms[2*i+1]; |
2263 | ilist->iatoms[4*i+2] = ilist->iatoms[2*i+1] + 1; |
2264 | ilist->iatoms[4*i+3] = ilist->iatoms[2*i+1] + 2; |
2265 | } |
2266 | ilist->nr = 2*ilist->nr; |
2267 | } |
2268 | |
2269 | static void do_ilists(t_fileio *fio, t_ilist *ilist, gmx_bool bRead, |
2270 | int file_version) |
2271 | { |
2272 | int i, j, renum[F_NRE]; |
2273 | gmx_bool bClear; |
2274 | unsigned int k; |
2275 | |
2276 | for (j = 0; (j < F_NRE); j++) |
2277 | { |
2278 | bClear = FALSE0; |
2279 | if (bRead) |
2280 | { |
2281 | for (k = 0; k < NFTUPD((int)(sizeof(ftupd)/sizeof((ftupd)[0]))); k++) |
2282 | { |
2283 | if ((file_version < ftupd[k].fvnr) && (j == ftupd[k].ftype)) |
2284 | { |
2285 | bClear = TRUE1; |
2286 | } |
2287 | } |
2288 | } |
2289 | if (bClear) |
2290 | { |
2291 | ilist[j].nr = 0; |
2292 | ilist[j].iatoms = NULL((void*)0); |
2293 | } |
2294 | else |
2295 | { |
2296 | do_ilist(fio, &ilist[j], bRead, file_version, j); |
2297 | if (file_version < 78 && j == F_SETTLE && ilist[j].nr > 0) |
2298 | { |
2299 | add_settle_atoms(&ilist[j]); |
2300 | } |
2301 | } |
2302 | /* |
2303 | if (bRead && gmx_debug_at) |
2304 | pr_ilist(debug,0,interaction_function[j].longname, |
2305 | functype,&ilist[j],TRUE); |
2306 | */ |
2307 | } |
2308 | } |
2309 | |
2310 | static void do_idef(t_fileio *fio, gmx_ffparams_t *ffparams, gmx_moltype_t *molt, |
2311 | gmx_bool bRead, int file_version) |
2312 | { |
2313 | do_ffparams(fio, ffparams, bRead, file_version); |
2314 | |
2315 | if (file_version >= 54) |
2316 | { |
2317 | gmx_fio_do_real(fio, ffparams->fudgeQQ)gmx_fio_doe_real(fio, &ffparams->fudgeQQ, ("ffparams->fudgeQQ" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2317); |
2318 | } |
2319 | |
2320 | do_ilists(fio, molt->ilist, bRead, file_version); |
2321 | } |
2322 | |
2323 | static void do_block(t_fileio *fio, t_block *block, gmx_bool bRead, int file_version) |
2324 | { |
2325 | int i, idum, dum_nra, *dum_a; |
2326 | |
2327 | if (file_version < 44) |
2328 | { |
2329 | for (i = 0; i < MAXNODES256; i++) |
2330 | { |
2331 | gmx_fio_do_int(fio, idum)gmx_fio_doe_int(fio, &idum, ("idum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2331); |
2332 | } |
2333 | } |
2334 | gmx_fio_do_int(fio, block->nr)gmx_fio_doe_int(fio, &block->nr, ("block->nr"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2334); |
2335 | if (file_version < 51) |
2336 | { |
2337 | gmx_fio_do_int(fio, dum_nra)gmx_fio_doe_int(fio, &dum_nra, ("dum_nra"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2337); |
2338 | } |
2339 | if (bRead) |
2340 | { |
2341 | if ((block->nalloc_index > 0) && (NULL((void*)0) != block->index)) |
2342 | { |
2343 | sfree(block->index)save_free("block->index", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2343, (block->index)); |
2344 | } |
2345 | block->nalloc_index = block->nr+1; |
2346 | snew(block->index, block->nalloc_index)(block->index) = save_calloc("block->index", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2346, (block->nalloc_index), sizeof(*(block->index))); |
2347 | } |
2348 | gmx_fio_ndo_int(fio, block->index, block->nr+1)gmx_fio_ndoe_int(fio, block->index, block->nr+1, ("block->index" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2348); |
2349 | |
2350 | if (file_version < 51 && dum_nra > 0) |
2351 | { |
2352 | snew(dum_a, dum_nra)(dum_a) = save_calloc("dum_a", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2352, (dum_nra), sizeof(*(dum_a))); |
2353 | gmx_fio_ndo_int(fio, dum_a, dum_nra)gmx_fio_ndoe_int(fio, dum_a, dum_nra, ("dum_a"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2353); |
2354 | sfree(dum_a)save_free("dum_a", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2354, (dum_a)); |
2355 | } |
2356 | } |
2357 | |
2358 | static void do_blocka(t_fileio *fio, t_blocka *block, gmx_bool bRead, |
2359 | int file_version) |
2360 | { |
2361 | int i, idum; |
2362 | |
2363 | if (file_version < 44) |
2364 | { |
2365 | for (i = 0; i < MAXNODES256; i++) |
2366 | { |
2367 | gmx_fio_do_int(fio, idum)gmx_fio_doe_int(fio, &idum, ("idum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2367); |
2368 | } |
2369 | } |
2370 | gmx_fio_do_int(fio, block->nr)gmx_fio_doe_int(fio, &block->nr, ("block->nr"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2370); |
2371 | gmx_fio_do_int(fio, block->nra)gmx_fio_doe_int(fio, &block->nra, ("block->nra"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2371); |
2372 | if (bRead) |
2373 | { |
2374 | block->nalloc_index = block->nr+1; |
2375 | snew(block->index, block->nalloc_index)(block->index) = save_calloc("block->index", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2375, (block->nalloc_index), sizeof(*(block->index))); |
2376 | block->nalloc_a = block->nra; |
2377 | snew(block->a, block->nalloc_a)(block->a) = save_calloc("block->a", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2377, (block->nalloc_a), sizeof(*(block->a))); |
2378 | } |
2379 | gmx_fio_ndo_int(fio, block->index, block->nr+1)gmx_fio_ndoe_int(fio, block->index, block->nr+1, ("block->index" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2379); |
2380 | gmx_fio_ndo_int(fio, block->a, block->nra)gmx_fio_ndoe_int(fio, block->a, block->nra, ("block->a" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2380); |
2381 | } |
2382 | |
2383 | static void do_atom(t_fileio *fio, t_atom *atom, int ngrp, gmx_bool bRead, |
2384 | int file_version, gmx_groups_t *groups, int atnr) |
2385 | { |
2386 | int i, myngrp; |
2387 | |
2388 | gmx_fio_do_real(fio, atom->m)gmx_fio_doe_real(fio, &atom->m, ("atom->m"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2388); |
2389 | gmx_fio_do_real(fio, atom->q)gmx_fio_doe_real(fio, &atom->q, ("atom->q"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2389); |
2390 | gmx_fio_do_real(fio, atom->mB)gmx_fio_doe_real(fio, &atom->mB, ("atom->mB"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2390); |
2391 | gmx_fio_do_real(fio, atom->qB)gmx_fio_doe_real(fio, &atom->qB, ("atom->qB"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2391); |
2392 | gmx_fio_do_ushort(fio, atom->type)gmx_fio_doe_ushort(fio, &atom->type, ("atom->type") , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2392 ); |
2393 | gmx_fio_do_ushort(fio, atom->typeB)gmx_fio_doe_ushort(fio, &atom->typeB, ("atom->typeB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2393); |
2394 | gmx_fio_do_int(fio, atom->ptype)gmx_fio_doe_int(fio, &atom->ptype, ("atom->ptype"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2394 ); |
2395 | gmx_fio_do_int(fio, atom->resind)gmx_fio_doe_int(fio, &atom->resind, ("atom->resind" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2395); |
2396 | if (file_version >= 52) |
2397 | { |
2398 | gmx_fio_do_int(fio, atom->atomnumber)gmx_fio_doe_int(fio, &atom->atomnumber, ("atom->atomnumber" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2398); |
2399 | } |
2400 | else if (bRead) |
2401 | { |
2402 | atom->atomnumber = NOTSET-12345; |
2403 | } |
2404 | if (file_version < 23) |
2405 | { |
2406 | myngrp = 8; |
2407 | } |
2408 | else if (file_version < 39) |
2409 | { |
2410 | myngrp = 9; |
2411 | } |
2412 | else |
2413 | { |
2414 | myngrp = ngrp; |
2415 | } |
2416 | |
2417 | if (file_version < 57) |
2418 | { |
2419 | unsigned char uchar[egcNR]; |
2420 | gmx_fio_ndo_uchar(fio, uchar, myngrp)gmx_fio_ndoe_uchar(fio, uchar, myngrp, ("uchar"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2420); |
2421 | for (i = myngrp; (i < ngrp); i++) |
2422 | { |
2423 | uchar[i] = 0; |
2424 | } |
2425 | /* Copy the old data format to the groups struct */ |
2426 | for (i = 0; i < ngrp; i++) |
2427 | { |
2428 | groups->grpnr[i][atnr] = uchar[i]; |
2429 | } |
2430 | } |
2431 | } |
2432 | |
2433 | static void do_grps(t_fileio *fio, int ngrp, t_grps grps[], gmx_bool bRead, |
2434 | int file_version) |
2435 | { |
2436 | int i, j, myngrp; |
2437 | |
2438 | if (file_version < 23) |
2439 | { |
2440 | myngrp = 8; |
2441 | } |
2442 | else if (file_version < 39) |
2443 | { |
2444 | myngrp = 9; |
2445 | } |
2446 | else |
2447 | { |
2448 | myngrp = ngrp; |
2449 | } |
2450 | |
2451 | for (j = 0; (j < ngrp); j++) |
2452 | { |
2453 | if (j < myngrp) |
2454 | { |
2455 | gmx_fio_do_int(fio, grps[j].nr)gmx_fio_doe_int(fio, &grps[j].nr, ("grps[j].nr"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2455); |
2456 | if (bRead) |
2457 | { |
2458 | snew(grps[j].nm_ind, grps[j].nr)(grps[j].nm_ind) = save_calloc("grps[j].nm_ind", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2458, (grps[j].nr), sizeof(*(grps[j].nm_ind))); |
2459 | } |
2460 | gmx_fio_ndo_int(fio, grps[j].nm_ind, grps[j].nr)gmx_fio_ndoe_int(fio, grps[j].nm_ind, grps[j].nr, ("grps[j].nm_ind" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2460); |
2461 | } |
2462 | else |
2463 | { |
2464 | grps[j].nr = 1; |
2465 | snew(grps[j].nm_ind, grps[j].nr)(grps[j].nm_ind) = save_calloc("grps[j].nm_ind", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2465, (grps[j].nr), sizeof(*(grps[j].nm_ind))); |
2466 | } |
2467 | } |
2468 | } |
2469 | |
2470 | static void do_symstr(t_fileio *fio, char ***nm, gmx_bool bRead, t_symtab *symtab) |
2471 | { |
2472 | int ls; |
2473 | |
2474 | if (bRead) |
2475 | { |
2476 | gmx_fio_do_int(fio, ls)gmx_fio_doe_int(fio, &ls, ("ls"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2476); |
2477 | *nm = get_symtab_handle(symtab, ls); |
2478 | } |
2479 | else |
2480 | { |
2481 | ls = lookup_symtab(symtab, *nm); |
2482 | gmx_fio_do_int(fio, ls)gmx_fio_doe_int(fio, &ls, ("ls"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2482); |
2483 | } |
2484 | } |
2485 | |
2486 | static void do_strstr(t_fileio *fio, int nstr, char ***nm, gmx_bool bRead, |
2487 | t_symtab *symtab) |
2488 | { |
2489 | int j; |
2490 | |
2491 | for (j = 0; (j < nstr); j++) |
2492 | { |
2493 | do_symstr(fio, &(nm[j]), bRead, symtab); |
2494 | } |
2495 | } |
2496 | |
2497 | static void do_resinfo(t_fileio *fio, int n, t_resinfo *ri, gmx_bool bRead, |
2498 | t_symtab *symtab, int file_version) |
2499 | { |
2500 | int j; |
2501 | |
2502 | for (j = 0; (j < n); j++) |
2503 | { |
2504 | do_symstr(fio, &(ri[j].name), bRead, symtab); |
2505 | if (file_version >= 63) |
2506 | { |
2507 | gmx_fio_do_int(fio, ri[j].nr)gmx_fio_doe_int(fio, &ri[j].nr, ("ri[j].nr"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2507); |
2508 | gmx_fio_do_uchar(fio, ri[j].ic)gmx_fio_doe_uchar(fio, &ri[j].ic, ("ri[j].ic"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2508); |
2509 | } |
2510 | else |
2511 | { |
2512 | ri[j].nr = j + 1; |
2513 | ri[j].ic = ' '; |
2514 | } |
2515 | } |
2516 | } |
2517 | |
2518 | static void do_atoms(t_fileio *fio, t_atoms *atoms, gmx_bool bRead, t_symtab *symtab, |
2519 | int file_version, |
2520 | gmx_groups_t *groups) |
2521 | { |
2522 | int i; |
2523 | |
2524 | gmx_fio_do_int(fio, atoms->nr)gmx_fio_doe_int(fio, &atoms->nr, ("atoms->nr"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2524); |
2525 | gmx_fio_do_int(fio, atoms->nres)gmx_fio_doe_int(fio, &atoms->nres, ("atoms->nres"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2525 ); |
2526 | if (file_version < 57) |
2527 | { |
2528 | gmx_fio_do_int(fio, groups->ngrpname)gmx_fio_doe_int(fio, &groups->ngrpname, ("groups->ngrpname" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2528); |
2529 | for (i = 0; i < egcNR; i++) |
2530 | { |
2531 | groups->ngrpnr[i] = atoms->nr; |
2532 | snew(groups->grpnr[i], groups->ngrpnr[i])(groups->grpnr[i]) = save_calloc("groups->grpnr[i]", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2532, (groups->ngrpnr[i]), sizeof(*(groups->grpnr[i]) )); |
2533 | } |
2534 | } |
2535 | if (bRead) |
2536 | { |
2537 | snew(atoms->atom, atoms->nr)(atoms->atom) = save_calloc("atoms->atom", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2537, (atoms->nr), sizeof(*(atoms->atom))); |
2538 | snew(atoms->atomname, atoms->nr)(atoms->atomname) = save_calloc("atoms->atomname", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2538, (atoms->nr), sizeof(*(atoms->atomname))); |
2539 | snew(atoms->atomtype, atoms->nr)(atoms->atomtype) = save_calloc("atoms->atomtype", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2539, (atoms->nr), sizeof(*(atoms->atomtype))); |
2540 | snew(atoms->atomtypeB, atoms->nr)(atoms->atomtypeB) = save_calloc("atoms->atomtypeB", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2540, (atoms->nr), sizeof(*(atoms->atomtypeB))); |
2541 | snew(atoms->resinfo, atoms->nres)(atoms->resinfo) = save_calloc("atoms->resinfo", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2541, (atoms->nres), sizeof(*(atoms->resinfo))); |
2542 | if (file_version < 57) |
2543 | { |
2544 | snew(groups->grpname, groups->ngrpname)(groups->grpname) = save_calloc("groups->grpname", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2544, (groups->ngrpname), sizeof(*(groups->grpname))); |
2545 | } |
2546 | atoms->pdbinfo = NULL((void*)0); |
2547 | } |
2548 | for (i = 0; (i < atoms->nr); i++) |
2549 | { |
2550 | do_atom(fio, &atoms->atom[i], egcNR, bRead, file_version, groups, i); |
2551 | } |
2552 | do_strstr(fio, atoms->nr, atoms->atomname, bRead, symtab); |
2553 | if (bRead && (file_version <= 20)) |
2554 | { |
2555 | for (i = 0; i < atoms->nr; i++) |
2556 | { |
2557 | atoms->atomtype[i] = put_symtab(symtab, "?"); |
2558 | atoms->atomtypeB[i] = put_symtab(symtab, "?"); |
2559 | } |
2560 | } |
2561 | else |
2562 | { |
2563 | do_strstr(fio, atoms->nr, atoms->atomtype, bRead, symtab); |
2564 | do_strstr(fio, atoms->nr, atoms->atomtypeB, bRead, symtab); |
2565 | } |
2566 | do_resinfo(fio, atoms->nres, atoms->resinfo, bRead, symtab, file_version); |
2567 | |
2568 | if (file_version < 57) |
2569 | { |
2570 | do_strstr(fio, groups->ngrpname, groups->grpname, bRead, symtab); |
2571 | |
2572 | do_grps(fio, egcNR, groups->grps, bRead, file_version); |
2573 | } |
2574 | } |
2575 | |
2576 | static void do_groups(t_fileio *fio, gmx_groups_t *groups, |
2577 | gmx_bool bRead, t_symtab *symtab, |
2578 | int file_version) |
2579 | { |
2580 | int g, n, i; |
2581 | |
2582 | do_grps(fio, egcNR, groups->grps, bRead, file_version); |
2583 | gmx_fio_do_int(fio, groups->ngrpname)gmx_fio_doe_int(fio, &groups->ngrpname, ("groups->ngrpname" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2583); |
2584 | if (bRead) |
2585 | { |
2586 | snew(groups->grpname, groups->ngrpname)(groups->grpname) = save_calloc("groups->grpname", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2586, (groups->ngrpname), sizeof(*(groups->grpname))); |
2587 | } |
2588 | do_strstr(fio, groups->ngrpname, groups->grpname, bRead, symtab); |
2589 | for (g = 0; g < egcNR; g++) |
2590 | { |
2591 | gmx_fio_do_int(fio, groups->ngrpnr[g])gmx_fio_doe_int(fio, &groups->ngrpnr[g], ("groups->ngrpnr[g]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2591); |
2592 | if (groups->ngrpnr[g] == 0) |
2593 | { |
2594 | if (bRead) |
2595 | { |
2596 | groups->grpnr[g] = NULL((void*)0); |
2597 | } |
2598 | } |
2599 | else |
2600 | { |
2601 | if (bRead) |
2602 | { |
2603 | snew(groups->grpnr[g], groups->ngrpnr[g])(groups->grpnr[g]) = save_calloc("groups->grpnr[g]", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2603, (groups->ngrpnr[g]), sizeof(*(groups->grpnr[g]) )); |
2604 | } |
2605 | gmx_fio_ndo_uchar(fio, groups->grpnr[g], groups->ngrpnr[g])gmx_fio_ndoe_uchar(fio, groups->grpnr[g], groups->ngrpnr [g], ("groups->grpnr[g]"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2605); |
2606 | } |
2607 | } |
2608 | } |
2609 | |
2610 | static void do_atomtypes(t_fileio *fio, t_atomtypes *atomtypes, gmx_bool bRead, |
2611 | int file_version) |
2612 | { |
2613 | int i, j; |
2614 | |
2615 | if (file_version > 25) |
2616 | { |
2617 | gmx_fio_do_int(fio, atomtypes->nr)gmx_fio_doe_int(fio, &atomtypes->nr, ("atomtypes->nr" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2617); |
2618 | j = atomtypes->nr; |
2619 | if (bRead) |
2620 | { |
2621 | snew(atomtypes->radius, j)(atomtypes->radius) = save_calloc("atomtypes->radius", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2621, (j), sizeof(*(atomtypes->radius))); |
2622 | snew(atomtypes->vol, j)(atomtypes->vol) = save_calloc("atomtypes->vol", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2622, (j), sizeof(*(atomtypes->vol))); |
2623 | snew(atomtypes->surftens, j)(atomtypes->surftens) = save_calloc("atomtypes->surftens" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2623 , (j), sizeof(*(atomtypes->surftens))); |
2624 | snew(atomtypes->atomnumber, j)(atomtypes->atomnumber) = save_calloc("atomtypes->atomnumber" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2624 , (j), sizeof(*(atomtypes->atomnumber))); |
2625 | snew(atomtypes->gb_radius, j)(atomtypes->gb_radius) = save_calloc("atomtypes->gb_radius" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2625 , (j), sizeof(*(atomtypes->gb_radius))); |
2626 | snew(atomtypes->S_hct, j)(atomtypes->S_hct) = save_calloc("atomtypes->S_hct", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2626, (j), sizeof(*(atomtypes->S_hct))); |
2627 | } |
2628 | gmx_fio_ndo_real(fio, atomtypes->radius, j)gmx_fio_ndoe_real(fio, atomtypes->radius, j, ("atomtypes->radius" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2628); |
2629 | gmx_fio_ndo_real(fio, atomtypes->vol, j)gmx_fio_ndoe_real(fio, atomtypes->vol, j, ("atomtypes->vol" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2629); |
2630 | gmx_fio_ndo_real(fio, atomtypes->surftens, j)gmx_fio_ndoe_real(fio, atomtypes->surftens, j, ("atomtypes->surftens" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2630); |
2631 | if (file_version >= 40) |
2632 | { |
2633 | gmx_fio_ndo_int(fio, atomtypes->atomnumber, j)gmx_fio_ndoe_int(fio, atomtypes->atomnumber, j, ("atomtypes->atomnumber" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2633); |
2634 | } |
2635 | if (file_version >= 60) |
2636 | { |
2637 | gmx_fio_ndo_real(fio, atomtypes->gb_radius, j)gmx_fio_ndoe_real(fio, atomtypes->gb_radius, j, ("atomtypes->gb_radius" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2637); |
2638 | gmx_fio_ndo_real(fio, atomtypes->S_hct, j)gmx_fio_ndoe_real(fio, atomtypes->S_hct, j, ("atomtypes->S_hct" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2638); |
2639 | } |
2640 | } |
2641 | else |
2642 | { |
2643 | /* File versions prior to 26 cannot do GBSA, |
2644 | * so they dont use this structure |
2645 | */ |
2646 | atomtypes->nr = 0; |
2647 | atomtypes->radius = NULL((void*)0); |
2648 | atomtypes->vol = NULL((void*)0); |
2649 | atomtypes->surftens = NULL((void*)0); |
2650 | atomtypes->atomnumber = NULL((void*)0); |
2651 | atomtypes->gb_radius = NULL((void*)0); |
2652 | atomtypes->S_hct = NULL((void*)0); |
2653 | } |
2654 | } |
2655 | |
2656 | static void do_symtab(t_fileio *fio, t_symtab *symtab, gmx_bool bRead) |
2657 | { |
2658 | int i, nr; |
2659 | t_symbuf *symbuf; |
2660 | char buf[STRLEN4096]; |
2661 | |
2662 | gmx_fio_do_int(fio, symtab->nr)gmx_fio_doe_int(fio, &symtab->nr, ("symtab->nr"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2662); |
2663 | nr = symtab->nr; |
2664 | if (bRead) |
2665 | { |
2666 | snew(symtab->symbuf, 1)(symtab->symbuf) = save_calloc("symtab->symbuf", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2666, (1), sizeof(*(symtab->symbuf))); |
2667 | symbuf = symtab->symbuf; |
2668 | symbuf->bufsize = nr; |
2669 | snew(symbuf->buf, nr)(symbuf->buf) = save_calloc("symbuf->buf", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2669, (nr), sizeof(*(symbuf->buf))); |
2670 | for (i = 0; (i < nr); i++) |
2671 | { |
2672 | gmx_fio_do_string(fio, buf)gmx_fio_doe_string(fio, buf, ("buf"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2672); |
2673 | symbuf->buf[i] = strdup(buf)(__extension__ (__builtin_constant_p (buf) && ((size_t )(const void *)((buf) + 1) - (size_t)(const void *)(buf) == 1 ) ? (((const char *) (buf))[0] == '\0' ? (char *) calloc ((size_t ) 1, (size_t) 1) : ({ size_t __len = strlen (buf) + 1; char * __retval = (char *) malloc (__len); if (__retval != ((void*)0 )) __retval = (char *) memcpy (__retval, buf, __len); __retval ; })) : __strdup (buf))); |
2674 | } |
2675 | } |
2676 | else |
2677 | { |
2678 | symbuf = symtab->symbuf; |
2679 | while (symbuf != NULL((void*)0)) |
2680 | { |
2681 | for (i = 0; (i < symbuf->bufsize) && (i < nr); i++) |
2682 | { |
2683 | gmx_fio_do_string(fio, symbuf->buf[i])gmx_fio_doe_string(fio, symbuf->buf[i], ("symbuf->buf[i]" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2683); |
2684 | } |
2685 | nr -= i; |
2686 | symbuf = symbuf->next; |
2687 | } |
2688 | if (nr != 0) |
2689 | { |
2690 | gmx_fatal(FARGS0, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2690, "nr of symtab strings left: %d", nr); |
2691 | } |
2692 | } |
2693 | } |
2694 | |
2695 | static void do_cmap(t_fileio *fio, gmx_cmap_t *cmap_grid, gmx_bool bRead) |
2696 | { |
2697 | int i, j, ngrid, gs, nelem; |
2698 | |
2699 | gmx_fio_do_int(fio, cmap_grid->ngrid)gmx_fio_doe_int(fio, &cmap_grid->ngrid, ("cmap_grid->ngrid" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2699); |
2700 | gmx_fio_do_int(fio, cmap_grid->grid_spacing)gmx_fio_doe_int(fio, &cmap_grid->grid_spacing, ("cmap_grid->grid_spacing" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2700); |
2701 | |
2702 | ngrid = cmap_grid->ngrid; |
2703 | gs = cmap_grid->grid_spacing; |
2704 | nelem = gs * gs; |
2705 | |
2706 | if (bRead) |
2707 | { |
2708 | snew(cmap_grid->cmapdata, ngrid)(cmap_grid->cmapdata) = save_calloc("cmap_grid->cmapdata" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2708 , (ngrid), sizeof(*(cmap_grid->cmapdata))); |
2709 | |
2710 | for (i = 0; i < cmap_grid->ngrid; i++) |
2711 | { |
2712 | snew(cmap_grid->cmapdata[i].cmap, 4*nelem)(cmap_grid->cmapdata[i].cmap) = save_calloc("cmap_grid->cmapdata[i].cmap" , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2712 , (4*nelem), sizeof(*(cmap_grid->cmapdata[i].cmap))); |
2713 | } |
2714 | } |
2715 | |
2716 | for (i = 0; i < cmap_grid->ngrid; i++) |
2717 | { |
2718 | for (j = 0; j < nelem; j++) |
2719 | { |
2720 | gmx_fio_do_real(fio, cmap_grid->cmapdata[i].cmap[j*4])gmx_fio_doe_real(fio, &cmap_grid->cmapdata[i].cmap[j*4 ], ("cmap_grid->cmapdata[i].cmap[j*4]"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2720); |
2721 | gmx_fio_do_real(fio, cmap_grid->cmapdata[i].cmap[j*4+1])gmx_fio_doe_real(fio, &cmap_grid->cmapdata[i].cmap[j*4 +1], ("cmap_grid->cmapdata[i].cmap[j*4+1]"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2721); |
2722 | gmx_fio_do_real(fio, cmap_grid->cmapdata[i].cmap[j*4+2])gmx_fio_doe_real(fio, &cmap_grid->cmapdata[i].cmap[j*4 +2], ("cmap_grid->cmapdata[i].cmap[j*4+2]"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2722); |
2723 | gmx_fio_do_real(fio, cmap_grid->cmapdata[i].cmap[j*4+3])gmx_fio_doe_real(fio, &cmap_grid->cmapdata[i].cmap[j*4 +3], ("cmap_grid->cmapdata[i].cmap[j*4+3]"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2723); |
2724 | } |
2725 | } |
2726 | } |
2727 | |
2728 | |
2729 | void tpx_make_chain_identifiers(t_atoms *atoms, t_block *mols) |
2730 | { |
2731 | int m, a, a0, a1, r; |
2732 | char c, chainid; |
2733 | int chainnum; |
2734 | |
2735 | /* We always assign a new chain number, but save the chain id characters |
2736 | * for larger molecules. |
2737 | */ |
2738 | #define CHAIN_MIN_ATOMS15 15 |
2739 | |
2740 | chainnum = 0; |
2741 | chainid = 'A'; |
2742 | for (m = 0; m < mols->nr; m++) |
2743 | { |
2744 | a0 = mols->index[m]; |
2745 | a1 = mols->index[m+1]; |
2746 | if ((a1-a0 >= CHAIN_MIN_ATOMS15) && (chainid <= 'Z')) |
2747 | { |
2748 | c = chainid; |
2749 | chainid++; |
2750 | } |
2751 | else |
2752 | { |
2753 | c = ' '; |
2754 | } |
2755 | for (a = a0; a < a1; a++) |
2756 | { |
2757 | atoms->resinfo[atoms->atom[a].resind].chainnum = chainnum; |
2758 | atoms->resinfo[atoms->atom[a].resind].chainid = c; |
2759 | } |
2760 | chainnum++; |
2761 | } |
2762 | |
2763 | /* Blank out the chain id if there was only one chain */ |
2764 | if (chainid == 'B') |
2765 | { |
2766 | for (r = 0; r < atoms->nres; r++) |
2767 | { |
2768 | atoms->resinfo[r].chainid = ' '; |
2769 | } |
2770 | } |
2771 | } |
2772 | |
2773 | static void do_moltype(t_fileio *fio, gmx_moltype_t *molt, gmx_bool bRead, |
2774 | t_symtab *symtab, int file_version, |
2775 | gmx_groups_t *groups) |
2776 | { |
2777 | int i; |
2778 | |
2779 | if (file_version >= 57) |
2780 | { |
2781 | do_symstr(fio, &(molt->name), bRead, symtab); |
2782 | } |
2783 | |
2784 | do_atoms(fio, &molt->atoms, bRead, symtab, file_version, groups); |
2785 | |
2786 | if (bRead && gmx_debug_at) |
2787 | { |
2788 | pr_atoms(debug, 0, "atoms", &molt->atoms, TRUE1); |
2789 | } |
2790 | |
2791 | if (file_version >= 57) |
2792 | { |
2793 | do_ilists(fio, molt->ilist, bRead, file_version); |
2794 | |
2795 | do_block(fio, &molt->cgs, bRead, file_version); |
2796 | if (bRead && gmx_debug_at) |
2797 | { |
2798 | pr_block(debug, 0, "cgs", &molt->cgs, TRUE1); |
2799 | } |
2800 | } |
2801 | |
2802 | /* This used to be in the atoms struct */ |
2803 | do_blocka(fio, &molt->excls, bRead, file_version); |
2804 | } |
2805 | |
2806 | static void do_molblock(t_fileio *fio, gmx_molblock_t *molb, gmx_bool bRead) |
2807 | { |
2808 | int i; |
2809 | |
2810 | gmx_fio_do_int(fio, molb->type)gmx_fio_doe_int(fio, &molb->type, ("molb->type"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2810); |
2811 | gmx_fio_do_int(fio, molb->nmol)gmx_fio_doe_int(fio, &molb->nmol, ("molb->nmol"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2811); |
2812 | gmx_fio_do_int(fio, molb->natoms_mol)gmx_fio_doe_int(fio, &molb->natoms_mol, ("molb->natoms_mol" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2812); |
2813 | /* Position restraint coordinates */ |
2814 | gmx_fio_do_int(fio, molb->nposres_xA)gmx_fio_doe_int(fio, &molb->nposres_xA, ("molb->nposres_xA" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2814); |
2815 | if (molb->nposres_xA > 0) |
2816 | { |
2817 | if (bRead) |
2818 | { |
2819 | snew(molb->posres_xA, molb->nposres_xA)(molb->posres_xA) = save_calloc("molb->posres_xA", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2819, (molb->nposres_xA), sizeof(*(molb->posres_xA))); |
2820 | } |
2821 | gmx_fio_ndo_rvec(fio, molb->posres_xA, molb->nposres_xA)gmx_fio_ndoe_rvec(fio, molb->posres_xA, molb->nposres_xA , ("molb->posres_xA"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2821); |
2822 | } |
2823 | gmx_fio_do_int(fio, molb->nposres_xB)gmx_fio_doe_int(fio, &molb->nposres_xB, ("molb->nposres_xB" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 2823); |
2824 | if (molb->nposres_xB > 0) |
2825 | { |
2826 | if (bRead) |
2827 | { |
2828 | snew(molb->posres_xB, molb->nposres_xB)(molb->posres_xB) = save_calloc("molb->posres_xB", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2828, (molb->nposres_xB), sizeof(*(molb->posres_xB))); |
2829 | } |
2830 | gmx_fio_ndo_rvec(fio, molb->posres_xB, molb->nposres_xB)gmx_fio_ndoe_rvec(fio, molb->posres_xB, molb->nposres_xB , ("molb->posres_xB"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2830); |
2831 | } |
2832 | |
2833 | } |
2834 | |
2835 | static t_block mtop_mols(gmx_mtop_t *mtop) |
2836 | { |
2837 | int mb, m, a, mol; |
2838 | t_block mols; |
2839 | |
2840 | mols.nr = 0; |
2841 | for (mb = 0; mb < mtop->nmolblock; mb++) |
2842 | { |
2843 | mols.nr += mtop->molblock[mb].nmol; |
2844 | } |
2845 | mols.nalloc_index = mols.nr + 1; |
2846 | snew(mols.index, mols.nalloc_index)(mols.index) = save_calloc("mols.index", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2846, (mols.nalloc_index), sizeof(*(mols.index))); |
2847 | |
2848 | a = 0; |
2849 | m = 0; |
2850 | mols.index[m] = a; |
2851 | for (mb = 0; mb < mtop->nmolblock; mb++) |
2852 | { |
2853 | for (mol = 0; mol < mtop->molblock[mb].nmol; mol++) |
2854 | { |
2855 | a += mtop->molblock[mb].natoms_mol; |
2856 | m++; |
2857 | mols.index[m] = a; |
2858 | } |
2859 | } |
2860 | |
2861 | return mols; |
2862 | } |
2863 | |
2864 | static void add_posres_molblock(gmx_mtop_t *mtop) |
2865 | { |
2866 | t_ilist *il, *ilfb; |
2867 | int am, i, mol, a; |
2868 | gmx_bool bFE; |
2869 | gmx_molblock_t *molb; |
2870 | t_iparams *ip; |
2871 | |
2872 | /* posres reference positions are stored in ip->posres (if present) and |
2873 | in ip->fbposres (if present). If normal and flat-bottomed posres are present, |
2874 | posres.pos0A are identical to fbposres.pos0. */ |
2875 | il = &mtop->moltype[0].ilist[F_POSRES]; |
2876 | ilfb = &mtop->moltype[0].ilist[F_FBPOSRES]; |
2877 | if (il->nr == 0 && ilfb->nr == 0) |
2878 | { |
2879 | return; |
2880 | } |
2881 | am = 0; |
2882 | bFE = FALSE0; |
2883 | for (i = 0; i < il->nr; i += 2) |
2884 | { |
2885 | ip = &mtop->ffparams.iparams[il->iatoms[i]]; |
2886 | am = max(am, il->iatoms[i+1])(((am) > (il->iatoms[i+1])) ? (am) : (il->iatoms[i+1 ]) ); |
2887 | if (ip->posres.pos0B[XX0] != ip->posres.pos0A[XX0] || |
2888 | ip->posres.pos0B[YY1] != ip->posres.pos0A[YY1] || |
2889 | ip->posres.pos0B[ZZ2] != ip->posres.pos0A[ZZ2]) |
2890 | { |
2891 | bFE = TRUE1; |
2892 | } |
2893 | } |
2894 | /* This loop is required if we have only flat-bottomed posres: |
2895 | - set am |
2896 | - bFE == FALSE (no B-state for flat-bottomed posres) */ |
2897 | if (il->nr == 0) |
2898 | { |
2899 | for (i = 0; i < ilfb->nr; i += 2) |
2900 | { |
2901 | ip = &mtop->ffparams.iparams[ilfb->iatoms[i]]; |
Value stored to 'ip' is never read | |
2902 | am = max(am, ilfb->iatoms[i+1])(((am) > (ilfb->iatoms[i+1])) ? (am) : (ilfb->iatoms [i+1]) ); |
2903 | } |
2904 | } |
2905 | /* Make the posres coordinate block end at a molecule end */ |
2906 | mol = 0; |
2907 | while (am >= mtop->mols.index[mol+1]) |
2908 | { |
2909 | mol++; |
2910 | } |
2911 | molb = &mtop->molblock[0]; |
2912 | molb->nposres_xA = mtop->mols.index[mol+1]; |
2913 | snew(molb->posres_xA, molb->nposres_xA)(molb->posres_xA) = save_calloc("molb->posres_xA", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2913, (molb->nposres_xA), sizeof(*(molb->posres_xA))); |
2914 | if (bFE) |
2915 | { |
2916 | molb->nposres_xB = molb->nposres_xA; |
2917 | snew(molb->posres_xB, molb->nposres_xB)(molb->posres_xB) = save_calloc("molb->posres_xB", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 2917, (molb->nposres_xB), sizeof(*(molb->posres_xB))); |
2918 | } |
2919 | else |
2920 | { |
2921 | molb->nposres_xB = 0; |
2922 | } |
2923 | for (i = 0; i < il->nr; i += 2) |
2924 | { |
2925 | ip = &mtop->ffparams.iparams[il->iatoms[i]]; |
2926 | a = il->iatoms[i+1]; |
2927 | molb->posres_xA[a][XX0] = ip->posres.pos0A[XX0]; |
2928 | molb->posres_xA[a][YY1] = ip->posres.pos0A[YY1]; |
2929 | molb->posres_xA[a][ZZ2] = ip->posres.pos0A[ZZ2]; |
2930 | if (bFE) |
2931 | { |
2932 | molb->posres_xB[a][XX0] = ip->posres.pos0B[XX0]; |
2933 | molb->posres_xB[a][YY1] = ip->posres.pos0B[YY1]; |
2934 | molb->posres_xB[a][ZZ2] = ip->posres.pos0B[ZZ2]; |
2935 | } |
2936 | } |
2937 | if (il->nr == 0) |
2938 | { |
2939 | /* If only flat-bottomed posres are present, take reference pos from them. |
2940 | Here: bFE == FALSE */ |
2941 | for (i = 0; i < ilfb->nr; i += 2) |
2942 | { |
2943 | ip = &mtop->ffparams.iparams[ilfb->iatoms[i]]; |
2944 | a = ilfb->iatoms[i+1]; |
2945 | molb->posres_xA[a][XX0] = ip->fbposres.pos0[XX0]; |
2946 | molb->posres_xA[a][YY1] = ip->fbposres.pos0[YY1]; |
2947 | molb->posres_xA[a][ZZ2] = ip->fbposres.pos0[ZZ2]; |
2948 | } |
2949 | } |
2950 | } |
2951 | |
2952 | static void set_disres_npair(gmx_mtop_t *mtop) |
2953 | { |
2954 | int mt, i, npair; |
2955 | t_iparams *ip; |
2956 | t_ilist *il; |
2957 | t_iatom *a; |
2958 | |
2959 | ip = mtop->ffparams.iparams; |
2960 | |
2961 | for (mt = 0; mt < mtop->nmoltype; mt++) |
2962 | { |
2963 | il = &mtop->moltype[mt].ilist[F_DISRES]; |
2964 | if (il->nr > 0) |
2965 | { |
2966 | a = il->iatoms; |
2967 | npair = 0; |
2968 | for (i = 0; i < il->nr; i += 3) |
2969 | { |
2970 | npair++; |
2971 | if (i+3 == il->nr || ip[a[i]].disres.label != ip[a[i+3]].disres.label) |
2972 | { |
2973 | ip[a[i]].disres.npair = npair; |
2974 | npair = 0; |
2975 | } |
2976 | } |
2977 | } |
2978 | } |
2979 | } |
2980 | |
2981 | static void do_mtop(t_fileio *fio, gmx_mtop_t *mtop, gmx_bool bRead, |
2982 | int file_version) |
2983 | { |
2984 | int mt, mb, i; |
2985 | t_blocka dumb; |
2986 | |
2987 | if (bRead) |
2988 | { |
2989 | init_mtop(mtop); |
2990 | } |
2991 | do_symtab(fio, &(mtop->symtab), bRead); |
2992 | if (bRead && debug) |
2993 | { |
2994 | pr_symtab(debug, 0, "symtab", &mtop->symtab); |
2995 | } |
2996 | |
2997 | do_symstr(fio, &(mtop->name), bRead, &(mtop->symtab)); |
2998 | |
2999 | if (file_version >= 57) |
3000 | { |
3001 | do_ffparams(fio, &mtop->ffparams, bRead, file_version); |
3002 | |
3003 | gmx_fio_do_int(fio, mtop->nmoltype)gmx_fio_doe_int(fio, &mtop->nmoltype, ("mtop->nmoltype" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 3003); |
3004 | } |
3005 | else |
3006 | { |
3007 | mtop->nmoltype = 1; |
3008 | } |
3009 | if (bRead) |
3010 | { |
3011 | snew(mtop->moltype, mtop->nmoltype)(mtop->moltype) = save_calloc("mtop->moltype", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3011, (mtop->nmoltype), sizeof(*(mtop->moltype))); |
3012 | if (file_version < 57) |
3013 | { |
3014 | mtop->moltype[0].name = mtop->name; |
3015 | } |
3016 | } |
3017 | for (mt = 0; mt < mtop->nmoltype; mt++) |
3018 | { |
3019 | do_moltype(fio, &mtop->moltype[mt], bRead, &mtop->symtab, file_version, |
3020 | &mtop->groups); |
3021 | } |
3022 | |
3023 | if (file_version >= 57) |
3024 | { |
3025 | gmx_fio_do_int(fio, mtop->nmolblock)gmx_fio_doe_int(fio, &mtop->nmolblock, ("mtop->nmolblock" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 3025); |
3026 | } |
3027 | else |
3028 | { |
3029 | mtop->nmolblock = 1; |
3030 | } |
3031 | if (bRead) |
3032 | { |
3033 | snew(mtop->molblock, mtop->nmolblock)(mtop->molblock) = save_calloc("mtop->molblock", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3033, (mtop->nmolblock), sizeof(*(mtop->molblock))); |
3034 | } |
3035 | if (file_version >= 57) |
3036 | { |
3037 | for (mb = 0; mb < mtop->nmolblock; mb++) |
3038 | { |
3039 | do_molblock(fio, &mtop->molblock[mb], bRead); |
3040 | } |
3041 | gmx_fio_do_int(fio, mtop->natoms)gmx_fio_doe_int(fio, &mtop->natoms, ("mtop->natoms" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 3041); |
3042 | } |
3043 | else |
3044 | { |
3045 | mtop->molblock[0].type = 0; |
3046 | mtop->molblock[0].nmol = 1; |
3047 | mtop->molblock[0].natoms_mol = mtop->moltype[0].atoms.nr; |
3048 | mtop->molblock[0].nposres_xA = 0; |
3049 | mtop->molblock[0].nposres_xB = 0; |
3050 | } |
3051 | |
3052 | do_atomtypes (fio, &(mtop->atomtypes), bRead, file_version); |
3053 | if (bRead && debug) |
3054 | { |
3055 | pr_atomtypes(debug, 0, "atomtypes", &mtop->atomtypes, TRUE1); |
3056 | } |
3057 | |
3058 | if (file_version < 57) |
3059 | { |
3060 | /* Debug statements are inside do_idef */ |
3061 | do_idef (fio, &mtop->ffparams, &mtop->moltype[0], bRead, file_version); |
3062 | mtop->natoms = mtop->moltype[0].atoms.nr; |
3063 | } |
3064 | |
3065 | if (file_version >= 65) |
3066 | { |
3067 | do_cmap(fio, &mtop->ffparams.cmap_grid, bRead); |
3068 | } |
3069 | else |
3070 | { |
3071 | mtop->ffparams.cmap_grid.ngrid = 0; |
3072 | mtop->ffparams.cmap_grid.grid_spacing = 0; |
3073 | mtop->ffparams.cmap_grid.cmapdata = NULL((void*)0); |
3074 | } |
3075 | |
3076 | if (file_version >= 57) |
3077 | { |
3078 | do_groups(fio, &mtop->groups, bRead, &(mtop->symtab), file_version); |
3079 | } |
3080 | |
3081 | if (file_version < 57) |
3082 | { |
3083 | do_block(fio, &mtop->moltype[0].cgs, bRead, file_version); |
3084 | if (bRead && gmx_debug_at) |
3085 | { |
3086 | pr_block(debug, 0, "cgs", &mtop->moltype[0].cgs, TRUE1); |
3087 | } |
3088 | do_block(fio, &mtop->mols, bRead, file_version); |
3089 | /* Add the posres coordinates to the molblock */ |
3090 | add_posres_molblock(mtop); |
3091 | } |
3092 | if (bRead) |
3093 | { |
3094 | if (file_version >= 57) |
3095 | { |
3096 | done_block(&mtop->mols); |
3097 | mtop->mols = mtop_mols(mtop); |
3098 | } |
3099 | if (gmx_debug_at) |
3100 | { |
3101 | pr_block(debug, 0, "mols", &mtop->mols, TRUE1); |
3102 | } |
3103 | } |
3104 | |
3105 | if (file_version < 51) |
3106 | { |
3107 | /* Here used to be the shake blocks */ |
3108 | do_blocka(fio, &dumb, bRead, file_version); |
3109 | if (dumb.nr > 0) |
3110 | { |
3111 | sfree(dumb.index)save_free("dumb.index", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3111, (dumb.index)); |
3112 | } |
3113 | if (dumb.nra > 0) |
3114 | { |
3115 | sfree(dumb.a)save_free("dumb.a", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3115, (dumb.a)); |
3116 | } |
3117 | } |
3118 | |
3119 | if (bRead) |
3120 | { |
3121 | close_symtab(&(mtop->symtab)); |
3122 | } |
3123 | } |
3124 | |
3125 | /* If TopOnlyOK is TRUE then we can read even future versions |
3126 | * of tpx files, provided the file_generation hasn't changed. |
3127 | * If it is FALSE, we need the inputrecord too, and bail out |
3128 | * if the file is newer than the program. |
3129 | * |
3130 | * The version and generation if the topology (see top of this file) |
3131 | * are returned in the two last arguments. |
3132 | * |
3133 | * If possible, we will read the inputrec even when TopOnlyOK is TRUE. |
3134 | */ |
3135 | static void do_tpxheader(t_fileio *fio, gmx_bool bRead, t_tpxheader *tpx, |
3136 | gmx_bool TopOnlyOK, int *file_version, |
3137 | int *file_generation) |
3138 | { |
3139 | char buf[STRLEN4096]; |
3140 | char file_tag[STRLEN4096]; |
3141 | gmx_bool bDouble; |
3142 | int precision; |
3143 | int fver, fgen; |
3144 | int idum = 0; |
3145 | real rdum = 0; |
3146 | |
3147 | gmx_fio_checktype(fio); |
3148 | gmx_fio_setdebug(fio, bDebugMode()); |
3149 | |
3150 | /* NEW! XDR tpb file */ |
3151 | precision = sizeof(real); |
3152 | if (bRead) |
3153 | { |
3154 | gmx_fio_do_string(fio, buf)gmx_fio_doe_string(fio, buf, ("buf"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3154); |
3155 | if (strncmp(buf, "VERSION", 7)(__extension__ (__builtin_constant_p (7) && ((__builtin_constant_p (buf) && strlen (buf) < ((size_t) (7))) || (__builtin_constant_p ("VERSION") && strlen ("VERSION") < ((size_t) (7) ))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (buf) && __builtin_constant_p ("VERSION") && (__s1_len = strlen (buf), __s2_len = strlen ("VERSION"), (!( (size_t)(const void *)((buf) + 1) - (size_t)(const void *)(buf ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("VERSION") + 1) - (size_t)(const void *)("VERSION") == 1 ) || __s2_len >= 4)) ? __builtin_strcmp (buf, "VERSION") : (__builtin_constant_p (buf) && ((size_t)(const void * )((buf) + 1) - (size_t)(const void *)(buf) == 1) && ( __s1_len = strlen (buf), __s1_len < 4) ? (__builtin_constant_p ("VERSION") && ((size_t)(const void *)(("VERSION") + 1) - (size_t)(const void *)("VERSION") == 1) ? __builtin_strcmp (buf, "VERSION") : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) ("VERSION"); int __result = (((const unsigned char *) (const char *) (buf))[0] - __s2[ 0]); if (__s1_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (buf))[1] - __s2[ 1]); if (__s1_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (buf))[2] - __s2[ 2]); if (__s1_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) (buf))[3] - __s2[3] ); } } __result; }))) : (__builtin_constant_p ("VERSION") && ((size_t)(const void *)(("VERSION") + 1) - (size_t)(const void *)("VERSION") == 1) && (__s2_len = strlen ("VERSION" ), __s2_len < 4) ? (__builtin_constant_p (buf) && ( (size_t)(const void *)((buf) + 1) - (size_t)(const void *)(buf ) == 1) ? __builtin_strcmp (buf, "VERSION") : (- (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (buf); int __result = (((const unsigned char *) (const char *) ("VERSION"))[0] - __s2[0]); if (__s2_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) ("VERSION"))[1] - __s2[1]); if (__s2_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) ("VERSION"))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ("VERSION"))[3] - __s2[3]); } } __result; })))) : __builtin_strcmp (buf, "VERSION")))); }) : strncmp (buf, "VERSION", 7)))) |
3156 | { |
3157 | gmx_fatal(FARGS0, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 3157, "Can not read file %s,\n" |
3158 | " this file is from a Gromacs version which is older than 2.0\n" |
3159 | " Make a new one with grompp or use a gro or pdb file, if possible", |
3160 | gmx_fio_getname(fio)); |
3161 | } |
3162 | gmx_fio_do_int(fio, precision)gmx_fio_doe_int(fio, &precision, ("precision"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3162); |
3163 | bDouble = (precision == sizeof(double)); |
3164 | if ((precision != sizeof(float)) && !bDouble) |
3165 | { |
3166 | gmx_fatal(FARGS0, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 3166, "Unknown precision in file %s: real is %d bytes " |
3167 | "instead of %d or %d", |
3168 | gmx_fio_getname(fio), precision, sizeof(float), sizeof(double)); |
3169 | } |
3170 | gmx_fio_setprecision(fio, bDouble); |
3171 | fprintf(stderrstderr, "Reading file %s, %s (%s precision)\n", |
3172 | gmx_fio_getname(fio), buf, bDouble ? "double" : "single"); |
3173 | } |
3174 | else |
3175 | { |
3176 | gmx_fio_write_string(fio, GromacsVersion())gmx_fio_writee_string(fio, GromacsVersion(), ("GromacsVersion()" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 3176); |
3177 | bDouble = (precision == sizeof(double)); |
3178 | gmx_fio_setprecision(fio, bDouble); |
3179 | gmx_fio_do_int(fio, precision)gmx_fio_doe_int(fio, &precision, ("precision"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3179); |
3180 | fver = tpx_version; |
3181 | sprintf(file_tag, "%s", tpx_tag); |
3182 | fgen = tpx_generation; |
3183 | } |
3184 | |
3185 | /* Check versions! */ |
3186 | gmx_fio_do_int(fio, fver)gmx_fio_doe_int(fio, &fver, ("fver"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3186); |
3187 | |
3188 | /* This is for backward compatibility with development versions 77-79 |
3189 | * where the tag was, mistakenly, placed before the generation, |
3190 | * which would cause a segv instead of a proper error message |
3191 | * when reading the topology only from tpx with <77 code. |
3192 | */ |
3193 | if (fver >= 77 && fver <= 79) |
3194 | { |
3195 | gmx_fio_do_string(fio, file_tag)gmx_fio_doe_string(fio, file_tag, ("file_tag"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3195); |
3196 | } |
3197 | |
3198 | if (fver >= 26) |
3199 | { |
3200 | gmx_fio_do_int(fio, fgen)gmx_fio_doe_int(fio, &fgen, ("fgen"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3200); |
3201 | } |
3202 | else |
3203 | { |
3204 | fgen = 0; |
3205 | } |
3206 | |
3207 | if (fver >= 81) |
3208 | { |
3209 | gmx_fio_do_string(fio, file_tag)gmx_fio_doe_string(fio, file_tag, ("file_tag"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3209); |
3210 | } |
3211 | if (bRead) |
3212 | { |
3213 | if (fver < 77) |
3214 | { |
3215 | /* Versions before 77 don't have the tag, set it to release */ |
3216 | sprintf(file_tag, "%s", TPX_TAG_RELEASE"release"); |
3217 | } |
3218 | |
3219 | if (strcmp(file_tag, tpx_tag)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (file_tag) && __builtin_constant_p (tpx_tag) && (__s1_len = strlen (file_tag), __s2_len = strlen (tpx_tag), ( !((size_t)(const void *)((file_tag) + 1) - (size_t)(const void *)(file_tag) == 1) || __s1_len >= 4) && (!((size_t )(const void *)((tpx_tag) + 1) - (size_t)(const void *)(tpx_tag ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (file_tag, tpx_tag ) : (__builtin_constant_p (file_tag) && ((size_t)(const void *)((file_tag) + 1) - (size_t)(const void *)(file_tag) == 1) && (__s1_len = strlen (file_tag), __s1_len < 4 ) ? (__builtin_constant_p (tpx_tag) && ((size_t)(const void *)((tpx_tag) + 1) - (size_t)(const void *)(tpx_tag) == 1 ) ? __builtin_strcmp (file_tag, tpx_tag) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (tpx_tag); int __result = (((const unsigned char *) (const char *) (file_tag))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (file_tag))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (file_tag))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) (file_tag))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (tpx_tag) && ((size_t)(const void *)((tpx_tag) + 1) - (size_t)(const void *)(tpx_tag) == 1) && (__s2_len = strlen (tpx_tag), __s2_len < 4) ? (__builtin_constant_p ( file_tag) && ((size_t)(const void *)((file_tag) + 1) - (size_t)(const void *)(file_tag) == 1) ? __builtin_strcmp (file_tag , tpx_tag) : (- (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (file_tag); int __result = (((const unsigned char *) (const char *) (tpx_tag))[0] - __s2 [0]); if (__s2_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (tpx_tag))[1] - __s2 [1]); if (__s2_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (tpx_tag))[2] - __s2 [2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) (tpx_tag))[3] - __s2 [3]); } } __result; })))) : __builtin_strcmp (file_tag, tpx_tag )))); }) != 0) |
3220 | { |
3221 | fprintf(stderrstderr, "Note: file tpx tag '%s', software tpx tag '%s'\n", |
3222 | file_tag, tpx_tag); |
3223 | |
3224 | /* We only support reading tpx files with the same tag as the code |
3225 | * or tpx files with the release tag and with lower version number. |
3226 | */ |
3227 | if (!strcmp(file_tag, TPX_TAG_RELEASE)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (file_tag) && __builtin_constant_p ("release") && (__s1_len = strlen (file_tag), __s2_len = strlen ("release") , (!((size_t)(const void *)((file_tag) + 1) - (size_t)(const void *)(file_tag) == 1) || __s1_len >= 4) && (!((size_t )(const void *)(("release") + 1) - (size_t)(const void *)("release" ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (file_tag, "release" ) : (__builtin_constant_p (file_tag) && ((size_t)(const void *)((file_tag) + 1) - (size_t)(const void *)(file_tag) == 1) && (__s1_len = strlen (file_tag), __s1_len < 4 ) ? (__builtin_constant_p ("release") && ((size_t)(const void *)(("release") + 1) - (size_t)(const void *)("release") == 1) ? __builtin_strcmp (file_tag, "release") : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) ("release"); int __result = (((const unsigned char * ) (const char *) (file_tag))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (file_tag))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (file_tag))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) (file_tag))[3] - __s2[3]); } } __result; } ))) : (__builtin_constant_p ("release") && ((size_t)( const void *)(("release") + 1) - (size_t)(const void *)("release" ) == 1) && (__s2_len = strlen ("release"), __s2_len < 4) ? (__builtin_constant_p (file_tag) && ((size_t)(const void *)((file_tag) + 1) - (size_t)(const void *)(file_tag) == 1) ? __builtin_strcmp (file_tag, "release") : (- (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (file_tag); int __result = (((const unsigned char *) (const char *) ("release"))[0] - __s2[0]); if (__s2_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) ("release"))[1] - __s2[1]); if (__s2_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) ("release"))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ("release"))[3] - __s2[3]); } } __result; } )))) : __builtin_strcmp (file_tag, "release")))); }) == 0 && fver < tpx_version) |
3228 | { |
3229 | gmx_fatal(FARGS0, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 3229, "tpx tag/version mismatch: reading tpx file (%s) version %d, tag '%s' with program for tpx version %d, tag '%s'", |
3230 | gmx_fio_getname(fio), fver, file_tag, |
3231 | tpx_version, tpx_tag); |
3232 | } |
3233 | } |
3234 | } |
3235 | |
3236 | if (file_version != NULL((void*)0)) |
3237 | { |
3238 | *file_version = fver; |
3239 | } |
3240 | if (file_generation != NULL((void*)0)) |
3241 | { |
3242 | *file_generation = fgen; |
3243 | } |
3244 | |
3245 | |
3246 | if ((fver <= tpx_incompatible_version) || |
3247 | ((fver > tpx_version) && !TopOnlyOK) || |
3248 | (fgen > tpx_generation) || |
3249 | tpx_version == 80) /*80 was used by both 5.0-dev and 4.6-dev*/ |
3250 | { |
3251 | gmx_fatal(FARGS0, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 3251, "reading tpx file (%s) version %d with version %d program", |
3252 | gmx_fio_getname(fio), fver, tpx_version); |
3253 | } |
3254 | |
3255 | do_section(fio, eitemHEADER, bRead)_do_section(fio, eitemHEADER, bRead, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3255); |
3256 | gmx_fio_do_int(fio, tpx->natoms)gmx_fio_doe_int(fio, &tpx->natoms, ("tpx->natoms"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 3256 ); |
3257 | if (fver >= 28) |
3258 | { |
3259 | gmx_fio_do_int(fio, tpx->ngtc)gmx_fio_doe_int(fio, &tpx->ngtc, ("tpx->ngtc"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3259); |
3260 | } |
3261 | else |
3262 | { |
3263 | tpx->ngtc = 0; |
3264 | } |
3265 | if (fver < 62) |
3266 | { |
3267 | gmx_fio_do_int(fio, idum)gmx_fio_doe_int(fio, &idum, ("idum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3267); |
3268 | gmx_fio_do_real(fio, rdum)gmx_fio_doe_real(fio, &rdum, ("rdum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3268); |
3269 | } |
3270 | /*a better decision will eventually (5.0 or later) need to be made |
3271 | on how to treat the alchemical state of the system, which can now |
3272 | vary through a simulation, and cannot be completely described |
3273 | though a single lambda variable, or even a single state |
3274 | index. Eventually, should probably be a vector. MRS*/ |
3275 | if (fver >= 79) |
3276 | { |
3277 | gmx_fio_do_int(fio, tpx->fep_state)gmx_fio_doe_int(fio, &tpx->fep_state, ("tpx->fep_state" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 3277); |
3278 | } |
3279 | gmx_fio_do_real(fio, tpx->lambda)gmx_fio_doe_real(fio, &tpx->lambda, ("tpx->lambda") , "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 3279 ); |
3280 | gmx_fio_do_int(fio, tpx->bIr)gmx_fio_doe_int(fio, &tpx->bIr, ("tpx->bIr"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3280); |
3281 | gmx_fio_do_int(fio, tpx->bTop)gmx_fio_doe_int(fio, &tpx->bTop, ("tpx->bTop"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3281); |
3282 | gmx_fio_do_int(fio, tpx->bX)gmx_fio_doe_int(fio, &tpx->bX, ("tpx->bX"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3282); |
3283 | gmx_fio_do_int(fio, tpx->bV)gmx_fio_doe_int(fio, &tpx->bV, ("tpx->bV"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3283); |
3284 | gmx_fio_do_int(fio, tpx->bF)gmx_fio_doe_int(fio, &tpx->bF, ("tpx->bF"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3284); |
3285 | gmx_fio_do_int(fio, tpx->bBox)gmx_fio_doe_int(fio, &tpx->bBox, ("tpx->bBox"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3285); |
3286 | |
3287 | if ((fgen > tpx_generation)) |
3288 | { |
3289 | /* This can only happen if TopOnlyOK=TRUE */ |
3290 | tpx->bIr = FALSE0; |
3291 | } |
3292 | } |
3293 | |
3294 | static int do_tpx(t_fileio *fio, gmx_bool bRead, |
3295 | t_inputrec *ir, t_state *state, rvec *f, gmx_mtop_t *mtop, |
3296 | gmx_bool bXVallocated) |
3297 | { |
3298 | t_tpxheader tpx; |
3299 | t_inputrec dum_ir; |
3300 | gmx_mtop_t dum_top; |
3301 | gmx_bool TopOnlyOK; |
3302 | int file_version, file_generation; |
3303 | int i; |
3304 | rvec *xptr, *vptr; |
3305 | int ePBC; |
3306 | gmx_bool bPeriodicMols; |
3307 | |
3308 | if (!bRead) |
3309 | { |
3310 | tpx.natoms = state->natoms; |
3311 | tpx.ngtc = state->ngtc; /* need to add nnhpres here? */ |
3312 | tpx.fep_state = state->fep_state; |
3313 | tpx.lambda = state->lambda[efptFEP]; |
3314 | tpx.bIr = (ir != NULL((void*)0)); |
3315 | tpx.bTop = (mtop != NULL((void*)0)); |
3316 | tpx.bX = (state->x != NULL((void*)0)); |
3317 | tpx.bV = (state->v != NULL((void*)0)); |
3318 | tpx.bF = (f != NULL((void*)0)); |
3319 | tpx.bBox = TRUE1; |
3320 | } |
3321 | |
3322 | TopOnlyOK = (ir == NULL((void*)0)); |
3323 | |
3324 | do_tpxheader(fio, bRead, &tpx, TopOnlyOK, &file_version, &file_generation); |
3325 | |
3326 | if (bRead) |
3327 | { |
3328 | state->flags = 0; |
3329 | /* state->lambda = tpx.lambda;*/ /*remove this eventually? */ |
3330 | /* The init_state calls initialize the Nose-Hoover xi integrals to zero */ |
3331 | if (bXVallocated) |
3332 | { |
3333 | xptr = state->x; |
3334 | vptr = state->v; |
3335 | init_state(state, 0, tpx.ngtc, 0, 0, 0); /* nose-hoover chains */ /* eventually, need to add nnhpres here? */ |
3336 | state->natoms = tpx.natoms; |
3337 | state->nalloc = tpx.natoms; |
3338 | state->x = xptr; |
3339 | state->v = vptr; |
3340 | } |
3341 | else |
3342 | { |
3343 | init_state(state, tpx.natoms, tpx.ngtc, 0, 0, 0); /* nose-hoover chains */ |
3344 | } |
3345 | } |
3346 | |
3347 | #define do_test(fio, b, p)if (bRead && (p != ((void*)0)) && !b) gmx_fatal (0, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3347, "No %s in %s","p", gmx_fio_getname(fio)) if (bRead && (p != NULL((void*)0)) && !b) gmx_fatal(FARGS0, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 3347, "No %s in %s",#p, gmx_fio_getname(fio)) |
3348 | |
3349 | do_test(fio, tpx.bBox, state->box)if (bRead && (state->box != ((void*)0)) && !tpx.bBox) gmx_fatal(0, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3349, "No %s in %s","state->box", gmx_fio_getname(fio)); |
3350 | do_section(fio, eitemBOX, bRead)_do_section(fio, eitemBOX, bRead, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3350); |
3351 | if (tpx.bBox) |
3352 | { |
3353 | gmx_fio_ndo_rvec(fio, state->box, DIM)gmx_fio_ndoe_rvec(fio, state->box, 3, ("state->box"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3353); |
3354 | if (file_version >= 51) |
3355 | { |
3356 | gmx_fio_ndo_rvec(fio, state->box_rel, DIM)gmx_fio_ndoe_rvec(fio, state->box_rel, 3, ("state->box_rel" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 3356); |
3357 | } |
3358 | else |
3359 | { |
3360 | /* We initialize box_rel after reading the inputrec */ |
3361 | clear_mat(state->box_rel); |
3362 | } |
3363 | if (file_version >= 28) |
3364 | { |
3365 | gmx_fio_ndo_rvec(fio, state->boxv, DIM)gmx_fio_ndoe_rvec(fio, state->boxv, 3, ("state->boxv"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 3365 ); |
3366 | if (file_version < 56) |
3367 | { |
3368 | matrix mdum; |
3369 | gmx_fio_ndo_rvec(fio, mdum, DIM)gmx_fio_ndoe_rvec(fio, mdum, 3, ("mdum"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3369); |
3370 | } |
3371 | } |
3372 | } |
3373 | |
3374 | if (state->ngtc > 0 && file_version >= 28) |
3375 | { |
3376 | real *dumv; |
3377 | /*ndo_double(state->nosehoover_xi,state->ngtc,bDum);*/ |
3378 | /*ndo_double(state->nosehoover_vxi,state->ngtc,bDum);*/ |
3379 | /*ndo_double(state->therm_integral,state->ngtc,bDum);*/ |
3380 | snew(dumv, state->ngtc)(dumv) = save_calloc("dumv", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3380, (state->ngtc), sizeof(*(dumv))); |
3381 | if (file_version < 69) |
3382 | { |
3383 | gmx_fio_ndo_real(fio, dumv, state->ngtc)gmx_fio_ndoe_real(fio, dumv, state->ngtc, ("dumv"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3383); |
3384 | } |
3385 | /* These used to be the Berendsen tcoupl_lambda's */ |
3386 | gmx_fio_ndo_real(fio, dumv, state->ngtc)gmx_fio_ndoe_real(fio, dumv, state->ngtc, ("dumv"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3386); |
3387 | sfree(dumv)save_free("dumv", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3387, (dumv)); |
3388 | } |
3389 | |
3390 | /* Prior to tpx version 26, the inputrec was here. |
3391 | * I moved it to enable partial forward-compatibility |
3392 | * for analysis/viewer programs. |
3393 | */ |
3394 | if (file_version < 26) |
3395 | { |
3396 | do_test(fio, tpx.bIr, ir)if (bRead && (ir != ((void*)0)) && !tpx.bIr) gmx_fatal (0, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3396, "No %s in %s","ir", gmx_fio_getname(fio)); |
3397 | do_section(fio, eitemIR, bRead)_do_section(fio, eitemIR, bRead, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3397); |
3398 | if (tpx.bIr) |
3399 | { |
3400 | if (ir) |
3401 | { |
3402 | do_inputrec(fio, ir, bRead, file_version, |
3403 | mtop ? &mtop->ffparams.fudgeQQ : NULL((void*)0)); |
3404 | if (bRead && debug) |
3405 | { |
3406 | pr_inputrec(debug, 0, "inputrec", ir, FALSE0); |
3407 | } |
3408 | } |
3409 | else |
3410 | { |
3411 | do_inputrec(fio, &dum_ir, bRead, file_version, |
3412 | mtop ? &mtop->ffparams.fudgeQQ : NULL((void*)0)); |
3413 | if (bRead && debug) |
3414 | { |
3415 | pr_inputrec(debug, 0, "inputrec", &dum_ir, FALSE0); |
3416 | } |
3417 | done_inputrec(&dum_ir); |
3418 | } |
3419 | |
3420 | } |
3421 | } |
3422 | |
3423 | do_test(fio, tpx.bTop, mtop)if (bRead && (mtop != ((void*)0)) && !tpx.bTop ) gmx_fatal(0, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3423, "No %s in %s","mtop", gmx_fio_getname(fio)); |
3424 | do_section(fio, eitemTOP, bRead)_do_section(fio, eitemTOP, bRead, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3424); |
3425 | if (tpx.bTop) |
3426 | { |
3427 | if (mtop) |
3428 | { |
3429 | do_mtop(fio, mtop, bRead, file_version); |
3430 | } |
3431 | else |
3432 | { |
3433 | do_mtop(fio, &dum_top, bRead, file_version); |
3434 | done_mtop(&dum_top, TRUE1); |
3435 | } |
3436 | } |
3437 | do_test(fio, tpx.bX, state->x)if (bRead && (state->x != ((void*)0)) && ! tpx.bX) gmx_fatal(0, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3437, "No %s in %s","state->x", gmx_fio_getname(fio)); |
3438 | do_section(fio, eitemX, bRead)_do_section(fio, eitemX, bRead, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3438); |
3439 | if (tpx.bX) |
3440 | { |
3441 | if (bRead) |
3442 | { |
3443 | state->flags |= (1<<estX); |
3444 | } |
3445 | gmx_fio_ndo_rvec(fio, state->x, state->natoms)gmx_fio_ndoe_rvec(fio, state->x, state->natoms, ("state->x" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 3445); |
3446 | } |
3447 | |
3448 | do_test(fio, tpx.bV, state->v)if (bRead && (state->v != ((void*)0)) && ! tpx.bV) gmx_fatal(0, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3448, "No %s in %s","state->v", gmx_fio_getname(fio)); |
3449 | do_section(fio, eitemV, bRead)_do_section(fio, eitemV, bRead, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3449); |
3450 | if (tpx.bV) |
3451 | { |
3452 | if (bRead) |
3453 | { |
3454 | state->flags |= (1<<estV); |
3455 | } |
3456 | gmx_fio_ndo_rvec(fio, state->v, state->natoms)gmx_fio_ndoe_rvec(fio, state->v, state->natoms, ("state->v" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 3456); |
3457 | } |
3458 | |
3459 | do_test(fio, tpx.bF, f)if (bRead && (f != ((void*)0)) && !tpx.bF) gmx_fatal (0, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3459, "No %s in %s","f", gmx_fio_getname(fio)); |
3460 | do_section(fio, eitemF, bRead)_do_section(fio, eitemF, bRead, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3460); |
3461 | if (tpx.bF) |
3462 | { |
3463 | gmx_fio_ndo_rvec(fio, f, state->natoms)gmx_fio_ndoe_rvec(fio, f, state->natoms, ("f"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3463); |
3464 | } |
3465 | |
3466 | /* Starting with tpx version 26, we have the inputrec |
3467 | * at the end of the file, so we can ignore it |
3468 | * if the file is never than the software (but still the |
3469 | * same generation - see comments at the top of this file. |
3470 | * |
3471 | * |
3472 | */ |
3473 | ePBC = -1; |
3474 | bPeriodicMols = FALSE0; |
3475 | if (file_version >= 26) |
3476 | { |
3477 | do_test(fio, tpx.bIr, ir)if (bRead && (ir != ((void*)0)) && !tpx.bIr) gmx_fatal (0, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3477, "No %s in %s","ir", gmx_fio_getname(fio)); |
3478 | do_section(fio, eitemIR, bRead)_do_section(fio, eitemIR, bRead, "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3478); |
3479 | if (tpx.bIr) |
3480 | { |
3481 | if (file_version >= 53) |
3482 | { |
3483 | /* Removed the pbc info from do_inputrec, since we always want it */ |
3484 | if (!bRead) |
3485 | { |
3486 | ePBC = ir->ePBC; |
3487 | bPeriodicMols = ir->bPeriodicMols; |
3488 | } |
3489 | gmx_fio_do_int(fio, ePBC)gmx_fio_doe_int(fio, &ePBC, ("ePBC"), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3489); |
3490 | gmx_fio_do_gmx_bool(fio, bPeriodicMols)gmx_fio_doe_gmx_bool(fio, &bPeriodicMols, ("bPeriodicMols" ), "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c", 3490); |
3491 | } |
3492 | if (file_generation <= tpx_generation && ir) |
3493 | { |
3494 | do_inputrec(fio, ir, bRead, file_version, mtop ? &mtop->ffparams.fudgeQQ : NULL((void*)0)); |
3495 | if (bRead && debug) |
3496 | { |
3497 | pr_inputrec(debug, 0, "inputrec", ir, FALSE0); |
3498 | } |
3499 | if (file_version < 51) |
3500 | { |
3501 | set_box_rel(ir, state); |
3502 | } |
3503 | if (file_version < 53) |
3504 | { |
3505 | ePBC = ir->ePBC; |
3506 | bPeriodicMols = ir->bPeriodicMols; |
3507 | } |
3508 | } |
3509 | if (bRead && ir && file_version >= 53) |
3510 | { |
3511 | /* We need to do this after do_inputrec, since that initializes ir */ |
3512 | ir->ePBC = ePBC; |
3513 | ir->bPeriodicMols = bPeriodicMols; |
3514 | } |
3515 | } |
3516 | } |
3517 | |
3518 | if (bRead) |
3519 | { |
3520 | if (tpx.bIr && ir) |
3521 | { |
3522 | if (state->ngtc == 0) |
3523 | { |
3524 | /* Reading old version without tcoupl state data: set it */ |
3525 | init_gtc_state(state, ir->opts.ngtc, 0, ir->opts.nhchainlength); |
3526 | } |
3527 | if (tpx.bTop && mtop) |
3528 | { |
3529 | if (file_version < 57) |
3530 | { |
3531 | if (mtop->moltype[0].ilist[F_DISRES].nr > 0) |
3532 | { |
3533 | ir->eDisre = edrSimple; |
3534 | } |
3535 | else |
3536 | { |
3537 | ir->eDisre = edrNone; |
3538 | } |
3539 | } |
3540 | set_disres_npair(mtop); |
3541 | } |
3542 | } |
3543 | |
3544 | if (tpx.bTop && mtop) |
3545 | { |
3546 | gmx_mtop_finalize(mtop); |
3547 | } |
3548 | |
3549 | if (file_version >= 57) |
3550 | { |
3551 | char *env; |
3552 | int ienv; |
3553 | env = getenv("GMX_NOCHARGEGROUPS"); |
3554 | if (env != NULL((void*)0)) |
3555 | { |
3556 | sscanf(env, "%d", &ienv); |
3557 | fprintf(stderrstderr, "\nFound env.var. GMX_NOCHARGEGROUPS = %d\n", |
3558 | ienv); |
3559 | if (ienv > 0) |
3560 | { |
3561 | fprintf(stderrstderr, |
3562 | "Will make single atomic charge groups in non-solvent%s\n", |
3563 | ienv > 1 ? " and solvent" : ""); |
3564 | gmx_mtop_make_atomic_charge_groups(mtop, ienv == 1); |
3565 | } |
3566 | fprintf(stderrstderr, "\n"); |
3567 | } |
3568 | } |
3569 | } |
3570 | |
3571 | return ePBC; |
3572 | } |
3573 | |
3574 | /************************************************************ |
3575 | * |
3576 | * The following routines are the exported ones |
3577 | * |
3578 | ************************************************************/ |
3579 | |
3580 | t_fileio *open_tpx(const char *fn, const char *mode) |
3581 | { |
3582 | return gmx_fio_open(fn, mode); |
3583 | } |
3584 | |
3585 | void close_tpx(t_fileio *fio) |
3586 | { |
3587 | gmx_fio_close(fio); |
3588 | } |
3589 | |
3590 | void read_tpxheader(const char *fn, t_tpxheader *tpx, gmx_bool TopOnlyOK, |
3591 | int *file_version, int *file_generation) |
3592 | { |
3593 | t_fileio *fio; |
3594 | |
3595 | fio = open_tpx(fn, "r"); |
3596 | do_tpxheader(fio, TRUE1, tpx, TopOnlyOK, file_version, file_generation); |
3597 | close_tpx(fio); |
3598 | } |
3599 | |
3600 | void write_tpx_state(const char *fn, |
3601 | t_inputrec *ir, t_state *state, gmx_mtop_t *mtop) |
3602 | { |
3603 | t_fileio *fio; |
3604 | |
3605 | fio = open_tpx(fn, "w"); |
3606 | do_tpx(fio, FALSE0, ir, state, NULL((void*)0), mtop, FALSE0); |
3607 | close_tpx(fio); |
3608 | } |
3609 | |
3610 | void read_tpx_state(const char *fn, |
3611 | t_inputrec *ir, t_state *state, rvec *f, gmx_mtop_t *mtop) |
3612 | { |
3613 | t_fileio *fio; |
3614 | |
3615 | fio = open_tpx(fn, "r"); |
3616 | do_tpx(fio, TRUE1, ir, state, f, mtop, FALSE0); |
3617 | close_tpx(fio); |
3618 | } |
3619 | |
3620 | int read_tpx(const char *fn, |
3621 | t_inputrec *ir, matrix box, int *natoms, |
3622 | rvec *x, rvec *v, rvec *f, gmx_mtop_t *mtop) |
3623 | { |
3624 | t_fileio *fio; |
3625 | t_state state; |
3626 | int ePBC; |
3627 | |
3628 | state.x = x; |
3629 | state.v = v; |
3630 | fio = open_tpx(fn, "r"); |
3631 | ePBC = do_tpx(fio, TRUE1, ir, &state, f, mtop, TRUE1); |
3632 | close_tpx(fio); |
3633 | *natoms = state.natoms; |
3634 | if (box) |
3635 | { |
3636 | copy_mat(state.box, box); |
3637 | } |
3638 | state.x = NULL((void*)0); |
3639 | state.v = NULL((void*)0); |
3640 | done_state(&state); |
3641 | |
3642 | return ePBC; |
3643 | } |
3644 | |
3645 | int read_tpx_top(const char *fn, |
3646 | t_inputrec *ir, matrix box, int *natoms, |
3647 | rvec *x, rvec *v, rvec *f, t_topology *top) |
3648 | { |
3649 | gmx_mtop_t mtop; |
3650 | t_topology *ltop; |
3651 | int ePBC; |
3652 | |
3653 | ePBC = read_tpx(fn, ir, box, natoms, x, v, f, &mtop); |
3654 | |
3655 | *top = gmx_mtop_t_to_t_topology(&mtop); |
3656 | |
3657 | return ePBC; |
3658 | } |
3659 | |
3660 | gmx_bool fn2bTPX(const char *file) |
3661 | { |
3662 | switch (fn2ftp(file)) |
3663 | { |
3664 | case efTPR: |
3665 | case efTPB: |
3666 | case efTPA: |
3667 | return TRUE1; |
3668 | default: |
3669 | return FALSE0; |
3670 | } |
3671 | } |
3672 | |
3673 | static void done_gmx_groups_t(gmx_groups_t *g) |
3674 | { |
3675 | int i; |
3676 | |
3677 | for (i = 0; (i < egcNR); i++) |
3678 | { |
3679 | if (NULL((void*)0) != g->grps[i].nm_ind) |
3680 | { |
3681 | sfree(g->grps[i].nm_ind)save_free("g->grps[i].nm_ind", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3681, (g->grps[i].nm_ind)); |
3682 | g->grps[i].nm_ind = NULL((void*)0); |
3683 | } |
3684 | if (NULL((void*)0) != g->grpnr[i]) |
3685 | { |
3686 | sfree(g->grpnr[i])save_free("g->grpnr[i]", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3686, (g->grpnr[i])); |
3687 | g->grpnr[i] = NULL((void*)0); |
3688 | } |
3689 | } |
3690 | /* The contents of this array is in symtab, don't free it here */ |
3691 | sfree(g->grpname)save_free("g->grpname", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3691, (g->grpname)); |
3692 | } |
3693 | |
3694 | gmx_bool read_tps_conf(const char *infile, char *title, t_topology *top, int *ePBC, |
3695 | rvec **x, rvec **v, matrix box, gmx_bool bMass) |
3696 | { |
3697 | t_tpxheader header; |
3698 | int natoms, i, version, generation; |
3699 | gmx_bool bTop, bXNULL = FALSE0; |
3700 | gmx_mtop_t *mtop; |
3701 | t_topology *topconv; |
3702 | gmx_atomprop_t aps; |
3703 | |
3704 | bTop = fn2bTPX(infile); |
3705 | *ePBC = -1; |
3706 | if (bTop) |
3707 | { |
3708 | read_tpxheader(infile, &header, TRUE1, &version, &generation); |
3709 | if (x) |
3710 | { |
3711 | snew(*x, header.natoms)(*x) = save_calloc("*x", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3711, (header.natoms), sizeof(*(*x))); |
3712 | } |
3713 | if (v) |
3714 | { |
3715 | snew(*v, header.natoms)(*v) = save_calloc("*v", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3715, (header.natoms), sizeof(*(*v))); |
3716 | } |
3717 | snew(mtop, 1)(mtop) = save_calloc("mtop", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3717, (1), sizeof(*(mtop))); |
3718 | *ePBC = read_tpx(infile, NULL((void*)0), box, &natoms, |
3719 | (x == NULL((void*)0)) ? NULL((void*)0) : *x, (v == NULL((void*)0)) ? NULL((void*)0) : *v, NULL((void*)0), mtop); |
3720 | *top = gmx_mtop_t_to_t_topology(mtop); |
3721 | /* In this case we need to throw away the group data too */ |
3722 | done_gmx_groups_t(&mtop->groups); |
3723 | sfree(mtop)save_free("mtop", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3723, (mtop)); |
3724 | strcpy(title, *top->name); |
3725 | tpx_make_chain_identifiers(&top->atoms, &top->mols); |
3726 | } |
3727 | else |
3728 | { |
3729 | get_stx_coordnum(infile, &natoms); |
3730 | init_t_atoms(&top->atoms, natoms, (fn2ftp(infile) == efPDB)); |
3731 | if (x == NULL((void*)0)) |
3732 | { |
3733 | snew(x, 1)(x) = save_calloc("x", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3733, (1), sizeof(*(x))); |
3734 | bXNULL = TRUE1; |
3735 | } |
3736 | snew(*x, natoms)(*x) = save_calloc("*x", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3736, (natoms), sizeof(*(*x))); |
3737 | if (v) |
3738 | { |
3739 | snew(*v, natoms)(*v) = save_calloc("*v", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3739, (natoms), sizeof(*(*v))); |
3740 | } |
3741 | read_stx_conf(infile, title, &top->atoms, *x, (v == NULL((void*)0)) ? NULL((void*)0) : *v, ePBC, box); |
3742 | if (bXNULL) |
3743 | { |
3744 | sfree(*x)save_free("*x", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3744, (*x)); |
3745 | sfree(x)save_free("x", "/home/alexxy/Develop/gromacs/src/gromacs/fileio/tpxio.c" , 3745, (x)); |
3746 | } |
3747 | if (bMass) |
3748 | { |
3749 | aps = gmx_atomprop_init(); |
3750 | for (i = 0; (i < natoms); i++) |
3751 | { |
3752 | if (!gmx_atomprop_query(aps, epropMass, |
3753 | *top->atoms.resinfo[top->atoms.atom[i].resind].name, |
3754 | *top->atoms.atomname[i], |
3755 | &(top->atoms.atom[i].m))) |
3756 | { |
3757 | if (debug) |
3758 | { |
3759 | fprintf(debug, "Can not find mass for atom %s %d %s, setting to 1\n", |
3760 | *top->atoms.resinfo[top->atoms.atom[i].resind].name, |
3761 | top->atoms.resinfo[top->atoms.atom[i].resind].nr, |
3762 | *top->atoms.atomname[i]); |
3763 | } |
3764 | } |
3765 | } |
3766 | gmx_atomprop_destroy(aps); |
3767 | } |
3768 | top->idef.ntypes = -1; |
3769 | } |
3770 | |
3771 | return bTop; |
3772 | } |