faunus
Public Member Functions | List of all members
Faunus::Energy::PolicyIonIonEigen Struct Reference

Ion-Ion Ewald with periodic boundary conditions (PBC) using Eigen operations. More...

#include <energy.h>

Inheritance diagram for Faunus::Energy::PolicyIonIonEigen:
Inheritance graph
[legend]
Collaboration diagram for Faunus::Energy::PolicyIonIonEigen:
Collaboration graph
[legend]

Public Member Functions

void updateComplex (EwaldData &, const Space::GroupVector &) const override
 
double reciprocalEnergy (const EwaldData &) override
 Updates the reciprocal space terms 'Q^q' and 'A_k'. More...
 
- Public Member Functions inherited from Faunus::Energy::PolicyIonIon
void updateBox (EwaldData &d, const Point &box) const override
 Resize k-vectors according to current variables and box length.
 
void updateComplex (EwaldData &d, const Change &change, const Space::GroupVector &groups, const Space::GroupVector &oldgroups) const override
 Update subset of k vectors. Require old pointer.
 
double selfEnergy (const EwaldData &d, Change &change, Space::GroupVector &groups) override
 Self energy contribution due to a change.
 
double surfaceEnergy (const EwaldData &data, const Change &change, const Space::GroupVector &groups) override
 

Additional Inherited Members

- Static Public Member Functions inherited from Faunus::Energy::EwaldPolicyBase
static auto mapGroupsToEigen (Space::GroupVector &groups)
 Represent charges and positions using an Eigen facade (Map) More...
 
static auto mapGroupsToEigen (const Space::GroupVector &groups)
 
static std::unique_ptr< EwaldPolicyBasemakePolicy (EwaldData::Policies)
 Policy factory.
 
- Public Attributes inherited from Faunus::Energy::EwaldPolicyBase
std::string cite
 Optional reference, preferably DOI, to further information.
 

Detailed Description

Ion-Ion Ewald with periodic boundary conditions (PBC) using Eigen operations.

Warning
Will not work with Space with inactive particles (GCMC, for example)

For compilers that offer good vectorization (gcc on linux) this brings a 4-5 fold speed increase. Status on February, 2020:

Member Function Documentation

◆ reciprocalEnergy()

double Faunus::Energy::PolicyIonIonEigen::reciprocalEnergy ( const EwaldData d)
overridevirtual

Updates the reciprocal space terms 'Q^q' and 'A_k'.

See eqs. 24 and 25 in ref. for PBC Ewald, and eq. 2 in doi:10/css8 for IPBC Ewald.

Reimplemented from Faunus::Energy::PolicyIonIon.

◆ updateComplex()

void Faunus::Energy::PolicyIonIonEigen::updateComplex ( EwaldData data,
const Space::GroupVector &  groups 
) const
overridevirtual
Todo:
Add OpenMP pragma to first loop

Reimplemented from Faunus::Energy::PolicyIonIon.


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