JDFTx  1.7.0
CoulombPeriodic Class Reference

Untruncated Coulomb interaction. More...

#include <CoulombPeriodic.h>

Inheritance diagram for CoulombPeriodic:

Public Member Functions

 CoulombPeriodic (const GridInfo &gInfoOrig, const CoulombParams &params)
- Public Member Functions inherited from Coulomb
ScalarFieldTilde operator() (ScalarFieldTilde &&, PointChargeMode pointChargeMode=PointChargeNone) const
ScalarFieldTilde operator() (const ScalarFieldTilde &, PointChargeMode pointChargeMode=PointChargeNone) const
 Apply Coulomb kernel (parameters same as destructible input version above)
matrix3 latticeGradient (const ScalarFieldTilde &X, const ScalarFieldTilde &Y, PointChargeMode pointChargeMode=PointChargeNone) const
 Return the lattice gradient of dot(X, O(coulomb(Y))
double energyAndGrad (std::vector< Atom > &atoms, matrix3<> *E_RRT=0) const
ScalarField getEfieldPotential () const
 Generate the potential due to the Efield (if any) (Requires embedded truncation)
complexScalarFieldTilde operator() (complexScalarFieldTilde &&, vector3<> kDiff, double omega) const
complexScalarFieldTilde operator() (const complexScalarFieldTilde &, vector3<> kDiff, double omega) const
matrix3 latticeGradient (const complexScalarFieldTilde &X, vector3<> kDiff, double omega) const
 Return the lattice gradient of exchange integral dot(X, O(coulomb(X)) for given k-point difference and screening parameter.

Protected Member Functions

ScalarFieldTilde apply (ScalarFieldTilde &&) const
std::shared_ptr< EwaldcreateEwald (matrix3<> R, size_t nAtoms) const
matrix3 getLatticeGradient (const ScalarFieldTilde &X, const ScalarFieldTilde &Y) const
 Return the lattice gradient of dot(X, O(coulomb(Y))
- Protected Member Functions inherited from Coulomb
 Coulomb (const GridInfo &gInfoOrig, const CoulombParams &params)
void initExchangeEval ()

Additional Inherited Members

- Public Types inherited from Coulomb
enum  PointChargeMode { PointChargeNone , PointChargeLeft , PointChargeRight }
 Special point-charge handling mode when using embedded truncation. More...
- Protected Attributes inherited from Coulomb
const CoulombParamsparams
const GridInfogInfo
 embedding grid, which is 2x larger in truncated directions if params.embed == true
std::shared_ptr< Ewaldewald
std::map< double, std::shared_ptr< struct ExchangeEval > > exchangeEval

Detailed Description

Untruncated Coulomb interaction.

Member Function Documentation

◆ apply()

ScalarFieldTilde CoulombPeriodic::apply ( ScalarFieldTilde &&  ) const

Apply the Coulomb operator (on optionally embedded grid) with appropriate truncation Embedding is handled in base class wrapper functions above

Implements Coulomb.

◆ createEwald()

std::shared_ptr<Ewald> CoulombPeriodic::createEwald ( matrix3<>  R,
size_t  nAtoms 
) const

Each implementation must create and return the corresponding Ewald evaluator for the supplied lattice vectors R which may correspond to a supercell of gInfo.R along the periodic directions (the truncated directions will be identical) The number of atoms may be used for choosing the optimum gaussian width sigma

Implements Coulomb.

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