# | Line 981 | Line 981 | namespace oopse { | |
---|---|---|
981 | ||
982 | /* | |
983 | Return intertia tensor for entire system and angular momentum Vector. | |
984 | + | |
985 | + | |
986 | + | [ Ixx -Ixy -Ixz ] |
987 | + | J =| -Iyx Iyy -Iyz | |
988 | + | [ -Izx -Iyz Izz ] |
989 | */ | |
990 | ||
991 | void SimInfo::getInertiaTensor(Mat3x3d &inertiaTensor, Vector3d &angularMomentum){ | |
# | Line 1032 | Line 1037 | namespace oopse { | |
1037 | inertiaTensor(0,1) = -xy; | |
1038 | inertiaTensor(0,2) = -xz; | |
1039 | inertiaTensor(1,0) = -xy; | |
1040 | < | inertiaTensor(2,0) = xx + zz; |
1040 | > | inertiaTensor(1,1) = xx + zz; |
1041 | inertiaTensor(1,2) = -yz; | |
1042 | inertiaTensor(2,0) = -xz; | |
1043 | inertiaTensor(2,1) = -yz; | |
# | Line 1060 | Line 1065 | namespace oopse { | |
1065 | SimInfo::MoleculeIterator i; | |
1066 | Molecule* mol; | |
1067 | ||
1068 | < | Vector3d thisq(0.0); |
1069 | < | Vector3d thisv(0.0); |
1068 | > | Vector3d thisr(0.0); |
1069 | > | Vector3d thisp(0.0); |
1070 | ||
1071 | < | double thisMass = 0.0; |
1071 | > | double thisMass; |
1072 | ||
1073 | for (mol = beginMolecule(i); mol != NULL; mol = nextMolecule(i)) { | |
1074 | < | thisq = mol->getCom()-com; |
1075 | < | thisv = mol->getComVel()-comVel; |
1076 | < | thisMass = mol->getMass(); |
1072 | < | angularMomentum += cross( thisq, thisv ) * thisMass; |
1074 | > | thisMass = mol->getMass(); |
1075 | > | thisr = mol->getCom()-com; |
1076 | > | thisp = (mol->getComVel()-comVel)*thisMass; |
1077 | ||
1078 | + | angularMomentum += cross( thisr, thisp ); |
1079 | + | |
1080 | } | |
1081 | ||
1082 | #ifdef IS_MPI |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |