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

Public Member Functions

virtual unsigned long getID () const =0
 
virtual void setid (unsigned long id)=0
 
virtual void setComponent (Component *component)=0
 
virtual void setr (unsigned short d, double r)=0
 
virtual void setv (unsigned short d, double v)=0
 
virtual void setF (unsigned short d, double F)=0
 
unsigned int componentid () const
 
virtual Componentcomponent () const =0
 
virtual unsigned getComponentLookUpID () const
 
virtual double r (unsigned short d) const =0
 
std::array< double, 3 > r_arr () const
 
virtual double v (unsigned short d) const =0
 
std::array< double, 3 > v_arr () const
 
virtual double mass () const
 
virtual double F (unsigned short d) const =0
 
virtual std::array< double, 3 > F_arr ()
 
virtual std::array< double, 3 > M_arr ()
 
virtual std::array< double, 3 > Vi_arr ()
 
virtual const Quaternionq () const =0
 
virtual void setq (Quaternion q)=0
 
virtual double D (unsigned short d) const =0
 
std::array< double, 3 > D_arr () const
 
virtual double M (unsigned short d) const =0
 
virtual double Vi (unsigned short d) const =0
 
virtual void setD (unsigned short d, double D)=0
 
virtual void move (int d, double dr)=0
 
virtual double getI (unsigned short d) const =0
 
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_rot ()=0
 
virtual double U_rot_2 ()=0
 
virtual double U_kin ()
 
virtual void updateMassInertia ()=0
 
virtual void setupSoACache (CellDataSoABase *const s, unsigned iLJ, unsigned iC, unsigned iD, unsigned iQ)=0
 
virtual void setSoA (CellDataSoABase *const s)=0
 
virtual void setStartIndexSoA_LJ (unsigned i)=0
 
virtual void setStartIndexSoA_C (unsigned i)=0
 
virtual void setStartIndexSoA_D (unsigned i)=0
 
virtual void setStartIndexSoA_Q (unsigned i)=0
 
virtual unsigned int numSites () const =0
 
virtual unsigned int numOrientedSites () const =0
 
virtual unsigned int numLJcenters () const =0
 
virtual unsigned int numCharges () const =0
 
virtual unsigned int numDipoles () const =0
 
virtual unsigned int numQuadrupoles () const =0
 
virtual std::array< double, 3 > site_d (unsigned int i) const =0
 
virtual std::array< double, 3 > ljcenter_d (unsigned int i) const =0
 
virtual std::array< double, 3 > charge_d (unsigned int i) const =0
 
virtual std::array< double, 3 > dipole_d (unsigned int i) const =0
 
virtual std::array< double, 3 > quadrupole_d (unsigned int i) const =0
 
virtual std::array< double, 3 > site_d_abs (unsigned int i) const =0
 
virtual std::array< double, 3 > ljcenter_d_abs (unsigned int i) const =0
 
virtual std::array< double, 3 > charge_d_abs (unsigned int i) const =0
 
virtual std::array< double, 3 > dipole_d_abs (unsigned int i) const =0
 
virtual std::array< double, 3 > quadrupole_d_abs (unsigned int i) const =0
 
virtual std::array< double, 3 > dipole_e (unsigned int i) const =0
 
virtual std::array< double, 3 > quadrupole_e (unsigned int i) const =0
 
virtual std::array< double, 3 > site_F (unsigned int i) const =0
 
virtual std::array< double, 3 > ljcenter_F (unsigned int i) const =0
 
virtual std::array< double, 3 > charge_F (unsigned int i) const =0
 
virtual std::array< double, 3 > dipole_F (unsigned int i) const =0
 
virtual std::array< double, 3 > quadrupole_F (unsigned int i) const =0
 
virtual void normalizeQuaternion ()=0
 
virtual std::array< double, 3 > computeLJcenter_d (unsigned int i) const =0
 
virtual std::array< double, 3 > computeCharge_d (unsigned int i) const =0
 
virtual std::array< double, 3 > computeDipole_d (unsigned int i) const =0
 
virtual std::array< double, 3 > computeQuadrupole_d (unsigned int i) const =0
 
virtual std::array< double, 3 > computeDipole_e (unsigned int i) const =0
 
virtual std::array< double, 3 > computeQuadrupole_e (unsigned int i) const =0
 
virtual unsigned long totalMemsize () const =0
 
