faunus
Classes | Functions | Variables
Faunus::Energy Namespace Reference

Classes

class  Bonded
 The keys of the intra map are group index and the values is a vector of BondData. More...
 
class  Confine
 Confines molecules inside geometric shapes Confine particles to a sub-region of the simulation container. More...
 
class  Constrain
 Constrain system using reaction coordinates. More...
 
class  ContainerOverlap
 Check if particles are outside the simulation container. More...
 
class  CustomExternal
 Custom external potential on molecules. More...
 
class  CustomGroupGroup
 Custom energy between pair of molecules. More...
 
class  DelayedEnergyAccumulator
 Stores a vector of particle pairs and postpones the energy evaluation until operator double() is called. More...
 
class  EnergyAccumulatorBase
 Interface for energy accumulators. More...
 
class  EnergyTerm
 All energies inherit from this class. More...
 
class  Ewald
 Ewald summation reciprocal energy. More...
 
struct  EwaldData
 Data class for Ewald k-space calculations. More...
 
class  EwaldPolicyBase
 Base class for Ewald k-space updates policies. More...
 
class  Example2D
 Oscillating energy on a single particle. More...
 
class  ExternalAkesson
 Mean field electric potential from outside rectangular simulation box. More...
 
class  ExternalPotential
 Base class for external potentials. More...
 
class  GroupCutoff
 Determines if two groups are separated beyond the cutoff distance. More...
 
class  GroupPairing
 Computes pair quantity difference for a systen perturbation. More...
 
class  GroupPairingPolicy
 Particle pairing to calculate pairẃise interaction using particles' groups internally. More...
 
class  Hamiltonian
 Aggregate and sum energy terms. More...
 
class  InstantEnergyAccumulator
 A basic accumulator which immediately computes and adds energy of a pair of particles upon addition using the PairEnergy templated class. More...
 
class  Isobaric
 Pressure term for NPT ensemble. More...
 
class  Nonbonded
 Computes change in the non-bonded energy, assuming pairwise additive energy terms. More...
 
class  NonbondedBase
 
class  NonbondedCached
 Computes non-bonded energy contribution from changed particles. More...
 
class  PairEnergy
 Provides a fast inlineable interface for non-bonded pair potential energy computation. More...
 
class  ParticleSelfEnergy
 Used to add self energies to atoms from i.e. More...
 
class  Penalty
 sum_of_energy_increments is the total change of updating the energy function. More...
 
struct  PolicyIonIon
 Ion-Ion Ewald using periodic boundary conditions (PBC) More...
 
struct  PolicyIonIonEigen
 Ion-Ion Ewald with periodic boundary conditions (PBC) using Eigen operations. More...
 
struct  PolicyIonIonIPBC
 Ion-Ion Ewald with isotropic periodic boundary conditions (IPBC) More...
 
struct  PolicyIonIonIPBCEigen
 Ion-Ion Ewald with isotropic periodic boundary conditions (IPBC) using Eigen operations. More...
 
class  SASAEnergy
 class for calculating SASA energies calculating SASA of particles based on change object every step More...
 
class  SASAEnergyReference
 class for calculating SASA energies calculating SASA of each particle every step More...
 

Functions

void to_json (json &j, const EwaldData &d)
 
 TEST_CASE ("[Faunus] Ewald - EwaldData")
 
 TEST_CASE ("[Faunus] Ewald - IonIonPolicy")
 
 TEST_CASE ("[Faunus] Ewald - IonIonPolicy Benchmarks")
 
 TEST_CASE ("[Faunus] Energy::Ewald")
 
 TEST_CASE ("Energy::Isobaric")
 
 TEST_CASE_TEMPLATE ("[Faunus] SASAEnergy_updates", EnergyTemplate, SASAEnergyReference, SASAEnergy)
 
void from_json (const json &j, GroupCutoff &cutoff)
 
