Coulomb interaction for an isolated system (no periodicity), truncated on the Wigner-Seitz cell. More...
#include <CoulombIsolated.h>
Public Member Functions | |
CoulombIsolated (const GridInfo &gInfoOrig, const CoulombParams ¶ms) | |
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< Ewald > | createEwald (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 ¶ms) | |
void | initExchangeEval () |
Friends | |
struct | ExchangeEval |
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 CoulombParams & | params |
const GridInfo & | gInfo |
embedding grid, which is 2x larger in truncated directions if params.embed == true | |
std::shared_ptr< Ewald > | ewald |
std::map< double, std::shared_ptr< struct ExchangeEval > > | exchangeEval |
Coulomb interaction for an isolated system (no periodicity), truncated on the Wigner-Seitz cell.
|
protectedvirtual |
|
protectedvirtual |
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.