double dist2 (const MoleculeInterface &molecule2, double dr[3]) const
 
double orientationAngle (const MoleculeInterface &molecule2, double dr[3], double d2) const
 
virtual void setF (double F[3])=0
 
virtual void setM (double M[3])=0
 
virtual void setVi (double Vi[3])=0
 
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)
 
virtual void Fadd (const double a[])=0
 
virtual void Madd (const double a[])=0
 
virtual void Viadd (const double a[])=0
 
virtual void vadd (const double ax, const double ay, const double az)=0
 
virtual void vsub (const double ax, const double ay, const double az)=0
 
virtual void Fljcenteradd (unsigned int i, double a[])=0
 
virtual void Fljcentersub (unsigned int i, double a[])=0
 
virtual void Fchargeadd (unsigned int i, double a[])=0
 
virtual void Fchargesub (unsigned int i, double a[])=0
 
virtual void Fdipoleadd (unsigned int i, double a[])=0
 
virtual void Fdipolesub (unsigned int i, double a[])=0
 
virtual void Fquadrupoleadd (unsigned int i, double a[])=0
 
virtual void Fquadrupolesub (unsigned int i, double a[])=0
 
virtual void upd_preF (double dt)=0
 
virtual void upd_postF (double dt_halve, double &summv2, double &sumIw2)=0
 
void ee_upd_preF (double dt)
 
void ee_upd_postF (double dt, double &summv2)
 
virtual void calculate_mv2_Iw2 (double &summv2, double &sumIw2)=0
 
virtual void calculate_mv2_Iw2 (double &summv2, double &sumIw2, double offx, double offy, double offz)=0
 
virtual void write (std::ostream &ostrm) const =0
 
virtual void writeBinary (std::ostream &ostrm) const =0
 
virtual void clearFM ()=0
 
virtual void calcFM ()=0
 
virtual void check (unsigned long id)=0
 
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...
 
virtual void buildOwnSoA ()=0
 
virtual void releaseOwnSoA ()=0
 

Static Public Member Functions

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()

virtual void MoleculeInterface::buildOwnSoA ( )
pure virtual

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!

Implemented in AutoPasSimpleMolecule, FullMolecule, and MoleculeRMM.

◆ calcFM()

virtual void MoleculeInterface::calcFM ( )
pure virtual

Implemented in FullMolecule.

◆ calculate_mv2_Iw2()

virtual void MoleculeInterface::calculate_mv2_Iw2 ( double &  summv2,
double &  sumIw2 
)
pure virtual

Implemented in FullMolecule.

◆ check()

virtual void MoleculeInterface::check ( unsigned long  id)
pure virtual

Implemented in FullMolecule.

◆ clearFM()

virtual void MoleculeInterface::clearFM ( )
pure virtual

Implemented in FullMolecule.

◆ component()

virtual Component* MoleculeInterface::component ( ) const
pure virtual

Implemented in FullMolecule.

◆ D()

virtual double MoleculeInterface::D ( unsigned short  d) const
pure virtual

Implemented in FullMolecule.

◆ F()

virtual double MoleculeInterface::F ( unsigned short  d) const
pure virtual

Implemented in FullMolecule.

◆ F2()

virtual double MoleculeInterface::F2 ( ) const
inlinevirtual

Reimplemented in FullMolecule.

◆ getComponentLookUpID()

virtual unsigned MoleculeInterface::getComponentLookUpID ( ) const
inlinevirtual

Reimplemented in FullMolecule.

◆ getI()

virtual double MoleculeInterface::getI ( unsigned short  d) const
pure virtual

Implemented in FullMolecule.

◆ getID()

virtual unsigned long MoleculeInterface::getID ( ) const
pure virtual

Implemented in FullMolecule.

◆ inBox()

virtual bool MoleculeInterface::inBox ( const double  l[3],
const double  u[3] 
) const
inlinevirtual

test whether molecule is inside a cuboid region

Parameters
llower left front corner of cube (equality allowed)
uupper right back corner of cube (equality not allowed)
Returns
true if molecule is contained in the box, false otherwise

Reimplemented in AutoPasSimpleMolecule.

◆ isLessThan()

bool MoleculeInterface::isLessThan ( const MoleculeInterface m2) const

find out whether m1 is before m2 (in some global ordering)

NOTE: Vectorized force calculation doesn't use this anymore

Compares this molecule to m2 based on their coordinates.

