faunus
Public Member Functions | Public Attributes | Protected Member Functions | Friends | List of all members
Faunus::pairpotential::PairPotential Class Referenceabstract

Base for all pair-potentials. More...

#include <potentials_base.h>

Inheritance diagram for Faunus::pairpotential::PairPotential:
Inheritance graph
[legend]

Public Member Functions

virtual void to_json (json &) const =0
 
virtual void from_json (const json &)=0
 
virtual Point force (const Particle &a, const Particle &b, double squared_distance, const Point &b_towards_a) const
 Force on particle a due to particle b. More...
 
virtual double operator() (const Particle &particle_a, const Particle &particle_b, double squared_distance, const Point &b_towards_a) const =0
 Pair energy between two particles. More...
 

Public Attributes

std::string name
 unique name per polymorphic call; used in FunctorPotential::combinePairPotentials
 
std::string cite
 Typically a short-doi litterature reference.
 
bool isotropic = true
 true if pair-potential is independent of particle orientation
 
std::function< double(const Particle &)> selfEnergy = nullptr
 self energy of particle (kT)
 

Protected Member Functions

 PairPotential (std::string name=std::string(), std::string cite=std::string(), bool isotropic=true)
 

Friends

void from_json (const json &, PairPotential &)
 Serialize any pair potential from json.
 

Detailed Description

Base for all pair-potentials.

The selfEnergy functor is by default a nullptr. Coulombic potentials may change this to add a self-energy stemming from charges and dipoles. This term is important for for example Widom insertion and grand canonical Monte Carlo schemes.

Todo:
Self-energies should be handled by a separate interaction class and is stored here only to be able to retrieve them later on. The main reason for this is convenience as we in this way can register the self energy during processing of the pair potential input.

Member Function Documentation

◆ force()

Point Faunus::pairpotential::PairPotential::force ( const Particle a,
const Particle b,
double  squared_distance,
const Point b_towards_a 
) const
virtual

Force on particle a due to particle b.

Calculates force on particle a due to another particle, b.

Parameters
particle_aFirst particle
particle_bSecond particle
squared_distanceSquared distance, |𝐚-𝐛|²
b_towards_aDistance vector 𝐛 -> 𝐚 = 𝐚 - 𝐛
Returns
Force acting on a dur to b in units of kT/Å
Parameters
particle_aParticle a
particle_bParticle b
squared_distanceSquared norm |𝐚-𝐛|²
b_towards_aDistance vector 𝐛 -> 𝐚 = 𝐚 - 𝐛
Returns
Force on particle a due to particle b

Reimplemented in Faunus::pairpotential::CustomPairPotential, Faunus::pairpotential::Polarizability, Faunus::pairpotential::CosAttractMixed, Faunus::pairpotential::CosAttract, Faunus::pairpotential::CombinedPairPotential< T1, T2 >, Faunus::pairpotential::WeeksChandlerAndersen, Faunus::pairpotential::AshbaughHatch, and Faunus::pairpotential::LennardJones.

◆ operator()()

virtual double Faunus::pairpotential::PairPotential::operator() ( const Particle particle_a,
const Particle particle_b,
double  squared_distance,
const Point b_towards_a 
) const
pure virtual

Pair energy between two particles.

Parameters
particle_aFirst particle
particle_bSecond particle
squared_distanceSquared distance, |𝐚-𝐛|²
b_towards_aDistance vector 𝐛 -> 𝐚 = 𝐚 - 𝐛
Returns
Interaction energy in units of kT

Implemented in Faunus::pairpotential::FunctorPotential, Faunus::pairpotential::DipoleDipole, Faunus::pairpotential::Coulomb, Faunus::pairpotential::CosAttract, Faunus::pairpotential::RepulsionR3, Faunus::pairpotential::SquareWell, Faunus::pairpotential::CombinedPairPotential< T1, T2 >, and Faunus::pairpotential::HardSphere.


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