# | Line 67 | Line 67 | void SimSetup::createSim( void ){ | |
---|---|---|
67 | MakeStamps *the_stamps; | |
68 | Globals* the_globals; | |
69 | ExtendedSystem* the_extendedsystem; | |
70 | < | int i, j; |
70 | > | int i, j, k, globalAtomIndex; |
71 | ||
72 | // get the stamps and globals; | |
73 | the_stamps = stamps; | |
# | Line 298 | Line 298 | void SimSetup::createSim( void ){ | |
298 | simnfo->n_torsions = tot_torsions; | |
299 | simnfo->n_SRI = tot_SRI; | |
300 | simnfo->n_mol = tot_nmol; | |
301 | – | |
301 | ||
302 | + | simnfo->molMembershipArray = new int[tot_atoms]; |
303 | + | |
304 | #ifdef IS_MPI | |
305 | ||
306 | // divide the molecules among processors here. | |
307 | ||
308 | mpiSim = new mpiSimulation( simnfo ); | |
309 | ||
309 | – | |
310 | – | |
310 | globalIndex = mpiSim->divideLabor(); | |
311 | ||
312 | // set up the local variables | |
# | Line 324 | Line 323 | void SimSetup::createSim( void ){ | |
323 | local_bonds = 0; | |
324 | local_bends = 0; | |
325 | local_torsions = 0; | |
326 | + | globalAtomIndex = 0; |
327 | + | |
328 | + | |
329 | for( i=0; i<n_components; i++ ){ | |
330 | ||
331 | for( j=0; j<components_nmol[i]; j++ ){ | |
332 | ||
333 | < | if( mol2proc[j] == worldRank ){ |
333 | > | if( mol2proc[allMol] == worldRank ){ |
334 | ||
335 | local_atoms += comp_stamps[i]->getNAtoms(); | |
336 | local_bonds += comp_stamps[i]->getNBonds(); | |
# | Line 336 | Line 338 | void SimSetup::createSim( void ){ | |
338 | local_torsions += comp_stamps[i]->getNTorsions(); | |
339 | localMol++; | |
340 | } | |
341 | < | allMol++; |
341 | > | for (k = 0; k < comp_stamps[i]->getNAtoms(); k++) { |
342 | > | simnfo->molMembershipArray[globalAtomIndex] = allMol; |
343 | > | globalAtomIndex++; |
344 | > | } |
345 | > | |
346 | > | allMol++; |
347 | } | |
348 | } | |
349 | local_SRI = local_bonds + local_bends + local_torsions; | |
350 | ||
344 | – | |
351 | simnfo->n_atoms = mpiSim->getMyNlocal(); | |
352 | ||
353 | if( local_atoms != simnfo->n_atoms ){ | |
# | Line 385 | Line 391 | void SimSetup::createSim( void ){ | |
391 | if(mol2proc[i] == worldRank ){ | |
392 | the_molecules[molIndex].setStampID( molCompType[i] ); | |
393 | the_molecules[molIndex].setMyIndex( molIndex ); | |
394 | + | the_molecules[molIndex].setGlobalIndex( i ); |
395 | molIndex++; | |
396 | } | |
397 | } | |
# | Line 392 | Line 399 | void SimSetup::createSim( void ){ | |
399 | #else // is_mpi | |
400 | ||
401 | molIndex = 0; | |
402 | + | globalAtomIndex = 0; |
403 | for(i=0; i<n_components; i++){ | |
404 | for(j=0; j<components_nmol[i]; j++ ){ | |
405 | the_molecules[molIndex].setStampID( i ); | |
406 | the_molecules[molIndex].setMyIndex( molIndex ); | |
407 | + | the_molecules[molIndex].setGlobalIndex( molIndex ); |
408 | + | for (k = 0; k < comp_stamps[i]->getNAtoms(); k++) { |
409 | + | simnfo->molMembershipArray[globalAtomIndex] = molIndex; |
410 | + | globalAtomIndex++; |
411 | + | } |
412 | molIndex++; | |
413 | } | |
414 | } | |
# | Line 485 | Line 498 | void SimSetup::createSim( void ){ | |
498 | ||
499 | makeMolecules(); | |
500 | simnfo->identArray = new int[simnfo->n_atoms]; | |
488 | – | simnfo->molMembershipArray = new int[simnfo->n_atoms]; |
501 | for(i=0; i<simnfo->n_atoms; i++){ | |
502 | simnfo->identArray[i] = the_atoms[i]->getIdent(); | |
503 | } | |
492 | – | for(i=0; i< simnfo->n_mol; i++) { |
493 | – | the_molecules[i].atomicRollCall(simnfo->molMembershipArray); |
494 | – | } |
504 | ||
505 | if (the_globals->getUseRF() ) { | |
506 | simnfo->useReactionField = 1; |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |