# | 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 | < | |
302 | < | |
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++ ){ | |
# | 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 393 | 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 487 | Line 498 | void SimSetup::createSim( void ){ | |
498 | ||
499 | makeMolecules(); | |
500 | simnfo->identArray = new int[simnfo->n_atoms]; | |
490 | – | 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 | } | |
494 | – | for(i=0; i< simnfo->n_mol; i++) { |
495 | – | the_molecules[i].atomicRollCall(simnfo->molMembershipArray); |
496 | – | } |
504 | ||
505 | if (the_globals->getUseRF() ) { | |
506 | simnfo->useReactionField = 1; | |
# | Line 738 | Line 745 | void SimSetup::createSim( void ){ | |
745 | else if( !strcmp( force_field, "LJ" ) ){ | |
746 | new Verlet( *simnfo, the_ff, the_extendedsystem ); | |
747 | } | |
748 | < | else { |
742 | < | std::cerr << "I'm a bug.\n"; |
743 | < | fprintf( stderr, "Ima bug. stderr %s\n", force_field); |
744 | < | } |
748 | > | |
749 | #ifdef IS_MPI | |
750 | mpiSim->mpiRefresh(); | |
751 | #endif |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |