Bug Summary

File:gromacs/gmxlib/mvdata.c
Location:line 99, column 9
Description:Value stored to 'NM' is never read

Annotated Source Code

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
64static 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
79static 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
108static 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
134static 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
157static 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
164static 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
177static 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
189static 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
206static 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
245void 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
330static 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
374static 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
396static 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
411static 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
479static 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
491static 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
506static 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
520static 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
532static 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
544static 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
559static 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
568static 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
605static 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
641static 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
658static 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
682static 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
742static 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
757static 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
782static 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
804void 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}