void to_json (json &j, const GroupCutoff &cutoff)
 
 TEST_CASE ("[Faunus] GroupCutoff")
 
 NLOHMANN_JSON_SERIALIZE_ENUM (EwaldData::Policies, { {EwaldData::INVALID, nullptr}, {EwaldData::PBC, "PBC"}, {EwaldData::PBCEigen, "PBCEigen"}, {EwaldData::IPBC, "IPBC"}, {EwaldData::IPBCEigen, "IPBCEigen"}, }) void to_json(json &j
 
auto indexComplement (std::integral auto size, const std::ranges::range auto &range)
 Provides a complementary set of ints with respect to the iota set of a given size. More...
 
 NLOHMANN_JSON_SERIALIZE_ENUM (EnergyAccumulatorBase::Scheme, {{EnergyAccumulatorBase::Scheme::INVALID, nullptr}, {EnergyAccumulatorBase::Scheme::SERIAL, "serial"}, {EnergyAccumulatorBase::Scheme::OPENMP, "openmp"}, {EnergyAccumulatorBase::Scheme::PARALLEL, "parallel"}}) template< class T > concept RequireEnergyAccumulator
 
template<RequirePairEnergy TPairEnergy>
std::unique_ptr< EnergyAccumulatorBasecreateEnergyAccumulator (const json &j, const TPairEnergy &pair_energy, double initial_value)
 
void to_json (json &j, const EnergyTerm &base)
 Converts any energy class to json object.
 
 TEST_CASE ("[Faunus] ExternalPotential")
 
std::function< double(const Particle &)> createGouyChapmanPotential (const json &j, const Geometry::Chameleon &geo)
 
 TEST_CASE ("[Faunus] Gouy-Chapman")
 

Variables

const EwaldDatad
 
template<typename T >
concept RequirePairEnergy
 
std::function< double(const Particle &)> createGouyChapmanPotential (const json &j, const Geometry::Chameleon &)
 Returns a functor for a Gouy-Chapman electric potential. More...
 

Detailed Description

Non-bonded energy

Several classes (class templates) are used together to allow computation in change of the non-bonded energy upon a MC move.

The energy change is calculated by the Nonbonded class. It internally uses one of the pairing policies to efficiently get all pair interactions affected by the MC move (as described by the Change object).

Pairing policies allow efficient summation of pair energies over the whole system, between groups, inside a group, etc. The pairing policy is optimized for performance in a different execution environment, e.g., sequential or OMP parallelism.

Policies have direct access to the pair interaction energy functor represented by a simple PairEnergy template. Furthermore, the GroupCutoff object is provided to limit free energy computation using a cutoff distance between respective groups.

See also
Nonbonded, PairingBasePolicy, PairEnergy, GroupCutoff

Function Documentation

◆ indexComplement()

auto Faunus::Energy::indexComplement ( std::integral auto  size,
const std::ranges::range auto &  range 
)

Provides a complementary set of ints with respect to the iota set of a given size.

Remarks
It is used as a helper function for pair interactions.
Parameters
sizethe iota superset contains all integers in the range [0, size)
rangean original set of integers (must be sorted)
Returns
a set of ints complementary to the original set

Variable Documentation

◆ createGouyChapmanPotential

std::function<double(const Particle&)> Faunus::Energy::createGouyChapmanPotential(const json &j, const Geometry::Chameleon &)

Returns a functor for a Gouy-Chapman electric potential.

Gouy-Chapman equations:

\[ \rho = \sqrt{\frac{2 c_0}{\pi l_B} } \sinh ( \beta \phi_0 e / 2 ) \]

\[ \beta e \phi_0 = 2\mbox{asinh} \left ( \rho \sqrt{\frac{\pi \lambda_B} {2 c_0}} \right ) \]

\[ \Gamma_0=\tanh{ \beta \phi_0 z e / 4 } \]

where lB is the Bjerrum length, kappa the inverse Debye length, and c_0 the bulk salt concentration.

Warning
: under construction

◆ RequirePairEnergy

template<typename T >
concept Faunus::Energy::RequirePairEnergy
Initial value:
= requires(T instance) {
instance.potential(Particle(), Particle());
instance.force(Particle(), Particle());
instance.addPairPotentialSelfEnergy();
}