ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/brains/SimCreator.cpp
(Generate patch)

Comparing trunk/src/brains/SimCreator.cpp (file contents):
Revision 1938 by gezelter, Thu Oct 31 15:32:17 2013 UTC vs.
Revision 1953 by gezelter, Thu Dec 5 18:19:26 2013 UTC

# Line 803 | Line 803 | namespace OpenMD {
803      Molecule::AtomIterator ai;
804      Molecule::RigidBodyIterator ri;
805      Molecule::CutoffGroupIterator ci;
806 +    Molecule::BondIterator boi;
807 +    Molecule::BendIterator bei;
808 +    Molecule::TorsionIterator ti;
809 +    Molecule::InversionIterator ii;
810      Molecule::IntegrableObjectIterator  ioi;
811 <    Molecule * mol;
812 <    Atom * atom;
813 <    RigidBody * rb;
814 <    CutoffGroup * cg;
811 >    Molecule* mol;
812 >    Atom* atom;
813 >    RigidBody* rb;
814 >    CutoffGroup* cg;
815 >    Bond* bond;
816 >    Bend* bend;
817 >    Torsion* torsion;
818 >    Inversion* inversion;
819      int beginAtomIndex;
820      int beginRigidBodyIndex;
821      int beginCutoffGroupIndex;
822 +    int beginBondIndex;
823 +    int beginBendIndex;
824 +    int beginTorsionIndex;
825 +    int beginInversionIndex;
826      int nGlobalAtoms = info->getNGlobalAtoms();
827      int nGlobalRigidBodies = info->getNGlobalRigidBodies();
828      
829      beginAtomIndex = 0;
830 <    //rigidbody's index begins right after atom's
830 >    // The rigid body indices begin immediately after the atom indices:
831      beginRigidBodyIndex = info->getNGlobalAtoms();
832      beginCutoffGroupIndex = 0;
833 <
833 >    beginBondIndex = 0;
834 >    beginBendIndex = 0;
835 >    beginTorsionIndex = 0;
836 >    beginInversionIndex = 0;
837 >  
838      for(int i = 0; i < info->getNGlobalMolecules(); i++) {
839        
840   #ifdef IS_MPI      
# Line 827 | Line 843 | namespace OpenMD {
843          // stuff to do if I own this molecule
844          mol = info->getMoleculeByGlobalIndex(i);
845  
846 <        //local index(index in DataStorge) of atom is important
847 <        for(atom = mol->beginAtom(ai); atom != NULL; atom = mol->nextAtom(ai)) {
846 >        // The local index(index in DataStorge) of the atom is important:
847 >        for(atom = mol->beginAtom(ai); atom != NULL;
848 >            atom = mol->nextAtom(ai)) {
849            atom->setGlobalIndex(beginAtomIndex++);
850          }
851          
# Line 837 | Line 854 | namespace OpenMD {
854            rb->setGlobalIndex(beginRigidBodyIndex++);
855          }
856          
857 <        //local index of cutoff group is trivial, it only depends on
858 <        //the order of travesing
857 >        // The local index of other objects only depends on the order
858 >        // of traversal:
859          for(cg = mol->beginCutoffGroup(ci); cg != NULL;
860              cg = mol->nextCutoffGroup(ci)) {
861            cg->setGlobalIndex(beginCutoffGroupIndex++);
862          }        
863 +        for(bond = mol->beginBond(boi); bond != NULL;
864 +            bond = mol->nextBond(boi)) {
865 +          bond->setGlobalIndex(beginBondIndex++);
866 +        }        
867 +        for(bend = mol->beginBend(bei); bend != NULL;
868 +            bend = mol->nextBend(bei)) {
869 +          bend->setGlobalIndex(beginBendIndex++);
870 +        }        
871 +        for(torsion = mol->beginTorsion(ti); torsion != NULL;
872 +            torsion = mol->nextTorsion(ti)) {
873 +          torsion->setGlobalIndex(beginTorsionIndex++);
874 +        }        
875 +        for(inversion = mol->beginInversion(ii); inversion != NULL;
876 +            inversion = mol->nextInversion(ii)) {
877 +          inversion->setGlobalIndex(beginInversionIndex++);
878 +        }        
879          
880   #ifdef IS_MPI        
881        }  else {
# Line 855 | Line 888 | namespace OpenMD {
888          beginAtomIndex += stamp->getNAtoms();
889          beginRigidBodyIndex += stamp->getNRigidBodies();
890          beginCutoffGroupIndex += stamp->getNCutoffGroups() + stamp->getNFreeAtoms();
891 +        beginBondIndex += stamp->getNBonds();
892 +        beginBendIndex += stamp->getNBends();
893 +        beginTorsionIndex += stamp->getNTorsions();
894 +        beginInversionIndex += stamp->getNInversions();
895        }
896   #endif          
897  
# Line 862 | Line 899 | namespace OpenMD {
899  
900      //fill globalGroupMembership
901      std::vector<int> globalGroupMembership(info->getNGlobalAtoms(), 0);
902 <    for(mol = info->beginMolecule(mi); mol != NULL; mol = info->nextMolecule(mi)) {        
903 <      for (cg = mol->beginCutoffGroup(ci); cg != NULL; cg = mol->nextCutoffGroup(ci)) {
904 <        
902 >    for(mol = info->beginMolecule(mi); mol != NULL;
903 >        mol = info->nextMolecule(mi)) {        
904 >      for (cg = mol->beginCutoffGroup(ci); cg != NULL;
905 >           cg = mol->nextCutoffGroup(ci)) {        
906          for(atom = cg->beginAtom(ai); atom != NULL; atom = cg->nextAtom(ai)) {
907            globalGroupMembership[atom->getGlobalIndex()] = cg->getGlobalIndex();
908          }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines