ls1-MarDyn
ls1-MarDyn molecular dynamics code
Public Types | Public Member Functions | Static Public Member Functions | List of all members
MoleculeRMM Class Reference
Inheritance diagram for MoleculeRMM:
MoleculeInterface

Public Types

enum  StorageState { STORAGE_SOA = 0 , STORAGE_AOS = 1 }
 

Public Member Functions

 MoleculeRMM (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=0., double=0., double=0., double=0., double=0., double=0., double=0.)
 
 MoleculeRMM (const MoleculeRMM &other)
 
 MoleculeRMM (CellDataSoARMM *soa, size_t index)
 
unsigned long getID () const override
 
void setid (unsigned long id) override
 
void setr (unsigned short d, double r) override
 
void setv (unsigned short d, double v) override
 
void setF (unsigned short, double F) override
 
double r (unsigned short d) const override
 
double v (unsigned short d) const override
 
void setComponent (Component *component) override
 
Componentcomponent () const override
 
double F (unsigned short) const override
 
const Quaternionq () const override
 
void setq (Quaternion q) override
 
double D (unsigned short) const override
 
double M (unsigned short) const override
 
double Vi (unsigned short) const override
 
void setD (unsigned short, double) override
 
void move (int d, double dr) override
 
double getI (unsigned short) const override
 
void updateMassInertia () override
 
double U_rot () override
 
double U_rot_2 () override
 
void setupSoACache (CellDataSoABase *const s, unsigned iLJ, unsigned, unsigned, unsigned) override
 
void setSoA (CellDataSoABase *s) override
 
void setStartIndexSoA_LJ (unsigned i) override
 
void setStartIndexSoA_C (unsigned) override
 
void setStartIndexSoA_D (unsigned) override
 
void setStartIndexSoA_Q (unsigned) 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) const override
 
std::array< double, 3 > ljcenter_d (unsigned int i) const override
 
std::array< double, 3 > charge_d (unsigned int) const override
 
std::array< double, 3 > dipole_d (unsigned int) const override
 
std::array< double, 3 > quadrupole_d (unsigned int) 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) const override
 
std::array< double, 3 > dipole_d_abs (unsigned int) const override
 
std::array< double, 3 > quadrupole_d_abs (unsigned int) const override
 
std::array< double, 3 > dipole_e (unsigned int) const override
 
std::array< double, 3 > quadrupole_e (unsigned int) const override
 
std::array< double, 3 > site_F (unsigned int) const override
 
std::array< double, 3 > ljcenter_F (unsigned int) const override
 
std::array< double, 3 > charge_F (unsigned int) const override
 
std::array< double, 3 > dipole_F (unsigned int) const override
 
std::array< double, 3 > quadrupole_F (unsigned int) const override
 
void normalizeQuaternion () override
 
std::array< double, 3 > computeLJcenter_d (unsigned int) const override
 
std::array< double, 3 > computeCharge_d (unsigned int) const override
 
std::array< double, 3 > computeDipole_d (unsigned int) const override
 
std::array< double, 3 > computeQuadrupole_d (unsigned int) const override
 
std::array< double, 3 > computeDipole_e (unsigned int) const override
 
std::array< double, 3 > computeQuadrupole_e (unsigned int) const override
 
unsigned long totalMemsize () const override
 
void setF (double[3]) override
 
void setM (double[3]) override
 
void setVi (double[3]) override
 
void Fadd (const double[]) override
 
void Madd (const double[]) override
 
void Viadd (const double[]) 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, double[]) override
 
void Fljcentersub (unsigned int, double[]) override
 
void Fchargeadd (unsigned int, double[]) override
 
void Fchargesub (unsigned int, double[]) override
 
void Fdipoleadd (unsigned int, double[]) override
 
void Fdipolesub (unsigned int, double[]) override
 
void Fquadrupoleadd (unsigned int, double[]) override
 
void Fquadrupolesub (unsigned int, double[]) override
 
void upd_preF (double) override
 
void upd_postF (double, double &, double &) override
 
void calculate_mv2_Iw2 (double &summv2, double &) override
 
void calculate_mv2_Iw2 (double &summv2, double &, double offx, double offy, double offz) override
 
void write (std::ostream &) const override
 
void writeBinary (std::ostream &) const override
 
void clearFM () override
 
void calcFM () override
 
void check (unsigned long) override
 
void setStorageState (StorageState s)
 
StorageState getStorageState () const
 
void buildOwnSoA () override
 
void releaseOwnSoA () override
 
- Public Member Functions inherited from MoleculeInterface
unsigned int componentid () const
 
virtual unsigned getComponentLookUpID () const
 
std::array< double, 3 > r_arr () const
 
std::array< double, 3 > v_arr () const
 
virtual double mass () 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
 
virtual double v2 () const
 
virtual double F2 () const
 
virtual double L2 () const
 
virtual double M2 () const
 
virtual double U_trans () const
 
virtual double U_trans_2 () const
 
virtual double U_kin ()
 
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 ComponentgetStaticRMMComponent ()
 
