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 > &psi, 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