AutoPas  3.0.0
Loading...
Searching...
No Matches
Functions
ATMPotential.h File Reference
#include <tuple>
#include "autopas/utils/ArrayMath.h"
#include "autopas/utils/ConstexprMath.h"
Include dependency graph for ATMPotential.h:

Go to the source code of this file.

Functions

constexpr double calculateATMPotential (const std::array< double, 3 > &posI, const std::array< double, 3 > &posJ, const std::array< double, 3 > &posK, double cutoff, double nu)
 Calculates the potential energy between particles i, j and k using the Axilrod Teller Muto potential.
 
constexpr std::array< std::array< double, 3 >, 3 > calculateATMForce (const std::array< double, 3 > &posI, const std::array< double, 3 > &posJ, const std::array< double, 3 > &posK, double cutoff, double nu)
 Calculates the forces exerted on three particles using the Axilrod-Teller-Muto potential.
 
constexpr std::array< std::array< double, 3 >, 3 > calculateATMVirials (const std::array< double, 3 > &posI, const std::array< double, 3 > &posJ, const std::array< double, 3 > &posK, double cutoff, double nu)
 Calculates the virial between three particles i,j,k from the Axilrod-Teller-Muto potential.
 
constexpr double calculateATMVirialTotal (const std::array< double, 3 > &posI, const std::array< double, 3 > &posJ, const std::array< double, 3 > &posK, double cutoff, double nu)
 Calculates the sum of all components of the virial between particle i, j, k using the Axilrod-Teller-Muto potential.
 
constexpr std::array< double, 3 > calculateATMVirialTotalPerParticle (const std::array< double, 3 > &posI, const std::array< double, 3 > &posJ, const std::array< double, 3 > &posK, double cutoff, double nu)
 Returns the sum of all components of the virial for each particle i, j, k individually using the Axilrod-Teller-Muto potential.
 

Detailed Description

Author
muehlhaeusser
Date
29.08.23

A simple reference implementation of the axilrod teller muto potential to calculate expected forces

Function Documentation

◆ calculateATMForce()

constexpr std::array< std::array< double, 3 >, 3 > calculateATMForce ( const std::array< double, 3 > &  posI,
const std::array< double, 3 > &  posJ,
const std::array< double, 3 > &  posK,
double  cutoff,
double  nu 
)
constexpr

Calculates the forces exerted on three particles using the Axilrod-Teller-Muto potential.

Parameters
posIcoordinate of the first particle
posJcoordinate of the second particle
posKcoordinate of the third particle
cutoffthe cutoff distance in which we consider interactions
nuAxilrod-Teller-Muto Factor
Returns
The forces exerted on particle i, particle j, particle k

◆ calculateATMPotential()

constexpr double calculateATMPotential ( const std::array< double, 3 > &  posI,
const std::array< double, 3 > &  posJ,
const std::array< double, 3 > &  posK,
double  cutoff,
double  nu 
)
constexpr

Calculates the potential energy between particles i, j and k using the Axilrod Teller Muto potential.

Here we use the original formula with trigonometric functions.

Parameters
posIcoordinate of the first particle
posJcoordinate of the second particle
posKcoordinate of the third particle
cutoffthe cutoff distance in which we consider interactions
nunu value for particles
Returns
potential energy

◆ calculateATMVirials()

constexpr std::array< std::array< double, 3 >, 3 > calculateATMVirials ( const std::array< double, 3 > &  posI,
const std::array< double, 3 > &  posJ,
const std::array< double, 3 > &  posK,
double  cutoff,
double  nu 
)
constexpr

Calculates the virial between three particles i,j,k from the Axilrod-Teller-Muto potential.

Parameters
posIcoordinate of the first particle
posJcoordinate of the second particle
posKcoordinate of the third particle
cutoffthe cutoff distance in which we consider interactions
nuAxilrod-Teller-Muto Factor
Returns
virial

◆ calculateATMVirialTotal()

constexpr double calculateATMVirialTotal ( const std::array< double, 3 > &  posI,
const std::array< double, 3 > &  posJ,
const std::array< double, 3 > &  posK,
double  cutoff,
double  nu 
)
constexpr

Calculates the sum of all components of the virial between particle i, j, k using the Axilrod-Teller-Muto potential.

Parameters
posIcoordinate of the first particle
posJcoordinate of the second particle
posKcoordinate of the third particle
cutoffthe cutoff distance in which we consider interactions
nuAxilrod-Teller-Muto Factor
Returns
sum of all three components of the virial vector

◆ calculateATMVirialTotalPerParticle()

constexpr std::array< double, 3 > calculateATMVirialTotalPerParticle ( const std::array< double, 3 > &  posI,
const std::array< double, 3 > &  posJ,
const std::array< double, 3 > &  posK,
double  cutoff,
double  nu 
)
constexpr

Returns the sum of all components of the virial for each particle i, j, k individually using the Axilrod-Teller-Muto potential.

Parameters
posIcoordinate of the first particle
posJcoordinate of the second particle
posKcoordinate of the third particle
cutoffthe cutoff distance in which we consider interactions
nuAxilrod-Teller-Muto Factor
Returns
sum of all three components of the virial vector