| 35 | 
  | 
 *                                                                       | 
| 36 | 
  | 
 * [1]  Meineke, et al., J. Comp. Chem. 26, 252-271 (2005).              | 
| 37 | 
  | 
 * [2]  Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006).           | 
| 38 | 
< | 
 * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008).           | 
| 38 | 
> | 
 * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 234107 (2008).           | 
| 39 | 
  | 
 * [4]  Kuang & Gezelter,  J. Chem. Phys. 133, 164101 (2010). | 
| 40 | 
  | 
 * [5]  Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). | 
| 41 | 
  | 
 */ | 
| 619 | 
  | 
  }         | 
| 620 | 
  | 
    | 
| 621 | 
  | 
  /** | 
| 622 | 
< | 
   * Return intertia tensor for entire system and angular momentum | 
| 623 | 
< | 
   * Vector. | 
| 622 | 
> | 
   * \brief Return inertia tensor for entire system and angular momentum | 
| 623 | 
> | 
   *  Vector. | 
| 624 | 
  | 
   * | 
| 625 | 
  | 
   * | 
| 626 | 
  | 
   * | 
| 701 | 
  | 
    return; | 
| 702 | 
  | 
  } | 
| 703 | 
  | 
 | 
| 704 | 
+ | 
 | 
| 705 | 
+ | 
  Mat3x3d Thermo::getBoundingBox(){ | 
| 706 | 
+ | 
     | 
| 707 | 
+ | 
    Snapshot* snap = info_->getSnapshotManager()->getCurrentSnapshot(); | 
| 708 | 
+ | 
     | 
| 709 | 
+ | 
    if (!(snap->hasBoundingBox)) { | 
| 710 | 
+ | 
       | 
| 711 | 
+ | 
      SimInfo::MoleculeIterator i; | 
| 712 | 
+ | 
      Molecule::RigidBodyIterator ri; | 
| 713 | 
+ | 
      Molecule::AtomIterator ai; | 
| 714 | 
+ | 
      Molecule* mol; | 
| 715 | 
+ | 
      RigidBody* rb; | 
| 716 | 
+ | 
      Atom* atom; | 
| 717 | 
+ | 
      Vector3d pos, bMax, bMin; | 
| 718 | 
+ | 
      int index = 0; | 
| 719 | 
+ | 
       | 
| 720 | 
+ | 
      for (mol = info_->beginMolecule(i); mol != NULL;  | 
| 721 | 
+ | 
           mol = info_->nextMolecule(i)) { | 
| 722 | 
+ | 
         | 
| 723 | 
+ | 
        //change the positions of atoms which belong to the rigidbodies | 
| 724 | 
+ | 
        for (rb = mol->beginRigidBody(ri); rb != NULL;  | 
| 725 | 
+ | 
             rb = mol->nextRigidBody(ri)) {           | 
| 726 | 
+ | 
          rb->updateAtoms(); | 
| 727 | 
+ | 
        } | 
| 728 | 
+ | 
         | 
| 729 | 
+ | 
        for(atom = mol->beginAtom(ai); atom != NULL; | 
| 730 | 
+ | 
            atom = mol->nextAtom(ai)) { | 
| 731 | 
+ | 
           | 
| 732 | 
+ | 
          pos = atom->getPos(); | 
| 733 | 
+ | 
 | 
| 734 | 
+ | 
          if (index == 0) { | 
| 735 | 
+ | 
            bMax = pos; | 
| 736 | 
+ | 
            bMin = pos; | 
| 737 | 
+ | 
          } else { | 
| 738 | 
+ | 
            for (int i = 0; i < 3; i++) { | 
| 739 | 
+ | 
              bMax[i] = max(bMax[i], pos[i]); | 
| 740 | 
+ | 
              bMin[i] = min(bMin[i], pos[i]); | 
| 741 | 
+ | 
            } | 
| 742 | 
+ | 
          } | 
| 743 | 
+ | 
          index++; | 
| 744 | 
+ | 
        } | 
| 745 | 
+ | 
      } | 
| 746 | 
+ | 
       | 
| 747 | 
+ | 
#ifdef IS_MPI | 
| 748 | 
+ | 
      MPI::COMM_WORLD.Allreduce(MPI::IN_PLACE, &bMax[0], 3, MPI::REALTYPE,  | 
| 749 | 
+ | 
                                MPI::MAX); | 
| 750 | 
+ | 
 | 
| 751 | 
+ | 
      MPI::COMM_WORLD.Allreduce(MPI::IN_PLACE, &bMin[0], 3, MPI::REALTYPE,  | 
| 752 | 
+ | 
                                MPI::MIN); | 
| 753 | 
+ | 
#endif | 
| 754 | 
+ | 
      Mat3x3d bBox = Mat3x3d(0.0); | 
| 755 | 
+ | 
      for (int i = 0; i < 3; i++) {            | 
| 756 | 
+ | 
        bBox(i,i) = bMax[i] - bMin[i]; | 
| 757 | 
+ | 
      } | 
| 758 | 
+ | 
      snap->setBoundingBox(bBox); | 
| 759 | 
+ | 
    } | 
| 760 | 
+ | 
     | 
| 761 | 
+ | 
    return snap->getBoundingBox();     | 
| 762 | 
+ | 
  } | 
| 763 | 
+ | 
   | 
| 764 | 
+ | 
   | 
| 765 | 
  | 
  // Returns the angular momentum of the system | 
| 766 | 
  | 
  Vector3d Thermo::getAngularMomentum(){ | 
| 767 | 
  | 
    Snapshot* snap = info_->getSnapshotManager()->getCurrentSnapshot(); | 
| 963 | 
  | 
    return 0.0; | 
| 964 | 
  | 
#endif | 
| 965 | 
  | 
  } | 
| 966 | 
+ | 
 | 
| 967 | 
+ | 
 | 
| 968 | 
  | 
} |