37#ifdef DFTFE_WITH_DEVICE
53#include <interpolation.h>
86#ifndef DOXYGEN_SHOULD_SKIP_THIS
94 alglib::spline1dinterpolant psi;
99 template <dftfe::uInt T1, dftfe::uInt T2, dftfe::utils::MemorySpace memory>
101 template <dftfe::uInt T1, dftfe::uInt T2, dftfe::utils::MemorySpace memory>
117 friend class forceClass<FEOrder, FEOrderElectro, memorySpace>;
119 friend class symmetryClass<FEOrder, FEOrderElectro, memorySpace>;
137 const MPI_Comm &mpi_comm_domain,
140 const std::string &scratchFolderName,
170 const bool checkSmearedChargeWidthsForOverlap =
true,
171 const bool useSingleAtomSolutionOverride =
false,
172 const bool isMeshDeformed =
false);
209 std::tuple<bool, double>
210 solve(
const bool computeForces =
true,
211 const bool computestress =
true,
212 const bool restartGroundStateCalcFromChk =
false);
243 const bool computeNorm);
313 const std::vector<dealii::types::global_dof_index> &
319 const std::vector<dealii::types::global_dof_index> &
325 const std::vector<dealii::types::global_dof_index> &
331 const std::vector<dealii::types::global_dof_index> &
337 const dealii::MatrixFree<3, double> &
358 const std::vector<dealii::Tensor<1, 3, double>> &globalAtomsDisplacements,
359 const double maxJacobianRatioFactor = 1.25,
360 const bool useSingleAtomSolutionsOverride =
false);
403 const std::vector<std::vector<double>> &
409 const std::vector<double> &
416 const std::vector<std::vector<double>> &
422 const std::vector<dftfe::Int> &
429 const std::vector<std::vector<double>> &
440 const std::vector<std::vector<double>> &
453 const std::set<dftfe::uInt> &
459 const std::vector<double> &
465 const dealii::Tensor<2, 3, double> &
491 const std::vector<std::vector<double>> &
511#ifdef DFTFE_WITH_DEVICE
516 chebyshevOrthogonalizedSubspaceIterationSolverDevice *
517 getSubspaceIterationSolverDevice();
533 &kohnShamDFTEigenOperator,
536 std::vector<double> &residualNormWaveFunctions,
537 const bool computeResidual,
538 const bool useMixedPrec =
false,
539 const bool isFirstScf =
false);
542#ifdef DFTFE_WITH_DEVICE
551 &kohnShamDFTEigenOperator,
553 chebyshevOrthogonalizedSubspaceIterationSolverDevice
554 &subspaceIterationSolverDevice,
555 std::vector<double> &residualNormWaveFunctions,
556 const bool computeResidual,
557 const dftfe::uInt numberRayleighRitzAvoidancePasses = 0,
558 const bool useMixedPrec =
false,
559 const bool isFirstScf =
false);
567 const std::vector<std::vector<double>> &eigenValuesInput,
568 const double numElectronsInput);
575 const std::vector<std::vector<double>> &eigenValuesInput,
576 const double numElectronsInput);
584 &kineticEnergyDensityValues);
602 const std::vector<double> &
611 const dealii::MatrixFree<3, double> &
614 dealii::AffineConstraints<double> *
639 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
646 std::shared_ptr<dftfe::linearAlgebra::BLASWrapper<memorySpace>>
667 const std::shared_ptr<
669 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
671 const dealii::AffineConstraints<double> &constraintMatrix,
675 &quadratureValueData,
689 const std::shared_ptr<
691 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
697 &quadratureValueData,
699 &quadratureGradValueData,
700 const bool isEvaluateGradData =
false);
703 std::map<dealii::types::global_dof_index, double> &
707 std::map<dealii::CellId, std::vector<double>> &
713 const dealii::AffineConstraints<double> *
716 const std::vector<std::vector<double>> &
731 const std::map<dealii::CellId, std::vector<dftfe::uInt>> &
739 const std::shared_ptr<
741 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
746 const std::map<dealii::CellId, std::vector<double>> *bQuadValues);
754 std::shared_ptr<hubbard<dataTypes::number, memorySpace>>
767 outputWfc(
const std::string outputFileName =
"wfcOutput");
772 const std::map<dealii::CellId, std::vector<double>> &
792 const std::vector<std::vector<double>> &atomCoordinates);
834 const std::shared_ptr<
841 &quadratureValueData,
843 const std::string &fieldName,
844 const std::string &folderPath,
845 const MPI_Comm &mpi_comm_parent,
846 const MPI_Comm &mpi_comm_domain,
870 const std::shared_ptr<
877 &quadratureValueData,
879 const std::string &fieldName,
880 const std::string &folderPath,
881 const MPI_Comm &mpi_comm_parent,
882 const MPI_Comm &mpi_comm_domain,
894 std::vector<dftfe::Int> &imageIds,
895 std::vector<double> &imageCharges,
896 std::vector<std::vector<double>> &imagePositions);
900 const double pspCutOff,
901 const std::vector<dftfe::Int> &imageIds,
902 const std::vector<std::vector<double>> &imagePositions,
903 std::vector<std::vector<dftfe::Int>> &globalChargeIdToImageIdMap);
924 dealii::Triangulation<3, 3> &triangulationSerial,
925 bool reuseFlag =
false,
926 bool moveSubdivided =
false);
950 dealii::parallel::distributed::Triangulation<3> &triangulation);
953 const bool meshOnlyDeformed =
false,
954 const bool vselfPerturbationUpdateForStress =
false);
967 dealii::parallel::distributed::Triangulation<3> &triangulation);
970 const bool meshOnlyDeformed,
971 const bool vselfPerturbationUpdateForStress =
false);
984 const dealii::DoFHandler<3> &_dofHandler,
985 const dealii::AffineConstraints<double> &onlyHangingNodeConstraints,
986 dealii::AffineConstraints<double> &constraintMatrix);
1000 const std::shared_ptr<
1002 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
1003 &basisOperationsPtr,
1008 &quadratureValueData,
1010 &quadratureGradValueData,
1012 &quadratureTauValueData,
1014 &quadratureHessianValueData,
1015 const bool isEvaluateGradData =
false,
1016 const bool isEvaluateTauData =
false,
1017 const bool isEvaluateHessianData =
false);
1032 const std::shared_ptr<
1034 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
1035 &basisOperationsPtr,
1040 &quadratureValueData,
1042 &quadratureGradValueData,
1043 const bool isEvaluateGradData);
1053 &quadratureValueData,
1055 &quadratureGradValueData,
1056 const bool isConsiderGradData =
false);
1068 std::map<dealii::types::global_dof_index, double>
1069 &atomNodeIdToChargeValueMap);
1085 const dealii::DoFHandler<3> &_dofHandler,
1086 const dealii::AffineConstraints<double> &constraintMatrixBase,
1087 dealii::AffineConstraints<double> &constraintMatrix);
1134 const dealii::DoFHandler<3> &_dofHandler,
1136 const dealii::MatrixFree<3, double> &_matrix_free_data,
1138 const dealii::AffineConstraints<double> &phiExtConstraintMatrix,
1139 const std::map<dealii::types::global_dof_index, dealii::Point<3>>
1143 std::map<dealii::CellId, std::vector<double>> &_pseudoValues,
1144 std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
1145 &_pseudoValuesAtoms);
1159 const dealii::DoFHandler<3> &_dofHandler,
1160 const dealii::AffineConstraints<double> &onlyHangingNodeConstraints,
1161 dealii::AffineConstraints<double> &constraintMatrix);
1175 const dealii::DoFHandler<3> &dofHandlerOfField,
1176 const std::map<dealii::CellId, std::vector<double>> *rhoQuadValues);
1180 const dealii::DoFHandler<3> &dofHandlerOfField,
1186 totalCharge(
const dealii::MatrixFree<3, double> &matrixFreeDataObject,
1199 const dealii::MatrixFree<3, double> &matrixFreeDataObject,
1216 const std::shared_ptr<
1218 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
1219 &basisOperationsPtr,
1220 const dealii::AffineConstraints<double> &constraintMatrix,
1224 &quadratureValueData,
1273#ifdef DFTFE_WITH_DEVICE
1275 &kerkerPreconditionedResidualSolverProblemDevice,
1276 linearSolverCGDevice &CGSolverDevice,
1279 &kerkerPreconditionedResidualSolverProblem,
1294 const std::vector<std::vector<double>> &eigenValuesInput);
1302 const std::vector<std::vector<double>> &eigenValuesInput);
1310 const std::string &fileName);
1314 const std::string &fileName);
1346 const bool vselfPerturbationUpdateForStress =
false,
1347 const bool useSingleAtomSolutionsOverride =
false,
1348 const bool print =
true);
1356 std::complex<double>
1360 alphaTimesXPlusY(std::complex<double> alpha,
1381 &gradDensityQuadValues,
1385 const std::map<dealii::CellId, std::vector<double>> &rhoCore,
1386 const std::map<dealii::CellId, std::vector<double>> &gradRhoCore,
1388 &eigenVectorsFlattenedMemSpace,
1389 const std::vector<std::vector<double>> &
eigenValues,
1390 const double fermiEnergy_,
1391 const double fermiEnergyUp_,
1392 const double fermiEnergyDown_,
1413 std::map<dftfe::uInt, dftfe::uInt>
1513 std::map<dealii::CellId, std::vector<dftfe::Int>>
1522 std::vector<std::map<dealii::CellId, std::vector<dftfe::uInt>>>
1527 std::map<dealii::CellId, std::vector<dftfe::uInt>>
1532 std::vector<std::map<dealii::CellId, std::vector<dftfe::uInt>>>
1541 std::map<dftfe::uInt, std::map<dftfe::uInt, alglib::spline1dinterpolant>>>
1543 std::map<dftfe::uInt, std::map<dftfe::uInt, std::map<dftfe::uInt, double>>>
1561 std::vector<dealii::Tensor<1, 3, double>>
1607 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
1609#if defined(DFTFE_WITH_DEVICE)
1614 d_basisOperationsPtrDevice;
1617 FEBasisOperations<double, double, dftfe::utils::MemorySpace::DEVICE>>
1618 d_basisOperationsPtrElectroDevice;
1625 std::shared_ptr<dftfe::oncvClass<dataTypes::number, memorySpace>>
1633#if defined(DFTFE_WITH_DEVICE)
1643 std::vector<const dealii::AffineConstraints<double> *>
1650#if defined(DFTFE_WITH_DEVICE)
1651 utils::DeviceCCLWrapper *d_devicecclMpiCommDomainPtr;
1675#ifdef DFTFE_WITH_DEVICE
1676 poissonSolverProblemDevice<FEOrder, FEOrderElectro>
1677 d_phiTotalSolverProblemDevice;
1679 poissonSolverProblemDevice<FEOrder, FEOrderElectro>
1680 d_phiPrimeSolverProblemDevice;
1694#ifdef DFTFE_WITH_DEVICE
1695 chebyshevOrthogonalizedSubspaceIterationSolverDevice
1696 d_subspaceIterationSolverDevice;
1723#ifdef DFTFE_WITH_DEVICE
1725 d_constraintsNoneDataInfoDevice;
1777#ifdef DFTFE_WITH_DEVICE
1780 d_eigenVectorsFlattenedDevice;
1783 d_eigenVectorsDensityMatrixPrimeFlattenedDevice;
1860 std::map<dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
1892 std::map<dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
1904 std::map<dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
1909 std::map<dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
2002 const std::vector<std::vector<double>>
2003 &residualNormWaveFunctionsAllkPoints,
2004 const std::vector<std::vector<double>> &eigenValuesAllkPoints,
2005 const double _fermiEnergy,
2006 std::vector<double> &maxResidualsAllkPoints);
2014 const std::vector<std::vector<double>>
2015 &residualNormWaveFunctionsAllkPoints,
2016 const std::vector<std::vector<double>> &eigenValuesAllkPoints,
2018 std::vector<double> &maxResidualsAllkPoints);
2022#ifdef DFTFE_WITH_DEVICE
2028 &kohnShamDFTEigenOperator,
2030 chebyshevOrthogonalizedSubspaceIterationSolverDevice
2031 &subspaceIterationSolverDevice);
2040 &kohnShamDFTEigenOperator,
Definition AuxDensityMatrix.h:40
Definition KohnShamDFTBaseOperator.h:36
This class performs the anderson mixing in a variable agnostic way This class takes can take differen...
Definition mixingClass.h:50
Definition atomCenteredPostProcessing.h:30
Definition FEBasisOperations.h:85
Concrete class implementing Chebyshev filtered orthogonalized subspace iteration solver.
Definition chebyshevOrthogonalizedSubspaceIterationSolver.h:38
dealii linear solver class wrapper
Definition dealiiLinearSolver.h:32
abstract base class for dft
Definition dftBase.h:34
std::deque< distributedCPUVec< double > > d_vSpin0containerVals
Definition dft.h:1847
double d_atomicRhoScalingFac
Definition dft.h:1092
const std::string d_dftfeScratchFolderName
Definition dft.h:1687
dftfe::uInt d_nonAtomicWaveFunctions
Number of random wavefunctions.
Definition dft.h:305
double d_freeEnergy
Definition dft.h:1961
std::vector< dftfe::Int > d_imageIdsTrunc
Definition dft.h:1479
std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > d_hessianRhoAtomsValuesSeparate
Definition dft.h:1862
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_tauInQuadValues
Definition dft.h:1807
const std::vector< std::vector< double > > & getLocalVselfs() const
const MPI_Comm & getMPIInterPool() const override
dftfe::uInt d_densityDofHandlerIndex
Definition dft.h:1579
std::vector< double > d_upperBoundUnwantedSpectrumValues
Definition dft.h:1976
const MPI_Comm d_mpiCommParent
Definition dft.h:1653
distributedCPUVec< double > d_phiTotRhoOut
Definition dft.h:1875
std::vector< std::vector< double > > atomLocationsFractional
Definition dft.h:1410
void compute_tdos(const std::vector< std::vector< double > > &eigenValuesInput, const std::string &fileName)
compute density of states and local density of states
double d_entropicEnergy
entropic energy
Definition dft.h:1964
std::vector< double > d_gaussianConstantsAutoMesh
Definition dft.h:1436
const distributedCPUVec< double > & getRhoNodalOut() const
void initBoundaryConditions(const bool recomputeBasisData=true, const bool meshOnlyDeformed=false, const bool vselfPerturbationUpdateForStress=false)
void loadPSIFiles(dftfe::uInt Z, dftfe::uInt n, dftfe::uInt l, dftfe::uInt &flag)
double lowrankApproxScfDielectricMatrixInvSpinPolarized(const dftfe::uInt scfIter)
std::vector< std::vector< double > > d_fracOccupancy
Definition dft.h:1758
void createMasterChargeIdToImageIdMaps(const double pspCutOff, const std::vector< dftfe::Int > &imageIds, const std::vector< std::vector< double > > &imagePositions, std::vector< std::vector< dftfe::Int > > &globalChargeIdToImageIdMap)
std::map< dealii::CellId, std::vector< double > > d_hessianRhoCore
Definition dft.h:1907
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 l2ProjectionQuadDensityMinusAtomicDensity(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const dealii::AffineConstraints< double > &constraintMatrix, const dftfe::uInt dofHandlerId, const dftfe::uInt quadratureId, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, distributedCPUVec< double > &nodalField)
l2 projection
void writeMesh()
Writes inital density and mesh to file.
void setNumElectrons(dftfe::uInt inputNumElectrons)
void initHubbardOperator()
Checks if the Exc functional requires Hubbard correction and sets up the Hubbard class if required.
std::vector< dealii::types::global_dof_index > local_dof_indicesImag
Definition dft.h:1662
const std::vector< double > & getKPointWeights() const
double lowrankApproxScfDielectricMatrixInv(const dftfe::uInt scfIter)
const MPI_Comm mpi_communicator
Definition dft.h:1649
const dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOST > & getEigenVectorsHost() const
Get reference the host eigen vectors.
double d_monopole
Definition dft.h:1837
const std::vector< double > & getNearestAtomDistance() const
Gets the nearest atom distance for each atom.
dealii::IndexSet locally_owned_dofs
Definition dft.h:1658
void loadDensityFromQuadratureValues()
dealii::DoFHandler< 3 > d_dofHandlerRhoNodal
Definition dft.h:1576
double computeMaximumHighestOccupiedStateResidualNorm(const std::vector< std::vector< double > > &residualNormWaveFunctionsAllkPoints, const std::vector< std::vector< double > > &eigenValuesAllkPoints, const dftfe::uInt highestState, std::vector< double > &maxResidualsAllkPoints)
compute the maximum of the residual norm of the highest state of interest among all k points
const std::map< dealii::CellId, std::vector< double > > & getPseudoVLoc() const
return the pseudo potential field
double numElectronsUp
Definition dft.h:1402
double getFreeEnergy() const
void saveTriaInfoAndRhoNodalData()
save triangulation information and rho quadrature data to checkpoint file for restarts
std::vector< std::vector< double > > d_domainBoundingVectors
Definition dft.h:1411
dealii::AffineConstraints< double > constraintsNone
Definition dft.h:1729
const dealii::Tensor< 2, 3, double > & getCellStress() const
Gets the current cell stress from dftClass.
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 bounda...
const distributedCPUVec< double > & getRhoNodalSplitOut() const
double computeResidualNodalData(const distributedCPUVec< double > &outValues, const distributedCPUVec< double > &inValues, distributedCPUVec< double > &residualValues)
dealii::DoFHandler< 3 > d_dofHandlerPRefined
Definition dft.h:1575
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)....
void writeDomainAndAtomCoordinates(const std::string Path) const
writes the current domain bounding vectors and atom coordinates to files for structural optimization ...
double totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoQuadValues)
dealii::IndexSet locally_owned_dofsEigen
Definition dft.h:1658
std::map< dealii::CellId, std::vector< dftfe::uInt > > d_bCellNonTrivialAtomImageIds
Definition dft.h:1528
double rhofieldl2Norm(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField, const dftfe::uInt dofHandlerId, const dftfe::uInt quadratureId)
std::vector< dealii::Point< 3 > > d_closestTriaVertexToAtomsLocation
closest tria vertex
Definition dft.h:1943
void l2ProjectionQuadToNodal(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const dealii::AffineConstraints< double > &constraintMatrix, const dftfe::uInt dofHandlerId, const dftfe::uInt quadratureId, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, distributedCPUVec< double > &nodalField)
l2 projection
std::deque< distributedCPUVec< double > > d_fvcontainerVals
Definition dft.h:1846
dataTypes::number computeTraceXtHX(dftfe::uInt numberWaveFunctionsEstimate)
double fermiEnergyUp
Definition dft.h:1957
std::vector< std::vector< double > > d_densityMatDerFermiEnergy
Definition dft.h:1760
poissonSolverProblem< FEOrder, FEOrderElectro > d_phiTotalSolverProblem
Definition dft.h:1672
void initnscf(KohnShamDFTBaseOperator< memorySpace > &kohnShamDFTEigenOperator, poissonSolverProblem< FEOrder, FEOrderElectro > &phiTotalSolverProblem, dealiiLinearSolver &CGSolver)
dealii::AffineConstraints< double > * getDensityConstraint()
void writeStructureEnergyForcesDataPostProcess(const std::string Path) const
writes atomistics data for subsequent post-processing. Related to WRITE STRUCTURE ENERGY FORCES DATA ...
std::map< dealii::CellId, std::vector< double > > d_bQuadValuesAllAtoms
non-intersecting smeared charges of all atoms at quad points
Definition dft.h:1503
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_gradDensityResidualQuadValues
Definition dft.h:1867
double computeMaximumHighestOccupiedStateResidualNorm(const std::vector< std::vector< double > > &residualNormWaveFunctionsAllkPoints, const std::vector< std::vector< double > > &eigenValuesAllkPoints, const double _fermiEnergy, std::vector< double > &maxResidualsAllkPoints)
compute the maximum of the residual norm of the highest occupied state among all k points
const MPI_Comm interBandGroupComm
Definition dft.h:1655
std::vector< dealii::types::global_dof_index > local_dof_indicesReal
Definition dft.h:1661
std::vector< std::vector< double > > atomLocations
FIXME: remove atom type atributes from atomLocations.
Definition dft.h:1410
void applyPeriodicBCHigherOrderNodes()
Computes inner Product and Y = alpha*X + Y for complex vectors used during periodic boundary conditio...
std::vector< double > d_kPointCoordinates
kPoint cartesian coordinates
Definition dft.h:1934
double fermiEnergyDown
Definition dft.h:1957
void compute_fermienergy_constraintMagnetization_purestate(const std::vector< std::vector< double > > &eigenValuesInput)
Find spin-up and spin-down channel HOMO eigenvalues.
dftUtils::constraintMatrixInfo< dftfe::utils::MemorySpace::HOST > constraintsNoneEigenDataInfo
Definition dft.h:1710
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.
std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, memorySpace > > getBasisOperationsElectroMemSpace()
void outputDensity()
write electron density solution fields
std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > getBasisOperationsElectroHost()
dftfe::uInt getElectroDofHandlerIndex() const
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_tauInNodalValues
Definition dft.h:1810
dealii::AffineConstraints< double > d_constraintsRhoNodal
Definition dft.h:1742
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_gradPhiResQuadValues
Definition dft.h:1818
dftfe::uInt d_rankCurrentLRD
Definition dft.h:1852
double d_residualNormPredicted
Definition dft.h:1854
std::map< dealii::CellId, std::vector< dftfe::uInt > > d_bCellNonTrivialAtomIds
Definition dft.h:1518
std::map< dealii::CellId, std::vector< dftfe::Int > > d_bQuadAtomIdsAllAtoms
non-intersecting smeared charges atom ids of all atoms at quad points
Definition dft.h:1509
std::shared_ptr< excManager< memorySpace > > d_excManagerPtr
Definition dft.h:1395
std::vector< double > bLow
Definition dft.h:1970
void writeDomainAndAtomCoordinates()
writes the current domain bounding vectors and atom coordinates to files, which are required for geom...
symmetryClass< FEOrder, FEOrderElectro, memorySpace > * symmetryPtr
Definition dft.h:1668
std::vector< std::vector< double > > d_imagePositionsTrunc
Definition dft.h:1487
double d_wfcInitTruncation
init wfc trunctation radius
Definition dft.h:1569
std::vector< double > d_smearedChargeWidths
smeared charge widths for all domain atoms
Definition dft.h:1446
double d_groundStateEnergy
Definition dft.h:1957
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.
dealii::FESystem< 3 > FEEigen
Definition dft.h:1574
distributedCPUVec< double > d_rhoOutNodalValuesSplit
Definition dft.h:1821
const std::vector< dealii::types::global_dof_index > & getLocalProcDofIndicesReal() const
Get local dofs local proc indices real.
dftfe::uInt getDensityQuadratureId()
double computeVolume(const dealii::DoFHandler< 3 > &_dofHandler)
Computes the volume of the domain.
void nscf(KohnShamDFTBaseOperator< memorySpace > &kohnShamDFTEigenOperator, chebyshevOrthogonalizedSubspaceIterationSolver &subspaceIterationSolver)
std::map< dealii::CellId, std::vector< double > > d_hessianRhoAtomsValues
Definition dft.h:1859
void trivialSolveForStress()
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.
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_phiOutQuadValues
Definition dft.h:1816
std::vector< distributedCPUVec< double > > d_densityInNodalValues
Definition dft.h:1802
double totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const std::map< dealii::CellId, std::vector< double > > *rhoQuadValues)
std::vector< const dealii::AffineConstraints< double > * > d_constraintsVector
Definition dft.h:1642
const std::vector< double > & getForceonAtoms() const
Gets the current atomic forces from dftClass.
dftfe::uInt d_lpspQuadratureId
Definition dft.h:1586
double computeAndPrintKE(dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &kineticEnergyDensityValues)
Computes the kinetic energy.
void readPSIRadialValues()
~dftClass()
dftClass destructor
distributedCPUVec< double > d_rhoNodalFieldRefined
Definition dft.h:1822
void loadQuadratureData(const std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const dftfe::uInt quadratureId, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, const dftfe::uInt fieldDimension, const std::string &fieldName, const std::string &folderPath, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm)
loads data from quad points of checkpoint file. Used for restart calculations, nscf and bands.
std::vector< bool > d_isFirstFilteringCall
Definition dft.h:1974
std::vector< bool > selectedDofsHanging
Definition dft.h:1665
void run()
FIXME: legacy call, move to main.cc.
std::vector< const dealii::AffineConstraints< double > * > d_constraintsVectorElectro
Definition dft.h:1644
const std::vector< std::vector< double > > & getAtomLocationsCart() const
Gets the current atom Locations in cartesian form (origin at center of domain) from dftClass.
dftfe::uInt d_sparsityPatternQuadratureId
Definition dft.h:1597
double d_nlPSPCutOff
Definition dft.h:1500
std::map< dealii::types::global_dof_index, double > & getAtomNodeToChargeMap()
map of atom node number and atomic weight
std::map< dealii::types::global_dof_index, dealii::Point< 3 > > d_supportPointsPRefined
Definition dft.h:1641
std::vector< distributedCPUVec< double > > d_densityOutNodalValues
Definition dft.h:1803
void writeMesh(std::string meshFileName)
dealii::DoFHandler< 3 > dofHandler
Definition dft.h:1575
virtual void resetRhoNodalSplitIn(distributedCPUVec< double > &OutDensity)
vselfBinsManager< FEOrder, FEOrderElectro > d_vselfBinsManager
vselfBinsManager object
Definition dft.h:1918
double rhofieldInnerProduct(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField1, const distributedCPUVec< double > &rhoNodalField2, const dftfe::uInt dofHandlerId, const dftfe::uInt quadratureId)
const dealii::MatrixFree< 3, double > & getMatrixFreeDataElectro() const
void computeRhoInitialGuessFromPSI(std::vector< std::vector< distributedCPUVec< double > > > eigenVectors)
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_gradDensityTotalInValuesLpspQuad
Definition dft.h:1831
void finalizeKohnShamDFTOperator()
dftfe::uInt d_densityQuadratureIdElectro
Definition dft.h:1596
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::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &tauQuadValues, 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)
bool d_isAtomsGaussianDisplacementsReadFromFile
Definition dft.h:1427
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > d_BLASWrapperPtr
Definition dft.h:1638
double d_relativeErrorJacInvApproxPrevScfLRD
Definition dft.h:1853
dftfe::uInt d_phiPrimeDofHandlerIndexElectro
Definition dft.h:1591
void interpolateElectroNodalDataToQuadratureDataGeneral(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const dftfe::uInt dofHandlerId, const dftfe::uInt 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::vector< double > d_dipole
Definition dft.h:1838
std::shared_ptr< hubbard< dataTypes::number, memorySpace > > d_hubbardClassPtr
Definition dft.h:2044
const std::vector< std::vector< double > > & getEigenValues() const
Get reference to the eigen values.
std::vector< double > d_gaussianConstantsForce
Definition dft.h:1432
std::shared_ptr< hubbard< dataTypes::number, memorySpace > > getHubbardClassPtr()
Returns the shared ptr to hubbard class.
dftfe::uInt d_gllQuadratureId
Definition dft.h:1589
triangulationManager * getTriangulationManager()
std::vector< double > d_smearedChargeMoments
Definition dft.h:1840
std::map< dealii::CellId, std::vector< double > > d_rhoAtomsValues
for xl-bomd
Definition dft.h:1858
dftfe::uInt d_phiExtDofHandlerIndexElectro
Definition dft.h:1577
bool d_smearedChargeMomentsComputed
Definition dft.h:1841
std::vector< double > d_imageCharges
Definition dft.h:1468
dealii::MatrixFree< 3, double > d_matrixFreeDataPRefined
Definition dft.h:1599
void updatePRefinedConstraints()
double numElectrons
Definition dft.h:1402
std::vector< orbital > waveFunctionsVector
Definition dft.h:1538
double totalCharge(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField)
std::deque< distributedCPUVec< double > > d_groundStateDensityHistory
Definition dft.h:1886
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
const MPI_Comm interpoolcomm
Definition dft.h:1654
void computeVselfFieldGateauxDerFD()
distributedCPUVec< double > d_rhoInNodalValuesRead
Definition dft.h:1821
dealii::TimerOutput computing_timer
compute-time logger
Definition dft.h:1790
std::vector< std::vector< dftfe::Int > > d_globalChargeIdToImageIdMapTrunc
globalChargeId to ImageChargeId Map generated with a truncated pspCutOff
Definition dft.h:1490
std::vector< double > d_imageChargesTrunc
Definition dft.h:1483
std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > d_gradRhoCoreAtoms
Definition dft.h:1905
void initpRefinedObjects(const bool recomputeBasisData, const bool meshOnlyDeformed, const bool vselfPerturbationUpdateForStress=false)
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > getBLASWrapperMemSpace()
const MPI_Comm & getMPIParent() const override
const std::map< dealii::CellId, std::vector< dftfe::uInt > > & getbCellNonTrivialAtomIds() const
dftfe::uInt getNumEigenValues() const
void createpRefinedDofHandler(dealii::parallel::distributed::Triangulation< 3 > &triangulation)
const std::vector< dealii::types::global_dof_index > & getLocalDofIndicesReal() const
Get local dofs global indices real.
void solveNoSCF()
compute approximation to ground-state without solving the SCF iteration
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_gradPhiOutQuadValues
Definition dft.h:1818
void applyKerkerPreconditionerToTotalDensityResidual(kerkerSolverProblem< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()> &kerkerPreconditionedResidualSolverProblem, dealiiLinearSolver &CGSolver, const distributedCPUVec< double > &residualRho, distributedCPUVec< double > &preCondTotalDensityResidualVector)
Mixing schemes for mixing electron-density.
std::vector< dealii::types::global_dof_index > localProc_dof_indicesImag
Definition dft.h:1664
std::vector< std::vector< double > > d_atomLocationsAutoMesh
Definition dft.h:1415
double d_autoMeshMaxJacobianRatio
Definition dft.h:1551
const MPI_Comm & getMPIInterBand() const override
dftfe::uInt d_binsStartDofHandlerIndexElectro
Definition dft.h:1594
void compute_localizationLength(const std::string &locLengthFileName)
compute localization length
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > getBasisOperationsHost()
std::shared_ptr< dftfe::oncvClass< dataTypes::number, memorySpace > > d_oncvClassPtr
Definition dft.h:1626
std::vector< double > kPointReducedCoordinates
k point crystal coordinates
Definition dft.h:1937
std::shared_ptr< AuxDensityMatrix< memorySpace > > d_auxDensityMatrixXCInPtr
Definition dft.h:1833
std::vector< std::vector< double > > d_imagePositions
Definition dft.h:1472
triangulationManager d_mesh
Definition dft.h:1549
std::map< dealii::types::global_dof_index, dealii::Point< 3 > > d_supportPointsEigen
Definition dft.h:1641
dealii::AffineConstraints< double > d_constraintsPRefined
Definition dft.h:1738
double d_freeEnergyInitial
Definition dft.h:1959
std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > d_gradRhoAtomsValuesSeparate
Definition dft.h:1861
std::vector< dftfe::uInt > d_nearestAtomIds
nearest atom ids for all domain atoms
Definition dft.h:1452
dealii::AffineConstraints< double > d_constraintsForPhiPrimeElectro
Definition dft.h:1734
void normalizeRhoInQuadValues()
normalize the input electron density
std::map< dftfe::uInt, dftfe::uInt > d_atomTypeAtributes
Definition dft.h:1407
dftfe::uInt d_phiTotAXQuadratureIdElectro
Definition dft.h:1592
void normalizeAtomicRhoQuadValues()
normalize the electron density
chebyshevOrthogonalizedSubspaceIterationSolver d_subspaceIterationSolver
Definition dft.h:1693
std::shared_ptr< dftfe::atomCenteredOrbitalsPostProcessing< dataTypes::number, memorySpace > > d_atomCenteredOrbitalsPostProcessingPtr
Definition dft.h:1630
std::vector< double > d_kPointWeights
k point weights
Definition dft.h:1940
void kohnShamEigenSpaceFirstOrderDensityMatResponse(const dftfe::uInt s, const dftfe::uInt kPointIndex, KohnShamDFTBaseOperator< dftfe::utils::MemorySpace::HOST > &kohnShamDFTEigenOperator, elpaScalaManager &elpaScala)
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
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, memorySpace > > getBasisOperationsMemSpace()
void initImageChargesUpdateKPoints(bool flag=true)
generate image charges and update k point cartesian coordinates based on current lattice vectors
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_tauOutNodalValues
Definition dft.h:1810
std::map< dealii::types::global_dof_index, dealii::Point< 3 > > d_supportPoints
Definition dft.h:1640
elpaScalaManager * getElpaScalaManager() const
double getFermiEnergy() const
Get the value of fermi energy.
void kohnShamEigenSpaceCompute(const dftfe::uInt s, const dftfe::uInt kPointIndex, KohnShamDFTBaseOperator< 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.
double fieldGradl2Norm(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &field)
std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > d_hessianRhoCoreAtoms
Definition dft.h:1910
distributedCPUVec< double > d_preCondTotalDensityResidualVector
Definition dft.h:1822
distributedCPUVec< double > d_magInNodalValuesRead
Definition dft.h:1826
bool d_useHubbard
Definition dft.h:2045
std::deque< distributedCPUVec< double > > d_vcontainerVals
for low rank jacobian inverse approximation
Definition dft.h:1845
distributedCPUVec< double > d_residualPredicted
Definition dft.h:1851
std::vector< double > a0
Definition dft.h:1969
dealii::Timer d_globalTimer
Definition dft.h:1795
void noRemeshRhoDataInit()
std::vector< double > d_flatTopWidthsAutoMeshMove
Definition dft.h:1443
std::map< dealii::CellId, std::vector< double > > & getBQuadValuesAllAtoms()
non-intersecting smeared charges of all atoms at quad points
std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtrElectroHost
Definition dft.h:1608
std::map< dealii::types::global_dof_index, double > d_atomNodeIdToChargeMap
map of atom node number and atomic weight
Definition dft.h:1915
std::vector< dealii::Tensor< 1, 3, double > > d_atomsDisplacementsGaussianRead
Gaussian displacements of atoms read from file.
Definition dft.h:1419
void interpolateDensityNodalDataToQuadratureDataLpsp(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const dftfe::uInt dofHandlerId, const dftfe::uInt 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
double d_domainVolume
volume of the domain
Definition dft.h:1566
bool d_isRestartGroundStateCalcFromChk
Definition dft.h:1980
void compute_rhoOut(const bool isGroundState=false)
Computes output electron-density from wavefunctions.
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_densityOutQuadValues
Definition dft.h:1800
dealii::IndexSet d_locallyRelevantDofsRhoNodal
Definition dft.h:1660
dealii::ConditionalOStream pcout
device eigenvectors
Definition dft.h:1787
void calculateNearestAtomDistances()
a
std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > d_rhoAtomsValuesSeparate
Definition dft.h:1861
void initUnmovedTriangulation(dealii::parallel::distributed::Triangulation< 3 > &triangulation)
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_tauOutQuadValues
Definition dft.h:1807
const std::set< dftfe::uInt > & getAtomTypes() const
Gets the current atom types from dftClass.
KohnShamDFTBaseOperator< memorySpace > * d_kohnShamDFTOperatorPtr
Definition dft.h:1685
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_gradDensityOutQuadValues
Definition dft.h:1866
std::map< dealii::CellId, std::vector< double > > d_gradRhoCore
Definition dft.h:1902
distributedCPUVec< double > d_phiExt
Definition dft.h:1883
dftfe::uInt getSmearedChargeQuadratureIdElectro()
dftfe::uInt d_phiTotDofHandlerIndexElectro
Definition dft.h:1590
dealii::AffineConstraints< double > d_constraintsPRefinedOnlyHanging
Definition dft.h:1740
const std::vector< std::vector< double > > & getCell() const
Gets the current cell lattice vectors.
const dftfe::uInt this_mpi_process
Definition dft.h:1657
void totalMagnetization(const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &magQuadValues)
Computes net magnetization from the difference of local spin densities.
dftfe::uInt getElectroQuadratureAxId() const
dealii::IndexSet d_locallyRelevantDofsPRefined
Definition dft.h:1660
const double d_smearedChargeWidthMin
minimum smeared charge width
Definition dft.h:1536
double getEntropicEnergy() const
std::vector< double > d_nearestAtomDistances
nearest atom distances for all domain atoms
Definition dft.h:1455
std::vector< std::vector< double > > d_localVselfs
Definition dft.h:1896
dealii::AffineConstraints< double > d_constraintsRhoNodalOnlyHanging
Definition dft.h:1744
std::vector< distributedCPUVec< double > > d_densityResidualNodalValues
Definition dft.h:1803
poissonSolverProblem< FEOrder, FEOrderElectro > d_phiPrimeSolverProblem
Definition dft.h:1674
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & getDensityInValues()
std::vector< dftfe::Int > d_imageIds
Definition dft.h:1462
void calculateSmearedChargeWidths()
a
bool d_kohnShamDFTOperatorsInitialized
Definition dft.h:1683
dftfe::uInt d_nOMPThreads
Definition dft.h:1598
const std::vector< dftfe::Int > & getImageAtomIDs() const
Gets the current image atom ids from dftClass.
void projectPreviousGroundStateRho()
project ground state electron density from previous mesh into the new mesh to be used as initial gues...
void aposterioriMeshGenerate()
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOST > d_eigenVectorsDensityMatrixPrimeHost
Definition dft.h:1774
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > d_BLASWrapperPtrHost
Definition dft.h:1623
std::vector< std::map< dealii::CellId, std::vector< dftfe::uInt > > > d_bCellNonTrivialAtomIdsBins
Definition dft.h:1523
void recomputeKPointCoordinates()
std::vector< std::vector< double > > d_meshSizes
Definition dft.h:1411
double totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const distributedCPUVec< double > &rhoNodalField)
Computes total charge by integrating the electron-density.
std::map< dealii::CellId, std::vector< double > > d_gradRhoAtomsValues
Definition dft.h:1859
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.
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_densityResidualQuadValues
Definition dft.h:1801
std::deque< distributedCPUVec< double > > d_fvSpin1containerVals
Definition dft.h:1850
double fermiEnergy
fermi energy
Definition dft.h:1957
dftParameters & getParametersObject() const
Get reference to dftParameters object.
std::vector< double > d_netFloatingDispSinceLastCheckForSmearedChargeOverlaps
Definition dft.h:1425
void generateImageCharges(const double pspCutOff, std::vector< dftfe::Int > &imageIds, std::vector< double > &imageCharges, std::vector< std::vector< double > > &imagePositions)
creates datastructures related to periodic image charges
std::vector< double > d_netFloatingDispSinceLastBinsUpdate
Definition dft.h:1422
dealii::AffineConstraints< double > d_constraintsForHelmholtzRhoNodal
Definition dft.h:1736
std::set< dftfe::uInt > atomTypes
Definition dft.h:1403
void initializeKohnShamDFTOperator(const bool initializeCublas=true)
dftUtils::constraintMatrixInfo< dftfe::utils::MemorySpace::HOST > d_constraintsRhoNodalInfo
Definition dft.h:1747
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_phiInQuadValues
Definition dft.h:1816
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_densityTotalInValuesLpspQuad
Definition dft.h:1830
dftfe::uInt d_forceDofHandlerIndex
Definition dft.h:1578
dealii::MatrixFree< 3, double > matrix_free_data
Definition dft.h:1599
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 n...
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.
const double d_pspCutOffTrunc
distance from the domain till which periodic images will be considered
Definition dft.h:1496
double getInternalEnergy() const
double numElectronsDown
Definition dft.h:1402
chebyshevOrthogonalizedSubspaceIterationSolver * getSubspaceIterationSolverHost()
Get the Ptr to Chebyshev solver in host.
std::vector< std::vector< double > > d_partialOccupancies
Definition dft.h:1753
dftfe::uInt numLevels
Definition dft.h:1401
dealii::AffineConstraints< double > d_noConstraints
Definition dft.h:1730
meshMovementGaussianClass d_gaussianMovePar
meshMovementGaussianClass object
Definition dft.h:1559
std::map< dealii::CellId, std::vector< double > > d_pseudoVLoc
Definition dft.h:1888
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOST > d_eigenVectorsFlattenedHost
Definition dft.h:1770
dftfe::uInt d_baseDofHandlerIndexElectro
Definition dft.h:1582
dftfe::uInt d_smearedChargeQuadratureIdElectro
Definition dft.h:1584
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > getBLASWrapperHost()
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_gradPhiInQuadValues
Definition dft.h:1818
void initElectronicFields()
void compute_fermienergy_purestate(const std::vector< std::vector< double > > &eigenValuesInput, const double numElectronsInput)
find HOMO eigenvalue for pure state
dealii::AffineConstraints< double > d_constraintsForTotalPotentialElectro
Definition dft.h:1732
dispersionCorrection d_dispersionCorr
Definition dft.h:1396
void reInitializeKohnShamDFTOperator()
std::vector< std::vector< double > > d_atomLocationsInterestPseudopotential
Definition dft.h:1412
std::vector< std::vector< double > > d_imagePositionsAutoMesh
Definition dft.h:1416
dealii::TimerOutput computingTimerStandard
Definition dft.h:1791
meshMovementAffineTransform d_affineTransformMesh
affine transformation object
Definition dft.h:1556
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_gradDensityInQuadValues
Definition dft.h:1866
dftfe::uInt d_lpspQuadratureIdElectro
Definition dft.h:1588
elpaScalaManager * d_elpaScala
Definition dft.h:1670
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_densityInQuadValues
Definition dft.h:1800
std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > d_pseudoVLocAtoms
Definition dft.h:1893
void interpolateDensityNodalDataToQuadratureDataGeneral(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const dftfe::uInt dofHandlerId, const dftfe::uInt 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 > &quadratureTauValueData, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureHessianValueData, const bool isEvaluateGradData=false, const bool isEvaluateTauData=false, const bool isEvaluateHessianData=false)
interpolate rho nodal data to quadrature data using FEEvaluation
std::map< dealii::CellId, std::vector< double > > d_rhoCore
Definition dft.h:1900
distributedCPUVec< double > d_phiPrime
Definition dft.h:1880
std::map< dealii::CellId, std::vector< dftfe::Int > > d_bQuadAtomIdsAllAtomsImages
Definition dft.h:1514
void resetRhoNodalIn(distributedCPUVec< double > &OutDensity)
bool scfConverged
Definition dft.h:1986
distributedCPUVec< double > d_rhoOutNodalValuesDistributed
Definition dft.h:1823
const std::vector< std::vector< double > > & getAtomLocationsFrac() const
Gets the current atom Locations in fractional form from dftClass (only applicable for periodic and se...
const dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > & getEigenVectors() const
Get reference the memorySpace templated eigen vectors.
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 dealii::AffineConstraints< double > * getConstraintsVectorElectro()
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.
void computeRhoNodalFirstOrderResponseFromPSIAndPSIPrime(distributedCPUVec< double > &fv, distributedCPUVec< double > &fvSpin0, distributedCPUVec< double > &fvSpin1)
void computeRhoNodalMassVector(dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &massVec)
Computes the diagonal mass matrix for rho nodal grid, used for nodal mixing.
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_densityTotalOutValuesLpspQuad
Definition dft.h:1830
void determineOrbitalFilling()
distributedCPUVec< double > d_phiTotRhoIn
Definition dft.h:1871
std::vector< dealii::Point< 3 > > d_controlPointLocationsCurrentMove
Definition dft.h:1563
dftfe::uInt d_autoMesh
Definition dft.h:1552
dftfe::uInt d_nonPeriodicDensityDofHandlerIndexElectro
Definition dft.h:1581
void computeOutputDensityDirectionalDerivative(const distributedCPUVec< double > &v, const distributedCPUVec< double > &vSpin0, const distributedCPUVec< double > &vSpin1, distributedCPUVec< double > &fv, distributedCPUVec< double > &fvSpin0, distributedCPUVec< double > &fvSpin1)
dealii::AffineConstraints< double > constraintsNoneEigen
Definition dft.h:1729
void saveQuadratureData(const std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const dftfe::uInt quadratureId, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, const dftfe::uInt fieldDimension, const std::string &fieldName, const std::string &folderPath, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm)
save data of quad points to checkpoint file. Used for restart calculations, nscf and bands.
dftfe::uInt d_densityDofHandlerIndexElectro
Definition dft.h:1580
KohnShamDFTBaseOperator< memorySpace > * getKohnShamDFTBaseOperatorClass()
get the Ptr to the operator class ( Kohn Sham Base Operator)
std::vector< double > d_generatorFlatTopWidths
composite generator flat top widths for all domain atoms
Definition dft.h:1439
const dealii::MatrixFree< 3, double > & getMatrixFreeData() const
Get matrix free data object.
const std::vector< dealii::types::global_dof_index > & getLocalDofIndicesImag() const
Get local dofs global indices imag.
std::vector< std::vector< double > > eigenValues
Definition dft.h:1752
dftfe::uInt d_numEigenValues
Number of Kohn-Sham eigen values to be computed.
Definition dft.h:299
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-dow...
std::vector< dealii::Tensor< 1, 3, double > > d_gaussianMovementAtomsNetDisplacements
Definition dft.h:1562
void determineAtomsOfInterstPseudopotential(const std::vector< std::vector< double > > &atomCoordinates)
void init()
Does KSDFT problem pre-processing steps including mesh generation calls.
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & getDensityOutValues()
void outputWfc(const std::string outputFileName="wfcOutput")
write wavefunction solution fields
std::vector< std::vector< double > > d_reciprocalLatticeVectors
Definition dft.h:1411
void compute_ldos(const std::vector< std::vector< double > > &eigenValuesInput, const std::string &fileName)
double d_minDist
Definition dft.h:1458
void solveBands()
compute bands without solving the SCF iteration
dftfe::uInt d_helmholtzDofHandlerIndexElectro
Definition dft.h:1593
std::vector< dealii::types::global_dof_index > localProc_dof_indicesReal
Definition dft.h:1663
dftfe::uInt getElectroQuadratureRhsId() const
distributedCPUVec< double > d_tempEigenVec
Definition dft.h:1978
forceClass< FEOrder, FEOrderElectro, memorySpace > * forcePtr
Definition dft.h:1667
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_tauResidualNodalValues
Definition dft.h:1810
void writeBands()
write the KS eigen values for given BZ sampling/path
bool d_tolReached
Definition dft.h:1855
void normalizeRhoOutQuadValues()
normalize the output total electron density in each scf
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 vertice...
double d_pspCutOff
distance from the domain till which periodic images will be considered
Definition dft.h:1493
double getCellVolume() const
Gets the current cell volume.
void loadTriaInfoAndRhoNodalData()
load triangulation information rho quadrature data from checkpoint file for restarted run
std::vector< distributedCPUVec< double > > d_vselfFieldGateauxDerStrainFDBins
Definition dft.h:1923
std::deque< distributedCPUVec< double > > d_fvSpin0containerVals
Definition dft.h:1848
virtual void writeGSElectronDensity(const std::string Path) const
writes quadrature grid information and associated spin-up and spin-down electron-density for post-pro...
dftfe::uInt d_forceDofHandlerIndexElectro
Definition dft.h:1583
const MPI_Comm & getMPIDomain() const override
const expConfiningPotential & getConfiningPotential() const
const std::vector< dealii::types::global_dof_index > & getLocalProcDofIndicesImag() const
Get local dofs local proc indices imag.
dealii::IndexSet locally_relevant_dofsEigen
Definition dft.h:1659
dealii::IndexSet locally_relevant_dofs
Definition dft.h:1659
dftfe::uInt d_densityQuadratureId
Definition dft.h:1595
double computeTraceXtKX(dftfe::uInt numberWaveFunctionsEstimate)
dftfe::uInt d_feOrderPlusOneQuadratureId
Definition dft.h:1587
int lowerBoundKindex
global k index of lower bound of the local k point set
Definition dft.h:1947
void initPseudoPotentialAll(const bool updateNonlocalSparsity=true)
void computeMultipoleMoments(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const dftfe::uInt densityQuadratureId, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoQuadValues, const std::map< dealii::CellId, std::vector< double > > *bQuadValues)
dftfe::uInt d_nlpspQuadratureId
Definition dft.h:1585
void computeRhoNodalFromPSI()
computes density nodal data from wavefunctions
const dftfe::uInt n_mpi_processes
Definition dft.h:1656
void initLocalPseudoPotential(const dealii::DoFHandler< 3 > &_dofHandler, const dftfe::uInt lpspQuadratureId, const dealii::MatrixFree< 3, double > &_matrix_free_data, const dftfe::uInt _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< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &_pseudoValuesAtoms)
dftParameters * d_dftParamsPtr
dftParameters object
Definition dft.h:1931
std::map< dftfe::uInt, std::map< dftfe::uInt, std::map< dftfe::uInt, alglib::spline1dinterpolant > > > radValues
Definition dft.h:1542
std::deque< distributedCPUVec< double > > d_vSpin1containerVals
Definition dft.h:1849
double getTotalChargeforRhoSplit()
MixingScheme d_mixingScheme
Definition dft.h:1819
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_gradDensityTotalOutValuesLpspQuad
Definition dft.h:1831
std::map< dealii::CellId, std::vector< double > > d_gradbQuadValuesAllAtoms
non-intersecting smeared charge gradients of all atoms at quad points
Definition dft.h:1506
dftfe::uInt d_eigenDofHandlerIndex
Definition dft.h:1577
std::vector< dealii::Tensor< 1, 3, double > > d_dispClosestTriaVerticesToAtoms
Definition dft.h:1944
std::shared_ptr< AuxDensityMatrix< memorySpace > > d_auxDensityMatrixXCOutPtr
Definition dft.h:1834
dealii::FESystem< 3 > FE
Definition dft.h:1574
dftfe::uInt getDensityDofHandlerIndex()
get the index of the DoF Handler corresponding to
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_tauResidualQuadValues
Definition dft.h:1807
std::vector< double > d_smearedChargeScaling
smeared charge normalization scaling for all domain atoms
Definition dft.h:1449
expConfiningPotential d_expConfiningPot
Definition dft.h:2043
std::vector< std::map< dealii::CellId, std::vector< dftfe::uInt > > > d_bCellNonTrivialAtomImageIdsBins
Definition dft.h:1533
std::map< dftfe::uInt, dftfe::uInt > d_atomIdPseudopotentialInterestToGlobalId
Definition dft.h:1414
void normalizeRhoMagInInitialGuessQuadValues()
normalize input mag electron density to total magnetization for use in constraint magnetization case ...
void set()
atomic system pre-processing steps.
std::map< dftfe::uInt, std::map< dftfe::uInt, std::map< dftfe::uInt, double > > > outerValues
Definition dft.h:1544
dftUtils::constraintMatrixInfo< dftfe::utils::MemorySpace::HOST > constraintsNoneDataInfo
Definition dft.h:1720
double getNumElectrons() const
Get the number of electrons.
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtrHost
Definition dft.h:1604
bool isHubbardCorrectionsUsed()
Function to check if hubbard corrections is being used.
std::vector< std::vector< dftfe::Int > > d_globalChargeIdToImageIdMap
globalChargeId to ImageChargeId Map
Definition dft.h:1475
dealii::DoFHandler< 3 > dofHandlerEigen
Definition dft.h:1575
std::vector< double > d_quadrupole
Definition dft.h:1839
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:36
Overloads dealii's distribute and distribute_local_to_global functions associated with constraints cl...
Definition constraintMatrixInfo.h:43
Calculates dispersion correction to energy, force and stress.
Definition dftd.h:37
Manager class for ELPA and ScaLAPACK.
Definition elpaScalaManager.h:38
Definition expConfiningPotential.h:29
computes configurational forces in KSDFT
Definition force.h:52
poisson solver problem class template. template parameter FEOrderElectro is the finite element polyno...
Definition kerkerSolverProblem.h:35
Definition BLASWrapper.h:35
Class to move triangulation nodes using Gaussian functions attached to control points.
Definition meshMovementGaussian.h:30
poisson solver problem class template. template parameter FEOrderElectro is the finite element polyno...
Definition poissonSolverProblem.h:38
density symmetrization based on irreducible Brillouin zone calculation, only relevant for calculation...
Definition symmetry.h:41
This class generates and stores adaptive finite element meshes for the real-space dft problem.
Definition triangulationManager.h:42
Definition MemoryStorage.h:33
Categorizes atoms into bins for efficient solution of nuclear electrostatic self-potential....
Definition vselfBinsManager.h:36
Definition FEBasisOperations.h:30
double number
Definition dftfeDataTypes.h:42
MemorySpace
Definition MemorySpaceType.h:33
@ HOST
Definition MemorySpaceType.h:34
@ DEVICE
Definition MemorySpaceType.h:36
Definition pseudoPotentialToDftfeConverter.cc:34
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:92
std::uint32_t uInt
Definition TypeConfig.h:10
constexpr dftfe::uInt C_rhoNodalPolyOrder()
rho nodal polynomial order
Definition constants.h:134
std::int32_t Int
Definition TypeConfig.h:11