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< string > | pspFilenamePatterns |
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 |
Container class for ionic system: collection of species, each with several atoms.
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
bool IonInfo::vdWenable |
Check method used for determining whether pseudopotential cores overlap.
whether vdW pair-potential corrections are enabled