#include <Lattice.h>
Public Member Functions | |
| Lattice (void) | |
| void | set (Vector A, Vector B, Vector C) |
| void | set (Vector A, Vector B, Vector C, Position Origin) |
| void | rescale (Tensor factor) |
| void | rescale (Position &p, Tensor factor) const |
| Position | unscale (ScaledPosition s) const |
| ScaledPosition | scale (Position p) const |
| Position | nearest (Position data, ScaledPosition ref) const |
| Position | nearest (Position data, ScaledPosition ref, Transform *t) const |
| Position | apply_transform (Position data, const Transform &t) const |
| Position | reverse_transform (Position data, const Transform &t) const |
| Vector | delta (const Position &pos1, const Position &pos2) const |
| Vector | delta (const Position &pos1) const |
| Vector | wrap_delta (const Position &pos1) const |
| Vector | wrap_nearest_delta (Position pos1) const |
| Vector | offset (int i) const |
| Vector | a () const |
| Vector | b () const |
| Vector | c () const |
| int | orthogonal () const |
| Vector | origin () const |
| Vector | a_r () const |
| Vector | b_r () const |
| Vector | c_r () const |
| int | a_p () const |
| int | b_p () const |
| int | c_p () const |
| BigReal | volume (void) const |
Static Public Member Functions | |
| int | index (int i=0, int j=0, int k=0) |
| int | offset_a (int i) |
| int | offset_b (int i) |
| int | offset_c (int i) |
|
|
Definition at line 30 of file Lattice.h. 00030 : a1(0,0,0), a2(0,0,0), a3(0,0,0),
00031 b1(0,0,0), b2(0,0,0), b3(0,0,0),
00032 o(0,0,0), p1(0), p2(0), p3(0) {};
|
|
|
|
Definition at line 268 of file Lattice.h. Referenced by calc_fulldirect(), ComputeMsmMgr::initialize(), WorkDistrib::patchMapInit(), Controller::printEnergies(), ComputeMsmSerialMgr::recvCoord(), ComputeExtMgr::recvCoord(), PatchMap::sizeGrid(), Node::startup(), Controller::writeExtendedSystemData(), and Controller::writeExtendedSystemLabels(). 00268 { return p1; }
|
|
|
Definition at line 263 of file Lattice.h. Referenced by HomePatch::doMarginCheck(), PDB::find_extremes(), ComputePmeMgr::initialize(), OptPmeMgr::initialize_pencils(), ComputePmeMgr::initialize_pencils(), WorkDistrib::patchMapInit(), ComputeMsmSerialMgr::recvCoord(), scale_coordinates(), scale_forces(), scale_n_copy_coordinates(), PatchMap::sizeGrid(), and ComputeMsmMgr::update(). 00263 { return b1; }
|
|
||||||||||||
|
Definition at line 142 of file Lattice.h. References Transform::i, Transform::j, Transform::k, and Position. Referenced by Sequencer::berendsenPressure(), WorkDistrib::createAtomLists(), HomePatch::depositMigration(), Sequencer::langevinPiston(), PatchMgr::moveAllBy(), and PatchMgr::moveAtom().
|
|
|
|
Definition at line 269 of file Lattice.h. Referenced by calc_fulldirect(), ComputeMsmMgr::initialize(), WorkDistrib::patchMapInit(), Controller::printEnergies(), ComputeMsmSerialMgr::recvCoord(), ComputeExtMgr::recvCoord(), PatchMap::sizeGrid(), Node::startup(), Controller::writeExtendedSystemData(), and Controller::writeExtendedSystemLabels(). 00269 { return p2; }
|
|
|
Definition at line 264 of file Lattice.h. Referenced by HomePatch::doMarginCheck(), PDB::find_extremes(), OptPmeMgr::initialize_pencils(), ComputePmeMgr::initialize_pencils(), WorkDistrib::patchMapInit(), ComputeMsmSerialMgr::recvCoord(), scale_coordinates(), scale_forces(), scale_n_copy_coordinates(), PatchMap::sizeGrid(), and ComputeMsmMgr::update(). 00264 { return b2; }
|
|
|
|
Definition at line 270 of file Lattice.h. Referenced by calc_fulldirect(), ComputeMsmMgr::initialize(), WorkDistrib::patchMapInit(), Controller::printEnergies(), ComputeMsmSerialMgr::recvCoord(), ComputeExtMgr::recvCoord(), PatchMap::sizeGrid(), Node::startup(), Controller::writeExtendedSystemData(), and Controller::writeExtendedSystemLabels(). 00270 { return p3; }
|
|
|
Definition at line 265 of file Lattice.h. Referenced by HomePatch::doMarginCheck(), PDB::find_extremes(), WorkDistrib::patchMapInit(), ComputeMsmSerialMgr::recvCoord(), scale_coordinates(), scale_forces(), scale_n_copy_coordinates(), PatchMap::sizeGrid(), and ComputeMsmMgr::update(). 00265 { return b3; }
|
|
|
Definition at line 190 of file Lattice.h. References latticenearbyint, and Position. 00191 {
00192 Vector diff = pos1 - o;
00193 Vector result = diff;
00194 if ( p1 ) result -= a1*latticenearbyint(b1*diff);
00195 if ( p2 ) result -= a2*latticenearbyint(b2*diff);
00196 if ( p3 ) result -= a3*latticenearbyint(b3*diff);
00197 return result;
00198 }
|
|
||||||||||||
|
Definition at line 154 of file Lattice.h. References BigReal, latticenearbyint, Position, Vector::x, Vector::y, and Vector::z. Referenced by TholeElem::computeForce(), ExclElem::computeForce(), ImproperElem::computeForce(), DihedralElem::computeForce(), CrosstermElem::computeForce(), BondElem::computeForce(), AnisoElem::computeForce(), AngleElem::computeForce(), ComputeRestraints::doForce(), colvarproxy_namd::position_dist2(), and colvarproxy_namd::position_distance(). 00155 {
00156 Vector diff = pos1 - pos2;
00157 #ifdef ARCH_POWERPC //Prevents stack temporaries
00158 Vector result = diff;
00159 if ( p1 ) {
00160 BigReal fval = latticenearbyint(b1*diff);
00161 result.x -= a1.x *fval;
00162 result.y -= a1.y *fval;
00163 result.z -= a1.z *fval;
00164 }
00165 if ( p2 ) {
00166 BigReal fval = latticenearbyint(b2*diff);
00167 result.x -= a2.x * fval;
00168 result.y -= a2.y * fval;
00169 result.z -= a2.z * fval;
00170 }
00171 if ( p3 ) {
00172 BigReal fval = latticenearbyint(b3*diff);
00173 result.x -= a3.x * fval;
00174 result.y -= a3.y * fval;
00175 result.z -= a3.z * fval;
00176 }
00177 return result;
00178 #else
00179 BigReal f1 = p1 ? latticenearbyint(b1*diff) : 0.;
00180 BigReal f2 = p2 ? latticenearbyint(b2*diff) : 0.;
00181 BigReal f3 = p3 ? latticenearbyint(b3*diff) : 0.;
00182 diff.x -= f1*a1.x + f2*a2.x + f3*a3.x;
00183 diff.y -= f1*a1.y + f2*a2.y + f3*a3.y;
00184 diff.z -= f1*a1.z + f2*a2.z + f3*a3.z;
00185 return diff;
00186 #endif
00187 }
|
|
||||||||||||||||
|
Definition at line 35 of file Lattice.h. References j. Referenced by PatchMap::downstreamNeighbors(), PatchMap::getPatchesInOctet(), PatchMap::oneAwayNeighbors(), PatchMap::oneOrTwoAwayNeighbors(), and PatchMap::upstreamNeighbors(). 00036 {
00037 return 9 * (k+1) + 3 * (j+1) + (i+1);
00038 }
|
|
||||||||||||||||
|
Definition at line 117 of file Lattice.h. References BigReal, Transform::i, Transform::j, Transform::k, latticenearbyint, Position, ScaledPosition, Vector::x, Vector::y, and Vector::z. 00118 {
00119 ScaledPosition sn = scale(data);
00120 if ( p1 ) {
00121 BigReal tmp = sn.x - ref.x;
00122 BigReal rit = latticenearbyint(tmp);
00123 sn.x -= rit;
00124 t->i -= (int) rit;
00125 }
00126 if ( p2 ) {
00127 BigReal tmp = sn.y - ref.y;
00128 BigReal rit = latticenearbyint(tmp);
00129 sn.y -= rit;
00130 t->j -= (int) rit;
00131 }
00132 if ( p3 ) {
00133 BigReal tmp = sn.z - ref.z;
00134 BigReal rit = latticenearbyint(tmp);
00135 sn.z -= rit;
00136 t->k -= (int) rit;
00137 }
00138 return unscale(sn);
00139 }
|
|
||||||||||||
|
Definition at line 100 of file Lattice.h. References latticenearbyint, Position, ScaledPosition, Vector::x, Vector::y, and Vector::z. Referenced by WorkDistrib::createAtomLists(), HomePatch::depositMigration(), and colvarproxy_namd::select_closest_image(). 00101 {
00102 ScaledPosition sn = scale(data);
00103 if ( p1 ) {
00104 sn.x -= latticenearbyint(sn.x - ref.x);
00105 }
00106 if ( p2 ) {
00107 sn.y -= latticenearbyint(sn.y - ref.y);
00108 }
00109 if ( p3 ) {
00110 sn.z -= latticenearbyint(sn.z - ref.z);
00111 }
00112 return unscale(sn);
00113 }
|
|
|
Definition at line 237 of file Lattice.h. Referenced by ComputeNonbondedPair::doForce(). 00238 {
00239 return ( (i%3-1) * a1 + ((i/3)%3-1) * a2 + (i/9-1) * a3 );
00240 }
|
|
|
Definition at line 242 of file Lattice.h. Referenced by registerUserEventsForAllComputeObjs(). 00242 { return (i%3-1); }
|
|
|
Definition at line 243 of file Lattice.h. Referenced by registerUserEventsForAllComputeObjs(). 00243 { return ((i/3)%3-1); }
|
|
|
Definition at line 244 of file Lattice.h. Referenced by registerUserEventsForAllComputeObjs(). 00244 { return (i/9-1); }
|
|
|
|
Definition at line 252 of file Lattice.h.
|
|
||||||||||||
|
Definition at line 79 of file Lattice.h. References Position. 00080 {
00081 p -= o;
00082 p = factor * p;
00083 p += o;
00084 }
|
|
|
Definition at line 70 of file Lattice.h. Referenced by Sequencer::berendsenPressure(), Controller::berendsenPressure(), Sequencer::langevinPiston(), and Controller::langevinPiston1(). 00071 {
00072 a1 = factor * a1;
00073 a2 = factor * a2;
00074 a3 = factor * a3;
00075 recalculate();
00076 }
|
|
||||||||||||
|
Definition at line 148 of file Lattice.h. References Transform::i, Transform::j, Transform::k, and Position. Referenced by HomePatch::depositMigration(), ComputeGridForce::do_calc(), ComputeStir::doForce(), ComputeEField::doForce(), ComputeConsTorque::doForce(), ComputeConsForce::doForce(), PatchMgr::moveAllBy(), PatchMgr::moveAtom(), ComputeGlobal::recvResults(), and CollectionMgr::submitPositions().
|
|
|
Definition at line 93 of file Lattice.h. References Position, and ScaledPosition. Referenced by PatchMap::assignToPatch(), HomePatch::doAtomMigration(), HomePatch::doMarginCheck(), colvarproxy_namd::select_closest_image(), and ComputeMsmMgr::update(). 00094 {
00095 p -= o;
00096 return Vector(b1*p,b2*p,b3*p);
00097 }
|
|
||||||||||||||||||||
|
Definition at line 47 of file Lattice.h. References Vector::length(), and Position. 00048 {
00049 a1 = A; a2 = B; a3 = C; o = Origin;
00050 p1 = ( a1.length2() ? 1 : 0 );
00051 p2 = ( a2.length2() ? 1 : 0 );
00052 p3 = ( a3.length2() ? 1 : 0 );
00053 if ( ! p1 ) a1 = Vector(1.0,0.0,0.0);
00054 if ( ! p2 ) {
00055 Vector u1 = a1 / a1.length();
00056 Vector e_z(0.0,0.0,1.0);
00057 if ( fabs(e_z * u1) < 0.9 ) { a2 = cross(e_z,a1); }
00058 else { a2 = cross(Vector(1.0,0.0,0.0),a1); }
00059 a2 /= a2.length();
00060 }
00061 if ( ! p3 ) {
00062 a3 = cross(a1,a2);
00063 a3 /= a3.length();
00064 }
00065 if ( volume() < 0.0 ) a3 *= -1.0;
00066 recalculate();
00067 }
|
|
||||||||||||||||
|
Definition at line 41 of file Lattice.h. Referenced by get_lattice_from_ts(). 00042 {
00043 set(A,B,C,o);
00044 }
|
|
|
Definition at line 87 of file Lattice.h. References Position, Vector::x, Vector::y, and Vector::z. Referenced by ComputeNonbondedPair::doForce(), HomePatch::doPairlistCheck(), ComputeNonbondedCUDA::doWork(), and HomePatch::positionsReady().
|
|
|
Definition at line 272 of file Lattice.h. References BigReal. Referenced by ParallelIOMgr::bcastHydroBasedCounter(), NamdState::configListInit(), PressureProfileReduction::getData(), Controller::langevinPiston1(), Controller::langevinPiston2(), Controller::printEnergies(), Controller::receivePressure(), ComputeEwald::recvResults(), and Controller::rescaleaccelMD(). 00273 {
00274 return ( p1 && p2 && p3 ? cross(a1,a2) * a3 : 0.0 );
00275 }
|
|
|
Definition at line 201 of file Lattice.h. References latticenearbyint, and Position. Referenced by ComputeEwald::doWork(), ParallelIOMgr::recvFinalClusterCoor(), wrap_coor_int(), and GridforceGrid::wrap_position(). 00202 {
00203 Vector diff = pos1 - o;
00204 Vector result(0.,0.,0.);
00205 if ( p1 ) result -= a1*latticenearbyint(b1*diff);
00206 if ( p2 ) result -= a2*latticenearbyint(b2*diff);
00207 if ( p3 ) result -= a3*latticenearbyint(b3*diff);
00208 return result;
00209 }
|
|
|
Definition at line 212 of file Lattice.h. References BigReal, latticenearbyint, Vector::length2(), and Position. Referenced by ParallelIOMgr::recvFinalClusterCoor(), and wrap_coor_int(). 00213 {
00214 Vector diff = pos1 - o;
00215 Vector result0(0.,0.,0.);
00216 if ( p1 ) result0 -= a1*latticenearbyint(b1*diff);
00217 if ( p2 ) result0 -= a2*latticenearbyint(b2*diff);
00218 if ( p3 ) result0 -= a3*latticenearbyint(b3*diff);
00219 diff += result0;
00220 BigReal dist = diff.length2();
00221 Vector result(0.,0.,0.);
00222 for ( int i1=-p1; i1<=p1; ++i1 ) {
00223 for ( int i2 =-p2; i2<=p2; ++i2 ) {
00224 for ( int i3 =-p3; i3<=p3; ++i3 ) {
00225 Vector newresult = i1*a1+i2*a2+i3*a3;
00226 BigReal newdist = (diff+newresult).length2();
00227 if ( newdist < dist ) {
00228 dist = newdist;
00229 result = newresult;
00230 }
00231 }
00232 }
00233 }
00234 return result0 + result;
00235 }
|
1.3.9.1