ls1-MarDyn
ls1-MarDyn molecular dynamics code
Public Types | Public Member Functions | Static Public Member Functions | List of all members
AutoPasSimpleMolecule Class Referencefinal

#include <AutoPasSimpleMolecule.h>

Inheritance diagram for AutoPasSimpleMolecule:
MoleculeInterface

Public Types

enum  AttributeNames : int {
  ptr , id , posX , posY ,
  posZ , forceX , forceY , forceZ ,
  typeId , ownershipState
}
 
using SoAArraysType = typename autopas::utils::SoAType< AutoPasSimpleMolecule *, size_t, double, double, double, double, double, double, size_t, autopas::OwnershipState >::Type
 

Public Member Functions

 AutoPasSimpleMolecule (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.)
 
 AutoPasSimpleMolecule (const AutoPasSimpleMolecule &m)=default
 
template<AttributeNames attribute>
constexpr std::tuple_element< static_cast< size_t >(attribute), SoAArraysType >::type::value_type get ()
 
template<AttributeNames attribute>
constexpr void set (typename std::tuple_element< static_cast< size_t >(attribute), SoAArraysType >::type::value_type value)
 
unsigned long getID () const override
 
void setid (unsigned long id) override
 
void setComponent (Component *component) override
 
void setr (unsigned short d, double r) override
 
void setv (unsigned short d, double v) override
 
void setF (unsigned short d, double F) override
 
Componentcomponent () const override
 
double r (unsigned short d) const override
 
double v (unsigned short d) const override
 
double F (unsigned short d) const override
 
const Quaternionq () 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
 
double U_rot () override
 
double U_rot_2 () override
 
void updateMassInertia () override
 
void setupSoACache (CellDataSoABase *const s, unsigned iLJ, unsigned iC, unsigned iD, unsigned iQ) override
 
