MRMD 0.4.0
Multi Resolution Molecular Dynamics
Loading...
Searching...
No Matches
mrmd::action::SPC Class Reference

#include <action/SPC.hpp>

Classes

struct  BondEnergy
 
struct  CalcInteractions
 

Public Member Functions

auto getEnergyLJ () const
 
auto getEnergyCoulomb () const
 
const auto & getMeanCompensationEnergy () const
 
KOKKOS_INLINE_FUNCTION void operator() (CalcInteractions, const idx_t &alpha, impl::Energy &sumEnergy) const
 Loop over molecules.
 
void enforcePositionalConstraints (data::Molecules &molecules, data::Atoms &atoms, real_t dt)
 
void enforceVelocityConstraints (data::Molecules &molecules, data::Atoms &atoms, real_t dt)
 
void applyForces (data::Molecules &molecules, HalfVerletList &verletList, data::Atoms &atoms)
 
KOKKOS_INLINE_FUNCTION void operator() (BondEnergy, const idx_t &alpha, real_t &sumEnergy) const
 
real_t calcBondEnergy (data::Molecules &molecules, data::Atoms &atoms, const real_t &harmonicPreFactor)
 
 SPC ()
 

Public Attributes

real_t sumEnergyLJ_
 
real_t sumEnergyCoulomb_
 
const real_t eqDistanceHH = eqDistanceHO * std::sqrt(2_r - 2_r * std::cos(angleHOH))
 

Static Public Attributes

static constexpr real_t massO = 15.999_r
 unit: g/mol
 
static constexpr real_t chargeO = -0.82_r
 
static constexpr real_t massH = 1.008_r
 unit: g/mol
 
static constexpr real_t chargeH = +0.41_r
 
static constexpr real_t sigma = 0.31655578901998815_r
 unit: nm
 
static constexpr real_t epsilon = 0.6501695808187486_r
 unit: kJ / mol
 
static constexpr real_t rc = 1.2_r
 unit: nm
 
static constexpr real_t alpha = 2.0_r
 unit: 1/nm
 
static constexpr real_t eqDistanceHO = 0.1_r
 unit: nm, equilibirum distance between hydrogen and oxygen
 
static constexpr real_t angleHOH = util::degToRad(109.47_r)
 unit: radians
 
static constexpr idx_t COMPENSATION_ENERGY_SAMPLING_INTERVAL = 200
 
static constexpr idx_t COMPENSATION_ENERGY_UPDATE_INTERVAL = 20000
 

Constructor & Destructor Documentation

◆ SPC()

mrmd::action::SPC::SPC ( )
inline

Member Function Documentation

◆ applyForces()

void mrmd::action::SPC::applyForces ( data::Molecules &  molecules,
HalfVerletList &  verletList,
data::Atoms &  atoms 
)
inline

◆ calcBondEnergy()

real_t mrmd::action::SPC::calcBondEnergy ( data::Molecules &  molecules,
data::Atoms &  atoms,
const real_t &  harmonicPreFactor 
)
inline

◆ enforcePositionalConstraints()

void mrmd::action::SPC::enforcePositionalConstraints ( data::Molecules &  molecules,
data::Atoms &  atoms,
real_t  dt 
)
inline

◆ enforceVelocityConstraints()

void mrmd::action::SPC::enforceVelocityConstraints ( data::Molecules &  molecules,
data::Atoms &  atoms,
real_t  dt 
)
inline

◆ getEnergyCoulomb()

auto mrmd::action::SPC::getEnergyCoulomb ( ) const
inline

◆ getEnergyLJ()

auto mrmd::action::SPC::getEnergyLJ ( ) const
inline

◆ getMeanCompensationEnergy()

const auto & mrmd::action::SPC::getMeanCompensationEnergy ( ) const
inline

◆ operator()() [1/2]

KOKKOS_INLINE_FUNCTION void mrmd::action::SPC::operator() ( BondEnergy  ,
const idx_t &  alpha,
real_t &  sumEnergy 
) const
inline

inclusive start index of atoms belonging to alpha

◆ operator()() [2/2]

KOKKOS_INLINE_FUNCTION void mrmd::action::SPC::operator() ( CalcInteractions  ,
const idx_t &  alpha,
impl::Energy &  sumEnergy 
) const
inline

Loop over molecules.

Parameters
alphafirst molecule index
sumEnergyaccumulation variable

second molecule index

inclusive start index of atoms belonging to alpha

exclusive end index of atoms belonging to alpha

inclusive start index of atoms belonging to beta

exclusive end index of atoms belonging to beta

loop over atoms

Member Data Documentation

◆ alpha

constexpr real_t mrmd::action::SPC::alpha = 2.0_r
staticconstexpr

unit: 1/nm

◆ angleHOH

constexpr real_t mrmd::action::SPC::angleHOH = util::degToRad(109.47_r)
staticconstexpr

unit: radians

◆ chargeH

constexpr real_t mrmd::action::SPC::chargeH = +0.41_r
staticconstexpr

◆ chargeO

constexpr real_t mrmd::action::SPC::chargeO = -0.82_r
staticconstexpr

◆ COMPENSATION_ENERGY_SAMPLING_INTERVAL

constexpr idx_t mrmd::action::SPC::COMPENSATION_ENERGY_SAMPLING_INTERVAL = 200
staticconstexpr

◆ COMPENSATION_ENERGY_UPDATE_INTERVAL

constexpr idx_t mrmd::action::SPC::COMPENSATION_ENERGY_UPDATE_INTERVAL = 20000
staticconstexpr

◆ epsilon

constexpr real_t mrmd::action::SPC::epsilon = 0.6501695808187486_r
staticconstexpr

unit: kJ / mol

◆ eqDistanceHH

const real_t mrmd::action::SPC::eqDistanceHH = eqDistanceHO * std::sqrt(2_r - 2_r * std::cos(angleHOH))

◆ eqDistanceHO

constexpr real_t mrmd::action::SPC::eqDistanceHO = 0.1_r
staticconstexpr

unit: nm, equilibirum distance between hydrogen and oxygen

◆ massH

constexpr real_t mrmd::action::SPC::massH = 1.008_r
staticconstexpr

unit: g/mol

◆ massO

constexpr real_t mrmd::action::SPC::massO = 15.999_r
staticconstexpr

unit: g/mol

◆ rc

constexpr real_t mrmd::action::SPC::rc = 1.2_r
staticconstexpr

unit: nm

◆ sigma

constexpr real_t mrmd::action::SPC::sigma = 0.31655578901998815_r
staticconstexpr

unit: nm

◆ sumEnergyCoulomb_

real_t mrmd::action::SPC::sumEnergyCoulomb_

◆ sumEnergyLJ_

real_t mrmd::action::SPC::sumEnergyLJ_

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