# | Line 62 | Line 62 | SimInfo::SimInfo(){ | |
---|---|---|
62 | useReactionField = 0; | |
63 | useGB = 0; | |
64 | useEAM = 0; | |
65 | < | |
65 | > | useThermInt = 0; |
66 | > | |
67 | haveCutoffGroups = false; | |
68 | ||
69 | excludes = Exclude::Instance(); | |
# | Line 444 | Line 445 | void SimInfo::refreshSim(){ | |
445 | excl = excludes->getFortranArray(); | |
446 | ||
447 | #ifdef IS_MPI | |
448 | < | n_global = mpiSim->getTotAtoms(); |
448 | > | n_global = mpiSim->getNAtomsGlobal(); |
449 | #else | |
450 | n_global = n_atoms; | |
451 | #endif | |
# | Line 453 | Line 454 | void SimInfo::refreshSim(){ | |
454 | ||
455 | getFortranGroupArray(this, mfact, ngroup, groupList, groupStart); | |
456 | //it may not be a good idea to pass the address of first element in vector | |
457 | < | //since c++ standard does not require vector to be stored continously in meomory |
458 | < | //Most of the compilers will organize the memory of vector continously |
457 | > | //since c++ standard does not require vector to be stored continuously in meomory |
458 | > | //Most of the compilers will organize the memory of vector continuously |
459 | setFsimulation( &fInfo, &n_global, &n_atoms, identArray, &n_exclude, excl, | |
460 | &nGlobalExcludes, globalExcludes, molMembershipArray, | |
461 | &mfact[0], &ngroup, &groupList[0], &groupStart[0], &isError); | |
# | Line 591 | Line 592 | void getFortranGroupArray(SimInfo* info, vector<double | |
592 | myMols = info->molecules; | |
593 | numMol = info->n_mol; | |
594 | for(int i = 0; i < numMol; i++){ | |
594 | – | numAtom = myMols[i].getNAtoms(); |
595 | – | myAtoms = myMols[i].getMyAtoms(); |
596 | – | |
597 | – | |
598 | – | for(int j = 0; j < numAtom; j++){ |
599 | – | |
600 | – | |
601 | – | #ifdef IS_MPI |
602 | – | atomIndex = myAtoms[j]->getGlobalIndex(); |
603 | – | #else |
604 | – | atomIndex = myAtoms[j]->getIndex(); |
605 | – | #endif |
606 | – | |
607 | – | if(myMols[i].belongToCutoffGroup(atomIndex)) |
608 | – | continue; |
609 | – | else{ |
610 | – | // this is a fraction of the cutoff group's mass, not the mass itself! |
611 | – | mfact.push_back(1.0); |
612 | – | groupList.push_back(myAtoms[j]->getIndex() + 1); |
613 | – | groupStart.push_back(curIndex++); |
614 | – | } |
615 | – | } |
616 | – | |
595 | numCutoffGroups = myMols[i].getNCutoffGroups(); | |
596 | for(myCutoffGroup =myMols[i].beginCutoffGroup(iterCutoff); myCutoffGroup != NULL; | |
597 | myCutoffGroup =myMols[i].nextCutoffGroup(iterCutoff)){ | |
# | Line 623 | Line 601 | void getFortranGroupArray(SimInfo* info, vector<double | |
601 | for(cutoffAtom = myCutoffGroup->beginAtom(iterAtom); cutoffAtom != NULL; | |
602 | cutoffAtom = myCutoffGroup->nextAtom(iterAtom)){ | |
603 | mfact.push_back(cutoffAtom->getMass()/totalMass); | |
604 | + | #ifdef IS_MPI |
605 | + | groupList.push_back(cutoffAtom->getGlobalIndex() + 1); |
606 | + | #else |
607 | groupList.push_back(cutoffAtom->getIndex() + 1); | |
608 | + | #endif |
609 | } | |
610 | ||
611 | groupStart.push_back(curIndex); | |
# | Line 632 | Line 614 | void getFortranGroupArray(SimInfo* info, vector<double | |
614 | }//end for(myCutoffGroup =myMols[i].beginCutoffGroup(iterCutoff)) | |
615 | ||
616 | }//end for(int i = 0; i < numMol; i++) | |
617 | < | |
617 | > | |
618 | > | |
619 | > | //The last cutoff group need more element to indicate the end of the cutoff |
620 | ngroup = groupStart.size(); | |
621 | } |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |