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

Go to the source code of this file.

Functions

constexpr double calculateATPotential (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 potential.
 
constexpr std::array< std::array< double, 3 >, 3 > calculateATForce (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 potential.
 
constexpr std::array< std::array< double, 3 >, 3 > calculateATVirials (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 potential.
 
constexpr double calculateATVirialTotal (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 potential.
 
constexpr std::array< double, 3 > calculateATVirialTotalPerParticle (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 potential.
 

Detailed Description

Author
muehlhaeusser
Date
29.08.23

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

Function Documentation

◆ calculateATForce()

constexpr std::array< std::array< double, 3 >, 3 > calculateATForce ( 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 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 Factor
Returns
The forces exerted on particle i, particle j, particle k

◆ calculateATPotential()

constexpr double calculateATPotential ( 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 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

◆ calculateATVirials()

constexpr std::array< std::array< double, 3 >, 3 > calculateATVirials ( 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 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 Factor
Returns
virial

◆ calculateATVirialTotal()

constexpr double calculateATVirialTotal ( 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 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 Factor
Returns
sum of all three components of the virial vector

◆ calculateATVirialTotalPerParticle()

constexpr std::array< double, 3 > calculateATVirialTotalPerParticle ( 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 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 Factor
Returns
sum of all three components of the virial vector