ls1-MarDyn
ls1-MarDyn molecular dynamics code
|
FullMolecule modeled as LJ sphere with point polarities. More...
#include <FullMolecule.h>
Public Member Functions | |
FullMolecule (unsigned long id=0, Component *component=nullptr, double rx=0., double ry=0., double rz=0., double vx=0., double vy=0., double vz=0., double q0=1., double q1=1., double q2=0., double q3=0., double Dx=0., double Dy=0., double Dz=0.) | |
FullMolecule (const FullMolecule &m) | |
FullMolecule & | operator= (const FullMolecule &m) |
unsigned long | getID () const override |
void | setid (unsigned long id) override |
void | setComponent (Component *component) override |
Component * | component () const override |
unsigned | getComponentLookUpID () const override |
double | r (unsigned short d) const override |
void | setr (unsigned short d, double r) override |
double | v (unsigned short d) const override |
void | setv (unsigned short d, double v) override |
double | mass () const override |
void | setF (unsigned short d, double F) override |
double | F (unsigned short d) const override |
const Quaternion & | q () const override |
void | setq (Quaternion q) override |
double | D (unsigned short d) const override |
double | M (unsigned short d) const override |
double | Vi (unsigned short d) const override |
void | setD (unsigned short d, double D) override |
void | move (int d, double dr) override |
double | getI (unsigned short d) const override |
void | updateMassInertia () override |
double | v2 () const override |
double | L2 () const override |
double | F2 () const override |
double | M2 () const override |
double | U_trans () const override |
double | U_trans_2 () const override |
double | U_rot () override |
double | U_rot_2 () override |
double | U_kin () override |
void | setupSoACache (CellDataSoABase *s, unsigned iLJ, unsigned iC, unsigned iD, unsigned iQ) override |
void | setSoA (CellDataSoABase *s) override |
void | setStartIndexSoA_LJ (unsigned i) override |
void | setStartIndexSoA_C (unsigned i) override |
void | setStartIndexSoA_D (unsigned i) override |
void | setStartIndexSoA_Q (unsigned i) override |
unsigned int | numSites () const override |
unsigned int | numOrientedSites () const override |
unsigned int | numLJcenters () const override |
unsigned int | numCharges () const override |
unsigned int | numDipoles () const override |
unsigned int | numQuadrupoles () const override |
std::array< double, 3 > | site_d (unsigned int i) const override |
std::array< double, 3 > | ljcenter_d (unsigned int i) const override |
std::array< double, 3 > | charge_d (unsigned int i) const override |
std::array< double, 3 > | dipole_d (unsigned int i) const override |
std::array< double, 3 > | quadrupole_d (unsigned int i) const override |
std::array< double, 3 > | site_d_abs (unsigned int i) const override |
std::array< double, 3 > | ljcenter_d_abs (unsigned int i) const override |
std::array< double, 3 > | charge_d_abs (unsigned int i) const override |
std::array< double, 3 > | dipole_d_abs (unsigned int i) const override |
std::array< double, 3 > | quadrupole_d_abs (unsigned int i) const override |
std::array< double, 3 > | dipole_e (unsigned int i) const override |
std::array< double, 3 > | quadrupole_e (unsigned int i) const override |
std::array< double, 3 > | site_F (unsigned int i) const override |
std::array< double, 3 > | ljcenter_F (unsigned int i) const override |
std::array< double, 3 > | charge_F (unsigned int i) const override |
std::array< double, 3 > | dipole_F (unsigned int i) const override |
std::array< double, 3 > | quadrupole_F (unsigned int i) const override |
void | normalizeQuaternion () override |
std::array< double, 3 > | computeLJcenter_d (unsigned int i) const override |
std::array< double, 3 > | computeCharge_d (unsigned int i) const override |
std::array< double, 3 > | computeDipole_d (unsigned int i) const override |
std::array< double, 3 > | computeQuadrupole_d (unsigned int i) const override |
std::array< double, 3 > | computeDipole_e (unsigned int i) const override |
std::array< double, 3 > | computeQuadrupole_e (unsigned int i) const override |
unsigned long | totalMemsize () const override |
double | dist2 (const FullMolecule &molecule2, double dr[3]) const |
void | setF (double F[3]) override |
void | setM (double M[3]) override |
void | setVi (double Vi[3]) override |
void | Fadd (const double a[]) override |
void | Madd (const double a[]) override |
void | Viadd (const double a[]) override |
void | vadd (const double ax, const double ay, const double az) override |
void | vsub (const double ax, const double ay, const double az) override |
void | Fljcenteradd (unsigned int i, double a[]) override |
void | Fljcentersub (unsigned int i, double a[]) override |
void | Fchargeadd (unsigned int i, double a[]) override |
void | Fchargesub (unsigned int i, double a[]) override |
void | Fdipoleadd (unsigned int i, double a[]) override |
void | Fdipolesub (unsigned int i, double a[]) override |
void | Fquadrupoleadd (unsigned int i, double a[]) override |
void | Fquadrupolesub (unsigned int i, double a[]) override |
void | upd_preF (double dt) override |
void | upd_postF (double dt_halve, double &summv2, double &sumIw2) override |
void | calculate_mv2_Iw2 (double &summv2, double &sumIw2) override |
Calculate twice the translational and rotational kinetic energies. More... | |
void | calculate_mv2_Iw2 (double &summv2, double &sumIw2, double offx, double offy, double offz) override |
void | write (std::ostream &ostrm) const override |
void | writeBinary (std::ostream &ostrm) const override |
void | clearFM () override |
void | calcFM () override |
void | check (unsigned long id) override |
void | buildOwnSoA () override |
void | releaseOwnSoA () override |
![]() | |
unsigned int | componentid () const |
std::array< double, 3 > | r_arr () const |
std::array< double, 3 > | v_arr () const |
virtual std::array< double, 3 > | F_arr () |
virtual std::array< double, 3 > | M_arr () |
virtual std::array< double, 3 > | Vi_arr () |
std::array< double, 3 > | D_arr () const |
double | dist2 (const MoleculeInterface &molecule2, double dr[3]) const |
double | orientationAngle (const MoleculeInterface &molecule2, double dr[3], double d2) const |
void | scale_v (double s) |
void | scale_v (double s, double offx, double offy, double offz) |
void | scale_F (double s) |
void | scale_D (double s) |
void | scale_M (double s) |
void | ee_upd_preF (double dt) |
void | ee_upd_postF (double dt, double &summv2) |
bool | isLessThan (const MoleculeInterface &m2) const |
find out whether m1 is before m2 (in some global ordering) More... | |
virtual bool | inBox (const double l[3], const double u[3]) const |
test whether molecule is inside a cuboid region More... | |
Static Public Member Functions | |
static std::string | getWriteFormat () |
![]() | |
static std::array< vcp_real_calc, 3 > | convert_double_to_vcp_real_calc (const std::array< double, 3 > &v) |
static std::string | getWriteFormat () |
Protected Member Functions | |
void | calcFM_site (const std::array< double, 3 > &d, const std::array< double, 3 > &F) |
Protected Attributes | |
Component * | _component |
double | _r [3] |
double | _F [3] |
double | _v [3] |
Quaternion | _q |
double | _M [3] |
double | _L [3] |
double | _Vi [3] |
unsigned long | _id |
double | _m |
double | _I [3] {0.,0.,0.} |
double | _invI [3] {0.,0.,0.} |
CellDataSoA * | _soa |
unsigned | _soa_index_lj |
unsigned | _soa_index_c |
unsigned | _soa_index_d |
unsigned | _soa_index_q |
FullMolecule modeled as LJ sphere with point polarities.
|
overridevirtual |
In almost all cases, molecule's caches are stored in SoAs. In some rare instances (e.g. ParticleContainer::getEnergy()) a molecule should rather better exist alone and not be part of a particleCell. This function allocates a new SoA. Remember to release it when no longer necessary!
Implements MoleculeInterface.
|
overridevirtual |
calculate forces and moments for already given site forces
Implements MoleculeInterface.
|
protected |
calculate forces and moments for already given site forces, for this precise site
|
overridevirtual |
Calculate twice the translational and rotational kinetic energies.
[out] | summv2 | twice the translational kinetic energy ![]() |
[out] | sumIw2 | twice the rotational kinetic energy ![]() |
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
perform data consistency check for the molecule (only debug mode)
catches NaN values and missing data
Implements MoleculeInterface.
|
overridevirtual |
clear forces and moments
Implements MoleculeInterface.
|
inlineoverridevirtual |
return pointer to component to which the molecule belongs
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
get coordinate of the rotatational speed
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
inline |
Calculate the difference vector and return the square (euclidean) distance.
molecule2 | molecule to which the distance shall be calculated |
|
inlineoverridevirtual |
get coordinate of current force onto molecule
Implements MoleculeInterface.
|
inlineoverridevirtual |
calculate and return the square force
Reimplemented from MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
get component lookUpID
Reimplemented from MoleculeInterface.
|
inlineoverridevirtual |
get the moment of inertia of a particle
Implements MoleculeInterface.
|
inlineoverridevirtual |
get molecule ID
Implements MoleculeInterface.
|
static |
|
inlineoverridevirtual |
calculate and return the square angular momentum
Reimplemented from MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
get coordinate of the current angular momentum onto molecule
Implements MoleculeInterface.
|
inlineoverridevirtual |
calculate and return the square torque
Reimplemented from MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
get molecule's mass
Reimplemented from MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
get number of sites
Implements MoleculeInterface.
|
inlineoverridevirtual |
get molecule's orientation
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
get position coordinate
Implements MoleculeInterface.
|
overridevirtual |
See above comment.
Implements MoleculeInterface.
|
inlineoverridevirtual |
set the molecule's component
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
set molecule ID
Implements MoleculeInterface.
|
inlineoverridevirtual |
|
inlineoverridevirtual |
set molecule's orientation
Implements MoleculeInterface.
|
inlineoverridevirtual |
set position coordinate
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
set velocity
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
get the total object memory size, together with all its members \Note You can retrieve the size of the molecule class itself simply with the sizeof()-operator.
Implements MoleculeInterface.
|
inlineoverridevirtual |
return total kinetic energy of the molecule
Reimplemented from MoleculeInterface.
|
overridevirtual |
return the rotational energy of the molecule
Implements MoleculeInterface.
|
overridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
return the translational energy of the molecule
Reimplemented from MoleculeInterface.
|
inlineoverridevirtual |
Reimplemented from MoleculeInterface.
|
overridevirtual |
second step of the leap frog integrator
Implements MoleculeInterface.
|
overridevirtual |
First step of the leap frog integrator
Implements MoleculeInterface.
|
inlineoverridevirtual |
update mass and moment of inertia by component definition
Implements MoleculeInterface.
|
inlineoverridevirtual |
get velocity coordinate
Implements MoleculeInterface.
|
inlineoverridevirtual |
calculate and return the square velocity
Reimplemented from MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
get the virial
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
inlineoverridevirtual |
Implements MoleculeInterface.
|
overridevirtual |
write information to stream
Implements MoleculeInterface.
|
overridevirtual |
write binary information to stream
Implements MoleculeInterface.
|
protected |
IDentification number of its component type
|
protected |
forces
|
protected |
Virial tensor IDentification number of that molecule
|
protected |
angular momentum
|
protected |
torsional moment
|
protected |
total mass
|
protected |
angular orientation
|
protected |
position coordinates
|
protected |
velocity