JDFTx  1.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
IonInfo Class Reference

Container class for ionic system: collection of species, each with several atoms. More...

#include <IonInfo.h>

Public Types

enum  IonWidthMethod { IonWidthEcut, IonWidthFFTbox, IonWidthManual }
 Method for determining ion charge width. More...
 

Public Member Functions

void setup (const Everything &)
 
void printPositions (FILE *) const
 
bool checkPositions () const
 check for overlapping atoms, return true if okay
 
double getZtot () const
 get total Z of all species and atoms
 
void update (class Energies &)
 Update Vlocps, rhoIon, nChargeball, nCore and the energies dependent only on ionic positions.
 
double ionicEnergyAndGrad (IonicGradient &forces) const
 Return the total (free) energy and calculate the ionic gradient (forces)
 
double EnlAndGrad (const QuantumNumber &qnum, const diagMatrix &Fq, const std::vector< matrix > &VdagCq, std::vector< matrix > &HVdagCq) const
 
void augmentOverlap (const ColumnBundle &Cq, ColumnBundle &OCq, std::vector< matrix > *VdagCq=0) const
 Accumulate pseudopotential dependent contribution to the overlap in OCq.
 
void augmentDensityInit () const
 initialize density augmentation
 
void augmentDensitySpherical (const QuantumNumber &qnum, const diagMatrix &Fq, const std::vector< matrix > &VdagCq) const
 calculate density augmentation in spherical functions
 
void augmentDensityGrid (ScalarFieldArray &n) const
 propagate from spherical functions to grid
 
void augmentDensityGridGrad (const ScalarFieldArray &E_n, IonicGradient *forces=0) const
 propagate grid gradients to spherical functions
 
void augmentDensitySphericalGrad (const QuantumNumber &qnum, const std::vector< matrix > &VdagCq, std::vector< matrix > &HVdagCq) const
 propagate spherical function gradients to wavefunctions
 
void project (const ColumnBundle &Cq, std::vector< matrix > &VdagCq, matrix *rotExisting=0) const
 
void projectGrad (const std::vector< matrix > &HVdagCq, const ColumnBundle &Cq, ColumnBundle &HCq) const
 
size_t rhoAtom_nMatrices () const
 Compute U corrections (DFT+U in the simplified rotationally-invariant scheme [Dudarev et al, Phys. Rev. B 57, 1505]) More...
 
void rhoAtom_initZero (std::vector< matrix > &rhoAtom) const
 initialize matrices of appropriate size to zero
 
void rhoAtom_calc (const std::vector< diagMatrix > &F, const std::vector< ColumnBundle > &C, std::vector< matrix > &rhoAtom) const
 compute atomic density matrices
 
double rhoAtom_computeU (const std::vector< matrix > &rhoAtom, std::vector< matrix > &U_rhoAtom) const
 compute U energy and gradient w.r.t atomic density matrices
 
void rhoAtom_grad (const ColumnBundle &Cq, const std::vector< matrix > &U_rhoAtom, ColumnBundle &HCq) const
 propagate U_rhoAtom to wavefunction gradient (per k-point to enable band structure)
 
void rhoAtom_forces (const std::vector< diagMatrix > &F, const std::vector< ColumnBundle > &C, const std::vector< matrix > &U_rhoAtom, IonicGradient &forces) const
 propagate U_rhoAtom to forces
 
void rhoAtom_getV (const ColumnBundle &Cq, const std::vector< matrix > &U_rhoAtom, std::vector< ColumnBundle > &Opsi, std::vector< matrix > &M) const
 get DFT+U Hamiltonian basis (atomic orbitals) and matrices
 
matrix rHcommutator (const ColumnBundle &Y, int iDir, const matrix &YdagHY) const
 Expectation value of [r_iDir,H] = D_iDir + nonlocal corrections.
 
int nAtomicOrbitals () const
 Get total number of atomic orbitals.
 
ColumnBundle getAtomicOrbitals (int q, bool applyO, int extraCols=0) const
 Get all atomic orbitals of a given state number q, optionally with operator O pre-applied (with room for extra columns if specified)
 

Public Attributes

std::vector< std::shared_ptr
< SpeciesInfo > > 
species
 list of ionic species
 
std::vector< stringpspFilenamePatterns
 list of wildcards for pseudopotential sets
 
CoordsType coordsType
 coordinate system for ionic positions etc.
 
ForcesOutputCoords forcesOutputCoords
 coordinate system to print forces in
 
coreOverlapCheck coreOverlapCondition
 
bool vdWenable
 Check method used for determining whether pseudopotential cores overlap. More...
 
double vdWscale
 If non-zero, override the default scale parameter.
 
IonicGradient forces
 forces at current atomic positions
 
matrix3 stress
 stresses at current lattice geometry in Eh/a0^3 (only calculated if optimizing lattice or dumping stress)
 
ScalarFieldTilde Vlocps
 Net local pseudopotential.
 
ScalarFieldTilde rhoIon
 Total ionic charge density (with width ionWidth, used for interactions with fluid)
 
ScalarFieldTilde nChargeball
 Extra electron density around ionic cores to keep fluid out (DEPRECATED)
 
ScalarField nCore
 Core electron density for partial (nonlinear) core correction.
 
ScalarField tauCore
 Model for the KE density of the core (TF+vW applied to nCore) (used by meta-GGAs)
 
enum IonInfo::IonWidthMethod ionWidthMethod
 method for determining ion charge width
 
double ionWidth
 width for gaussian representation of nuclei
 
bool shouldPrintForceComponents
 

Detailed Description

Container class for ionic system: collection of species, each with several atoms.

Member Enumeration Documentation

Method for determining ion charge width.

Enumerator
IonWidthEcut 

determine ion width from Ecut

IonWidthFFTbox 

determine ion width from grid spacing

IonWidthManual 

manually specify the ion width

Member Function Documentation

double IonInfo::EnlAndGrad ( const QuantumNumber qnum,
const diagMatrix Fq,
const std::vector< matrix > &  VdagCq,
std::vector< matrix > &  HVdagCq 
) const

Return the non-local pseudopotential energy due to a single state. Optionally accumulate the corresponding electronic gradient in HCq and ionic gradient in forces

size_t IonInfo::rhoAtom_nMatrices ( ) const

Compute U corrections (DFT+U in the simplified rotationally-invariant scheme [Dudarev et al, Phys. Rev. B 57, 1505])

number of matrices in rhoAtom array

Member Data Documentation

bool IonInfo::vdWenable

Check method used for determining whether pseudopotential cores overlap.

whether vdW pair-potential corrections are enabled


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