This class is the primary interface location of all other parts of the DFT-FE code for all steps involved in obtaining the Kohn-Sham DFT ground-state solution.
More...
|
| dftClass (const MPI_Comm &mpiCommParent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const std::string &scratchFolderName, dftParameters &dftParams) |
| dftClass constructor
|
|
| ~dftClass () |
| dftClass destructor
|
|
void | set () |
| atomic system pre-processing steps.
|
|
void | init () |
| Does KSDFT problem pre-processing steps including mesh generation calls.
|
|
void | initNoRemesh (const bool updateImagesAndKPointsAndVselfBins=true, const bool checkSmearedChargeWidthsForOverlap=true, const bool useSingleAtomSolutionOverride=false, const bool isMeshDeformed=false) |
| Does KSDFT problem pre-processing steps but without remeshing.
|
|
void | run () |
| FIXME: legacy call, move to main.cc.
|
|
void | runFunctionalTest () |
|
void | writeMesh () |
| Writes inital density and mesh to file.
|
|
void | solveNoSCF () |
| compute approximation to ground-state without solving the SCF iteration
|
|
std::tuple< bool, double > | solve (const bool computeForces=true, const bool computestress=true, const bool restartGroundStateCalcFromChk=false) |
| Kohn-Sham ground-state solve using SCF iteration.
|
|
void | computeStress () |
|
void | trivialSolveForStress () |
|
void | computeOutputDensityDirectionalDerivative (const distributedCPUVec< double > &v, const distributedCPUVec< double > &vSpin0, const distributedCPUVec< double > &vSpin1, distributedCPUVec< double > &fv, distributedCPUVec< double > &fvSpin0, distributedCPUVec< double > &fvSpin1) |
|
double | computeResidualQuadData (const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &outValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &inValues, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &residualValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &JxW, const bool computeNorm) |
| Copies the residual residualValues=outValues-inValues.
|
|
double | computeResidualNodalData (const distributedCPUVec< double > &outValues, const distributedCPUVec< double > &inValues, distributedCPUVec< double > &residualValues) |
|
void | computeRhoNodalMassVector (dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &massVec) |
| Computes the diagonal mass matrix for rho nodal grid, used for nodal mixing.
|
|
void | initializeKohnShamDFTOperator (const bool initializeCublas=true) |
|
void | reInitializeKohnShamDFTOperator () |
|
void | finalizeKohnShamDFTOperator () |
|
double | getInternalEnergy () const |
|
double | getEntropicEnergy () const |
|
double | getFreeEnergy () const |
|
const distributedCPUVec< double > & | getRhoNodalOut () const |
|
const distributedCPUVec< double > & | getRhoNodalSplitOut () const |
|
double | getTotalChargeforRhoSplit () |
|
void | resetRhoNodalIn (distributedCPUVec< double > &OutDensity) |
|
virtual void | resetRhoNodalSplitIn (distributedCPUVec< double > &OutDensity) |
|
void | readkPointData () |
|
const std::vector< dealii::types::global_dof_index > & | getLocalDofIndicesReal () const |
| Get local dofs global indices real.
|
|
const std::vector< dealii::types::global_dof_index > & | getLocalDofIndicesImag () const |
| Get local dofs global indices imag.
|
|
const std::vector< dealii::types::global_dof_index > & | getLocalProcDofIndicesReal () const |
| Get local dofs local proc indices real.
|
|
const std::vector< dealii::types::global_dof_index > & | getLocalProcDofIndicesImag () const |
| Get local dofs local proc indices imag.
|
|
const dealii::MatrixFree< 3, double > & | getMatrixFreeData () const |
| Get matrix free data object.
|
|
void | updateAtomPositionsAndMoveMesh (const std::vector< dealii::Tensor< 1, 3, double > > &globalAtomsDisplacements, const double maxJacobianRatioFactor=1.25, const bool useSingleAtomSolutionsOverride=false) |
| Updates atom positions, remeshes/moves mesh and calls appropriate reinits.
|
|
void | writeDomainAndAtomCoordinates () |
| writes the current domain bounding vectors and atom coordinates to files, which are required for geometry relaxation restart
|
|
void | writeDomainAndAtomCoordinates (const std::string Path) const |
| writes the current domain bounding vectors and atom coordinates to files for structural optimization and dynamics restarts. The coordinates are stored as: 1. fractional for semi-periodic/periodic 2. Cartesian for non-periodic.
|
|
void | writeStructureEnergyForcesDataPostProcess (const std::string Path) const |
| writes atomistics data for subsequent post-processing. Related to WRITE STRUCTURE ENERGY FORCES DATA POST PROCESS input parameter.
|
|
virtual void | writeGSElectronDensity (const std::string Path) const |
| writes quadrature grid information and associated spin-up and spin-down electron-density for post-processing
|
|
const std::vector< std::vector< double > > & | getAtomLocationsCart () const |
| Gets the current atom Locations in cartesian form (origin at center of domain) from dftClass.
|
|
const std::vector< double > & | getNearestAtomDistance () const |
| Gets the nearest atom distance for each atom.
|
|
const std::vector< std::vector< double > > & | getImageAtomLocationsCart () const |
| Gets the current image atom Locations in cartesian form (origin at center of domain) from dftClass.
|
|
const std::vector< int > & | getImageAtomIDs () const |
| Gets the current image atom ids from dftClass.
|
|
const std::vector< std::vector< double > > & | getAtomLocationsFrac () const |
| Gets the current atom Locations in fractional form from dftClass (only applicable for periodic and semi-periodic BCs)
|
|
const std::vector< std::vector< double > > & | getCell () const |
| Gets the current cell lattice vectors.
|
|
double | getCellVolume () const |
| Gets the current cell volume.
|
|
const std::set< unsigned int > & | getAtomTypes () const |
| Gets the current atom types from dftClass.
|
|
const std::vector< double > & | getForceonAtoms () const |
| Gets the current atomic forces from dftClass.
|
|
const dealii::Tensor< 2, 3, double > & | getCellStress () const |
| Gets the current cell stress from dftClass.
|
|
dftParameters & | getParametersObject () const |
| Get reference to dftParameters object.
|
|
const dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > & | getEigenVectors () const |
| Get reference the memorySpace templated eigen vectors.
|
|
const dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOST > & | getEigenVectorsHost () const |
| Get reference the host eigen vectors.
|
|
const std::vector< std::vector< double > > & | getEigenValues () const |
| Get reference to the eigen values.
|
|
double | getFermiEnergy () const |
| Get the value of fermi energy.
|
|
double | getNumElectrons () const |
| Get the number of electrons.
|
|
void | setNumElectrons (unsigned int inputNumElectrons) |
|
elpaScalaManager * | getElpaScalaManager () const |
|
chebyshevOrthogonalizedSubspaceIterationSolver * | getSubspaceIterationSolverHost () |
| Get the Ptr to Chebyshev solver in host.
|
|
void | kohnShamEigenSpaceCompute (const unsigned int s, const unsigned int kPointIndex, KohnShamHamiltonianOperator< dftfe::utils::MemorySpace::HOST > &kohnShamDFTEigenOperator, elpaScalaManager &elpaScala, chebyshevOrthogonalizedSubspaceIterationSolver &subspaceIterationSolver, std::vector< double > &residualNormWaveFunctions, const bool computeResidual, const bool useMixedPrec=false, const bool isFirstScf=false) |
| Function that computes the Eigen space for the Kohn Sham operator.
|
|
void | compute_fermienergy (const std::vector< std::vector< double > > &eigenValuesInput, const double numElectronsInput) |
| Computes Fermi-energy obtained by imposing constraint on the number of electrons.
|
|
void | compute_fermienergy_purestate (const std::vector< std::vector< double > > &eigenValuesInput, const double numElectronsInput) |
| find HOMO eigenvalue for pure state
|
|
double | computeAndPrintKE (dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &kineticEnergyDensityValues) |
| Computes the kinetic energy.
|
|
KohnShamHamiltonianOperator< memorySpace > * | getOperatorClass () |
| get the Ptr to the operator class ( Kohn Sham Operator)
|
|
unsigned int | getDensityDofHandlerIndex () |
| get the index of the DoF Handler corresponding to
|
|
unsigned int | getDensityQuadratureId () |
|
const std::vector< double > & | getKPointWeights () const |
|
unsigned int | getNumEigenValues () const |
|
triangulationManager * | getTriangulationManager () |
|
const dealii::MatrixFree< 3, double > & | getMatrixFreeDataElectro () const |
|
dealii::AffineConstraints< double > * | getDensityConstraint () |
|
unsigned int | getElectroDofHandlerIndex () const |
|
unsigned int | getElectroQuadratureRhsId () const |
|
unsigned int | getElectroQuadratureAxId () const |
|
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > | getBasisOperationsHost () |
|
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, memorySpace > > | getBasisOperationsMemSpace () |
|
std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > | getBasisOperationsElectroHost () |
|
std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, memorySpace > > | getBasisOperationsElectroMemSpace () |
|
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > | getBLASWrapperMemSpace () |
|
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > | getBLASWrapperHost () |
|
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & | getDensityInValues () |
|
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & | getDensityOutValues () |
|
void | l2ProjectionQuadToNodal (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const dealii::AffineConstraints< double > &constraintMatrix, const unsigned int dofHandlerId, const unsigned int quadratureId, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, distributedCPUVec< double > &nodalField) |
| l2 projection
|
|
void | interpolateElectroNodalDataToQuadratureDataGeneral (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalField, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureGradValueData, const bool isEvaluateGradData=false) |
| interpolate nodal data to quadrature data using FEEvaluation
|
|
std::map< dealii::types::global_dof_index, double > & | getAtomNodeToChargeMap () |
| map of atom node number and atomic weight
|
|
std::map< dealii::CellId, std::vector< double > > & | getBQuadValuesAllAtoms () |
| non-intersecting smeared charges of all atoms at quad points
|
|
unsigned int | getSmearedChargeQuadratureIdElectro () |
|
const dealii::AffineConstraints< double > * | getConstraintsVectorElectro () |
|
const std::vector< std::vector< double > > & | getLocalVselfs () const |
|
const MPI_Comm & | getMPIDomain () const override |
|
const MPI_Comm & | getMPIParent () const override |
|
const MPI_Comm & | getMPIInterPool () const override |
|
const MPI_Comm & | getMPIInterBand () const override |
|
const std::map< dealii::CellId, std::vector< unsigned int > > & | getbCellNonTrivialAtomIds () const |
|
void | updatePRefinedConstraints () |
|
void | computeMultipoleMoments (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int densityQuadratureId, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoQuadValues, const std::map< dealii::CellId, std::vector< double > > *bQuadValues) |
|
const expConfiningPotential & | getConfiningPotential () const |
|
std::shared_ptr< hubbard< dataTypes::number, memorySpace > > | getHubbardClassPtr () |
| Returns the shared ptr to hubbard class.
|
|
bool | isHubbardCorrectionsUsed () |
| Function to check if hubbard corrections is being used.
|
|
void | outputWfc (const std::string outputFileName="wfcOutput") |
| write wavefunction solution fields
|
|
const std::map< dealii::CellId, std::vector< double > > & | getPseudoVLoc () const |
| return the pseudo potential field
|
|
virtual | ~dftBase () |
| This is required to correctly delete the derived class object through the base class ptr.
|
|
|
void | initImageChargesUpdateKPoints (bool flag=true) |
| generate image charges and update k point cartesian coordinates based on current lattice vectors
|
|
void | initHubbardOperator () |
| Checks if the Exc functional requires Hubbard correction and sets up the Hubbard class if required.
|
|
void | determineAtomsOfInterstPseudopotential (const std::vector< std::vector< double > > &atomCoordinates) |
|
void | projectPreviousGroundStateRho () |
| project ground state electron density from previous mesh into the new mesh to be used as initial guess for the new ground state solve
|
|
void | saveTriaInfoAndRhoNodalData () |
| save triangulation information and rho quadrature data to checkpoint file for restarts
|
|
void | loadTriaInfoAndRhoNodalData () |
| load triangulation information rho quadrature data from checkpoint file for restarted run
|
|
void | generateMPGrid () |
|
void | writeMesh (std::string meshFileName) |
|
void | generateImageCharges (const double pspCutOff, std::vector< int > &imageIds, std::vector< double > &imageCharges, std::vector< std::vector< double > > &imagePositions) |
| creates datastructures related to periodic image charges
|
|
void | createMasterChargeIdToImageIdMaps (const double pspCutOff, const std::vector< int > &imageIds, const std::vector< std::vector< double > > &imagePositions, std::vector< std::vector< int > > &globalChargeIdToImageIdMap) |
|
void | determineOrbitalFilling () |
|
void | aposterioriMeshGenerate () |
|
dataTypes::number | computeTraceXtHX (unsigned int numberWaveFunctionsEstimate) |
|
double | computeTraceXtKX (unsigned int numberWaveFunctionsEstimate) |
|
void | moveMeshToAtoms (dealii::Triangulation< 3, 3 > &triangulationMove, dealii::Triangulation< 3, 3 > &triangulationSerial, bool reuseFlag=false, bool moveSubdivided=false) |
| moves the triangulation vertices using Gaussians such that the all atoms are on triangulation vertices
|
|
void | calculateSmearedChargeWidths () |
| a
|
|
void | calculateNearestAtomDistances () |
| a
|
|
void | initUnmovedTriangulation (dealii::parallel::distributed::Triangulation< 3 > &triangulation) |
|
void | initBoundaryConditions (const bool recomputeBasisData=true, const bool meshOnlyDeformed=false, const bool vselfPerturbationUpdateForStress=false) |
|
void | initElectronicFields () |
|
void | initPseudoPotentialAll (const bool updateNonlocalSparsity=true) |
|
void | createpRefinedDofHandler (dealii::parallel::distributed::Triangulation< 3 > &triangulation) |
|
void | initpRefinedObjects (const bool recomputeBasisData, const bool meshOnlyDeformed, const bool vselfPerturbationUpdateForStress=false) |
|
void | applyMultipoleDirichletBC (const dealii::DoFHandler< 3 > &_dofHandler, const dealii::AffineConstraints< double > &onlyHangingNodeConstraints, dealii::AffineConstraints< double > &constraintMatrix) |
| Sets inhomegeneous dirichlet boundary conditions upto quadrupole for total potential constraints on non-periodic boundary (boundary id==0).
|
|
void | interpolateDensityNodalDataToQuadratureDataGeneral (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalField, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureGradValueData, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureHessianValueData, const bool isEvaluateGradData=false, const bool isEvaluateHessianData=false) |
| interpolate rho nodal data to quadrature data using FEEvaluation
|
|
void | interpolateDensityNodalDataToQuadratureDataLpsp (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalField, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureGradValueData, const bool isEvaluateGradData) |
| interpolate rho nodal data to quadrature data using FEEvaluation
|
|
void | addAtomicRhoQuadValuesGradients (dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureGradValueData, const bool isConsiderGradData=false) |
| add atomic densities at quadrature points
|
|
void | locateAtomCoreNodes (const dealii::DoFHandler< 3 > &_dofHandler, std::map< dealii::types::global_dof_index, double > &atomNodeIdToChargeValueMap) |
| Finds the global dof ids of the nodes containing atoms.
|
|
void | locatePeriodicPinnedNodes (const dealii::DoFHandler< 3 > &_dofHandler, const dealii::AffineConstraints< double > &constraintMatrixBase, dealii::AffineConstraints< double > &constraintMatrix) |
| Sets homogeneous dirichlet boundary conditions on a node farthest from all atoms (pinned node). This is only done in case of periodic boundary conditions to get an unique solution to the total electrostatic potential problem.
|
|
void | initAtomicRho () |
|
void | initRho () |
|
void | initCoreRho () |
|
void | computeRhoInitialGuessFromPSI (std::vector< std::vector< distributedCPUVec< double > > > eigenVectors) |
|
void | clearRhoData () |
|
void | computeRhoNodalFromPSI () |
| computes density nodal data from wavefunctions
|
|
void | computeRhoNodalFirstOrderResponseFromPSIAndPSIPrime (distributedCPUVec< double > &fv, distributedCPUVec< double > &fvSpin0, distributedCPUVec< double > &fvSpin1) |
|
void | noRemeshRhoDataInit () |
|
void | readPSI () |
|
void | readPSIRadialValues () |
|
void | loadPSIFiles (unsigned int Z, unsigned int n, unsigned int l, unsigned int &flag) |
|
void | initLocalPseudoPotential (const dealii::DoFHandler< 3 > &_dofHandler, const unsigned int lpspQuadratureId, const dealii::MatrixFree< 3, double > &_matrix_free_data, const unsigned int _phiExtDofHandlerIndex, const dealii::AffineConstraints< double > &phiExtConstraintMatrix, const std::map< dealii::types::global_dof_index, dealii::Point< 3 > > &supportPoints, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinManager, distributedCPUVec< double > &phiExt, std::map< dealii::CellId, std::vector< double > > &_pseudoValues, std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &_pseudoValuesAtoms) |
|
void | applyHomogeneousDirichletBC (const dealii::DoFHandler< 3 > &_dofHandler, const dealii::AffineConstraints< double > &onlyHangingNodeConstraints, dealii::AffineConstraints< double > &constraintMatrix) |
| Sets homegeneous dirichlet boundary conditions for total potential constraints on non-periodic boundary (boundary id==0).
|
|
double | totalCharge (const dealii::DoFHandler< 3 > &dofHandlerOfField, const distributedCPUVec< double > &rhoNodalField) |
| Computes total charge by integrating the electron-density.
|
|
double | totalCharge (const dealii::DoFHandler< 3 > &dofHandlerOfField, const std::map< dealii::CellId, std::vector< double > > *rhoQuadValues) |
|
double | totalCharge (const dealii::DoFHandler< 3 > &dofHandlerOfField, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoQuadValues) |
|
double | totalCharge (const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField) |
|
double | rhofieldl2Norm (const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField, const unsigned int dofHandlerId, const unsigned int quadratureId) |
|
double | rhofieldInnerProduct (const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField1, const distributedCPUVec< double > &rhoNodalField2, const unsigned int dofHandlerId, const unsigned int quadratureId) |
|
double | fieldGradl2Norm (const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &field) |
|
void | l2ProjectionQuadDensityMinusAtomicDensity (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const dealii::AffineConstraints< double > &constraintMatrix, const unsigned int dofHandlerId, const unsigned int quadratureId, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, distributedCPUVec< double > &nodalField) |
| l2 projection
|
|
void | totalMagnetization (const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &magQuadValues) |
| Computes net magnetization from the difference of local spin densities.
|
|
void | normalizeRhoInQuadValues () |
| normalize the input electron density
|
|
void | normalizeRhoMagInInitialGuessQuadValues () |
| normalize input mag electron density to total magnetization for use in constraint magnetization case (only for initial guess)
|
|
void | normalizeRhoOutQuadValues () |
| normalize the output total electron density in each scf
|
|
void | normalizeAtomicRhoQuadValues () |
| normalize the electron density
|
|
void | compute_rhoOut (const bool isGroundState=false) |
| Computes output electron-density from wavefunctions.
|
|
void | applyKerkerPreconditionerToTotalDensityResidual (kerkerSolverProblem< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()> &kerkerPreconditionedResidualSolverProblem, dealiiLinearSolver &CGSolver, const distributedCPUVec< double > &residualRho, distributedCPUVec< double > &preCondTotalDensityResidualVector) |
| Mixing schemes for mixing electron-density.
|
|
double | lowrankApproxScfDielectricMatrixInv (const unsigned int scfIter) |
|
double | lowrankApproxScfDielectricMatrixInvSpinPolarized (const unsigned int scfIter) |
|
void | compute_fermienergy_constraintMagnetization (const std::vector< std::vector< double > > &eigenValuesInput) |
| Computes Fermi-energy obtained by imposing separate constraints on the number of spin-up and spin-down electrons.
|
|
void | compute_fermienergy_constraintMagnetization_purestate (const std::vector< std::vector< double > > &eigenValuesInput) |
| Find spin-up and spin-down channel HOMO eigenvalues.
|
|
void | compute_tdos (const std::vector< std::vector< double > > &eigenValuesInput, const std::string &fileName) |
| compute density of states and local density of states
|
|
void | compute_ldos (const std::vector< std::vector< double > > &eigenValuesInput, const std::string &fileName) |
|
void | compute_localizationLength (const std::string &locLengthFileName) |
| compute localization length
|
|
void | outputDensity () |
| write electron density solution fields
|
|
void | writeBands () |
| write the KS eigen values for given BZ sampling/path
|
|
double | computeVolume (const dealii::DoFHandler< 3 > &_dofHandler) |
| Computes the volume of the domain.
|
|
void | deformDomain (const dealii::Tensor< 2, 3, double > &deformationGradient, const bool vselfPerturbationUpdateForStress=false, const bool useSingleAtomSolutionsOverride=false, const bool print=true) |
| Deforms the domain by the given deformation gradient and reinitializes the dftClass datastructures.
|
|
void | applyPeriodicBCHigherOrderNodes () |
| Computes inner Product and Y = alpha*X + Y for complex vectors used during periodic boundary conditions.
|
|
void | updateAuxDensityXCMatrix (const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityQuadValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityQuadValues, const std::map< dealii::CellId, std::vector< double > > &rhoCore, const std::map< dealii::CellId, std::vector< double > > &gradRhoCore, const dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > &eigenVectorsFlattenedMemSpace, const std::vector< std::vector< double > > &eigenValues, const double fermiEnergy_, const double fermiEnergyUp_, const double fermiEnergyDown_, std::shared_ptr< AuxDensityMatrix< memorySpace > > auxDensityMatrixXCPtr) |
|
void | computeVselfFieldGateauxDerFD () |
|
void | recomputeKPointCoordinates () |
|
void | nscf (KohnShamHamiltonianOperator< memorySpace > &kohnShamDFTEigenOperator, chebyshevOrthogonalizedSubspaceIterationSolver &subspaceIterationSolver) |
|
void | initnscf (KohnShamHamiltonianOperator< memorySpace > &kohnShamDFTEigenOperator, poissonSolverProblem< FEOrder, FEOrderElectro > &phiTotalSolverProblem, dealiiLinearSolver &CGSolver) |
|
double | computeMaximumHighestOccupiedStateResidualNorm (const std::vector< std::vector< double > > &residualNormWaveFunctionsAllkPoints, const std::vector< std::vector< double > > &eigenValuesAllkPoints, const double _fermiEnergy) |
| compute the maximum of the residual norm of the highest occupied state among all k points
|
|
double | computeMaximumHighestOccupiedStateResidualNorm (const std::vector< std::vector< double > > &residualNormWaveFunctionsAllkPoints, const std::vector< std::vector< double > > &eigenValuesAllkPoints, const unsigned int highestState) |
| compute the maximum of the residual norm of the highest state of interest among all k points
|
|
void | kohnShamEigenSpaceFirstOrderDensityMatResponse (const unsigned int s, const unsigned int kPointIndex, KohnShamHamiltonianOperator< dftfe::utils::MemorySpace::HOST > &kohnShamDFTEigenOperator, elpaScalaManager &elpaScala) |
|
void | kohnShamEigenSpaceComputeNSCF (const unsigned int spinType, const unsigned int kPointIndex, KohnShamHamiltonianOperator< dftfe::utils::MemorySpace::HOST > &kohnShamDFTEigenOperator, chebyshevOrthogonalizedSubspaceIterationSolver &subspaceIterationSolver, std::vector< double > &residualNormWaveFunctions, unsigned int ipass) |
|
|
double | d_atomicRhoScalingFac |
|
std::shared_ptr< excManager< memorySpace > > | d_excManagerPtr |
|
dispersionCorrection | d_dispersionCorr |
|
unsigned int | numLevels |
|
double | numElectrons |
|
double | numElectronsUp |
|
double | numElectronsDown |
|
std::set< unsigned int > | atomTypes |
|
std::map< unsigned int, unsigned int > | d_atomTypeAtributes |
|
std::vector< std::vector< double > > | atomLocations |
| FIXME: remove atom type atributes from atomLocations.
|
|
std::vector< std::vector< double > > | atomLocationsFractional |
|
std::vector< std::vector< double > > | d_reciprocalLatticeVectors |
|
std::vector< std::vector< double > > | d_domainBoundingVectors |
|
std::vector< std::vector< double > > | d_meshSizes |
|
std::vector< std::vector< double > > | d_atomLocationsInterestPseudopotential |
|
std::map< unsigned int, unsigned int > | d_atomIdPseudopotentialInterestToGlobalId |
|
std::vector< std::vector< double > > | d_atomLocationsAutoMesh |
|
std::vector< std::vector< double > > | d_imagePositionsAutoMesh |
|
std::vector< dealii::Tensor< 1, 3, double > > | d_atomsDisplacementsGaussianRead |
| Gaussian displacements of atoms read from file.
|
|
std::vector< double > | d_netFloatingDispSinceLastBinsUpdate |
|
std::vector< double > | d_netFloatingDispSinceLastCheckForSmearedChargeOverlaps |
|
bool | d_isAtomsGaussianDisplacementsReadFromFile = false |
|
std::vector< double > | d_gaussianConstantsForce |
|
std::vector< double > | d_gaussianConstantsAutoMesh |
|
std::vector< double > | d_generatorFlatTopWidths |
| composite generator flat top widths for all domain atoms
|
|
std::vector< double > | d_flatTopWidthsAutoMeshMove |
|
std::vector< double > | d_smearedChargeWidths |
| smeared charge widths for all domain atoms
|
|
std::vector< double > | d_smearedChargeScaling |
| smeared charge normalization scaling for all domain atoms
|
|
std::vector< unsigned int > | d_nearestAtomIds |
| nearest atom ids for all domain atoms
|
|
std::vector< double > | d_nearestAtomDistances |
| nearest atom distances for all domain atoms
|
|
double | d_minDist |
|
std::vector< int > | d_imageIds |
|
std::vector< double > | d_imageCharges |
|
std::vector< std::vector< double > > | d_imagePositions |
|
std::vector< std::vector< int > > | d_globalChargeIdToImageIdMap |
| globalChargeId to ImageChargeId Map
|
|
std::vector< int > | d_imageIdsTrunc |
|
std::vector< double > | d_imageChargesTrunc |
|
std::vector< std::vector< double > > | d_imagePositionsTrunc |
|
std::vector< std::vector< int > > | d_globalChargeIdToImageIdMapTrunc |
| globalChargeId to ImageChargeId Map generated with a truncated pspCutOff
|
|
double | d_pspCutOff = 15.0 |
| distance from the domain till which periodic images will be considered
|
|
const double | d_pspCutOffTrunc = 15.0 |
| distance from the domain till which periodic images will be considered
|
|
double | d_nlPSPCutOff = 8.0 |
|
std::map< dealii::CellId, std::vector< double > > | d_bQuadValuesAllAtoms |
| non-intersecting smeared charges of all atoms at quad points
|
|
std::map< dealii::CellId, std::vector< double > > | d_gradbQuadValuesAllAtoms |
| non-intersecting smeared charge gradients of all atoms at quad points
|
|
std::map< dealii::CellId, std::vector< int > > | d_bQuadAtomIdsAllAtoms |
| non-intersecting smeared charges atom ids of all atoms at quad points
|
|
std::map< dealii::CellId, std::vector< int > > | d_bQuadAtomIdsAllAtomsImages |
|
std::map< dealii::CellId, std::vector< unsigned int > > | d_bCellNonTrivialAtomIds |
|
std::vector< std::map< dealii::CellId, std::vector< unsigned int > > > | d_bCellNonTrivialAtomIdsBins |
|
std::map< dealii::CellId, std::vector< unsigned int > > | d_bCellNonTrivialAtomImageIds |
|
std::vector< std::map< dealii::CellId, std::vector< unsigned int > > > | d_bCellNonTrivialAtomImageIdsBins |
|
const double | d_smearedChargeWidthMin = 0.4 |
| minimum smeared charge width
|
|
std::vector< orbital > | waveFunctionsVector |
|
std::map< unsigned int, std::map< unsigned int, std::map< unsigned int, alglib::spline1dinterpolant > > > | radValues |
|
std::map< unsigned int, std::map< unsigned int, std::map< unsigned int, double > > > | outerValues |
|
triangulationManager | d_mesh |
|
double | d_autoMeshMaxJacobianRatio |
|
unsigned int | d_autoMesh |
|
meshMovementAffineTransform | d_affineTransformMesh |
| affine transformation object
|
|
meshMovementGaussianClass | d_gaussianMovePar |
| meshMovementGaussianClass object
|
|
std::vector< dealii::Tensor< 1, 3, double > > | d_gaussianMovementAtomsNetDisplacements |
|
std::vector< dealii::Point< 3 > > | d_controlPointLocationsCurrentMove |
|
double | d_domainVolume |
| volume of the domain
|
|
double | d_wfcInitTruncation = 5.0 |
| init wfc trunctation radius
|
|
dealii::FESystem< 3 > | FE |
|
dealii::FESystem< 3 > | FEEigen |
|
dealii::DoFHandler< 3 > | dofHandler |
|
dealii::DoFHandler< 3 > | dofHandlerEigen |
|
dealii::DoFHandler< 3 > | d_dofHandlerPRefined |
|
dealii::DoFHandler< 3 > | d_dofHandlerRhoNodal |
|
unsigned int | d_eigenDofHandlerIndex |
|
unsigned int | d_phiExtDofHandlerIndexElectro |
|
unsigned int | d_forceDofHandlerIndex |
|
unsigned int | d_densityDofHandlerIndex |
|
unsigned int | d_densityDofHandlerIndexElectro |
|
unsigned int | d_nonPeriodicDensityDofHandlerIndexElectro |
|
unsigned int | d_baseDofHandlerIndexElectro |
|
unsigned int | d_forceDofHandlerIndexElectro |
|
unsigned int | d_smearedChargeQuadratureIdElectro |
|
unsigned int | d_nlpspQuadratureId |
|
unsigned int | d_lpspQuadratureId |
|
unsigned int | d_feOrderPlusOneQuadratureId |
|
unsigned int | d_lpspQuadratureIdElectro |
|
unsigned int | d_gllQuadratureId |
|
unsigned int | d_phiTotDofHandlerIndexElectro |
|
unsigned int | d_phiPrimeDofHandlerIndexElectro |
|
unsigned int | d_phiTotAXQuadratureIdElectro |
|
unsigned int | d_helmholtzDofHandlerIndexElectro |
|
unsigned int | d_binsStartDofHandlerIndexElectro |
|
unsigned int | d_densityQuadratureId |
|
unsigned int | d_densityQuadratureIdElectro |
|
unsigned int | d_sparsityPatternQuadratureId |
|
unsigned int | d_nOMPThreads |
|
dealii::MatrixFree< 3, double > | matrix_free_data |
|
dealii::MatrixFree< 3, double > | d_matrixFreeDataPRefined |
|
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > | d_basisOperationsPtrHost |
|
std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > | d_basisOperationsPtrElectroHost |
|
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > | d_BLASWrapperPtrHost |
|
std::shared_ptr< dftfe::oncvClass< dataTypes::number, memorySpace > > | d_oncvClassPtr |
|
std::shared_ptr< dftfe::atomCenteredOrbitalsPostProcessing< dataTypes::number, memorySpace > > | d_atomCenteredOrbitalsPostProcessingPtr |
|
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > | d_BLASWrapperPtr |
|
std::map< dealii::types::global_dof_index, dealii::Point< 3 > > | d_supportPoints |
|
std::map< dealii::types::global_dof_index, dealii::Point< 3 > > | d_supportPointsPRefined |
|
std::map< dealii::types::global_dof_index, dealii::Point< 3 > > | d_supportPointsEigen |
|
std::vector< const dealii::AffineConstraints< double > * > | d_constraintsVector |
|
std::vector< const dealii::AffineConstraints< double > * > | d_constraintsVectorElectro |
|
const MPI_Comm | mpi_communicator |
|
const MPI_Comm | d_mpiCommParent |
|
const MPI_Comm | interpoolcomm |
|
const MPI_Comm | interBandGroupComm |
|
const unsigned int | n_mpi_processes |
|
const unsigned int | this_mpi_process |
|
dealii::IndexSet | locally_owned_dofs |
|
dealii::IndexSet | locally_owned_dofsEigen |
|
dealii::IndexSet | locally_relevant_dofs |
|
dealii::IndexSet | locally_relevant_dofsEigen |
|
dealii::IndexSet | d_locallyRelevantDofsPRefined |
|
dealii::IndexSet | d_locallyRelevantDofsRhoNodal |
|
std::vector< dealii::types::global_dof_index > | local_dof_indicesReal |
|
std::vector< dealii::types::global_dof_index > | local_dof_indicesImag |
|
std::vector< dealii::types::global_dof_index > | localProc_dof_indicesReal |
|
std::vector< dealii::types::global_dof_index > | localProc_dof_indicesImag |
|
std::vector< bool > | selectedDofsHanging |
|
forceClass< FEOrder, FEOrderElectro, memorySpace > * | forcePtr |
|
symmetryClass< FEOrder, FEOrderElectro, memorySpace > * | symmetryPtr |
|
elpaScalaManager * | d_elpaScala |
|
poissonSolverProblem< FEOrder, FEOrderElectro > | d_phiTotalSolverProblem |
|
poissonSolverProblem< FEOrder, FEOrderElectro > | d_phiPrimeSolverProblem |
|
bool | d_kohnShamDFTOperatorsInitialized |
|
KohnShamHamiltonianOperator< memorySpace > * | d_kohnShamDFTOperatorPtr |
|
const std::string | d_dftfeScratchFolderName |
|
chebyshevOrthogonalizedSubspaceIterationSolver | d_subspaceIterationSolver |
|
dftUtils::constraintMatrixInfo< dftfe::utils::MemorySpace::HOST > | constraintsNoneEigenDataInfo |
|
dftUtils::constraintMatrixInfo< dftfe::utils::MemorySpace::HOST > | constraintsNoneDataInfo |
|
dealii::AffineConstraints< double > | constraintsNone |
|
dealii::AffineConstraints< double > | constraintsNoneEigen |
|
dealii::AffineConstraints< double > | d_noConstraints |
|
dealii::AffineConstraints< double > | d_constraintsForTotalPotentialElectro |
|
dealii::AffineConstraints< double > | d_constraintsForPhiPrimeElectro |
|
dealii::AffineConstraints< double > | d_constraintsForHelmholtzRhoNodal |
|
dealii::AffineConstraints< double > | d_constraintsPRefined |
|
dealii::AffineConstraints< double > | d_constraintsPRefinedOnlyHanging |
|
dealii::AffineConstraints< double > | d_constraintsRhoNodal |
|
dealii::AffineConstraints< double > | d_constraintsRhoNodalOnlyHanging |
|
dftUtils::constraintMatrixInfo< dftfe::utils::MemorySpace::HOST > | d_constraintsRhoNodalInfo |
|
std::vector< std::vector< double > > | eigenValues |
|
std::vector< std::vector< double > > | d_partialOccupancies |
|
std::vector< std::vector< double > > | d_fracOccupancy |
|
std::vector< std::vector< double > > | d_densityMatDerFermiEnergy |
|
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOST > | d_eigenVectorsFlattenedHost |
|
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOST > | d_eigenVectorsDensityMatrixPrimeHost |
|
dealii::ConditionalOStream | pcout |
| device eigenvectors
|
|
dealii::TimerOutput | computing_timer |
| compute-time logger
|
|
dealii::TimerOutput | computingTimerStandard |
|
dealii::Timer | d_globalTimer |
|
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > | d_densityInQuadValues |
|
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > | d_densityOutQuadValues |
|
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > | d_densityResidualQuadValues |
|
std::vector< distributedCPUVec< double > > | d_densityInNodalValues |
|
std::vector< distributedCPUVec< double > > | d_densityOutNodalValues |
|
std::vector< distributedCPUVec< double > > | d_densityResidualNodalValues |
|
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > | d_phiInQuadValues |
|
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > | d_phiOutQuadValues |
|
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > | d_gradPhiInQuadValues |
|
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > | d_gradPhiOutQuadValues |
|
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > | d_gradPhiResQuadValues |
|
MixingScheme | d_mixingScheme |
|
distributedCPUVec< double > | d_rhoInNodalValuesRead |
|
distributedCPUVec< double > | d_rhoOutNodalValuesSplit |
|
distributedCPUVec< double > | d_preCondTotalDensityResidualVector |
|
distributedCPUVec< double > | d_rhoNodalFieldRefined |
|
distributedCPUVec< double > | d_rhoOutNodalValuesDistributed |
|
distributedCPUVec< double > | d_magInNodalValuesRead |
|
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > | d_densityTotalOutValuesLpspQuad |
|
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > | d_densityTotalInValuesLpspQuad |
|
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > | d_gradDensityTotalOutValuesLpspQuad |
|
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > | d_gradDensityTotalInValuesLpspQuad |
|
std::shared_ptr< AuxDensityMatrix< memorySpace > > | d_auxDensityMatrixXCInPtr |
|
std::shared_ptr< AuxDensityMatrix< memorySpace > > | d_auxDensityMatrixXCOutPtr |
|
double | d_monopole |
|
std::vector< double > | d_dipole |
|
std::vector< double > | d_quadrupole |
|
std::vector< double > | d_smearedChargeMoments |
|
bool | d_smearedChargeMomentsComputed |
|
std::deque< distributedCPUVec< double > > | d_vcontainerVals |
| for low rank jacobian inverse approximation
|
|
std::deque< distributedCPUVec< double > > | d_fvcontainerVals |
|
std::deque< distributedCPUVec< double > > | d_vSpin0containerVals |
|
std::deque< distributedCPUVec< double > > | d_fvSpin0containerVals |
|
std::deque< distributedCPUVec< double > > | d_vSpin1containerVals |
|
std::deque< distributedCPUVec< double > > | d_fvSpin1containerVals |
|
distributedCPUVec< double > | d_residualPredicted |
|
unsigned int | d_rankCurrentLRD |
|
double | d_relativeErrorJacInvApproxPrevScfLRD |
|
double | d_residualNormPredicted |
|
bool | d_tolReached |
|
std::map< dealii::CellId, std::vector< double > > | d_rhoAtomsValues |
| for xl-bomd
|
|
std::map< dealii::CellId, std::vector< double > > | d_gradRhoAtomsValues |
|
std::map< dealii::CellId, std::vector< double > > | d_hessianRhoAtomsValues |
|
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > | d_rhoAtomsValuesSeparate |
|
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > | d_gradRhoAtomsValuesSeparate |
|
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > | d_hessianRhoAtomsValuesSeparate |
|
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > | d_gradDensityInQuadValues |
|
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > | d_gradDensityOutQuadValues |
|
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > | d_gradDensityResidualQuadValues |
|
distributedCPUVec< double > | d_phiTotRhoIn |
|
distributedCPUVec< double > | d_phiTotRhoOut |
|
distributedCPUVec< double > | d_phiPrime |
|
distributedCPUVec< double > | d_phiExt |
|
std::deque< distributedCPUVec< double > > | d_groundStateDensityHistory |
|
std::map< dealii::CellId, std::vector< double > > | d_pseudoVLoc |
|
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > | d_pseudoVLocAtoms |
|
std::vector< std::vector< double > > | d_localVselfs |
|
std::map< dealii::CellId, std::vector< double > > | d_rhoCore |
|
std::map< dealii::CellId, std::vector< double > > | d_gradRhoCore |
|
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > | d_gradRhoCoreAtoms |
|
std::map< dealii::CellId, std::vector< double > > | d_hessianRhoCore |
|
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > | d_hessianRhoCoreAtoms |
|
std::map< dealii::types::global_dof_index, double > | d_atomNodeIdToChargeMap |
| map of atom node number and atomic weight
|
|
vselfBinsManager< FEOrder, FEOrderElectro > | d_vselfBinsManager |
| vselfBinsManager object
|
|
std::vector< distributedCPUVec< double > > | d_vselfFieldGateauxDerStrainFDBins |
|
dftParameters * | d_dftParamsPtr |
| dftParameters object
|
|
std::vector< double > | d_kPointCoordinates |
| kPoint cartesian coordinates
|
|
std::vector< double > | kPointReducedCoordinates |
| k point crystal coordinates
|
|
std::vector< double > | d_kPointWeights |
| k point weights
|
|
std::vector< dealii::Point< 3 > > | d_closestTriaVertexToAtomsLocation |
| closest tria vertex
|
|
std::vector< dealii::Tensor< 1, 3, double > > | d_dispClosestTriaVerticesToAtoms |
|
unsigned int | lowerBoundKindex = 0 |
| global k index of lower bound of the local k point set
|
|
double | fermiEnergy |
| fermi energy
|
|
double | fermiEnergyUp |
|
double | fermiEnergyDown |
|
double | d_groundStateEnergy |
|
double | d_freeEnergyInitial |
|
double | d_freeEnergy |
|
double | d_entropicEnergy |
| entropic energy
|
|
std::vector< double > | a0 |
|
std::vector< double > | bLow |
|
std::vector< bool > | d_isFirstFilteringCall |
|
std::vector< double > | d_upperBoundUnwantedSpectrumValues |
|
distributedCPUVec< double > | d_tempEigenVec |
|
bool | d_isRestartGroundStateCalcFromChk |
|
bool | scfConverged |
|
expConfiningPotential | d_expConfiningPot |
|
std::shared_ptr< hubbard< dataTypes::number, memorySpace > > | d_hubbardClassPtr |
|
bool | d_useHubbard |
|
template<unsigned int FEOrder, unsigned int FEOrderElectro,
dftfe::utils::MemorySpace memorySpace>
class dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
This class is the primary interface location of all other parts of the DFT-FE code for all steps involved in obtaining the Kohn-Sham DFT ground-state solution.
- Author
- Shiva Rudraraju, Phani Motamarri, Sambit Das