| 239 |  |  | 
| 240 |  |  | 
| 241 |  | globalIndex = mpiSim->divideLabor(); | 
| 242 | – |  | 
| 243 | – |  | 
| 242 |  |  | 
| 243 |  | // set up the local variables | 
| 244 |  |  | 
| 314 |  |  | 
| 315 |  | if(mol2proc[i] == worldRank ){ | 
| 316 |  | the_molecules[molIndex].setStampID( molCompType[i] ); | 
| 317 | + | the_molecules[molIndex].setMyIndex( molIndex ); | 
| 318 |  | molIndex++; | 
| 319 |  | } | 
| 320 |  | } | 
| 325 |  | for(i=0; i<n_components; i++){ | 
| 326 |  | for(j=0; j<components_nmol[i]; j++ ){ | 
| 327 |  | the_molecules[molIndex].setStampID( i ); | 
| 328 | + | the_molecules[molIndex].setMyIndex( molIndex ); | 
| 329 |  | molIndex++; | 
| 330 |  | } | 
| 331 |  | } | 
| 335 |  |  | 
| 336 |  |  | 
| 337 |  | if( simnfo->n_SRI ){ | 
| 338 | + |  | 
| 339 | + | std::cerr << "n_SRI = " << simnfo->n_SRI << "\n"; | 
| 340 | + |  | 
| 341 |  | Exclude::createArray(simnfo->n_SRI); | 
| 342 |  | the_excludes = new Exclude*[simnfo->n_SRI]; | 
| 343 | + | for( int ex=0; ex<simnfo->n_SRI; ex++) the_excludes[ex] = new Exclude(ex); | 
| 344 |  | simnfo->globalExcludes = new int; | 
| 345 | < | simnfo->n_exclude = tot_SRI; | 
| 345 | > | simnfo->n_exclude = simnfo->n_SRI; | 
| 346 |  | } | 
| 347 |  | else{ | 
| 348 |  |  | 
| 660 |  | if( !strcmp( force_field, "TraPPE_Ex" ) ) new Symplectic( simnfo, the_ff ); | 
| 661 |  | if( !strcmp( force_field, "LJ" ) ) new Verlet( *simnfo, the_ff ); | 
| 662 |  |  | 
| 663 | < |  | 
| 663 | > | #ifdef IS_MPI | 
| 664 | > | mpiSim->mpiRefresh(); | 
| 665 | > | #endif | 
| 666 |  |  | 
| 667 |  | // initialize the Fortran | 
| 668 | < |  | 
| 668 | > |  | 
| 669 | > |  | 
| 670 |  | simnfo->refreshSim(); | 
| 671 |  |  | 
| 672 |  | if( !strcmp( simnfo->mixingRule, "standard") ){ | 
| 785 |  | theBonds[j].a = currentBond->getA() + atomOffset; | 
| 786 |  | theBonds[j].b = currentBond->getB() + atomOffset; | 
| 787 |  |  | 
| 788 | < | exI = theBonds[i].a; | 
| 789 | < | exJ = theBonds[i].b; | 
| 788 | > | exI = theBonds[j].a; | 
| 789 | > | exJ = theBonds[j].b; | 
| 790 |  |  | 
| 791 |  | // exclude_I must always be the smaller of the pair | 
| 792 |  | if( exI > exJ ){ | 
| 802 |  |  | 
| 803 |  | the_excludes[j+excludeOffset]->setPair( exI, exJ ); | 
| 804 |  | #else  // isn't MPI | 
| 805 | + |  | 
| 806 |  | the_excludes[j+excludeOffset]->setPair( (exI+1), (exJ+1) ); | 
| 807 |  | #endif  //is_mpi | 
| 808 |  | } | 
| 840 |  |  | 
| 841 |  | default: | 
| 842 |  | sprintf( painCave.errMsg, | 
| 843 | < | "SimSetup Error: ghostVectorSource was neiter a " | 
| 843 | > | "SimSetup Error: ghostVectorSource was neither a " | 
| 844 |  | "double nor an int.\n" | 
| 845 |  | "-->Bend[%d] in %s\n", | 
| 846 |  | j, comp_stamps[stampID]->getID() ); | 
| 934 |  |  | 
| 935 |  |  | 
| 936 |  | the_molecules[i].initialize( info ); | 
| 937 | + |  | 
| 938 | + |  | 
| 939 |  | atomOffset += info.nAtoms; | 
| 940 |  | delete[] theBonds; | 
| 941 |  | delete[] theBends; | 
| 942 |  | delete[] theTorsions; | 
| 943 |  | } | 
| 944 |  |  | 
| 945 | + | #ifdef IS_MPI | 
| 946 | + | sprintf( checkPointMsg, "all molecules initialized succesfully" ); | 
| 947 | + | MPIcheckPoint(); | 
| 948 | + | #endif // is_mpi | 
| 949 | + |  | 
| 950 |  | // clean up the forcefield | 
| 951 |  | the_ff->calcRcut(); | 
| 952 |  | the_ff->cleanMe(); | 
| 953 | + |  | 
| 954 |  | } | 
| 955 |  |  | 
| 956 |  | void SimSetup::initFromBass( void ){ |