- Static Public Member Functions inherited from MoleculeInterface
static std::array< vcp_real_calc, 3 > convert_double_to_vcp_real_calc (const std::array< double, 3 > &v)
 
static std::string getWriteFormat ()
 

Member Function Documentation

◆ buildOwnSoA()

void MoleculeRMM::buildOwnSoA ( )
inlineoverridevirtual

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.

◆ calcFM()

void MoleculeRMM::calcFM ( )
inlineoverridevirtual

Implements MoleculeInterface.

◆ calculate_mv2_Iw2() [1/2]

void MoleculeRMM::calculate_mv2_Iw2 ( double &  summv2,
double &   
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ calculate_mv2_Iw2() [2/2]

void MoleculeRMM::calculate_mv2_Iw2 ( double &  summv2,
double &  ,
double  offx,
double  offy,
double  offz 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ charge_d()

std::array<double, 3> MoleculeRMM::charge_d ( unsigned int  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ charge_d_abs()

std::array<double, 3> MoleculeRMM::charge_d_abs ( unsigned int  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ charge_F()

std::array<double, 3> MoleculeRMM::charge_F ( unsigned int  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ check()

void MoleculeRMM::check ( unsigned long  )
inlineoverridevirtual

Implements MoleculeInterface.

◆ clearFM()

void MoleculeRMM::clearFM ( )
inlineoverridevirtual

Implements MoleculeInterface.

◆ component()

Component* MoleculeRMM::component ( ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ computeCharge_d()

std::array<double, 3> MoleculeRMM::computeCharge_d ( unsigned int  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ computeDipole_d()

std::array<double, 3> MoleculeRMM::computeDipole_d ( unsigned int  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ computeDipole_e()

std::array<double, 3> MoleculeRMM::computeDipole_e ( unsigned int  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ computeLJcenter_d()

std::array<double, 3> MoleculeRMM::computeLJcenter_d ( unsigned int  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ computeQuadrupole_d()

std::array<double, 3> MoleculeRMM::computeQuadrupole_d ( unsigned int  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ computeQuadrupole_e()

std::array<double, 3> MoleculeRMM::computeQuadrupole_e ( unsigned int  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ D()

double MoleculeRMM::D ( unsigned short  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ dipole_d()

std::array<double, 3> MoleculeRMM::dipole_d ( unsigned int  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ dipole_d_abs()

std::array<double, 3> MoleculeRMM::dipole_d_abs ( unsigned int  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ dipole_e()

std::array<double, 3> MoleculeRMM::dipole_e ( unsigned int  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ dipole_F()

std::array<double, 3> MoleculeRMM::dipole_F ( unsigned int  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ F()

double MoleculeRMM::F ( unsigned short  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ Fadd()

void MoleculeRMM::Fadd ( const double  [])
inlineoverridevirtual

Implements MoleculeInterface.

◆ Fchargeadd()

void MoleculeRMM::Fchargeadd ( unsigned int  ,
double  [] 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ Fchargesub()

void MoleculeRMM::Fchargesub ( unsigned int  ,
double  [] 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ Fdipoleadd()

void MoleculeRMM::Fdipoleadd ( unsigned int  ,
double  [] 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ Fdipolesub()

void MoleculeRMM::Fdipolesub ( unsigned int  ,
double  [] 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ Fljcenteradd()

void MoleculeRMM::Fljcenteradd ( unsigned int  ,
double  [] 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ Fljcentersub()

void MoleculeRMM::Fljcentersub ( unsigned int  ,
double  [] 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ Fquadrupoleadd()

void MoleculeRMM::Fquadrupoleadd ( unsigned int  ,
double  [] 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ Fquadrupolesub()

void MoleculeRMM::Fquadrupolesub ( unsigned int  ,
double  [] 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ getI()

double MoleculeRMM::getI ( unsigned short  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ getID()

unsigned long MoleculeRMM::getID ( ) const
overridevirtual

Implements MoleculeInterface.

◆ ljcenter_d()

std::array<double, 3> MoleculeRMM::ljcenter_d ( unsigned int  i) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ ljcenter_d_abs()

std::array<double, 3> MoleculeRMM::ljcenter_d_abs ( unsigned int  i) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ ljcenter_F()

std::array<double, 3> MoleculeRMM::ljcenter_F ( unsigned int  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ M()

double MoleculeRMM::M ( unsigned short  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ Madd()

void MoleculeRMM::Madd ( const double  [])
inlineoverridevirtual

Implements MoleculeInterface.

◆ move()

void MoleculeRMM::move ( int  d,
double  dr 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ normalizeQuaternion()

void MoleculeRMM::normalizeQuaternion ( )
inlineoverridevirtual

Implements MoleculeInterface.

◆ numCharges()

unsigned int MoleculeRMM::numCharges ( ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ numDipoles()

unsigned int MoleculeRMM::numDipoles ( ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ numLJcenters()

unsigned int MoleculeRMM::numLJcenters ( ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ numOrientedSites()

unsigned int MoleculeRMM::numOrientedSites ( ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ numQuadrupoles()

unsigned int MoleculeRMM::numQuadrupoles ( ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ numSites()

unsigned int MoleculeRMM::numSites ( ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ q()

const Quaternion& MoleculeRMM::q ( ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ quadrupole_d()

std::array<double, 3> MoleculeRMM::quadrupole_d ( unsigned int  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ quadrupole_d_abs()

std::array<double, 3> MoleculeRMM::quadrupole_d_abs ( unsigned int  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ quadrupole_e()

std::array<double, 3> MoleculeRMM::quadrupole_e ( unsigned int  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ quadrupole_F()

std::array<double, 3> MoleculeRMM::quadrupole_F ( unsigned int  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ r()

double MoleculeRMM::r ( unsigned short  d) const
overridevirtual

Implements MoleculeInterface.

◆ releaseOwnSoA()

void MoleculeRMM::releaseOwnSoA ( )
inlineoverridevirtual

See above comment.

Implements MoleculeInterface.

◆ setComponent()

void MoleculeRMM::setComponent ( Component component)
inlineoverridevirtual

Implements MoleculeInterface.

◆ setD()

void MoleculeRMM::setD ( unsigned short  ,
double   
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ setF() [1/2]

void MoleculeRMM::setF ( double  [3])
inlineoverridevirtual

Implements MoleculeInterface.

◆ setF() [2/2]

void MoleculeRMM::setF ( unsigned short  ,
double  F 
)
overridevirtual

Implements MoleculeInterface.

◆ setid()

void MoleculeRMM::setid ( unsigned long  id)
overridevirtual

Implements MoleculeInterface.

◆ setM()

void MoleculeRMM::setM ( double  [3])
inlineoverridevirtual

Implements MoleculeInterface.

◆ setq()

void MoleculeRMM::setq ( Quaternion  q)
inlineoverridevirtual

Implements MoleculeInterface.

◆ setr()

void MoleculeRMM::setr ( unsigned short  d,
double  r 
)
overridevirtual

Implements MoleculeInterface.

◆ setSoA()

void MoleculeRMM::setSoA ( CellDataSoABase s)
overridevirtual

Implements MoleculeInterface.

◆ setStartIndexSoA_C()

void MoleculeRMM::setStartIndexSoA_C ( unsigned  )
inlineoverridevirtual

Implements MoleculeInterface.

◆ setStartIndexSoA_D()

void MoleculeRMM::setStartIndexSoA_D ( unsigned  )
inlineoverridevirtual

Implements MoleculeInterface.

◆ setStartIndexSoA_LJ()

void MoleculeRMM::setStartIndexSoA_LJ ( unsigned  i)
inlineoverridevirtual

Implements MoleculeInterface.

◆ setStartIndexSoA_Q()

void MoleculeRMM::setStartIndexSoA_Q ( unsigned  )
inlineoverridevirtual

Implements MoleculeInterface.

◆ setupSoACache()

void MoleculeRMM::setupSoACache ( CellDataSoABase *const  s,
unsigned  iLJ,
unsigned  ,
unsigned  ,
unsigned   
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ setv()

void MoleculeRMM::setv ( unsigned short  d,
double  v 
)
overridevirtual

Implements MoleculeInterface.

◆ setVi()

void MoleculeRMM::setVi ( double  [3])
inlineoverridevirtual

Implements MoleculeInterface.

◆ site_d()

std::array<double, 3> MoleculeRMM::site_d ( unsigned int  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ site_d_abs()

std::array<double, 3> MoleculeRMM::site_d_abs ( unsigned int  i) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ site_F()

std::array<double, 3> MoleculeRMM::site_F ( unsigned int  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ totalMemsize()

unsigned long MoleculeRMM::totalMemsize ( ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ U_rot()

double MoleculeRMM::U_rot ( )
inlineoverridevirtual

Implements MoleculeInterface.

◆ U_rot_2()

double MoleculeRMM::U_rot_2 ( )
inlineoverridevirtual

Implements MoleculeInterface.

◆ upd_postF()

void MoleculeRMM::upd_postF ( double  ,
double &  ,
double &   
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ upd_preF()

void MoleculeRMM::upd_preF ( double  )
inlineoverridevirtual

Implements MoleculeInterface.

◆ updateMassInertia()

void MoleculeRMM::updateMassInertia ( )
inlineoverridevirtual

Implements MoleculeInterface.

◆ v()

double MoleculeRMM::v ( unsigned short  d) const
overridevirtual

Implements MoleculeInterface.

◆ vadd()

void MoleculeRMM::vadd ( const double  ax,
const double  ay,
const double  az 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ Vi()

double MoleculeRMM::Vi ( unsigned short  ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ Viadd()

void MoleculeRMM::Viadd ( const double  [])
inlineoverridevirtual

Implements MoleculeInterface.

◆ vsub()

void MoleculeRMM::vsub ( const double  ax,
const double  ay,
const double  az 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ write()

void MoleculeRMM::write ( std::ostream &  ostrm) const
overridevirtual

Implements MoleculeInterface.

◆ writeBinary()

void MoleculeRMM::writeBinary ( std::ostream &  ) const
inlineoverridevirtual

Implements MoleculeInterface.


The documentation for this class was generated from the following files: