# | 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 579 | Line 580 | void getFortranGroupArray(SimInfo* info, vector<double | |
580 | Atom* cutoffAtom; | |
581 | vector<Atom*>::iterator iterAtom; | |
582 | int atomIndex; | |
583 | + | double totalMass; |
584 | ||
585 | mfact.clear(); | |
586 | groupList.clear(); | |
# | Line 590 | 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++){ | |
593 | – | numAtom = myMols[i].getNAtoms(); |
594 | – | myAtoms = myMols[i].getMyAtoms(); |
595 | – | |
596 | – | |
597 | – | for(int j = 0; j < numAtom; j++){ |
598 | – | |
599 | – | |
600 | – | #ifdef IS_MPI |
601 | – | atomIndex = myAtoms[j]->getGlobalIndex(); |
602 | – | #else |
603 | – | atomIndex = myAtoms[j]->getIndex(); |
604 | – | #endif |
605 | – | |
606 | – | if(myMols[i].belongToCutoffGroup(atomIndex)) |
607 | – | continue; |
608 | – | else{ |
609 | – | mfact.push_back(myAtoms[j]->getMass()); |
610 | – | groupList.push_back(myAtoms[j]->getIndex() + 1); |
611 | – | groupStart.push_back(curIndex++); |
612 | – | } |
613 | – | } |
614 | – | |
595 | numCutoffGroups = myMols[i].getNCutoffGroups(); | |
596 | for(myCutoffGroup =myMols[i].beginCutoffGroup(iterCutoff); myCutoffGroup != NULL; | |
597 | myCutoffGroup =myMols[i].nextCutoffGroup(iterCutoff)){ | |
598 | + | |
599 | + | totalMass = myCutoffGroup->getMass(); |
600 | ||
601 | for(cutoffAtom = myCutoffGroup->beginAtom(iterAtom); cutoffAtom != NULL; | |
602 | < | cutoffAtom = myCutoffGroup->beginAtom(iterAtom)){ |
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); | |
612 | curIndex += myCutoffGroup->getNumAtom(); | |
626 | – | } |
627 | – | |
628 | – | } |
613 | ||
614 | + | }//end for(myCutoffGroup =myMols[i].beginCutoffGroup(iterCutoff)) |
615 | + | |
616 | + | }//end for(int i = 0; i < numMol; i++) |
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 |