# | Line 1 | Line 1 | |
---|---|---|
1 | < | /* |
1 | > | /* |
2 | * Copyright (c) 2005 The University of Notre Dame. All Rights Reserved. | |
3 | * | |
4 | * The University of Notre Dame grants you ("Licensee") a | |
# | Line 58 | Line 58 | namespace oopse { | |
58 | } | |
59 | ||
60 | void MoLocator::placeMol( const Vector3d& offset, const Vector3d& ort, Molecule* mol){ | |
61 | + | |
62 | Vector3d newCoor; | |
63 | Vector3d curRefCoor; | |
64 | RotMat3x3d rotMat = latVec2RotMat(ort); | |
# | Line 78 | Line 79 | namespace oopse { | |
79 | ||
80 | newCoor = rotMat * refCoords[i]; | |
81 | newCoor += offset; | |
82 | < | |
83 | < | integrableObject->setPos( newCoor); |
82 | > | |
83 | > | integrableObject->setPos(newCoor); |
84 | integrableObject->setVel(V3Zero); | |
85 | ||
86 | if(integrableObject->isDirectional()){ | |
# | Line 94 | Line 95 | namespace oopse { | |
95 | RigidBodyStamp* rbStamp; | |
96 | int nAtoms; | |
97 | int nRigidBodies; | |
98 | < | std::vector<double> mass; |
98 | > | std::vector<RealType> mass; |
99 | Vector3d coor; | |
100 | Vector3d refMolCom; | |
101 | int nAtomsInRb; | |
102 | < | double totMassInRb; |
103 | < | double currAtomMass; |
104 | < | double molMass; |
102 | > | RealType totMassInRb; |
103 | > | RealType currAtomMass; |
104 | > | RealType molMass; |
105 | ||
106 | nAtoms= myStamp->getNAtoms(); | |
107 | nRigidBodies = myStamp->getNRigidBodies(); | |
108 | ||
109 | for(size_t i=0; i<nAtoms; i++){ | |
110 | ||
111 | < | currAtomStamp = myStamp->getAtom(i); |
111 | > | currAtomStamp = myStamp->getAtomStamp(i); |
112 | ||
113 | if( !currAtomStamp->havePosition() ){ | |
114 | sprintf( painCave.errMsg, | |
115 | "MoLocator error.\n" | |
116 | " Component %s, atom %s does not have a position specified.\n" | |
117 | " This means MoLocator cannot initalize it's position.\n", | |
118 | < | myStamp->getID(), |
119 | < | currAtomStamp->getType() ); |
118 | > | myStamp->getName().c_str(), |
119 | > | currAtomStamp->getType().c_str()); |
120 | ||
121 | painCave.isFatal = 1; | |
122 | simError(); | |
# | Line 138 | Line 139 | namespace oopse { | |
139 | ||
140 | for(int i = 0; i < nRigidBodies; i++){ | |
141 | ||
142 | < | rbStamp = myStamp->getRigidBody(i); |
142 | > | rbStamp = myStamp->getRigidBodyStamp(i); |
143 | nAtomsInRb = rbStamp->getNMembers(); | |
144 | ||
145 | coor.x() = 0.0; | |
# | Line 148 | Line 149 | namespace oopse { | |
149 | ||
150 | for(int j = 0; j < nAtomsInRb; j++){ | |
151 | ||
152 | < | currAtomStamp = myStamp->getAtom(rbStamp->getMember(j)); |
152 | > | currAtomStamp = myStamp->getAtomStamp(rbStamp->getMemberAt(j)); |
153 | currAtomMass = getAtomMass(currAtomStamp->getType(), myFF); | |
154 | totMassInRb += currAtomMass; | |
155 | ||
# | Line 178 | Line 179 | namespace oopse { | |
179 | ||
180 | //move the reference center of mass to (0,0,0) and adjust the reference coordinate | |
181 | //of the integrabel objects | |
182 | < | for(int i = 0; i < nIntegrableObjects; i++) |
183 | < | refCoords[i] -= refMolCom; |
182 | > | for(int i = 0; i < nIntegrableObjects; i++) |
183 | > | refCoords[i] -= refMolCom; |
184 | } | |
185 | ||
186 | < | double getAtomMass(const std::string& at, ForceField* myFF) { |
187 | < | double mass; |
186 | > | RealType getAtomMass(const std::string& at, ForceField* myFF) { |
187 | > | RealType mass; |
188 | AtomType* atomType= myFF->getAtomType(at); | |
189 | if (atomType != NULL) { | |
190 | mass = atomType->getMass(); | |
# | Line 194 | Line 195 | namespace oopse { | |
195 | return mass; | |
196 | } | |
197 | ||
198 | < | double getMolMass(MoleculeStamp *molStamp, ForceField *myFF) { |
198 | > | RealType getMolMass(MoleculeStamp *molStamp, ForceField *myFF) { |
199 | int nAtoms; | |
200 | < | double totMass = 0; |
200 | > | RealType totMass = 0; |
201 | nAtoms = molStamp->getNAtoms(); | |
202 | ||
203 | for(size_t i = 0; i < nAtoms; i++) { | |
204 | < | AtomStamp *currAtomStamp = molStamp->getAtom(i); |
204 | > | AtomStamp *currAtomStamp = molStamp->getAtomStamp(i); |
205 | totMass += getAtomMass(currAtomStamp->getType(), myFF); | |
206 | } | |
207 | return totMass; | |
208 | } | |
209 | RotMat3x3d latVec2RotMat(const Vector3d& lv){ | |
210 | ||
211 | < | double theta =acos(lv[2]); |
212 | < | double phi = atan2(lv[1], lv[0]); |
213 | < | double psi = 0; |
211 | > | RealType theta =acos(lv[2]); |
212 | > | RealType phi = atan2(lv[1], lv[0]); |
213 | > | RealType psi = 0; |
214 | ||
215 | return RotMat3x3d(phi, theta, psi); | |
216 |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |