File: | gromacs/gmxlib/mvdata.c |
Location: | line 99, column 9 |
Description: | Value stored to 'NM' 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 | /* This file is completely threadsafe - keep it that way! */ |
38 | #ifdef HAVE_CONFIG_H1 |
39 | #include <config.h> |
40 | #endif |
41 | |
42 | #include <string.h> |
43 | |
44 | #include "typedefs.h" |
45 | #include "main.h" |
46 | #include "mvdata.h" |
47 | #include "types/commrec.h" |
48 | #include "network.h" |
49 | #include "gromacs/utility/smalloc.h" |
50 | #include "gromacs/utility/fatalerror.h" |
51 | #include "symtab.h" |
52 | #include "gromacs/math/vec.h" |
53 | #include "tgroup.h" |
54 | |
55 | #define block_bc(cr, d)gmx_bcast( sizeof(d), &(d), (cr)) gmx_bcast( sizeof(d), &(d), (cr)) |
56 | /* Probably the test for (nr) > 0 in the next macro is only needed |
57 | * on BlueGene(/L), where IBM's MPI_Bcast will segfault after |
58 | * dereferencing a null pointer, even when no data is to be transferred. */ |
59 | #define nblock_bc(cr, nr, d){ if ((nr) > 0) {gmx_bcast((nr)*sizeof((d)[0]), (d), (cr)) ; }} { if ((nr) > 0) {gmx_bcast((nr)*sizeof((d)[0]), (d), (cr)); }} |
60 | #define snew_bc(cr, d, nr){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((d)) = save_calloc("(d)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 60, ((nr)), sizeof(*((d)))); }} { if (!MASTER(cr)(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {snew((d), (nr))((d)) = save_calloc("(d)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 60, ((nr)), sizeof(*((d)))); }} |
61 | /* Dirty macro with bAlloc not as an argument */ |
62 | #define nblock_abc(cr, nr, d){ if (bAlloc) {((d)) = save_calloc("(d)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 62, ((nr)), sizeof(*((d)))); } { if (((nr)) > 0) {gmx_bcast (((nr))*sizeof(((d))[0]), ((d)), (cr)); }}; } { if (bAlloc) {snew((d), (nr))((d)) = save_calloc("(d)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 62, ((nr)), sizeof(*((d)))); } nblock_bc(cr, (nr), (d)){ if (((nr)) > 0) {gmx_bcast(((nr))*sizeof(((d))[0]), ((d) ), (cr)); }}; } |
63 | |
64 | static void bc_string(const t_commrec *cr, t_symtab *symtab, char ***s) |
65 | { |
66 | int handle; |
67 | |
68 | if (MASTER(cr)(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) |
69 | { |
70 | handle = lookup_symtab(symtab, *s); |
71 | } |
72 | block_bc(cr, handle)gmx_bcast( sizeof(handle), &(handle), (cr)); |
73 | if (!MASTER(cr)(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) |
74 | { |
75 | *s = get_symtab_handle(symtab, handle); |
76 | } |
77 | } |
78 | |
79 | static void bc_strings(const t_commrec *cr, t_symtab *symtab, int nr, char ****nm) |
80 | { |
81 | int i; |
82 | int *handle; |
83 | char ***NM; |
84 | |
85 | snew(handle, nr)(handle) = save_calloc("handle", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 85, (nr), sizeof(*(handle))); |
86 | if (MASTER(cr)(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) |
87 | { |
88 | NM = *nm; |
89 | for (i = 0; (i < nr); i++) |
90 | { |
91 | handle[i] = lookup_symtab(symtab, NM[i]); |
92 | } |
93 | } |
94 | nblock_bc(cr, nr, handle){ if ((nr) > 0) {gmx_bcast((nr)*sizeof((handle)[0]), (handle ), (cr)); }}; |
95 | |
96 | if (!MASTER(cr)(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) |
97 | { |
98 | snew_bc(cr, *nm, nr){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((*nm)) = save_calloc("(*nm)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 98, ((nr)), sizeof(*((*nm)))); }}; |
99 | NM = *nm; |
Value stored to 'NM' is never read | |
100 | for (i = 0; (i < nr); i++) |
101 | { |
102 | (*nm)[i] = get_symtab_handle(symtab, handle[i]); |
103 | } |
104 | } |
105 | sfree(handle)save_free("handle", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 105, (handle)); |
106 | } |
107 | |
108 | static void bc_strings_resinfo(const t_commrec *cr, t_symtab *symtab, |
109 | int nr, t_resinfo *resinfo) |
110 | { |
111 | int i; |
112 | int *handle; |
113 | |
114 | snew(handle, nr)(handle) = save_calloc("handle", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 114, (nr), sizeof(*(handle))); |
115 | if (MASTER(cr)(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) |
116 | { |
117 | for (i = 0; (i < nr); i++) |
118 | { |
119 | handle[i] = lookup_symtab(symtab, resinfo[i].name); |
120 | } |
121 | } |
122 | nblock_bc(cr, nr, handle){ if ((nr) > 0) {gmx_bcast((nr)*sizeof((handle)[0]), (handle ), (cr)); }}; |
123 | |
124 | if (!MASTER(cr)(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) |
125 | { |
126 | for (i = 0; (i < nr); i++) |
127 | { |
128 | resinfo[i].name = get_symtab_handle(symtab, handle[i]); |
129 | } |
130 | } |
131 | sfree(handle)save_free("handle", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 131, (handle)); |
132 | } |
133 | |
134 | static void bc_symtab(const t_commrec *cr, t_symtab *symtab) |
135 | { |
136 | int i, nr, len; |
137 | t_symbuf *symbuf; |
138 | |
139 | block_bc(cr, symtab->nr)gmx_bcast( sizeof(symtab->nr), &(symtab->nr), (cr)); |
140 | nr = symtab->nr; |
141 | snew_bc(cr, symtab->symbuf, 1){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((symtab->symbuf)) = save_calloc("(symtab->symbuf)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 141, ((1)), sizeof(*((symtab->symbuf)))); }}; |
142 | symbuf = symtab->symbuf; |
143 | symbuf->bufsize = nr; |
144 | snew_bc(cr, symbuf->buf, nr){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((symbuf->buf)) = save_calloc("(symbuf->buf)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 144, ((nr)), sizeof(*((symbuf->buf)))); }}; |
145 | for (i = 0; i < nr; i++) |
146 | { |
147 | if (MASTER(cr)(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) |
148 | { |
149 | len = strlen(symbuf->buf[i]) + 1; |
150 | } |
151 | block_bc(cr, len)gmx_bcast( sizeof(len), &(len), (cr)); |
152 | snew_bc(cr, symbuf->buf[i], len){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((symbuf->buf[i])) = save_calloc("(symbuf->buf[i])", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 152, ((len)), sizeof(*((symbuf->buf[i])))); }}; |
153 | nblock_bc(cr, len, symbuf->buf[i]){ if ((len) > 0) {gmx_bcast((len)*sizeof((symbuf->buf[i ])[0]), (symbuf->buf[i]), (cr)); }}; |
154 | } |
155 | } |
156 | |
157 | static void bc_block(const t_commrec *cr, t_block *block) |
158 | { |
159 | block_bc(cr, block->nr)gmx_bcast( sizeof(block->nr), &(block->nr), (cr)); |
160 | snew_bc(cr, block->index, block->nr+1){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((block->index)) = save_calloc("(block->index)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 160, ((block->nr+1)), sizeof(*((block->index)))); }}; |
161 | nblock_bc(cr, block->nr+1, block->index){ if ((block->nr+1) > 0) {gmx_bcast((block->nr+1)*sizeof ((block->index)[0]), (block->index), (cr)); }}; |
162 | } |
163 | |
164 | static void bc_blocka(const t_commrec *cr, t_blocka *block) |
165 | { |
166 | block_bc(cr, block->nr)gmx_bcast( sizeof(block->nr), &(block->nr), (cr)); |
167 | snew_bc(cr, block->index, block->nr+1){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((block->index)) = save_calloc("(block->index)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 167, ((block->nr+1)), sizeof(*((block->index)))); }}; |
168 | nblock_bc(cr, block->nr+1, block->index){ if ((block->nr+1) > 0) {gmx_bcast((block->nr+1)*sizeof ((block->index)[0]), (block->index), (cr)); }}; |
169 | block_bc(cr, block->nra)gmx_bcast( sizeof(block->nra), &(block->nra), (cr)); |
170 | if (block->nra) |
171 | { |
172 | snew_bc(cr, block->a, block->nra){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((block->a)) = save_calloc("(block->a)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 172, ((block->nra)), sizeof(*((block->a)))); }}; |
173 | nblock_bc(cr, block->nra, block->a){ if ((block->nra) > 0) {gmx_bcast((block->nra)*sizeof ((block->a)[0]), (block->a), (cr)); }}; |
174 | } |
175 | } |
176 | |
177 | static void bc_grps(const t_commrec *cr, t_grps grps[]) |
178 | { |
179 | int i; |
180 | |
181 | for (i = 0; (i < egcNR); i++) |
182 | { |
183 | block_bc(cr, grps[i].nr)gmx_bcast( sizeof(grps[i].nr), &(grps[i].nr), (cr)); |
184 | snew_bc(cr, grps[i].nm_ind, grps[i].nr){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((grps[i].nm_ind)) = save_calloc("(grps[i].nm_ind)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 184, ((grps[i].nr)), sizeof(*((grps[i].nm_ind)))); }}; |
185 | nblock_bc(cr, grps[i].nr, grps[i].nm_ind){ if ((grps[i].nr) > 0) {gmx_bcast((grps[i].nr)*sizeof((grps [i].nm_ind)[0]), (grps[i].nm_ind), (cr)); }}; |
186 | } |
187 | } |
188 | |
189 | static void bc_atoms(const t_commrec *cr, t_symtab *symtab, t_atoms *atoms) |
190 | { |
191 | int dummy; |
192 | |
193 | block_bc(cr, atoms->nr)gmx_bcast( sizeof(atoms->nr), &(atoms->nr), (cr)); |
194 | snew_bc(cr, atoms->atom, atoms->nr){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((atoms->atom)) = save_calloc("(atoms->atom)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 194, ((atoms->nr)), sizeof(*((atoms->atom)))); }}; |
195 | nblock_bc(cr, atoms->nr, atoms->atom){ if ((atoms->nr) > 0) {gmx_bcast((atoms->nr)*sizeof ((atoms->atom)[0]), (atoms->atom), (cr)); }}; |
196 | bc_strings(cr, symtab, atoms->nr, &atoms->atomname); |
197 | block_bc(cr, atoms->nres)gmx_bcast( sizeof(atoms->nres), &(atoms->nres), (cr )); |
198 | snew_bc(cr, atoms->resinfo, atoms->nres){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((atoms->resinfo)) = save_calloc("(atoms->resinfo)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 198, ((atoms->nres)), sizeof(*((atoms->resinfo)))); } }; |
199 | nblock_bc(cr, atoms->nres, atoms->resinfo){ if ((atoms->nres) > 0) {gmx_bcast((atoms->nres)*sizeof ((atoms->resinfo)[0]), (atoms->resinfo), (cr)); }}; |
200 | bc_strings_resinfo(cr, symtab, atoms->nres, atoms->resinfo); |
201 | /* QMMM requires atomtypes to be known on all nodes as well */ |
202 | bc_strings(cr, symtab, atoms->nr, &atoms->atomtype); |
203 | bc_strings(cr, symtab, atoms->nr, &atoms->atomtypeB); |
204 | } |
205 | |
206 | static void bc_groups(const t_commrec *cr, t_symtab *symtab, |
207 | int natoms, gmx_groups_t *groups) |
208 | { |
209 | int dummy; |
210 | int g, n; |
211 | |
212 | bc_grps(cr, groups->grps); |
213 | block_bc(cr, groups->ngrpname)gmx_bcast( sizeof(groups->ngrpname), &(groups->ngrpname ), (cr)); |
214 | bc_strings(cr, symtab, groups->ngrpname, &groups->grpname); |
215 | for (g = 0; g < egcNR; g++) |
216 | { |
217 | if (MASTER(cr)(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) |
218 | { |
219 | if (groups->grpnr[g]) |
220 | { |
221 | n = natoms; |
222 | } |
223 | else |
224 | { |
225 | n = 0; |
226 | } |
227 | } |
228 | block_bc(cr, n)gmx_bcast( sizeof(n), &(n), (cr)); |
229 | if (n == 0) |
230 | { |
231 | groups->grpnr[g] = NULL((void*)0); |
232 | } |
233 | else |
234 | { |
235 | snew_bc(cr, groups->grpnr[g], n){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((groups->grpnr[g])) = save_calloc("(groups->grpnr[g])" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 235, ((n)), sizeof(*((groups->grpnr[g])))); }}; |
236 | nblock_bc(cr, n, groups->grpnr[g]){ if ((n) > 0) {gmx_bcast((n)*sizeof((groups->grpnr[g]) [0]), (groups->grpnr[g]), (cr)); }}; |
237 | } |
238 | } |
239 | if (debug) |
240 | { |
241 | fprintf(debug, "after bc_groups\n"); |
242 | } |
243 | } |
244 | |
245 | void bcast_state(const t_commrec *cr, t_state *state) |
246 | { |
247 | int i, nnht, nnhtp; |
248 | gmx_bool bAlloc; |
249 | |
250 | if (!PAR(cr)((cr)->nnodes > 1)) |
251 | { |
252 | return; |
253 | } |
254 | |
255 | /* Broadcasts the state sizes and flags from the master to all nodes |
256 | * in cr->mpi_comm_mygroup. The arrays are not broadcasted. */ |
257 | block_bc(cr, state->natoms)gmx_bcast( sizeof(state->natoms), &(state->natoms), (cr)); |
258 | block_bc(cr, state->ngtc)gmx_bcast( sizeof(state->ngtc), &(state->ngtc), (cr )); |
259 | block_bc(cr, state->nnhpres)gmx_bcast( sizeof(state->nnhpres), &(state->nnhpres ), (cr)); |
260 | block_bc(cr, state->nhchainlength)gmx_bcast( sizeof(state->nhchainlength), &(state->nhchainlength ), (cr)); |
261 | block_bc(cr, state->flags)gmx_bcast( sizeof(state->flags), &(state->flags), ( cr)); |
262 | if (state->lambda == NULL((void*)0)) |
263 | { |
264 | snew_bc(cr, state->lambda, efptNR){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((state->lambda)) = save_calloc("(state->lambda)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 264, ((efptNR)), sizeof(*((state->lambda)))); }} |
265 | } |
266 | |
267 | if (cr->dd) |
268 | { |
269 | /* We allocate dynamically in dd_partition_system. */ |
270 | return; |
271 | } |
272 | /* The code below is reachable only by TPI and NM, so it is not |
273 | tested by anything. */ |
274 | |
275 | nnht = (state->ngtc)*(state->nhchainlength); |
276 | nnhtp = (state->nnhpres)*(state->nhchainlength); |
277 | |
278 | /* We still need to allocate the arrays in state for non-master |
279 | * ranks, which is done (implicitly via bAlloc) in the dirty, |
280 | * dirty nblock_abc macro. */ |
281 | bAlloc = !MASTER(cr)(((cr)->nodeid == 0) || !((cr)->nnodes > 1)); |
282 | if (bAlloc) |
283 | { |
284 | state->nalloc = state->natoms; |
285 | } |
286 | for (i = 0; i < estNR; i++) |
287 | { |
288 | if (state->flags & (1<<i)) |
289 | { |
290 | switch (i) |
291 | { |
292 | case estLAMBDA: nblock_bc(cr, efptNR, state->lambda){ if ((efptNR) > 0) {gmx_bcast((efptNR)*sizeof((state-> lambda)[0]), (state->lambda), (cr)); }}; break; |
293 | case estFEPSTATE: block_bc(cr, state->fep_state)gmx_bcast( sizeof(state->fep_state), &(state->fep_state ), (cr)); break; |
294 | case estBOX: block_bc(cr, state->box)gmx_bcast( sizeof(state->box), &(state->box), (cr)); break; |
295 | case estBOX_REL: block_bc(cr, state->box_rel)gmx_bcast( sizeof(state->box_rel), &(state->box_rel ), (cr)); break; |
296 | case estBOXV: block_bc(cr, state->boxv)gmx_bcast( sizeof(state->boxv), &(state->boxv), (cr )); break; |
297 | case estPRES_PREV: block_bc(cr, state->pres_prev)gmx_bcast( sizeof(state->pres_prev), &(state->pres_prev ), (cr)); break; |
298 | case estSVIR_PREV: block_bc(cr, state->svir_prev)gmx_bcast( sizeof(state->svir_prev), &(state->svir_prev ), (cr)); break; |
299 | case estFVIR_PREV: block_bc(cr, state->fvir_prev)gmx_bcast( sizeof(state->fvir_prev), &(state->fvir_prev ), (cr)); break; |
300 | case estNH_XI: nblock_abc(cr, nnht, state->nosehoover_xi){ if (bAlloc) {((state->nosehoover_xi)) = save_calloc("(state->nosehoover_xi)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 300, ((nnht)), sizeof(*((state->nosehoover_xi)))); } { if (((nnht)) > 0) {gmx_bcast(((nnht))*sizeof(((state->nosehoover_xi ))[0]), ((state->nosehoover_xi)), (cr)); }}; }; break; |
301 | case estNH_VXI: nblock_abc(cr, nnht, state->nosehoover_vxi){ if (bAlloc) {((state->nosehoover_vxi)) = save_calloc("(state->nosehoover_vxi)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 301, ((nnht)), sizeof(*((state->nosehoover_vxi)))); } { if (((nnht)) > 0) {gmx_bcast(((nnht))*sizeof(((state->nosehoover_vxi ))[0]), ((state->nosehoover_vxi)), (cr)); }}; }; break; |
302 | case estNHPRES_XI: nblock_abc(cr, nnhtp, state->nhpres_xi){ if (bAlloc) {((state->nhpres_xi)) = save_calloc("(state->nhpres_xi)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 302, ((nnhtp)), sizeof(*((state->nhpres_xi)))); } { if (( (nnhtp)) > 0) {gmx_bcast(((nnhtp))*sizeof(((state->nhpres_xi ))[0]), ((state->nhpres_xi)), (cr)); }}; }; break; |
303 | case estNHPRES_VXI: nblock_abc(cr, nnhtp, state->nhpres_vxi){ if (bAlloc) {((state->nhpres_vxi)) = save_calloc("(state->nhpres_vxi)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 303, ((nnhtp)), sizeof(*((state->nhpres_vxi)))); } { if ( ((nnhtp)) > 0) {gmx_bcast(((nnhtp))*sizeof(((state->nhpres_vxi ))[0]), ((state->nhpres_vxi)), (cr)); }}; }; break; |
304 | case estTC_INT: nblock_abc(cr, state->ngtc, state->therm_integral){ if (bAlloc) {((state->therm_integral)) = save_calloc("(state->therm_integral)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 304, ((state->ngtc)), sizeof(*((state->therm_integral) ))); } { if (((state->ngtc)) > 0) {gmx_bcast(((state-> ngtc))*sizeof(((state->therm_integral))[0]), ((state->therm_integral )), (cr)); }}; }; break; |
305 | case estVETA: block_bc(cr, state->veta)gmx_bcast( sizeof(state->veta), &(state->veta), (cr )); break; |
306 | case estVOL0: block_bc(cr, state->vol0)gmx_bcast( sizeof(state->vol0), &(state->vol0), (cr )); break; |
307 | case estX: nblock_abc(cr, state->natoms, state->x){ if (bAlloc) {((state->x)) = save_calloc("(state->x)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 307 , ((state->natoms)), sizeof(*((state->x)))); } { if ((( state->natoms)) > 0) {gmx_bcast(((state->natoms))*sizeof (((state->x))[0]), ((state->x)), (cr)); }}; }; break; |
308 | case estV: nblock_abc(cr, state->natoms, state->v){ if (bAlloc) {((state->v)) = save_calloc("(state->v)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 308 , ((state->natoms)), sizeof(*((state->v)))); } { if ((( state->natoms)) > 0) {gmx_bcast(((state->natoms))*sizeof (((state->v))[0]), ((state->v)), (cr)); }}; }; break; |
309 | case estSDX: nblock_abc(cr, state->natoms, state->sd_X){ if (bAlloc) {((state->sd_X)) = save_calloc("(state->sd_X)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 309, ((state->natoms)), sizeof(*((state->sd_X)))); } { if (((state->natoms)) > 0) {gmx_bcast(((state->natoms ))*sizeof(((state->sd_X))[0]), ((state->sd_X)), (cr)); } }; }; break; |
310 | case estCGP: nblock_abc(cr, state->natoms, state->cg_p){ if (bAlloc) {((state->cg_p)) = save_calloc("(state->cg_p)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 310, ((state->natoms)), sizeof(*((state->cg_p)))); } { if (((state->natoms)) > 0) {gmx_bcast(((state->natoms ))*sizeof(((state->cg_p))[0]), ((state->cg_p)), (cr)); } }; }; break; |
311 | case estDISRE_INITF: block_bc(cr, state->hist.disre_initf)gmx_bcast( sizeof(state->hist.disre_initf), &(state-> hist.disre_initf), (cr)); break; |
312 | case estDISRE_RM3TAV: |
313 | block_bc(cr, state->hist.ndisrepairs)gmx_bcast( sizeof(state->hist.ndisrepairs), &(state-> hist.ndisrepairs), (cr)); |
314 | nblock_abc(cr, state->hist.ndisrepairs, state->hist.disre_rm3tav){ if (bAlloc) {((state->hist.disre_rm3tav)) = save_calloc( "(state->hist.disre_rm3tav)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 314, ((state->hist.ndisrepairs)), sizeof(*((state->hist .disre_rm3tav)))); } { if (((state->hist.ndisrepairs)) > 0) {gmx_bcast(((state->hist.ndisrepairs))*sizeof(((state-> hist.disre_rm3tav))[0]), ((state->hist.disre_rm3tav)), (cr )); }}; }; |
315 | break; |
316 | case estORIRE_INITF: block_bc(cr, state->hist.orire_initf)gmx_bcast( sizeof(state->hist.orire_initf), &(state-> hist.orire_initf), (cr)); break; |
317 | case estORIRE_DTAV: |
318 | block_bc(cr, state->hist.norire_Dtav)gmx_bcast( sizeof(state->hist.norire_Dtav), &(state-> hist.norire_Dtav), (cr)); |
319 | nblock_abc(cr, state->hist.norire_Dtav, state->hist.orire_Dtav){ if (bAlloc) {((state->hist.orire_Dtav)) = save_calloc("(state->hist.orire_Dtav)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 319, ((state->hist.norire_Dtav)), sizeof(*((state->hist .orire_Dtav)))); } { if (((state->hist.norire_Dtav)) > 0 ) {gmx_bcast(((state->hist.norire_Dtav))*sizeof(((state-> hist.orire_Dtav))[0]), ((state->hist.orire_Dtav)), (cr)); } }; }; |
320 | break; |
321 | default: |
322 | gmx_fatal(FARGS0, "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 322, |
323 | "Communication is not implemented for %s in bcast_state", |
324 | est_names[i]); |
325 | } |
326 | } |
327 | } |
328 | } |
329 | |
330 | static void bc_ilists(const t_commrec *cr, t_ilist *ilist) |
331 | { |
332 | int ftype; |
333 | |
334 | /* Here we only communicate the non-zero length ilists */ |
335 | if (MASTER(cr)(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) |
336 | { |
337 | for (ftype = 0; ftype < F_NRE; ftype++) |
338 | { |
339 | if (ilist[ftype].nr > 0) |
340 | { |
341 | block_bc(cr, ftype)gmx_bcast( sizeof(ftype), &(ftype), (cr)); |
342 | block_bc(cr, ilist[ftype].nr)gmx_bcast( sizeof(ilist[ftype].nr), &(ilist[ftype].nr), ( cr)); |
343 | nblock_bc(cr, ilist[ftype].nr, ilist[ftype].iatoms){ if ((ilist[ftype].nr) > 0) {gmx_bcast((ilist[ftype].nr)* sizeof((ilist[ftype].iatoms)[0]), (ilist[ftype].iatoms), (cr) ); }}; |
344 | } |
345 | } |
346 | ftype = -1; |
347 | block_bc(cr, ftype)gmx_bcast( sizeof(ftype), &(ftype), (cr)); |
348 | } |
349 | else |
350 | { |
351 | for (ftype = 0; ftype < F_NRE; ftype++) |
352 | { |
353 | ilist[ftype].nr = 0; |
354 | } |
355 | do |
356 | { |
357 | block_bc(cr, ftype)gmx_bcast( sizeof(ftype), &(ftype), (cr)); |
358 | if (ftype >= 0) |
359 | { |
360 | block_bc(cr, ilist[ftype].nr)gmx_bcast( sizeof(ilist[ftype].nr), &(ilist[ftype].nr), ( cr)); |
361 | snew_bc(cr, ilist[ftype].iatoms, ilist[ftype].nr){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((ilist[ftype].iatoms)) = save_calloc("(ilist[ftype].iatoms)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 361, ((ilist[ftype].nr)), sizeof(*((ilist[ftype].iatoms)))); }}; |
362 | nblock_bc(cr, ilist[ftype].nr, ilist[ftype].iatoms){ if ((ilist[ftype].nr) > 0) {gmx_bcast((ilist[ftype].nr)* sizeof((ilist[ftype].iatoms)[0]), (ilist[ftype].iatoms), (cr) ); }}; |
363 | } |
364 | } |
365 | while (ftype >= 0); |
366 | } |
367 | |
368 | if (debug) |
369 | { |
370 | fprintf(debug, "after bc_ilists\n"); |
371 | } |
372 | } |
373 | |
374 | static void bc_cmap(const t_commrec *cr, gmx_cmap_t *cmap_grid) |
375 | { |
376 | int i, j, nelem, ngrid; |
377 | |
378 | block_bc(cr, cmap_grid->ngrid)gmx_bcast( sizeof(cmap_grid->ngrid), &(cmap_grid->ngrid ), (cr)); |
379 | block_bc(cr, cmap_grid->grid_spacing)gmx_bcast( sizeof(cmap_grid->grid_spacing), &(cmap_grid ->grid_spacing), (cr)); |
380 | |
381 | ngrid = cmap_grid->ngrid; |
382 | nelem = cmap_grid->grid_spacing * cmap_grid->grid_spacing; |
383 | |
384 | if (ngrid > 0) |
385 | { |
386 | snew_bc(cr, cmap_grid->cmapdata, ngrid){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((cmap_grid->cmapdata)) = save_calloc("(cmap_grid->cmapdata)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 386, ((ngrid)), sizeof(*((cmap_grid->cmapdata)))); }}; |
387 | |
388 | for (i = 0; i < ngrid; i++) |
389 | { |
390 | snew_bc(cr, cmap_grid->cmapdata[i].cmap, 4*nelem){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((cmap_grid->cmapdata[i].cmap)) = save_calloc("(cmap_grid->cmapdata[i].cmap)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 390, ((4*nelem)), sizeof(*((cmap_grid->cmapdata[i].cmap)) )); }}; |
391 | nblock_bc(cr, 4*nelem, cmap_grid->cmapdata[i].cmap){ if ((4*nelem) > 0) {gmx_bcast((4*nelem)*sizeof((cmap_grid ->cmapdata[i].cmap)[0]), (cmap_grid->cmapdata[i].cmap), (cr)); }}; |
392 | } |
393 | } |
394 | } |
395 | |
396 | static void bc_ffparams(const t_commrec *cr, gmx_ffparams_t *ffp) |
397 | { |
398 | int i; |
399 | |
400 | block_bc(cr, ffp->ntypes)gmx_bcast( sizeof(ffp->ntypes), &(ffp->ntypes), (cr )); |
401 | block_bc(cr, ffp->atnr)gmx_bcast( sizeof(ffp->atnr), &(ffp->atnr), (cr)); |
402 | snew_bc(cr, ffp->functype, ffp->ntypes){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((ffp->functype)) = save_calloc("(ffp->functype)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 402, ((ffp->ntypes)), sizeof(*((ffp->functype)))); }}; |
403 | snew_bc(cr, ffp->iparams, ffp->ntypes){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((ffp->iparams)) = save_calloc("(ffp->iparams)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 403, ((ffp->ntypes)), sizeof(*((ffp->iparams)))); }}; |
404 | nblock_bc(cr, ffp->ntypes, ffp->functype){ if ((ffp->ntypes) > 0) {gmx_bcast((ffp->ntypes)*sizeof ((ffp->functype)[0]), (ffp->functype), (cr)); }}; |
405 | nblock_bc(cr, ffp->ntypes, ffp->iparams){ if ((ffp->ntypes) > 0) {gmx_bcast((ffp->ntypes)*sizeof ((ffp->iparams)[0]), (ffp->iparams), (cr)); }}; |
406 | block_bc(cr, ffp->reppow)gmx_bcast( sizeof(ffp->reppow), &(ffp->reppow), (cr )); |
407 | block_bc(cr, ffp->fudgeQQ)gmx_bcast( sizeof(ffp->fudgeQQ), &(ffp->fudgeQQ), ( cr)); |
408 | bc_cmap(cr, &ffp->cmap_grid); |
409 | } |
410 | |
411 | static void bc_grpopts(const t_commrec *cr, t_grpopts *g) |
412 | { |
413 | int i, n; |
414 | |
415 | block_bc(cr, g->ngtc)gmx_bcast( sizeof(g->ngtc), &(g->ngtc), (cr)); |
416 | block_bc(cr, g->ngacc)gmx_bcast( sizeof(g->ngacc), &(g->ngacc), (cr)); |
417 | block_bc(cr, g->ngfrz)gmx_bcast( sizeof(g->ngfrz), &(g->ngfrz), (cr)); |
418 | block_bc(cr, g->ngener)gmx_bcast( sizeof(g->ngener), &(g->ngener), (cr)); |
419 | snew_bc(cr, g->nrdf, g->ngtc){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->nrdf)) = save_calloc("(g->nrdf)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 419, ((g->ngtc)), sizeof(*((g->nrdf)))); }}; |
420 | snew_bc(cr, g->tau_t, g->ngtc){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->tau_t)) = save_calloc("(g->tau_t)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 420, ((g->ngtc)), sizeof(*((g->tau_t)))); }}; |
421 | snew_bc(cr, g->ref_t, g->ngtc){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->ref_t)) = save_calloc("(g->ref_t)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 421, ((g->ngtc)), sizeof(*((g->ref_t)))); }}; |
422 | snew_bc(cr, g->acc, g->ngacc){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->acc)) = save_calloc("(g->acc)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 422, ((g->ngacc)), sizeof(*((g->acc)))); }}; |
423 | snew_bc(cr, g->nFreeze, g->ngfrz){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->nFreeze)) = save_calloc("(g->nFreeze)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 423, ((g->ngfrz)), sizeof(*((g->nFreeze)))); }}; |
424 | snew_bc(cr, g->egp_flags, g->ngener*g->ngener){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->egp_flags)) = save_calloc("(g->egp_flags)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 424, ((g->ngener*g->ngener)), sizeof(*((g->egp_flags )))); }}; |
425 | |
426 | nblock_bc(cr, g->ngtc, g->nrdf){ if ((g->ngtc) > 0) {gmx_bcast((g->ngtc)*sizeof((g-> nrdf)[0]), (g->nrdf), (cr)); }}; |
427 | nblock_bc(cr, g->ngtc, g->tau_t){ if ((g->ngtc) > 0) {gmx_bcast((g->ngtc)*sizeof((g-> tau_t)[0]), (g->tau_t), (cr)); }}; |
428 | nblock_bc(cr, g->ngtc, g->ref_t){ if ((g->ngtc) > 0) {gmx_bcast((g->ngtc)*sizeof((g-> ref_t)[0]), (g->ref_t), (cr)); }}; |
429 | nblock_bc(cr, g->ngacc, g->acc){ if ((g->ngacc) > 0) {gmx_bcast((g->ngacc)*sizeof(( g->acc)[0]), (g->acc), (cr)); }}; |
430 | nblock_bc(cr, g->ngfrz, g->nFreeze){ if ((g->ngfrz) > 0) {gmx_bcast((g->ngfrz)*sizeof(( g->nFreeze)[0]), (g->nFreeze), (cr)); }}; |
431 | nblock_bc(cr, g->ngener*g->ngener, g->egp_flags){ if ((g->ngener*g->ngener) > 0) {gmx_bcast((g->ngener *g->ngener)*sizeof((g->egp_flags)[0]), (g->egp_flags ), (cr)); }}; |
432 | snew_bc(cr, g->annealing, g->ngtc){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->annealing)) = save_calloc("(g->annealing)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 432, ((g->ngtc)), sizeof(*((g->annealing)))); }}; |
433 | snew_bc(cr, g->anneal_npoints, g->ngtc){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->anneal_npoints)) = save_calloc("(g->anneal_npoints)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 433, ((g->ngtc)), sizeof(*((g->anneal_npoints)))); }}; |
434 | snew_bc(cr, g->anneal_time, g->ngtc){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->anneal_time)) = save_calloc("(g->anneal_time)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 434, ((g->ngtc)), sizeof(*((g->anneal_time)))); }}; |
435 | snew_bc(cr, g->anneal_temp, g->ngtc){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->anneal_temp)) = save_calloc("(g->anneal_temp)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 435, ((g->ngtc)), sizeof(*((g->anneal_temp)))); }}; |
436 | nblock_bc(cr, g->ngtc, g->annealing){ if ((g->ngtc) > 0) {gmx_bcast((g->ngtc)*sizeof((g-> annealing)[0]), (g->annealing), (cr)); }}; |
437 | nblock_bc(cr, g->ngtc, g->anneal_npoints){ if ((g->ngtc) > 0) {gmx_bcast((g->ngtc)*sizeof((g-> anneal_npoints)[0]), (g->anneal_npoints), (cr)); }}; |
438 | for (i = 0; (i < g->ngtc); i++) |
439 | { |
440 | n = g->anneal_npoints[i]; |
441 | if (n > 0) |
442 | { |
443 | snew_bc(cr, g->anneal_time[i], n){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->anneal_time[i])) = save_calloc("(g->anneal_time[i])" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 443, ((n)), sizeof(*((g->anneal_time[i])))); }}; |
444 | snew_bc(cr, g->anneal_temp[i], n){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->anneal_temp[i])) = save_calloc("(g->anneal_temp[i])" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 444, ((n)), sizeof(*((g->anneal_temp[i])))); }}; |
445 | nblock_bc(cr, n, g->anneal_time[i]){ if ((n) > 0) {gmx_bcast((n)*sizeof((g->anneal_time[i] )[0]), (g->anneal_time[i]), (cr)); }}; |
446 | nblock_bc(cr, n, g->anneal_temp[i]){ if ((n) > 0) {gmx_bcast((n)*sizeof((g->anneal_temp[i] )[0]), (g->anneal_temp[i]), (cr)); }}; |
447 | } |
448 | } |
449 | |
450 | /* QMMM stuff, see inputrec */ |
451 | block_bc(cr, g->ngQM)gmx_bcast( sizeof(g->ngQM), &(g->ngQM), (cr)); |
452 | snew_bc(cr, g->QMmethod, g->ngQM){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->QMmethod)) = save_calloc("(g->QMmethod)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 452, ((g->ngQM)), sizeof(*((g->QMmethod)))); }}; |
453 | snew_bc(cr, g->QMbasis, g->ngQM){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->QMbasis)) = save_calloc("(g->QMbasis)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 453, ((g->ngQM)), sizeof(*((g->QMbasis)))); }}; |
454 | snew_bc(cr, g->QMcharge, g->ngQM){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->QMcharge)) = save_calloc("(g->QMcharge)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 454, ((g->ngQM)), sizeof(*((g->QMcharge)))); }}; |
455 | snew_bc(cr, g->QMmult, g->ngQM){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->QMmult)) = save_calloc("(g->QMmult)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 455, ((g->ngQM)), sizeof(*((g->QMmult)))); }}; |
456 | snew_bc(cr, g->bSH, g->ngQM){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->bSH)) = save_calloc("(g->bSH)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 456, ((g->ngQM)), sizeof(*((g->bSH)))); }}; |
457 | snew_bc(cr, g->CASorbitals, g->ngQM){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->CASorbitals)) = save_calloc("(g->CASorbitals)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 457, ((g->ngQM)), sizeof(*((g->CASorbitals)))); }}; |
458 | snew_bc(cr, g->CASelectrons, g->ngQM){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->CASelectrons)) = save_calloc("(g->CASelectrons)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 458, ((g->ngQM)), sizeof(*((g->CASelectrons)))); }}; |
459 | snew_bc(cr, g->SAon, g->ngQM){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->SAon)) = save_calloc("(g->SAon)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 459, ((g->ngQM)), sizeof(*((g->SAon)))); }}; |
460 | snew_bc(cr, g->SAoff, g->ngQM){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->SAoff)) = save_calloc("(g->SAoff)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 460, ((g->ngQM)), sizeof(*((g->SAoff)))); }}; |
461 | snew_bc(cr, g->SAsteps, g->ngQM){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((g->SAsteps)) = save_calloc("(g->SAsteps)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 461, ((g->ngQM)), sizeof(*((g->SAsteps)))); }}; |
462 | |
463 | if (g->ngQM) |
464 | { |
465 | nblock_bc(cr, g->ngQM, g->QMmethod){ if ((g->ngQM) > 0) {gmx_bcast((g->ngQM)*sizeof((g-> QMmethod)[0]), (g->QMmethod), (cr)); }}; |
466 | nblock_bc(cr, g->ngQM, g->QMbasis){ if ((g->ngQM) > 0) {gmx_bcast((g->ngQM)*sizeof((g-> QMbasis)[0]), (g->QMbasis), (cr)); }}; |
467 | nblock_bc(cr, g->ngQM, g->QMcharge){ if ((g->ngQM) > 0) {gmx_bcast((g->ngQM)*sizeof((g-> QMcharge)[0]), (g->QMcharge), (cr)); }}; |
468 | nblock_bc(cr, g->ngQM, g->QMmult){ if ((g->ngQM) > 0) {gmx_bcast((g->ngQM)*sizeof((g-> QMmult)[0]), (g->QMmult), (cr)); }}; |
469 | nblock_bc(cr, g->ngQM, g->bSH){ if ((g->ngQM) > 0) {gmx_bcast((g->ngQM)*sizeof((g-> bSH)[0]), (g->bSH), (cr)); }}; |
470 | nblock_bc(cr, g->ngQM, g->CASorbitals){ if ((g->ngQM) > 0) {gmx_bcast((g->ngQM)*sizeof((g-> CASorbitals)[0]), (g->CASorbitals), (cr)); }}; |
471 | nblock_bc(cr, g->ngQM, g->CASelectrons){ if ((g->ngQM) > 0) {gmx_bcast((g->ngQM)*sizeof((g-> CASelectrons)[0]), (g->CASelectrons), (cr)); }}; |
472 | nblock_bc(cr, g->ngQM, g->SAon){ if ((g->ngQM) > 0) {gmx_bcast((g->ngQM)*sizeof((g-> SAon)[0]), (g->SAon), (cr)); }}; |
473 | nblock_bc(cr, g->ngQM, g->SAoff){ if ((g->ngQM) > 0) {gmx_bcast((g->ngQM)*sizeof((g-> SAoff)[0]), (g->SAoff), (cr)); }}; |
474 | nblock_bc(cr, g->ngQM, g->SAsteps){ if ((g->ngQM) > 0) {gmx_bcast((g->ngQM)*sizeof((g-> SAsteps)[0]), (g->SAsteps), (cr)); }}; |
475 | /* end of QMMM stuff */ |
476 | } |
477 | } |
478 | |
479 | static void bc_cosines(const t_commrec *cr, t_cosines *cs) |
480 | { |
481 | block_bc(cr, cs->n)gmx_bcast( sizeof(cs->n), &(cs->n), (cr)); |
482 | snew_bc(cr, cs->a, cs->n){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((cs->a)) = save_calloc("(cs->a)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 482, ((cs->n)), sizeof(*((cs->a)))); }}; |
483 | snew_bc(cr, cs->phi, cs->n){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((cs->phi)) = save_calloc("(cs->phi)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 483, ((cs->n)), sizeof(*((cs->phi)))); }}; |
484 | if (cs->n > 0) |
485 | { |
486 | nblock_bc(cr, cs->n, cs->a){ if ((cs->n) > 0) {gmx_bcast((cs->n)*sizeof((cs-> a)[0]), (cs->a), (cr)); }}; |
487 | nblock_bc(cr, cs->n, cs->phi){ if ((cs->n) > 0) {gmx_bcast((cs->n)*sizeof((cs-> phi)[0]), (cs->phi), (cr)); }}; |
488 | } |
489 | } |
490 | |
491 | static void bc_pull_group(const t_commrec *cr, t_pull_group *pgrp) |
492 | { |
493 | block_bc(cr, *pgrp)gmx_bcast( sizeof(*pgrp), &(*pgrp), (cr)); |
494 | if (pgrp->nat > 0) |
495 | { |
496 | snew_bc(cr, pgrp->ind, pgrp->nat){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((pgrp->ind)) = save_calloc("(pgrp->ind)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 496, ((pgrp->nat)), sizeof(*((pgrp->ind)))); }}; |
497 | nblock_bc(cr, pgrp->nat, pgrp->ind){ if ((pgrp->nat) > 0) {gmx_bcast((pgrp->nat)*sizeof ((pgrp->ind)[0]), (pgrp->ind), (cr)); }}; |
498 | } |
499 | if (pgrp->nweight > 0) |
500 | { |
501 | snew_bc(cr, pgrp->weight, pgrp->nweight){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((pgrp->weight)) = save_calloc("(pgrp->weight)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 501, ((pgrp->nweight)), sizeof(*((pgrp->weight)))); } }; |
502 | nblock_bc(cr, pgrp->nweight, pgrp->weight){ if ((pgrp->nweight) > 0) {gmx_bcast((pgrp->nweight )*sizeof((pgrp->weight)[0]), (pgrp->weight), (cr)); }}; |
503 | } |
504 | } |
505 | |
506 | static void bc_pull(const t_commrec *cr, t_pull *pull) |
507 | { |
508 | int g; |
509 | |
510 | block_bc(cr, *pull)gmx_bcast( sizeof(*pull), &(*pull), (cr)); |
511 | snew_bc(cr, pull->group, pull->ngroup){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((pull->group)) = save_calloc("(pull->group)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 511, ((pull->ngroup)), sizeof(*((pull->group)))); }}; |
512 | for (g = 0; g < pull->ngroup; g++) |
513 | { |
514 | bc_pull_group(cr, &pull->group[g]); |
515 | } |
516 | snew_bc(cr, pull->coord, pull->ncoord){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((pull->coord)) = save_calloc("(pull->coord)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 516, ((pull->ncoord)), sizeof(*((pull->coord)))); }}; |
517 | nblock_bc(cr, pull->ncoord, pull->coord){ if ((pull->ncoord) > 0) {gmx_bcast((pull->ncoord)* sizeof((pull->coord)[0]), (pull->coord), (cr)); }}; |
518 | } |
519 | |
520 | static void bc_rotgrp(const t_commrec *cr, t_rotgrp *rotg) |
521 | { |
522 | block_bc(cr, *rotg)gmx_bcast( sizeof(*rotg), &(*rotg), (cr)); |
523 | if (rotg->nat > 0) |
524 | { |
525 | snew_bc(cr, rotg->ind, rotg->nat){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((rotg->ind)) = save_calloc("(rotg->ind)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 525, ((rotg->nat)), sizeof(*((rotg->ind)))); }}; |
526 | nblock_bc(cr, rotg->nat, rotg->ind){ if ((rotg->nat) > 0) {gmx_bcast((rotg->nat)*sizeof ((rotg->ind)[0]), (rotg->ind), (cr)); }}; |
527 | snew_bc(cr, rotg->x_ref, rotg->nat){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((rotg->x_ref)) = save_calloc("(rotg->x_ref)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 527, ((rotg->nat)), sizeof(*((rotg->x_ref)))); }}; |
528 | nblock_bc(cr, rotg->nat, rotg->x_ref){ if ((rotg->nat) > 0) {gmx_bcast((rotg->nat)*sizeof ((rotg->x_ref)[0]), (rotg->x_ref), (cr)); }}; |
529 | } |
530 | } |
531 | |
532 | static void bc_rot(const t_commrec *cr, t_rot *rot) |
533 | { |
534 | int g; |
535 | |
536 | block_bc(cr, *rot)gmx_bcast( sizeof(*rot), &(*rot), (cr)); |
537 | snew_bc(cr, rot->grp, rot->ngrp){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((rot->grp)) = save_calloc("(rot->grp)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 537, ((rot->ngrp)), sizeof(*((rot->grp)))); }}; |
538 | for (g = 0; g < rot->ngrp; g++) |
539 | { |
540 | bc_rotgrp(cr, &rot->grp[g]); |
541 | } |
542 | } |
543 | |
544 | static void bc_adress(const t_commrec *cr, t_adress *adress) |
545 | { |
546 | block_bc(cr, *adress)gmx_bcast( sizeof(*adress), &(*adress), (cr)); |
547 | if (adress->n_tf_grps > 0) |
548 | { |
549 | snew_bc(cr, adress->tf_table_index, adress->n_tf_grps){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((adress->tf_table_index)) = save_calloc("(adress->tf_table_index)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 549, ((adress->n_tf_grps)), sizeof(*((adress->tf_table_index )))); }}; |
550 | nblock_bc(cr, adress->n_tf_grps, adress->tf_table_index){ if ((adress->n_tf_grps) > 0) {gmx_bcast((adress->n_tf_grps )*sizeof((adress->tf_table_index)[0]), (adress->tf_table_index ), (cr)); }}; |
551 | } |
552 | if (adress->n_energy_grps > 0) |
553 | { |
554 | snew_bc(cr, adress->group_explicit, adress->n_energy_grps){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((adress->group_explicit)) = save_calloc("(adress->group_explicit)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 554, ((adress->n_energy_grps)), sizeof(*((adress->group_explicit )))); }}; |
555 | nblock_bc(cr, adress->n_energy_grps, adress->group_explicit){ if ((adress->n_energy_grps) > 0) {gmx_bcast((adress-> n_energy_grps)*sizeof((adress->group_explicit)[0]), (adress ->group_explicit), (cr)); }}; |
556 | } |
557 | } |
558 | |
559 | static void bc_imd(const t_commrec *cr, t_IMD *imd) |
560 | { |
561 | int g; |
562 | |
563 | block_bc(cr, *imd)gmx_bcast( sizeof(*imd), &(*imd), (cr)); |
564 | snew_bc(cr, imd->ind, imd->nat){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((imd->ind)) = save_calloc("(imd->ind)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 564, ((imd->nat)), sizeof(*((imd->ind)))); }}; |
565 | nblock_bc(cr, imd->nat, imd->ind){ if ((imd->nat) > 0) {gmx_bcast((imd->nat)*sizeof(( imd->ind)[0]), (imd->ind), (cr)); }}; |
566 | } |
567 | |
568 | static void bc_fepvals(const t_commrec *cr, t_lambda *fep) |
569 | { |
570 | gmx_bool bAlloc = TRUE1; |
571 | int i; |
572 | |
573 | block_bc(cr, fep->nstdhdl)gmx_bcast( sizeof(fep->nstdhdl), &(fep->nstdhdl), ( cr)); |
574 | block_bc(cr, fep->init_lambda)gmx_bcast( sizeof(fep->init_lambda), &(fep->init_lambda ), (cr)); |
575 | block_bc(cr, fep->init_fep_state)gmx_bcast( sizeof(fep->init_fep_state), &(fep->init_fep_state ), (cr)); |
576 | block_bc(cr, fep->delta_lambda)gmx_bcast( sizeof(fep->delta_lambda), &(fep->delta_lambda ), (cr)); |
577 | block_bc(cr, fep->bPrintEnergy)gmx_bcast( sizeof(fep->bPrintEnergy), &(fep->bPrintEnergy ), (cr)); |
578 | block_bc(cr, fep->n_lambda)gmx_bcast( sizeof(fep->n_lambda), &(fep->n_lambda), (cr)); |
579 | if (fep->n_lambda > 0) |
580 | { |
581 | snew_bc(cr, fep->all_lambda, efptNR){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((fep->all_lambda)) = save_calloc("(fep->all_lambda)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 581, ((efptNR)), sizeof(*((fep->all_lambda)))); }}; |
582 | nblock_bc(cr, efptNR, fep->all_lambda){ if ((efptNR) > 0) {gmx_bcast((efptNR)*sizeof((fep->all_lambda )[0]), (fep->all_lambda), (cr)); }}; |
583 | for (i = 0; i < efptNR; i++) |
584 | { |
585 | snew_bc(cr, fep->all_lambda[i], fep->n_lambda){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((fep->all_lambda[i])) = save_calloc("(fep->all_lambda[i])" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 585, ((fep->n_lambda)), sizeof(*((fep->all_lambda[i])) )); }}; |
586 | nblock_bc(cr, fep->n_lambda, fep->all_lambda[i]){ if ((fep->n_lambda) > 0) {gmx_bcast((fep->n_lambda )*sizeof((fep->all_lambda[i])[0]), (fep->all_lambda[i]) , (cr)); }}; |
587 | } |
588 | } |
589 | block_bc(cr, fep->sc_alpha)gmx_bcast( sizeof(fep->sc_alpha), &(fep->sc_alpha), (cr)); |
590 | block_bc(cr, fep->sc_power)gmx_bcast( sizeof(fep->sc_power), &(fep->sc_power), (cr)); |
591 | block_bc(cr, fep->sc_r_power)gmx_bcast( sizeof(fep->sc_r_power), &(fep->sc_r_power ), (cr)); |
592 | block_bc(cr, fep->sc_sigma)gmx_bcast( sizeof(fep->sc_sigma), &(fep->sc_sigma), (cr)); |
593 | block_bc(cr, fep->sc_sigma_min)gmx_bcast( sizeof(fep->sc_sigma_min), &(fep->sc_sigma_min ), (cr)); |
594 | block_bc(cr, fep->bScCoul)gmx_bcast( sizeof(fep->bScCoul), &(fep->bScCoul), ( cr)); |
595 | nblock_bc(cr, efptNR, &(fep->separate_dvdl[0])){ if ((efptNR) > 0) {gmx_bcast((efptNR)*sizeof((&(fep-> separate_dvdl[0]))[0]), (&(fep->separate_dvdl[0])), (cr )); }}; |
596 | block_bc(cr, fep->dhdl_derivatives)gmx_bcast( sizeof(fep->dhdl_derivatives), &(fep->dhdl_derivatives ), (cr)); |
597 | block_bc(cr, fep->dh_hist_size)gmx_bcast( sizeof(fep->dh_hist_size), &(fep->dh_hist_size ), (cr)); |
598 | block_bc(cr, fep->dh_hist_spacing)gmx_bcast( sizeof(fep->dh_hist_spacing), &(fep->dh_hist_spacing ), (cr)); |
599 | if (debug) |
600 | { |
601 | fprintf(debug, "after bc_fepvals\n"); |
602 | } |
603 | } |
604 | |
605 | static void bc_expandedvals(const t_commrec *cr, t_expanded *expand, int n_lambda) |
606 | { |
607 | gmx_bool bAlloc = TRUE1; |
608 | int i; |
609 | |
610 | block_bc(cr, expand->nstexpanded)gmx_bcast( sizeof(expand->nstexpanded), &(expand->nstexpanded ), (cr)); |
611 | block_bc(cr, expand->elamstats)gmx_bcast( sizeof(expand->elamstats), &(expand->elamstats ), (cr)); |
612 | block_bc(cr, expand->elmcmove)gmx_bcast( sizeof(expand->elmcmove), &(expand->elmcmove ), (cr)); |
613 | block_bc(cr, expand->elmceq)gmx_bcast( sizeof(expand->elmceq), &(expand->elmceq ), (cr)); |
614 | block_bc(cr, expand->equil_n_at_lam)gmx_bcast( sizeof(expand->equil_n_at_lam), &(expand-> equil_n_at_lam), (cr)); |
615 | block_bc(cr, expand->equil_wl_delta)gmx_bcast( sizeof(expand->equil_wl_delta), &(expand-> equil_wl_delta), (cr)); |
616 | block_bc(cr, expand->equil_ratio)gmx_bcast( sizeof(expand->equil_ratio), &(expand->equil_ratio ), (cr)); |
617 | block_bc(cr, expand->equil_steps)gmx_bcast( sizeof(expand->equil_steps), &(expand->equil_steps ), (cr)); |
618 | block_bc(cr, expand->equil_samples)gmx_bcast( sizeof(expand->equil_samples), &(expand-> equil_samples), (cr)); |
619 | block_bc(cr, expand->lmc_seed)gmx_bcast( sizeof(expand->lmc_seed), &(expand->lmc_seed ), (cr)); |
620 | block_bc(cr, expand->minvar)gmx_bcast( sizeof(expand->minvar), &(expand->minvar ), (cr)); |
621 | block_bc(cr, expand->minvar_const)gmx_bcast( sizeof(expand->minvar_const), &(expand-> minvar_const), (cr)); |
622 | block_bc(cr, expand->c_range)gmx_bcast( sizeof(expand->c_range), &(expand->c_range ), (cr)); |
623 | block_bc(cr, expand->bSymmetrizedTMatrix)gmx_bcast( sizeof(expand->bSymmetrizedTMatrix), &(expand ->bSymmetrizedTMatrix), (cr)); |
624 | block_bc(cr, expand->nstTij)gmx_bcast( sizeof(expand->nstTij), &(expand->nstTij ), (cr)); |
625 | block_bc(cr, expand->lmc_repeats)gmx_bcast( sizeof(expand->lmc_repeats), &(expand->lmc_repeats ), (cr)); |
626 | block_bc(cr, expand->lmc_forced_nstart)gmx_bcast( sizeof(expand->lmc_forced_nstart), &(expand ->lmc_forced_nstart), (cr)); |
627 | block_bc(cr, expand->gibbsdeltalam)gmx_bcast( sizeof(expand->gibbsdeltalam), &(expand-> gibbsdeltalam), (cr)); |
628 | block_bc(cr, expand->wl_scale)gmx_bcast( sizeof(expand->wl_scale), &(expand->wl_scale ), (cr)); |
629 | block_bc(cr, expand->wl_ratio)gmx_bcast( sizeof(expand->wl_ratio), &(expand->wl_ratio ), (cr)); |
630 | block_bc(cr, expand->init_wl_delta)gmx_bcast( sizeof(expand->init_wl_delta), &(expand-> init_wl_delta), (cr)); |
631 | block_bc(cr, expand->bInit_weights)gmx_bcast( sizeof(expand->bInit_weights), &(expand-> bInit_weights), (cr)); |
632 | snew_bc(cr, expand->init_lambda_weights, n_lambda){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((expand->init_lambda_weights)) = save_calloc("(expand->init_lambda_weights)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 632, ((n_lambda)), sizeof(*((expand->init_lambda_weights) ))); }}; |
633 | nblock_bc(cr, n_lambda, expand->init_lambda_weights){ if ((n_lambda) > 0) {gmx_bcast((n_lambda)*sizeof((expand ->init_lambda_weights)[0]), (expand->init_lambda_weights ), (cr)); }}; |
634 | block_bc(cr, expand->mc_temp)gmx_bcast( sizeof(expand->mc_temp), &(expand->mc_temp ), (cr)); |
635 | if (debug) |
636 | { |
637 | fprintf(debug, "after bc_expandedvals\n"); |
638 | } |
639 | } |
640 | |
641 | static void bc_simtempvals(const t_commrec *cr, t_simtemp *simtemp, int n_lambda) |
642 | { |
643 | gmx_bool bAlloc = TRUE1; |
644 | int i; |
645 | |
646 | block_bc(cr, simtemp->simtemp_low)gmx_bcast( sizeof(simtemp->simtemp_low), &(simtemp-> simtemp_low), (cr)); |
647 | block_bc(cr, simtemp->simtemp_high)gmx_bcast( sizeof(simtemp->simtemp_high), &(simtemp-> simtemp_high), (cr)); |
648 | block_bc(cr, simtemp->eSimTempScale)gmx_bcast( sizeof(simtemp->eSimTempScale), &(simtemp-> eSimTempScale), (cr)); |
649 | snew_bc(cr, simtemp->temperatures, n_lambda){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((simtemp->temperatures)) = save_calloc("(simtemp->temperatures)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 649, ((n_lambda)), sizeof(*((simtemp->temperatures)))); } }; |
650 | nblock_bc(cr, n_lambda, simtemp->temperatures){ if ((n_lambda) > 0) {gmx_bcast((n_lambda)*sizeof((simtemp ->temperatures)[0]), (simtemp->temperatures), (cr)); }}; |
651 | if (debug) |
652 | { |
653 | fprintf(debug, "after bc_simtempvals\n"); |
654 | } |
655 | } |
656 | |
657 | |
658 | static void bc_swapions(const t_commrec *cr, t_swapcoords *swap) |
659 | { |
660 | int i; |
661 | |
662 | |
663 | block_bc(cr, *swap)gmx_bcast( sizeof(*swap), &(*swap), (cr)); |
664 | |
665 | /* Broadcast ion group atom indices */ |
666 | snew_bc(cr, swap->ind, swap->nat){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((swap->ind)) = save_calloc("(swap->ind)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 666, ((swap->nat)), sizeof(*((swap->ind)))); }}; |
667 | nblock_bc(cr, swap->nat, swap->ind){ if ((swap->nat) > 0) {gmx_bcast((swap->nat)*sizeof ((swap->ind)[0]), (swap->ind), (cr)); }}; |
668 | |
669 | /* Broadcast split groups atom indices */ |
670 | for (i = 0; i < 2; i++) |
671 | { |
672 | snew_bc(cr, swap->ind_split[i], swap->nat_split[i]){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((swap->ind_split[i])) = save_calloc("(swap->ind_split[i])" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 672, ((swap->nat_split[i])), sizeof(*((swap->ind_split [i])))); }}; |
673 | nblock_bc(cr, swap->nat_split[i], swap->ind_split[i]){ if ((swap->nat_split[i]) > 0) {gmx_bcast((swap->nat_split [i])*sizeof((swap->ind_split[i])[0]), (swap->ind_split[ i]), (cr)); }}; |
674 | } |
675 | |
676 | /* Broadcast solvent group atom indices */ |
677 | snew_bc(cr, swap->ind_sol, swap->nat_sol){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((swap->ind_sol)) = save_calloc("(swap->ind_sol)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 677, ((swap->nat_sol)), sizeof(*((swap->ind_sol)))); } }; |
678 | nblock_bc(cr, swap->nat_sol, swap->ind_sol){ if ((swap->nat_sol) > 0) {gmx_bcast((swap->nat_sol )*sizeof((swap->ind_sol)[0]), (swap->ind_sol), (cr)); } }; |
679 | } |
680 | |
681 | |
682 | static void bc_inputrec(const t_commrec *cr, t_inputrec *inputrec) |
683 | { |
684 | gmx_bool bAlloc = TRUE1; |
685 | int i; |
686 | |
687 | block_bc(cr, *inputrec)gmx_bcast( sizeof(*inputrec), &(*inputrec), (cr)); |
688 | |
689 | bc_grpopts(cr, &(inputrec->opts)); |
690 | |
691 | /* even if efep is efepNO, we need to initialize to make sure that |
692 | * n_lambda is set to zero */ |
693 | |
694 | snew_bc(cr, inputrec->fepvals, 1){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((inputrec->fepvals)) = save_calloc("(inputrec->fepvals)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 694, ((1)), sizeof(*((inputrec->fepvals)))); }}; |
695 | if (inputrec->efep != efepNO || inputrec->bSimTemp) |
696 | { |
697 | bc_fepvals(cr, inputrec->fepvals); |
698 | } |
699 | /* need to initialize this as well because of data checked for in the logic */ |
700 | snew_bc(cr, inputrec->expandedvals, 1){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((inputrec->expandedvals)) = save_calloc("(inputrec->expandedvals)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 700, ((1)), sizeof(*((inputrec->expandedvals)))); }}; |
701 | if (inputrec->bExpanded) |
702 | { |
703 | bc_expandedvals(cr, inputrec->expandedvals, inputrec->fepvals->n_lambda); |
704 | } |
705 | snew_bc(cr, inputrec->simtempvals, 1){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((inputrec->simtempvals)) = save_calloc("(inputrec->simtempvals)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 705, ((1)), sizeof(*((inputrec->simtempvals)))); }}; |
706 | if (inputrec->bSimTemp) |
707 | { |
708 | bc_simtempvals(cr, inputrec->simtempvals, inputrec->fepvals->n_lambda); |
709 | } |
710 | if (inputrec->ePull != epullNO) |
711 | { |
712 | snew_bc(cr, inputrec->pull, 1){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((inputrec->pull)) = save_calloc("(inputrec->pull)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 712, ((1)), sizeof(*((inputrec->pull)))); }}; |
713 | bc_pull(cr, inputrec->pull); |
714 | } |
715 | if (inputrec->bRot) |
716 | { |
717 | snew_bc(cr, inputrec->rot, 1){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((inputrec->rot)) = save_calloc("(inputrec->rot)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 717, ((1)), sizeof(*((inputrec->rot)))); }}; |
718 | bc_rot(cr, inputrec->rot); |
719 | } |
720 | if (inputrec->bIMD) |
721 | { |
722 | snew_bc(cr, inputrec->imd, 1){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((inputrec->imd)) = save_calloc("(inputrec->imd)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 722, ((1)), sizeof(*((inputrec->imd)))); }}; |
723 | bc_imd(cr, inputrec->imd); |
724 | } |
725 | for (i = 0; (i < DIM3); i++) |
726 | { |
727 | bc_cosines(cr, &(inputrec->ex[i])); |
728 | bc_cosines(cr, &(inputrec->et[i])); |
729 | } |
730 | if (inputrec->eSwapCoords != eswapNO) |
731 | { |
732 | snew_bc(cr, inputrec->swap, 1){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((inputrec->swap)) = save_calloc("(inputrec->swap)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 732, ((1)), sizeof(*((inputrec->swap)))); }}; |
733 | bc_swapions(cr, inputrec->swap); |
734 | } |
735 | if (inputrec->bAdress) |
736 | { |
737 | snew_bc(cr, inputrec->adress, 1){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((inputrec->adress)) = save_calloc("(inputrec->adress)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 737, ((1)), sizeof(*((inputrec->adress)))); }}; |
738 | bc_adress(cr, inputrec->adress); |
739 | } |
740 | } |
741 | |
742 | static void bc_moltype(const t_commrec *cr, t_symtab *symtab, |
743 | gmx_moltype_t *moltype) |
744 | { |
745 | bc_string(cr, symtab, &moltype->name); |
746 | bc_atoms(cr, symtab, &moltype->atoms); |
747 | if (debug) |
748 | { |
749 | fprintf(debug, "after bc_atoms\n"); |
750 | } |
751 | |
752 | bc_ilists(cr, moltype->ilist); |
753 | bc_block(cr, &moltype->cgs); |
754 | bc_blocka(cr, &moltype->excls); |
755 | } |
756 | |
757 | static void bc_molblock(const t_commrec *cr, gmx_molblock_t *molb) |
758 | { |
759 | gmx_bool bAlloc = TRUE1; |
760 | |
761 | block_bc(cr, molb->type)gmx_bcast( sizeof(molb->type), &(molb->type), (cr)); |
762 | block_bc(cr, molb->nmol)gmx_bcast( sizeof(molb->nmol), &(molb->nmol), (cr)); |
763 | block_bc(cr, molb->natoms_mol)gmx_bcast( sizeof(molb->natoms_mol), &(molb->natoms_mol ), (cr)); |
764 | block_bc(cr, molb->nposres_xA)gmx_bcast( sizeof(molb->nposres_xA), &(molb->nposres_xA ), (cr)); |
765 | if (molb->nposres_xA > 0) |
766 | { |
767 | snew_bc(cr, molb->posres_xA, molb->nposres_xA){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((molb->posres_xA)) = save_calloc("(molb->posres_xA)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 767, ((molb->nposres_xA)), sizeof(*((molb->posres_xA)) )); }}; |
768 | nblock_bc(cr, molb->nposres_xA*DIM, molb->posres_xA[0]){ if ((molb->nposres_xA*3) > 0) {gmx_bcast((molb->nposres_xA *3)*sizeof((molb->posres_xA[0])[0]), (molb->posres_xA[0 ]), (cr)); }}; |
769 | } |
770 | block_bc(cr, molb->nposres_xB)gmx_bcast( sizeof(molb->nposres_xB), &(molb->nposres_xB ), (cr)); |
771 | if (molb->nposres_xB > 0) |
772 | { |
773 | snew_bc(cr, molb->posres_xB, molb->nposres_xB){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((molb->posres_xB)) = save_calloc("(molb->posres_xB)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 773, ((molb->nposres_xB)), sizeof(*((molb->posres_xB)) )); }}; |
774 | nblock_bc(cr, molb->nposres_xB*DIM, molb->posres_xB[0]){ if ((molb->nposres_xB*3) > 0) {gmx_bcast((molb->nposres_xB *3)*sizeof((molb->posres_xB[0])[0]), (molb->posres_xB[0 ]), (cr)); }}; |
775 | } |
776 | if (debug) |
777 | { |
778 | fprintf(debug, "after bc_molblock\n"); |
779 | } |
780 | } |
781 | |
782 | static void bc_atomtypes(const t_commrec *cr, t_atomtypes *atomtypes) |
783 | { |
784 | int nr; |
785 | |
786 | block_bc(cr, atomtypes->nr)gmx_bcast( sizeof(atomtypes->nr), &(atomtypes->nr), (cr)); |
787 | |
788 | nr = atomtypes->nr; |
789 | |
790 | snew_bc(cr, atomtypes->radius, nr){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((atomtypes->radius)) = save_calloc("(atomtypes->radius)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 790, ((nr)), sizeof(*((atomtypes->radius)))); }}; |
791 | snew_bc(cr, atomtypes->vol, nr){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((atomtypes->vol)) = save_calloc("(atomtypes->vol)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 791, ((nr)), sizeof(*((atomtypes->vol)))); }}; |
792 | snew_bc(cr, atomtypes->surftens, nr){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((atomtypes->surftens)) = save_calloc("(atomtypes->surftens)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 792, ((nr)), sizeof(*((atomtypes->surftens)))); }}; |
793 | snew_bc(cr, atomtypes->gb_radius, nr){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((atomtypes->gb_radius)) = save_calloc("(atomtypes->gb_radius)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 793, ((nr)), sizeof(*((atomtypes->gb_radius)))); }}; |
794 | snew_bc(cr, atomtypes->S_hct, nr){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((atomtypes->S_hct)) = save_calloc("(atomtypes->S_hct)" , "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c", 794, ((nr)), sizeof(*((atomtypes->S_hct)))); }}; |
795 | |
796 | nblock_bc(cr, nr, atomtypes->radius){ if ((nr) > 0) {gmx_bcast((nr)*sizeof((atomtypes->radius )[0]), (atomtypes->radius), (cr)); }}; |
797 | nblock_bc(cr, nr, atomtypes->vol){ if ((nr) > 0) {gmx_bcast((nr)*sizeof((atomtypes->vol) [0]), (atomtypes->vol), (cr)); }}; |
798 | nblock_bc(cr, nr, atomtypes->surftens){ if ((nr) > 0) {gmx_bcast((nr)*sizeof((atomtypes->surftens )[0]), (atomtypes->surftens), (cr)); }}; |
799 | nblock_bc(cr, nr, atomtypes->gb_radius){ if ((nr) > 0) {gmx_bcast((nr)*sizeof((atomtypes->gb_radius )[0]), (atomtypes->gb_radius), (cr)); }}; |
800 | nblock_bc(cr, nr, atomtypes->S_hct){ if ((nr) > 0) {gmx_bcast((nr)*sizeof((atomtypes->S_hct )[0]), (atomtypes->S_hct), (cr)); }}; |
801 | } |
802 | |
803 | |
804 | void bcast_ir_mtop(const t_commrec *cr, t_inputrec *inputrec, gmx_mtop_t *mtop) |
805 | { |
806 | int i; |
807 | if (debug) |
808 | { |
809 | fprintf(debug, "in bc_data\n"); |
810 | } |
811 | bc_inputrec(cr, inputrec); |
812 | if (debug) |
813 | { |
814 | fprintf(debug, "after bc_inputrec\n"); |
815 | } |
816 | bc_symtab(cr, &mtop->symtab); |
817 | if (debug) |
818 | { |
819 | fprintf(debug, "after bc_symtab\n"); |
820 | } |
821 | bc_string(cr, &mtop->symtab, &mtop->name); |
822 | if (debug) |
823 | { |
824 | fprintf(debug, "after bc_name\n"); |
825 | } |
826 | |
827 | bc_ffparams(cr, &mtop->ffparams); |
828 | |
829 | block_bc(cr, mtop->nmoltype)gmx_bcast( sizeof(mtop->nmoltype), &(mtop->nmoltype ), (cr)); |
830 | snew_bc(cr, mtop->moltype, mtop->nmoltype){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((mtop->moltype)) = save_calloc("(mtop->moltype)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 830, ((mtop->nmoltype)), sizeof(*((mtop->moltype)))); }}; |
831 | for (i = 0; i < mtop->nmoltype; i++) |
832 | { |
833 | bc_moltype(cr, &mtop->symtab, &mtop->moltype[i]); |
834 | } |
835 | |
836 | block_bc(cr, mtop->nmolblock)gmx_bcast( sizeof(mtop->nmolblock), &(mtop->nmolblock ), (cr)); |
837 | snew_bc(cr, mtop->molblock, mtop->nmolblock){ if (!(((cr)->nodeid == 0) || !((cr)->nnodes > 1))) {((mtop->molblock)) = save_calloc("(mtop->molblock)", "/home/alexxy/Develop/gromacs/src/gromacs/gmxlib/mvdata.c" , 837, ((mtop->nmolblock)), sizeof(*((mtop->molblock))) ); }}; |
838 | for (i = 0; i < mtop->nmolblock; i++) |
839 | { |
840 | bc_molblock(cr, &mtop->molblock[i]); |
841 | } |
842 | |
843 | block_bc(cr, mtop->natoms)gmx_bcast( sizeof(mtop->natoms), &(mtop->natoms), ( cr)); |
844 | |
845 | bc_atomtypes(cr, &mtop->atomtypes); |
846 | |
847 | bc_block(cr, &mtop->mols); |
848 | bc_groups(cr, &mtop->symtab, mtop->natoms, &mtop->groups); |
849 | } |