Returns
true if this molecule is smaller than m2 (according to the order induced by the coordinates (z,y,x)

At the boundary between two processes (if used in parallel mode), the forces for pairs which cross the boundary are calculated twice (once by each proc who owns one of the particles). But the contribution to macroscopic value must be counted only once, which is done by the process who owns the "first" particle. As order criterion, the spacial position is used int this method. The particles with lower x-coordinate is first (if equal, then y- or z-coordinate). For pairs which are completely on one process, the first particle can be determined from the cell structure. But for pairs on different procs, the corresponding cell discretisations might be different as well, and therefore the cell structure must not be used to determine the order.

◆ L2()

virtual double MoleculeInterface::L2 ( ) const
inlinevirtual

Reimplemented in FullMolecule.

◆ M()

virtual double MoleculeInterface::M ( unsigned short  d) const
pure virtual

Implemented in FullMolecule.

◆ M2()

virtual double MoleculeInterface::M2 ( ) const
inlinevirtual

Reimplemented in FullMolecule.

◆ mass()

virtual double MoleculeInterface::mass ( ) const
inlinevirtual

Reimplemented in FullMolecule.

◆ numSites()

virtual unsigned int MoleculeInterface::numSites ( ) const
pure virtual

Implemented in FullMolecule.

◆ q()

virtual const Quaternion& MoleculeInterface::q ( ) const
pure virtual

Implemented in FullMolecule.

◆ r()

virtual double MoleculeInterface::r ( unsigned short  d) const
pure virtual

Implemented in FullMolecule.

◆ releaseOwnSoA()

virtual void MoleculeInterface::releaseOwnSoA ( )
pure virtual

See above comment.

Implemented in AutoPasSimpleMolecule, FullMolecule, and MoleculeRMM.

◆ setComponent()

virtual void MoleculeInterface::setComponent ( Component component)
pure virtual

Implemented in FullMolecule.

◆ setF()

virtual void MoleculeInterface::setF ( double  F[3])
pure virtual

Implemented in FullMolecule.

◆ setid()

virtual void MoleculeInterface::setid ( unsigned long  id)
pure virtual

Implemented in FullMolecule.

◆ setM()

virtual void MoleculeInterface::setM ( double  M[3])
pure virtual

Implemented in FullMolecule.

◆ setq()

virtual void MoleculeInterface::setq ( Quaternion  q)
pure virtual

Implemented in FullMolecule.

◆ setr()

virtual void MoleculeInterface::setr ( unsigned short  d,
double  r 
)
pure virtual

Implemented in FullMolecule.

◆ setv()

virtual void MoleculeInterface::setv ( unsigned short  d,
double  v 
)
pure virtual

Implemented in FullMolecule.

◆ totalMemsize()

virtual unsigned long MoleculeInterface::totalMemsize ( ) const
pure virtual

Implemented in FullMolecule.

◆ U_kin()

virtual double MoleculeInterface::U_kin ( )
inlinevirtual

Reimplemented in FullMolecule.

◆ U_rot()

virtual double MoleculeInterface::U_rot ( )
pure virtual

Implemented in FullMolecule.

◆ U_trans()

virtual double MoleculeInterface::U_trans ( ) const
inlinevirtual

Reimplemented in FullMolecule.

◆ upd_postF()

virtual void MoleculeInterface::upd_postF ( double  dt_halve,
double &  summv2,
double &  sumIw2 
)
pure virtual

Implemented in FullMolecule.

◆ upd_preF()

virtual void MoleculeInterface::upd_preF ( double  dt)
pure virtual

Implemented in FullMolecule.

◆ updateMassInertia()

virtual void MoleculeInterface::updateMassInertia ( )
pure virtual

Implemented in FullMolecule.

◆ v()

virtual double MoleculeInterface::v ( unsigned short  d) const
pure virtual

Implemented in FullMolecule.

◆ v2()

virtual double MoleculeInterface::v2 ( ) const
inlinevirtual

Reimplemented in FullMolecule.

◆ Vi()

virtual double MoleculeInterface::Vi ( unsigned short  d) const
pure virtual

Implemented in FullMolecule.

◆ write()

virtual void MoleculeInterface::write ( std::ostream &  ostrm) const
pure virtual

Implemented in FullMolecule.

◆ writeBinary()

virtual void MoleculeInterface::writeBinary ( std::ostream &  ostrm) const
pure virtual

Implemented in FullMolecule.


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