Parameters controlling Coulomb interactions. More...
#include <Coulomb.h>
Public Types | |
enum | Geometry { Periodic , Slab , Wire , Cylindrical , Isolated , Spherical } |
Truncation geometry. More... | |
enum | ExchangeRegularization { None , AuxiliaryFunction , ProbeChargeEwald , SphericalTruncated , WignerSeitzTruncated } |
Regularization method for G=0 singularities in exchange. More... | |
Public Member Functions | |
std::shared_ptr< class Coulomb > | createCoulomb (const GridInfo &gInfo, string purpose=string()) const |
Create a Coulomb object corresponding to the parameters of this class. | |
std::shared_ptr< class Coulomb > | createCoulomb (const GridInfo &gInfo, const std::shared_ptr< GridInfo > gInfoWfns, std::shared_ptr< class Coulomb > &coulombWfns) const |
Create one or two Coulomb objects as needed, based on whether a separate wave-function grid gInfoWfns exists. | |
void | recreateCoulomb (const GridInfo &gInfo, std::shared_ptr< class Coulomb > &coulomb, string purpose=string()) const |
Re-create a Coulomb object, keeping pointers intact (using placement new) if non-null. | |
void | recreateCoulomb (const GridInfo &gInfo, const std::shared_ptr< GridInfo > gInfoWfns, std::shared_ptr< class Coulomb > &coulomb, std::shared_ptr< class Coulomb > &coulombWfns) const |
Re-create one or two Coulomb objects as needed, keeping pointers intact (using placement new) if non-null. | |
vector3< bool > | isTruncated () const |
Get a list of which directions are truncated: | |
void | splitEfield (const matrix3<> &R, vector3<> &RT_Efield_ramp, vector3<> &RT_Efield_wave) const |
Public Attributes | |
Geometry | geometry |
Truncation geometry. | |
int | iDir |
Truncated lattice direction for Slab or periodic direction for Wire. | |
double | Rc |
Truncation radius for cylindrical / spherical modes (0 => in-radius of Wigner-Seitz cell) | |
double | ionMargin |
margin around ions when checking localization constraints | |
bool | embed |
whether to embed in double-sized box (along truncated directions) to compute Coulomb interactions | |
vector3 | embedCenter |
'center' of the system, when it is embedded into the larger box (in lattice coordinates) | |
bool | embedFluidMode |
if true, don't truncate, just evaluate coulomb interactions in the larger box (fluid screening does the image separation instead) | |
vector3 | Efield |
electric field (in Cartesian coordinates, atomic units [Eh/e/a0]) | |
ExchangeRegularization | exchangeRegularization |
exchange regularization method | |
std::set< double > | omegaSet |
set of exchange erf-screening parameters | |
std::shared_ptr< struct Supercell > | supercell |
Description of k-point supercell for exchange. | |
bool | computeStress |
Whether stress calculation will be required (Isolated and Wire need extra initialization) | |
Parameters controlling Coulomb interactions.
Regularization method for G=0 singularities in exchange.
Enumerator | |
---|---|
None | No regularization (3D periodic or non-periodic systems only) |
AuxiliaryFunction | Auxiliary function method (3D periodic systems only) [4]. |
ProbeChargeEwald | Ewald sum on a probe charge per unit cell (3D/2D/1D periodic systems) |
SphericalTruncated | Wigner-Seitz volume spherical truncation [29]. |
WignerSeitzTruncated | Wigner-Seitz cell truncation [30]. |
Truncation geometry.
void CoulombParams::splitEfield | ( | const matrix3<> & | R, |
vector3<> & | RT_Efield_ramp, | ||
vector3<> & | RT_Efield_wave | ||
) | const |
Get electric field in contravariant lattice coordinates, split into ramp (truncated directions) and wave (periodic directions) components