JDFTx  1.7.0
CoulombParams Struct Reference

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 CoulombcreateCoulomb (const GridInfo &gInfo, string purpose=string()) const
 Create a Coulomb object corresponding to the parameters of this class.
 
std::shared_ptr< class CoulombcreateCoulomb (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 Supercellsupercell
 Description of k-point supercell for exchange.
 
bool computeStress
 Whether stress calculation will be required (Isolated and Wire need extra initialization)
 

Detailed Description

Parameters controlling Coulomb interactions.

Member Enumeration Documentation

◆ ExchangeRegularization

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].

◆ Geometry

Truncation geometry.

Enumerator
Periodic 

Fully periodic calculation (default)

Slab 

Truncated along one lattice direction, periodic in two.

Wire 

Truncated along two lattice directions, periodic in one.

Cylindrical 

Cylindrical truncation, with 1D periodicity along axis.

Isolated 

Isolated system (all directions truncated)

Spherical 

Spherical isolation in all directions.

Member Function Documentation

◆ splitEfield()

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


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