1 |
|
/* |
2 |
< |
* Copyright (C) 2000-2004 Object Oriented Parallel Simulation Engine (OOPSE) project |
2 |
> |
* Copyright (C) 2000-2009 The Open Molecular Dynamics Engine (OpenMD) project |
3 |
|
* |
4 |
< |
* Contact: oopse@oopse.org |
4 |
> |
* Contact: gezelter@openscience.org |
5 |
|
* |
6 |
|
* This program is free software; you can redistribute it and/or |
7 |
|
* modify it under the terms of the GNU Lesser General Public License |
25 |
|
|
26 |
|
#include "primitives/RigidBody.hpp" |
27 |
|
|
28 |
< |
namespace oopse { |
28 |
> |
namespace OpenMD { |
29 |
|
|
30 |
|
RigidBody::RigidBody() : StuntDouble(otRigidBody, &Snapshot::rigidbodyData){ |
31 |
|
|
33 |
|
|
34 |
|
void RigidBody::setPrevA(const RotMat3x3d& a) { |
35 |
|
((snapshotMan_->getPrevSnapshot())->*storage_).aMat[localIndex_] = a; |
36 |
< |
((snapshotMan_->getPrevSnapshot())->*storage_).unitVector[localIndex_] = a.inverse() * sU_.getColum(2); |
36 |
> |
((snapshotMan_->getPrevSnapshot())->*storage_).unitVector[localIndex_] = a.inverse() * sU_.getColumn(2); |
37 |
|
|
38 |
|
std::vector<Atom*>::iterator i; |
39 |
|
for (i = atoms_.begin(); i != atoms_.end(); ++i) { |
47 |
|
|
48 |
|
void RigidBody::setA(const RotMat3x3d& a) { |
49 |
|
((snapshotMan_->getCurrentSnapshot())->*storage_).aMat[localIndex_] = a; |
50 |
< |
((snapshotMan_->getCurrentSnapshot())->*storage_).unitVector[localIndex_] = a.inverse() * sU_.getColum(2); |
50 |
> |
((snapshotMan_->getCurrentSnapshot())->*storage_).unitVector[localIndex_] = a.inverse() * sU_.getColumn(2); |
51 |
|
|
52 |
|
std::vector<Atom*>::iterator i; |
53 |
|
for (i = atoms_.begin(); i != atoms_.end(); ++i) { |
59 |
|
|
60 |
|
void RigidBody::setA(const RotMat3x3d& a, int snapshotNo) { |
61 |
|
((snapshotMan_->getSnapshot(snapshotNo))->*storage_).aMat[localIndex_] = a; |
62 |
< |
((snapshotMan_->getSnapshot(snapshotNo))->*storage_).unitVector[localIndex_] = a.inverse() * sU_.getColum(2); |
62 |
> |
((snapshotMan_->getSnapshot(snapshotNo))->*storage_).unitVector[localIndex_] = a.inverse() * sU_.getColumn(2); |
63 |
|
|
64 |
|
std::vector<Atom*>::iterator i; |
65 |
|
for (i = atoms_.begin(); i != atoms_.end(); ++i) { |
221 |
|
if (n_linear_coords > 1) { |
222 |
|
sprintf( painCave.errMsg, |
223 |
|
"RigidBody error.\n" |
224 |
< |
"\tOOPSE found more than one axis in this rigid body with a vanishing \n" |
224 |
> |
"\tOpenMD found more than one axis in this rigid body with a vanishing \n" |
225 |
|
"\tmoment of inertia. This can happen in one of three ways:\n" |
226 |
|
"\t 1) Only one atom was specified, or \n" |
227 |
|
"\t 2) All atoms were specified at the same location, or\n" |