void setSoA (CellDataSoABase *const 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
 
void setF (double F[3]) override
 
void setF (const std::array< double, 3 > &f)
 
void setM (double M[3]) override
 
void setVi (double Vi[3]) override
 
void Fadd (const double F[]) 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
 
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
 
bool inBox (const double rmin[3], const double rmax[3]) const override
 test whether molecule is inside a cuboid region More...
 
bool inBox (const std::array< double, 3 > &rmin, const std::array< double, 3 > &rmax) const
 
size_t getTypeId () const
 
- 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...
 

Static Public Member Functions

static std::string getWriteFormat ()
 
- 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 ()
 

Detailed Description

class that implements additional functions to make the molecule compatible with autopas

Member Typedef Documentation

◆ SoAArraysType

using AutoPasSimpleMolecule::SoAArraysType = typename autopas::utils::SoAType<AutoPasSimpleMolecule *, size_t , double , double , double , double , double , double , size_t , autopas::OwnershipState >::Type

The type for the SoA storage.

Note
The attribute owned is of type float but treated as a bool. This means it shall always only take values 0.0 (=false) or 1.0 (=true). The reason for this is the easier use of the value in calculations (See LJFunctor "energyFactor")

Member Enumeration Documentation

◆ AttributeNames

Enums used as ids for accessing and creating a dynamically sized SoA.

Member Function Documentation

◆ buildOwnSoA()

void AutoPasSimpleMolecule::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 AutoPasSimpleMolecule::calcFM ( )
inlineoverridevirtual

Implements MoleculeInterface.

◆ calculate_mv2_Iw2() [1/2]

void AutoPasSimpleMolecule::calculate_mv2_Iw2 ( double &  summv2,
double &  sumIw2 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ calculate_mv2_Iw2() [2/2]

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

Implements MoleculeInterface.

◆ charge_d()

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

Implements MoleculeInterface.

◆ charge_d_abs()

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

Implements MoleculeInterface.

◆ charge_F()

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

Implements MoleculeInterface.

◆ check()

void AutoPasSimpleMolecule::check ( unsigned long  id)
inlineoverridevirtual

Implements MoleculeInterface.

◆ clearFM()

void AutoPasSimpleMolecule::clearFM ( )
inlineoverridevirtual

Implements MoleculeInterface.

◆ component()

Component* AutoPasSimpleMolecule::component ( ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ computeCharge_d()

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

Implements MoleculeInterface.

◆ computeDipole_d()

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

Implements MoleculeInterface.

◆ computeDipole_e()

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

Implements MoleculeInterface.

◆ computeLJcenter_d()

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

Implements MoleculeInterface.

◆ computeQuadrupole_d()

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

Implements MoleculeInterface.

◆ computeQuadrupole_e()

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

Implements MoleculeInterface.

◆ D()

double AutoPasSimpleMolecule::D ( unsigned short  d) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ dipole_d()

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

Implements MoleculeInterface.

◆ dipole_d_abs()

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

Implements MoleculeInterface.

◆ dipole_e()

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

Implements MoleculeInterface.

◆ dipole_F()

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

Implements MoleculeInterface.

◆ F()

double AutoPasSimpleMolecule::F ( unsigned short  d) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ Fadd()

void AutoPasSimpleMolecule::Fadd ( const double  F[])
inlineoverridevirtual

Implements MoleculeInterface.

◆ Fchargeadd()

void AutoPasSimpleMolecule::Fchargeadd ( unsigned int  i,
double  a[] 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ Fchargesub()

void AutoPasSimpleMolecule::Fchargesub ( unsigned int  i,
double  a[] 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ Fdipoleadd()

void AutoPasSimpleMolecule::Fdipoleadd ( unsigned int  i,
double  a[] 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ Fdipolesub()

void AutoPasSimpleMolecule::Fdipolesub ( unsigned int  i,
double  a[] 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ Fljcenteradd()

void AutoPasSimpleMolecule::Fljcenteradd ( unsigned int  i,
double  a[] 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ Fljcentersub()

void AutoPasSimpleMolecule::Fljcentersub ( unsigned int  i,
double  a[] 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ Fquadrupoleadd()

void AutoPasSimpleMolecule::Fquadrupoleadd ( unsigned int  i,
double  a[] 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ Fquadrupolesub()

void AutoPasSimpleMolecule::Fquadrupolesub ( unsigned int  i,
double  a[] 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ get()

template<AttributeNames attribute>
constexpr std::tuple_element<static_cast<size_t>(attribute),SoAArraysType>::type::value_type AutoPasSimpleMolecule::get ( )
inlineconstexpr

Getter, which allows access to an attribute using the corresponding attribute name (defined in AttributeNames).

Template Parameters
attributeAttribute name.
Returns
Value of the requested attribute.
Note
The value of owned is return as floating point number (true = 1.0, false = 0.0).

◆ getI()

double AutoPasSimpleMolecule::getI ( unsigned short  d) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ getID()

unsigned long AutoPasSimpleMolecule::getID ( ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ inBox()

bool AutoPasSimpleMolecule::inBox ( const double  l[3],
const double  u[3] 
) const
inlineoverridevirtual

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 from MoleculeInterface.

◆ ljcenter_d()

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

Implements MoleculeInterface.

◆ ljcenter_d_abs()

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

Implements MoleculeInterface.

◆ ljcenter_F()

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

Implements MoleculeInterface.

◆ M()

double AutoPasSimpleMolecule::M ( unsigned short  d) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ Madd()

void AutoPasSimpleMolecule::Madd ( const double  a[])
inlineoverridevirtual

Implements MoleculeInterface.

◆ move()

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

Implements MoleculeInterface.

◆ normalizeQuaternion()

void AutoPasSimpleMolecule::normalizeQuaternion ( )
inlineoverridevirtual

Implements MoleculeInterface.

◆ numCharges()

unsigned int AutoPasSimpleMolecule::numCharges ( ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ numDipoles()

unsigned int AutoPasSimpleMolecule::numDipoles ( ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ numLJcenters()

unsigned int AutoPasSimpleMolecule::numLJcenters ( ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ numOrientedSites()

unsigned int AutoPasSimpleMolecule::numOrientedSites ( ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ numQuadrupoles()

unsigned int AutoPasSimpleMolecule::numQuadrupoles ( ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ numSites()

unsigned int AutoPasSimpleMolecule::numSites ( ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ q()

const Quaternion& AutoPasSimpleMolecule::q ( ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ quadrupole_d()

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

Implements MoleculeInterface.

◆ quadrupole_d_abs()

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

Implements MoleculeInterface.

◆ quadrupole_e()

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

Implements MoleculeInterface.

◆ quadrupole_F()

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

Implements MoleculeInterface.

◆ r()

double AutoPasSimpleMolecule::r ( unsigned short  d) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ releaseOwnSoA()

void AutoPasSimpleMolecule::releaseOwnSoA ( )
inlineoverridevirtual

See above comment.

Implements MoleculeInterface.

◆ set()

template<AttributeNames attribute>
constexpr void AutoPasSimpleMolecule::set ( typename std::tuple_element< static_cast< size_t >(attribute), SoAArraysType >::type::value_type  value)
inlineconstexpr

Setter, which allows set an attribute using the corresponding attribute name (defined in AttributeNames).

Template Parameters
attributeAttribute name.
Parameters
valueNew value of the requested attribute.
Note
The value of owned is extracted from a floating point number (true = 1.0, false = 0.0).

◆ setComponent()

void AutoPasSimpleMolecule::setComponent ( Component component)
inlineoverridevirtual

Implements MoleculeInterface.

◆ setD()

void AutoPasSimpleMolecule::setD ( unsigned short  d,
double  D 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ setF() [1/2]

void AutoPasSimpleMolecule::setF ( double  F[3])
inlineoverridevirtual

Implements MoleculeInterface.

◆ setF() [2/2]

void AutoPasSimpleMolecule::setF ( unsigned short  d,
double  F 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ setid()

void AutoPasSimpleMolecule::setid ( unsigned long  id)
inlineoverridevirtual

Implements MoleculeInterface.

◆ setM()

void AutoPasSimpleMolecule::setM ( double  M[3])
inlineoverridevirtual

Implements MoleculeInterface.

◆ setq()

void AutoPasSimpleMolecule::setq ( Quaternion  q)
inlineoverridevirtual

Implements MoleculeInterface.

◆ setr()

void AutoPasSimpleMolecule::setr ( unsigned short  d,
double  r 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ setSoA()

void AutoPasSimpleMolecule::setSoA ( CellDataSoABase *const  s)
inlineoverridevirtual

Implements MoleculeInterface.

◆ setStartIndexSoA_C()

void AutoPasSimpleMolecule::setStartIndexSoA_C ( unsigned  i)
inlineoverridevirtual

Implements MoleculeInterface.

◆ setStartIndexSoA_D()

void AutoPasSimpleMolecule::setStartIndexSoA_D ( unsigned  i)
inlineoverridevirtual

Implements MoleculeInterface.

◆ setStartIndexSoA_LJ()

void AutoPasSimpleMolecule::setStartIndexSoA_LJ ( unsigned  i)
inlineoverridevirtual

Implements MoleculeInterface.

◆ setStartIndexSoA_Q()

void AutoPasSimpleMolecule::setStartIndexSoA_Q ( unsigned  i)
inlineoverridevirtual

Implements MoleculeInterface.

◆ setupSoACache()

void AutoPasSimpleMolecule::setupSoACache ( CellDataSoABase *const  s,
unsigned  iLJ,
unsigned  iC,
unsigned  iD,
unsigned  iQ 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ setv()

void AutoPasSimpleMolecule::setv ( unsigned short  d,
double  v 
)
inlineoverridevirtual

Implements MoleculeInterface.

◆ setVi()

void AutoPasSimpleMolecule::setVi ( double  Vi[3])
inlineoverridevirtual

Implements MoleculeInterface.

◆ site_d()

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

Implements MoleculeInterface.

◆ site_d_abs()

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

Implements MoleculeInterface.

◆ site_F()

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

Implements MoleculeInterface.

◆ totalMemsize()

unsigned long AutoPasSimpleMolecule::totalMemsize ( ) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ U_rot()

double AutoPasSimpleMolecule::U_rot ( )
inlineoverridevirtual

Implements MoleculeInterface.

◆ U_rot_2()

double AutoPasSimpleMolecule::U_rot_2 ( )
inlineoverridevirtual

Implements MoleculeInterface.

◆ upd_postF()

void AutoPasSimpleMolecule::upd_postF ( double  dt_halve,
double &  summv2,
double &  sumIw2 
)
overridevirtual

Implements MoleculeInterface.

◆ upd_preF()

void AutoPasSimpleMolecule::upd_preF ( double  dt)
overridevirtual

Implements MoleculeInterface.

◆ updateMassInertia()

void AutoPasSimpleMolecule::updateMassInertia ( )
inlineoverridevirtual

Implements MoleculeInterface.

◆ v()

double AutoPasSimpleMolecule::v ( unsigned short  d) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ vadd()

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

Implements MoleculeInterface.

◆ Vi()

double AutoPasSimpleMolecule::Vi ( unsigned short  d) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ Viadd()

void AutoPasSimpleMolecule::Viadd ( const double  a[])
inlineoverridevirtual

Implements MoleculeInterface.

◆ vsub()

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

Implements MoleculeInterface.

◆ write()

void AutoPasSimpleMolecule::write ( std::ostream &  ostrm) const
inlineoverridevirtual

Implements MoleculeInterface.

◆ writeBinary()

void AutoPasSimpleMolecule::writeBinary ( std::ostream &  ostrm) const
inlineoverridevirtual

Implements MoleculeInterface.


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