37#ifdef DFTFE_WITH_DEVICE
51#include <interpolation.h>
83#ifndef DOXYGEN_SHOULD_SKIP_THIS
91 alglib::spline1dinterpolant psi;
96 template <dftfe::utils::MemorySpace memory>
98 template <dftfe::utils::MemorySpace memory>
109 template <dftfe::utils::MemorySpace memorySpace>
132 const MPI_Comm &mpi_comm_domain,
135 const std::string &scratchFolderName,
165 const bool checkSmearedChargeWidthsForOverlap =
true,
166 const bool useSingleAtomSolutionOverride =
false,
167 const bool isMeshDeformed =
false);
204 std::tuple<bool, double>
205 solve(
const bool computeForces =
true,
206 const bool computestress =
true,
207 const bool restartGroundStateCalcFromChk =
false);
238 const bool computeNorm);
308 const std::vector<dealii::types::global_dof_index> &
314 const std::vector<dealii::types::global_dof_index> &
320 const std::vector<dealii::types::global_dof_index> &
326 const std::vector<dealii::types::global_dof_index> &
332 const dealii::MatrixFree<3, double> &
353 const std::vector<dealii::Tensor<1, 3, double>> &globalAtomsDisplacements,
354 const double maxJacobianRatioFactor = 1.25,
355 const bool useSingleAtomSolutionsOverride =
false);
398 const std::vector<std::vector<double>> &
404 const std::vector<double> &
411 const std::vector<std::vector<double>> &
417 const std::vector<dftfe::Int> &
424 const std::vector<std::vector<double>> &
435 const std::vector<std::vector<double>> &
448 const std::set<dftfe::uInt> &
454 const std::vector<double> &
460 const dealii::Tensor<2, 3, double> &
486 const std::vector<std::vector<double>> &
506#ifdef DFTFE_WITH_DEVICE
511 chebyshevOrthogonalizedSubspaceIterationSolverDevice *
512 getSubspaceIterationSolverDevice();
528 &kohnShamDFTEigenOperator,
531 std::vector<double> &residualNormWaveFunctions,
532 const bool computeResidual,
533 const bool useMixedPrec =
false,
534 const bool isFirstScf =
false);
537#ifdef DFTFE_WITH_DEVICE
546 &kohnShamDFTEigenOperator,
548 chebyshevOrthogonalizedSubspaceIterationSolverDevice
549 &subspaceIterationSolverDevice,
550 std::vector<double> &residualNormWaveFunctions,
551 const bool computeResidual,
552 const dftfe::uInt numberRayleighRitzAvoidancePasses = 0,
553 const bool useMixedPrec =
false,
554 const bool isFirstScf =
false);
562 const std::vector<std::vector<double>> &eigenValuesInput,
563 const double numElectronsInput);
570 const std::vector<std::vector<double>> &eigenValuesInput,
571 const double numElectronsInput);
579 &kineticEnergyDensityValues);
597 const std::vector<double> &
606 const dealii::MatrixFree<3, double> &
609 dealii::AffineConstraints<double> *
634 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
641 std::shared_ptr<dftfe::linearAlgebra::BLASWrapper<memorySpace>>
662 const std::shared_ptr<
664 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
666 const dealii::AffineConstraints<double> &constraintMatrix,
670 &quadratureValueData,
674 std::map<dealii::types::global_dof_index, double> &
678 std::map<dealii::CellId, std::vector<double>> &
684 const dealii::AffineConstraints<double> *
687 const std::vector<std::vector<double>> &
702 const std::map<dealii::CellId, std::vector<dftfe::uInt>> &
710 const std::shared_ptr<
712 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
717 const std::map<dealii::CellId, std::vector<double>> *bQuadValues);
725 std::shared_ptr<hubbard<dataTypes::number, memorySpace>>
738 outputWfc(
const std::string outputFileName =
"wfcOutput");
743 const std::map<dealii::CellId, std::vector<double>> &
763 const std::vector<std::vector<double>> &atomCoordinates);
805 const std::shared_ptr<
812 &quadratureValueData,
814 const std::string &fieldName,
815 const std::string &folderPath,
816 const MPI_Comm &mpi_comm_parent,
817 const MPI_Comm &mpi_comm_domain,
841 const std::shared_ptr<
848 &quadratureValueData,
850 const std::string &fieldName,
851 const std::string &folderPath,
852 const MPI_Comm &mpi_comm_parent,
853 const MPI_Comm &mpi_comm_domain,
865 std::vector<dftfe::Int> &imageIds,
866 std::vector<double> &imageCharges,
867 std::vector<std::vector<double>> &imagePositions);
871 const double pspCutOff,
872 const std::vector<dftfe::Int> &imageIds,
873 const std::vector<std::vector<double>> &imagePositions,
874 std::vector<std::vector<dftfe::Int>> &globalChargeIdToImageIdMap);
895 dealii::Triangulation<3, 3> &triangulationSerial,
896 bool reuseFlag =
false,
897 bool moveSubdivided =
false);
921 dealii::parallel::distributed::Triangulation<3> &triangulation);
924 const bool meshOnlyDeformed =
false,
925 const bool vselfPerturbationUpdateForStress =
false);
938 dealii::parallel::distributed::Triangulation<3> &triangulation);
941 const bool meshOnlyDeformed,
942 const bool vselfPerturbationUpdateForStress =
false);
955 const dealii::DoFHandler<3> &_dofHandler,
956 const dealii::AffineConstraints<double> &onlyHangingNodeConstraints,
957 dealii::AffineConstraints<double> &constraintMatrix);
967 &quadratureValueData,
969 &quadratureGradValueData,
970 const bool isConsiderGradData =
false);
982 std::map<dealii::types::global_dof_index, double>
983 &atomNodeIdToChargeValueMap);
999 const dealii::DoFHandler<3> &_dofHandler,
1000 const dealii::AffineConstraints<double> &constraintMatrixBase,
1001 dealii::AffineConstraints<double> &constraintMatrix);
1048 const dealii::DoFHandler<3> &_dofHandler,
1050 const dealii::MatrixFree<3, double> &_matrix_free_data,
1052 const dealii::AffineConstraints<double> &phiExtConstraintMatrix,
1053 const std::map<dealii::types::global_dof_index, dealii::Point<3>>
1057 std::map<dealii::CellId, std::vector<double>> &_pseudoValues,
1058 std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
1059 &_pseudoValuesAtoms);
1073 const dealii::DoFHandler<3> &_dofHandler,
1074 const dealii::AffineConstraints<double> &onlyHangingNodeConstraints,
1075 dealii::AffineConstraints<double> &constraintMatrix);
1089 const dealii::DoFHandler<3> &dofHandlerOfField,
1090 const std::map<dealii::CellId, std::vector<double>> *rhoQuadValues);
1094 const dealii::DoFHandler<3> &dofHandlerOfField,
1100 totalCharge(
const dealii::MatrixFree<3, double> &matrixFreeDataObject,
1113 const dealii::MatrixFree<3, double> &matrixFreeDataObject,
1130 const std::shared_ptr<
1132 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
1133 &basisOperationsPtr,
1134 const dealii::AffineConstraints<double> &constraintMatrix,
1138 &quadratureValueData,
1187#ifdef DFTFE_WITH_DEVICE
1188 kerkerSolverProblemDeviceWrapperClass
1189 &kerkerPreconditionedResidualSolverProblemDevice,
1190 linearSolverCGDevice &CGSolverDevice,
1193 &kerkerPreconditionedResidualSolverProblem,
1208 const std::vector<std::vector<double>> &eigenValuesInput);
1216 const std::vector<std::vector<double>> &eigenValuesInput);
1224 const std::string &fileName);
1228 const std::string &fileName);
1260 const bool vselfPerturbationUpdateForStress =
false,
1261 const bool useSingleAtomSolutionsOverride =
false,
1262 const bool print =
true);
1270 std::complex<double>
1274 alphaTimesXPlusY(std::complex<double> alpha,
1295 &gradDensityQuadValues,
1299 const std::map<dealii::CellId, std::vector<double>> &rhoCore,
1300 const std::map<dealii::CellId, std::vector<double>> &gradRhoCore,
1302 &eigenVectorsFlattenedMemSpace,
1303 const std::vector<std::vector<double>> &
eigenValues,
1304 const double fermiEnergy_,
1305 const double fermiEnergyUp_,
1306 const double fermiEnergyDown_,
1327 std::map<dftfe::uInt, dftfe::uInt>
1427 std::map<dealii::CellId, std::vector<dftfe::Int>>
1436 std::vector<std::map<dealii::CellId, std::vector<dftfe::uInt>>>
1441 std::map<dealii::CellId, std::vector<dftfe::uInt>>
1446 std::vector<std::map<dealii::CellId, std::vector<dftfe::uInt>>>
1455 std::map<dftfe::uInt, std::map<dftfe::uInt, alglib::spline1dinterpolant>>>
1457 std::map<dftfe::uInt, std::map<dftfe::uInt, std::map<dftfe::uInt, double>>>
1475 std::vector<dealii::Tensor<1, 3, double>>
1521 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
1523#if defined(DFTFE_WITH_DEVICE)
1528 d_basisOperationsPtrDevice;
1531 FEBasisOperations<double, double, dftfe::utils::MemorySpace::DEVICE>>
1532 d_basisOperationsPtrElectroDevice;
1539 std::shared_ptr<dftfe::oncvClass<dataTypes::number, memorySpace>>
1547#if defined(DFTFE_WITH_DEVICE)
1557 std::vector<const dealii::AffineConstraints<double> *>
1564#if defined(DFTFE_WITH_DEVICE)
1565 utils::DeviceCCLWrapper *d_devicecclMpiCommDomainPtr;
1589#ifdef DFTFE_WITH_DEVICE
1590 poissonSolverProblemDeviceWrapperClass d_phiTotalSolverProblemDevice;
1592 poissonSolverProblemDeviceWrapperClass d_phiPrimeSolverProblemDevice;
1606#ifdef DFTFE_WITH_DEVICE
1607 chebyshevOrthogonalizedSubspaceIterationSolverDevice
1608 d_subspaceIterationSolverDevice;
1635#ifdef DFTFE_WITH_DEVICE
1637 d_constraintsNoneDataInfoDevice;
1689#ifdef DFTFE_WITH_DEVICE
1692 d_eigenVectorsFlattenedDevice;
1695 d_eigenVectorsDensityMatrixPrimeFlattenedDevice;
1769 std::map<dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
1801 std::map<dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
1813 std::map<dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
1818 std::map<dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
1906 const std::vector<std::vector<double>>
1907 &residualNormWaveFunctionsAllkPoints,
1908 const std::vector<std::vector<double>> &eigenValuesAllkPoints,
1909 const double _fermiEnergy,
1910 std::vector<double> &maxResidualsAllkPoints);
1918 const std::vector<std::vector<double>>
1919 &residualNormWaveFunctionsAllkPoints,
1920 const std::vector<std::vector<double>> &eigenValuesAllkPoints,
1922 std::vector<double> &maxResidualsAllkPoints);
1926#ifdef DFTFE_WITH_DEVICE
1932 &kohnShamDFTEigenOperator,
1934 chebyshevOrthogonalizedSubspaceIterationSolverDevice
1935 &subspaceIterationSolverDevice);
1944 &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
dftfe::uInt getElectroQuadratureRhsId() const
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...
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_phiOutQuadValues
Definition dft.h:1724
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.
std::vector< std::vector< double > > d_atomLocationsAutoMesh
Definition dft.h:1329
void compute_fermienergy_purestate(const std::vector< std::vector< double > > &eigenValuesInput, const double numElectronsInput)
find HOMO eigenvalue for pure state
dftfe::uInt d_phiPrimeDofHandlerIndexElectro
Definition dft.h:1505
std::shared_ptr< excManager< memorySpace > > d_excManagerPtr
Definition dft.h:1309
dftfe::uInt d_feOrderPlusOneQuadratureId
Definition dft.h:1501
dealii::AffineConstraints< double > d_constraintsForPhiPrimeElectro
Definition dft.h:1646
std::vector< std::vector< double > > d_meshSizes
Definition dft.h:1325
const std::vector< std::vector< double > > & getCell() const
Gets the current cell lattice vectors.
dealii::DoFHandler< 3 > d_dofHandlerRhoNodal
Definition dft.h:1490
std::vector< std::vector< dftfe::Int > > d_globalChargeIdToImageIdMapTrunc
globalChargeId to ImageChargeId Map generated with a truncated pspCutOff
Definition dft.h:1404
std::vector< double > d_kPointWeights
k point weights
Definition dft.h:1849
std::map< dealii::CellId, std::vector< double > > d_rhoAtomsValues
for xl-bomd
Definition dft.h:1767
void computeOutputDensityDirectionalDerivative(distributedCPUVec< double > &v, distributedCPUVec< double > &vSpin0, distributedCPUVec< double > &vSpin1, distributedCPUVec< double > &fv, distributedCPUVec< double > &fvSpin0, distributedCPUVec< double > &fvSpin1)
std::map< dealii::CellId, std::vector< dftfe::uInt > > d_bCellNonTrivialAtomImageIds
Definition dft.h:1442
std::vector< orbital > waveFunctionsVector
Definition dft.h:1452
void kohnShamEigenSpaceFirstOrderDensityMatResponse(const dftfe::uInt s, const dftfe::uInt kPointIndex, KohnShamDFTBaseOperator< dftfe::utils::MemorySpace::HOST > &kohnShamDFTEigenOperator, elpaScalaManager &elpaScala)
bool scfConverged
Definition dft.h:1895
std::vector< distributedCPUVec< double > > d_densityInNodalValues
Definition dft.h:1714
void computeRhoNodalFirstOrderResponseFromPSIAndPSIPrime(distributedCPUVec< double > &fv, distributedCPUVec< double > &fvSpin0, distributedCPUVec< double > &fvSpin1)
std::vector< std::vector< double > > d_localVselfs
Definition dft.h:1805
std::vector< const dealii::AffineConstraints< double > * > d_constraintsVectorElectro
Definition dft.h:1558
void saveTriaInfoAndRhoNodalData()
save triangulation information and rho quadrature data to checkpoint file for restarts
dealii::AffineConstraints< double > d_constraintsPRefinedOnlyHanging
Definition dft.h:1652
const std::vector< std::vector< double > > & getLocalVselfs() const
std::vector< std::vector< double > > d_imagePositionsTrunc
Definition dft.h:1401
std::vector< double > d_upperBoundUnwantedSpectrumValues
Definition dft.h:1885
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > d_BLASWrapperPtr
Definition dft.h:1552
const MPI_Comm & getMPIParent() const override
std::vector< dealii::Tensor< 1, 3, double > > d_gaussianMovementAtomsNetDisplacements
Definition dft.h:1476
distributedCPUVec< double > d_residualPredicted
Definition dft.h:1759
dftfe::uInt d_phiTotDofHandlerIndexElectro
Definition dft.h:1504
std::deque< distributedCPUVec< double > > d_fvcontainerVals
Definition dft.h:1754
dealii::AffineConstraints< double > constraintsNoneEigen
Definition dft.h:1641
double d_pspCutOff
distance from the domain till which periodic images will be considered
Definition dft.h:1407
void compute_localizationLength(const std::string &locLengthFileName)
compute localization length
dealii::IndexSet d_locallyRelevantDofsRhoNodal
Definition dft.h:1574
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
dftfe::uInt d_baseDofHandlerIndexElectro
Definition dft.h:1496
std::vector< double > d_nearestAtomDistances
nearest atom distances for all domain atoms
Definition dft.h:1369
bool isHubbardCorrectionsUsed()
Function to check if hubbard corrections is being used.
dealii::IndexSet locally_relevant_dofs
Definition dft.h:1573
const dealii::MatrixFree< 3, double > & getMatrixFreeData() const
Get matrix free data object.
void updatePRefinedConstraints()
void initHubbardOperator()
Checks if the Exc functional requires Hubbard correction and sets up the Hubbard class if required.
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...
void determineOrbitalFilling()
const MPI_Comm & getMPIDomain() const override
dftfe::uInt getSmearedChargeQuadratureIdElectro()
std::set< dftfe::uInt > atomTypes
Definition dft.h:1317
forceClass< memorySpace > * forcePtr
Definition dft.h:1581
std::deque< distributedCPUVec< double > > d_vcontainerVals
for low rank jacobian inverse approximation
Definition dft.h:1753
void noRemeshRhoDataInit()
double numElectronsUp
Definition dft.h:1316
std::shared_ptr< dftfe::atomCenteredOrbitalsPostProcessing< dataTypes::number, memorySpace > > d_atomCenteredOrbitalsPostProcessingPtr
Definition dft.h:1544
double d_entropicEnergy
entropic energy
Definition dft.h:1873
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_gradPhiInQuadValues
Definition dft.h:1726
void aposterioriMeshGenerate()
double numElectronsDown
Definition dft.h:1316
const double d_smearedChargeWidthMin
minimum smeared charge width
Definition dft.h:1450
dispersionCorrection d_dispersionCorr
Definition dft.h:1310
void initializeKohnShamDFTOperator(const bool initializeCublas=true)
void computeVselfFieldGateauxDerFD()
const std::string d_dftfeScratchFolderName
Definition dft.h:1599
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_gradDensityTotalInValuesLpspQuad
Definition dft.h:1739
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_gradPhiOutQuadValues
Definition dft.h:1726
std::vector< double > d_smearedChargeMoments
Definition dft.h:1748
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.
dealii::AffineConstraints< double > d_constraintsForTotalPotentialElectro
Definition dft.h:1644
std::shared_ptr< AuxDensityMatrix< memorySpace > > d_auxDensityMatrixXCInPtr
Definition dft.h:1741
void writeDomainAndAtomCoordinates(const std::string Path) const
writes the current domain bounding vectors and atom coordinates to files for structural optimization ...
double d_freeEnergyInitial
Definition dft.h:1868
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)
double totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const std::map< dealii::CellId, std::vector< double > > *rhoQuadValues)
std::vector< double > d_smearedChargeWidths
smeared charge widths for all domain atoms
Definition dft.h:1360
dftUtils::constraintMatrixInfo< dftfe::utils::MemorySpace::HOST > constraintsNoneEigenDataInfo
Definition dft.h:1622
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
dealii::IndexSet locally_owned_dofsEigen
Definition dft.h:1572
std::vector< double > d_gaussianConstantsAutoMesh
Definition dft.h:1350
dftParameters * d_dftParamsPtr
dftParameters object
Definition dft.h:1840
double totalCharge(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField)
void compute_rhoOut(const bool isGroundState=false)
Computes output electron-density from wavefunctions.
std::vector< std::vector< dftfe::Int > > d_globalChargeIdToImageIdMap
globalChargeId to ImageChargeId Map
Definition dft.h:1389
std::vector< double > d_flatTopWidthsAutoMeshMove
Definition dft.h:1357
void run()
FIXME: legacy call, move to main.cc.
std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > d_gradRhoAtomsValuesSeparate
Definition dft.h:1770
dealii::TimerOutput computing_timer
compute-time logger
Definition dft.h:1702
distributedCPUVec< double > d_preCondTotalDensityResidualVector
Definition dft.h:1730
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > getBLASWrapperHost()
const distributedCPUVec< double > & getRhoNodalSplitOut() const
void writeBands()
write the KS eigen values for given BZ sampling/path
void projectPreviousGroundStateRho()
project ground state electron density from previous mesh into the new mesh to be used as initial gues...
distributedCPUVec< double > d_rhoOutNodalValuesSplit
Definition dft.h:1729
void loadDensityFromQuadratureValues()
std::map< dealii::CellId, std::vector< double > > d_bQuadValuesAllAtoms
non-intersecting smeared charges of all atoms at quad points
Definition dft.h:1417
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
void writeMesh()
Writes inital density and mesh to file.
std::map< dealii::CellId, std::vector< double > > & getBQuadValuesAllAtoms()
non-intersecting smeared charges of all atoms at quad points
const std::vector< dealii::types::global_dof_index > & getLocalDofIndicesImag() const
Get local dofs global indices imag.
distributedCPUVec< double > d_rhoOutNodalValuesDistributed
Definition dft.h:1731
std::shared_ptr< AuxDensityMatrix< memorySpace > > d_auxDensityMatrixXCOutPtr
Definition dft.h:1742
std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > d_hessianRhoAtomsValuesSeparate
Definition dft.h:1771
dftUtils::constraintMatrixInfo< dftfe::utils::MemorySpace::HOST > constraintsNoneDataInfo
Definition dft.h:1632
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & getDensityOutValues()
distributedCPUVec< double > d_rhoInNodalValuesRead
Definition dft.h:1729
std::map< dftfe::uInt, dftfe::uInt > d_atomTypeAtributes
Definition dft.h:1321
void writeMesh(std::string meshFileName)
void resetRhoNodalIn(distributedCPUVec< double > &OutDensity)
dealii::IndexSet locally_owned_dofs
Definition dft.h:1572
std::vector< dealii::Tensor< 1, 3, double > > d_dispClosestTriaVerticesToAtoms
Definition dft.h:1853
std::map< dftfe::uInt, std::map< dftfe::uInt, std::map< dftfe::uInt, double > > > outerValues
Definition dft.h:1458
std::deque< distributedCPUVec< double > > d_fvSpin1containerVals
Definition dft.h:1758
std::shared_ptr< dftfe::oncvClass< dataTypes::number, memorySpace > > d_oncvClassPtr
Definition dft.h:1540
const MPI_Comm & getMPIInterBand() const override
const distributedCPUVec< double > & getRhoNodalOut() const
std::map< dealii::CellId, std::vector< dftfe::Int > > d_bQuadAtomIdsAllAtomsImages
Definition dft.h:1428
double computeAndPrintKE(dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &kineticEnergyDensityValues)
Computes the kinetic energy.
double d_autoMeshMaxJacobianRatio
Definition dft.h:1465
std::map< dealii::CellId, std::vector< double > > d_hessianRhoCore
Definition dft.h:1816
elpaScalaManager * d_elpaScala
Definition dft.h:1584
void totalMagnetization(const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &magQuadValues)
Computes net magnetization from the difference of local spin densities.
double d_monopole
Definition dft.h:1745
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_densityInQuadValues
Definition dft.h:1712
std::map< dealii::CellId, std::vector< double > > d_gradRhoCore
Definition dft.h:1811
void createpRefinedDofHandler(dealii::parallel::distributed::Triangulation< 3 > &triangulation)
double numElectrons
Definition dft.h:1316
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.
dataTypes::number computeTraceXtHX(dftfe::uInt numberWaveFunctionsEstimate)
bool d_smearedChargeMomentsComputed
Definition dft.h:1749
distributedCPUVec< double > d_rhoNodalFieldRefined
Definition dft.h:1730
bool d_tolReached
Definition dft.h:1763
chebyshevOrthogonalizedSubspaceIterationSolver d_subspaceIterationSolver
Definition dft.h:1605
const MPI_Comm mpi_communicator
Definition dft.h:1563
std::vector< dealii::types::global_dof_index > local_dof_indicesImag
Definition dft.h:1576
std::vector< std::vector< double > > d_domainBoundingVectors
Definition dft.h:1325
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOST > d_eigenVectorsDensityMatrixPrimeHost
Definition dft.h:1686
std::vector< double > d_imageCharges
Definition dft.h:1382
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
const dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOST > & getEigenVectorsHost() const
Get reference the host eigen vectors.
dftfe::uInt getDensityQuadratureId()
dealii::IndexSet d_locallyRelevantDofsPRefined
Definition dft.h:1574
std::deque< distributedCPUVec< double > > d_vSpin1containerVals
Definition dft.h:1757
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:1423
void computeRhoNodalFromPSI()
computes density nodal data from wavefunctions
dftfe::uInt d_nOMPThreads
Definition dft.h:1512
distributedCPUVec< double > d_magInNodalValuesRead
Definition dft.h:1734
std::vector< dftfe::Int > d_imageIds
Definition dft.h:1376
std::map< dealii::CellId, std::vector< double > > d_hessianRhoAtomsValues
Definition dft.h:1768
dealii::DoFHandler< 3 > dofHandler
Definition dft.h:1489
dealii::ConditionalOStream pcout
device eigenvectors
Definition dft.h:1699
std::vector< dftfe::uInt > d_nearestAtomIds
nearest atom ids for all domain atoms
Definition dft.h:1366
dftfe::uInt d_gllQuadratureId
Definition dft.h:1503
std::vector< std::vector< double > > d_densityMatDerFermiEnergy
Definition dft.h:1672
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_densityOutQuadValues
Definition dft.h:1712
std::vector< dealii::Point< 3 > > d_controlPointLocationsCurrentMove
Definition dft.h:1477
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_tauResidualQuadValues
Definition dft.h:1719
std::vector< double > d_smearedChargeScaling
smeared charge normalization scaling for all domain atoms
Definition dft.h:1363
dftfe::uInt getElectroQuadratureAxId() const
std::map< dealii::CellId, std::vector< double > > d_gradbQuadValuesAllAtoms
non-intersecting smeared charge gradients of all atoms at quad points
Definition dft.h:1420
void compute_fermienergy_constraintMagnetization_purestate(const std::vector< std::vector< double > > &eigenValuesInput)
Find spin-up and spin-down channel HOMO eigenvalues.
std::map< dealii::types::global_dof_index, dealii::Point< 3 > > d_supportPoints
Definition dft.h:1554
double getInternalEnergy() const
std::vector< distributedCPUVec< double > > d_densityResidualNodalValues
Definition dft.h:1715
std::map< dealii::CellId, std::vector< double > > d_pseudoVLoc
Definition dft.h:1797
void setNumElectrons(dftfe::uInt inputNumElectrons)
void applyKerkerPreconditionerToTotalDensityResidual(kerkerSolverProblemWrapperClass &kerkerPreconditionedResidualSolverProblem, dealiiLinearSolver &CGSolver, distributedCPUVec< double > &residualRho, distributedCPUVec< double > &preCondTotalDensityResidualVector)
Mixing schemes for mixing electron-density.
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.
dftfe::uInt d_autoMesh
Definition dft.h:1466
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:1883
std::map< dealii::types::global_dof_index, dealii::Point< 3 > > d_supportPointsPRefined
Definition dft.h:1555
dealii::AffineConstraints< double > * getDensityConstraint()
std::vector< dftfe::Int > d_imageIdsTrunc
Definition dft.h:1393
const MPI_Comm interBandGroupComm
Definition dft.h:1569
const std::vector< std::vector< double > > & getImageAtomLocationsCart() const
Gets the current image atom Locations in cartesian form (origin at center of domain) from dftClass.
double d_wfcInitTruncation
init wfc trunctation radius
Definition dft.h:1483
dftfe::uInt d_densityQuadratureIdElectro
Definition dft.h:1510
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
void applyPeriodicBCHigherOrderNodes()
Computes inner Product and Y = alpha*X + Y for complex vectors used during periodic boundary conditio...
double getCellVolume() const
Gets the current cell volume.
std::vector< double > d_quadrupole
Definition dft.h:1747
double rhofieldInnerProduct(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField1, const distributedCPUVec< double > &rhoNodalField2, const dftfe::uInt dofHandlerId, const dftfe::uInt quadratureId)
void reInitializeKohnShamDFTOperator()
void initUnmovedTriangulation(dealii::parallel::distributed::Triangulation< 3 > &triangulation)
dealii::AffineConstraints< double > d_noConstraints
Definition dft.h:1642
distributedCPUVec< double > d_phiExt
Definition dft.h:1792
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > getBasisOperationsHost()
std::vector< std::vector< double > > d_imagePositionsAutoMesh
Definition dft.h:1330
double fermiEnergy
fermi energy
Definition dft.h:1866
const dealii::MatrixFree< 3, double > & getMatrixFreeDataElectro() const
virtual void writeGSElectronDensity(const std::string Path) const
writes quadrature grid information and associated spin-up and spin-down electron-density for post-pro...
const dealii::AffineConstraints< double > * getConstraintsVectorElectro()
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...
const MPI_Comm & getMPIInterPool() const override
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_tauInQuadValues
Definition dft.h:1719
const std::vector< dealii::types::global_dof_index > & getLocalDofIndicesReal() const
Get local dofs global indices real.
void initpRefinedObjects(const bool recomputeBasisData, const bool meshOnlyDeformed, const bool vselfPerturbationUpdateForStress=false)
dftfe::uInt d_binsStartDofHandlerIndexElectro
Definition dft.h:1508
std::vector< dealii::Tensor< 1, 3, double > > d_atomsDisplacementsGaussianRead
Gaussian displacements of atoms read from file.
Definition dft.h:1333
std::vector< double > bLow
Definition dft.h:1879
const MPI_Comm d_mpiCommParent
Definition dft.h:1567
std::vector< bool > selectedDofsHanging
Definition dft.h:1579
std::shared_ptr< hubbard< dataTypes::number, memorySpace > > getHubbardClassPtr()
Returns the shared ptr to hubbard class.
std::map< dealii::types::global_dof_index, dealii::Point< 3 > > d_supportPointsEigen
Definition dft.h:1555
std::vector< std::vector< double > > eigenValues
Definition dft.h:1664
void writeStructureEnergyForcesDataPostProcess(const std::string Path) const
writes atomistics data for subsequent post-processing. Related to WRITE STRUCTURE ENERGY FORCES DATA ...
const std::vector< dftfe::Int > & getImageAtomIDs() const
Gets the current image atom ids from dftClass.
std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > getBasisOperationsElectroHost()
std::vector< std::vector< double > > d_atomLocationsInterestPseudopotential
Definition dft.h:1326
distributedCPUVec< double > d_phiPrime
Definition dft.h:1789
dftfe::uInt getNumEigenValues() const
double lowrankApproxScfDielectricMatrixInv(const dftfe::uInt scfIter)
dealii::IndexSet locally_relevant_dofsEigen
Definition dft.h:1573
void computeRhoInitialGuessFromPSI(std::vector< std::vector< distributedCPUVec< double > > > eigenVectors)
dftfe::uInt d_forceDofHandlerIndex
Definition dft.h:1492
dftfe::uInt d_forceDofHandlerIndexElectro
Definition dft.h:1497
std::vector< double > kPointReducedCoordinates
k point crystal coordinates
Definition dft.h:1846
const dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > & getEigenVectors() const
Get reference the memorySpace templated eigen vectors.
void compute_tdos(const std::vector< std::vector< double > > &eigenValuesInput, const std::string &fileName)
compute density of states and local density of states
std::map< dftfe::uInt, std::map< dftfe::uInt, std::map< dftfe::uInt, alglib::spline1dinterpolant > > > radValues
Definition dft.h:1456
double getFermiEnergy() const
Get the value of fermi energy.
dftfe::uInt d_nonAtomicWaveFunctions
Number of random wavefunctions.
Definition dft.h:300
dftfe::uInt d_rankCurrentLRD
Definition dft.h:1760
dftfe::uInt numLevels
Definition dft.h:1315
void writeDomainAndAtomCoordinates()
writes the current domain bounding vectors and atom coordinates to files, which are required for geom...
double d_freeEnergy
Definition dft.h:1870
dealii::DoFHandler< 3 > d_dofHandlerPRefined
Definition dft.h:1489
void set()
atomic system pre-processing steps.
triangulationManager * getTriangulationManager()
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.
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 &vselfBinManager, distributedCPUVec< double > &phiExt, std::map< dealii::CellId, std::vector< double > > &_pseudoValues, std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &_pseudoValuesAtoms)
dealii::AffineConstraints< double > constraintsNone
Definition dft.h:1641
double d_relativeErrorJacInvApproxPrevScfLRD
Definition dft.h:1761
std::vector< std::map< dealii::CellId, std::vector< dftfe::uInt > > > d_bCellNonTrivialAtomIdsBins
Definition dft.h:1437
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtrHost
Definition dft.h:1518
std::vector< dealii::types::global_dof_index > localProc_dof_indicesReal
Definition dft.h:1577
const std::vector< dealii::types::global_dof_index > & getLocalProcDofIndicesReal() const
Get local dofs local proc indices real.
const std::vector< std::vector< double > > & getAtomLocationsFrac() const
Gets the current atom Locations in fractional form from dftClass (only applicable for periodic and se...
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOST > d_eigenVectorsFlattenedHost
Definition dft.h:1682
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_phiInQuadValues
Definition dft.h:1724
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > d_BLASWrapperPtrHost
Definition dft.h:1537
std::vector< double > d_dipole
Definition dft.h:1746
double d_domainVolume
volume of the domain
Definition dft.h:1480
void initImageChargesUpdateKPoints(bool flag=true)
generate image charges and update k point cartesian coordinates based on current lattice vectors
std::vector< double > d_generatorFlatTopWidths
composite generator flat top widths for all domain atoms
Definition dft.h:1353
expConfiningPotential d_expConfiningPot
Definition dft.h:1947
void initBoundaryConditions(const bool recomputeBasisData=true, const bool meshOnlyDeformed=false, const bool vselfPerturbationUpdateForStress=false)
void outputDensity()
write electron density solution fields
double d_nlPSPCutOff
Definition dft.h:1414
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_densityResidualQuadValues
Definition dft.h:1713
void solveNoSCF()
compute approximation to ground-state without solving the SCF iteration
const std::vector< dealii::types::global_dof_index > & getLocalProcDofIndicesImag() const
Get local dofs local proc indices imag.
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)....
symmetryClass< memorySpace > * symmetryPtr
Definition dft.h:1582
dealii::Timer d_globalTimer
Definition dft.h:1707
double getEntropicEnergy() const
const std::vector< double > & getNearestAtomDistance() const
Gets the nearest atom distance for each atom.
std::vector< dealii::types::global_dof_index > local_dof_indicesReal
Definition dft.h:1575
poissonSolverProblemWrapperClass d_phiTotalSolverProblem
Definition dft.h:1586
dealii::MatrixFree< 3, double > matrix_free_data
Definition dft.h:1513
dealii::AffineConstraints< double > d_constraintsRhoNodalOnlyHanging
Definition dft.h:1656
double fermiEnergyDown
Definition dft.h:1866
std::vector< std::vector< double > > d_fracOccupancy
Definition dft.h:1670
std::vector< dealii::Point< 3 > > d_closestTriaVertexToAtomsLocation
closest tria vertex
Definition dft.h:1852
std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > d_gradRhoCoreAtoms
Definition dft.h:1814
bool d_isAtomsGaussianDisplacementsReadFromFile
Definition dft.h:1341
poissonSolverProblemWrapperClass d_phiPrimeSolverProblem
Definition dft.h:1588
double d_residualNormPredicted
Definition dft.h:1762
static constexpr double d_tikhonovRegularizationConstantLRD
Definition dft.h:1764
std::map< dftfe::uInt, dftfe::uInt > d_atomIdPseudopotentialInterestToGlobalId
Definition dft.h:1328
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_gradDensityOutQuadValues
Definition dft.h:1775
dftfe::uInt d_lpspQuadratureIdElectro
Definition dft.h:1502
dftfe::uInt d_phiExtDofHandlerIndexElectro
Definition dft.h:1491
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_densityTotalInValuesLpspQuad
Definition dft.h:1738
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > getBLASWrapperMemSpace()
dftfe::uInt getElectroDofHandlerIndex() const
const std::set< dftfe::uInt > & getAtomTypes() const
Gets the current atom types from dftClass.
std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > d_rhoAtomsValuesSeparate
Definition dft.h:1770
void outputWfc(const std::string outputFileName="wfcOutput")
write wavefunction solution fields
dealii::AffineConstraints< double > d_constraintsPRefined
Definition dft.h:1650
std::map< dealii::CellId, std::vector< double > > d_gradRhoAtomsValues
Definition dft.h:1768
std::map< dealii::CellId, std::vector< dftfe::uInt > > d_bCellNonTrivialAtomIds
Definition dft.h:1432
double getFreeEnergy() const
std::vector< std::vector< double > > d_reciprocalLatticeVectors
Definition dft.h:1325
MixingScheme d_mixingScheme
Definition dft.h:1727
std::map< dealii::types::global_dof_index, double > & getAtomNodeToChargeMap()
map of atom node number and atomic weight
void initElectronicFields()
std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtrElectroHost
Definition dft.h:1522
meshMovementAffineTransform d_affineTransformMesh
affine transformation object
Definition dft.h:1470
std::vector< double > a0
Definition dft.h:1878
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
std::vector< std::vector< double > > d_imagePositions
Definition dft.h:1386
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, memorySpace > > getBasisOperationsMemSpace()
triangulationManager d_mesh
Definition dft.h:1463
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & getDensityInValues()
std::vector< std::map< dealii::CellId, std::vector< dftfe::uInt > > > d_bCellNonTrivialAtomImageIdsBins
Definition dft.h:1447
double fermiEnergyUp
Definition dft.h:1866
std::map< dealii::types::global_dof_index, double > d_atomNodeIdToChargeMap
map of atom node number and atomic weight
Definition dft.h:1824
std::shared_ptr< hubbard< dataTypes::number, memorySpace > > d_hubbardClassPtr
Definition dft.h:1948
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...
dftfe::uInt d_lpspQuadratureId
Definition dft.h:1500
elpaScalaManager * getElpaScalaManager() const
const std::vector< double > & getKPointWeights() const
std::vector< double > d_imageChargesTrunc
Definition dft.h:1397
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 loadTriaInfoAndRhoNodalData()
load triangulation information rho quadrature data from checkpoint file for restarted run
std::deque< distributedCPUVec< double > > d_fvSpin0containerVals
Definition dft.h:1756
bool d_useHubbard
Definition dft.h:1949
dftParameters & getParametersObject() const
Get reference to dftParameters object.
dftfe::uInt d_phiTotAXQuadratureIdElectro
Definition dft.h:1506
dealii::AffineConstraints< double > d_constraintsRhoNodal
Definition dft.h:1654
double fieldGradl2Norm(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &field)
void normalizeRhoInQuadValues()
normalize the input electron density
double totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const distributedCPUVec< double > &rhoNodalField)
Computes total charge by integrating the electron-density.
void compute_ldos(const std::vector< std::vector< double > > &eigenValuesInput, const std::string &fileName)
virtual void resetRhoNodalSplitIn(distributedCPUVec< double > &OutDensity)
distributedCPUVec< double > d_tempEigenVec
Definition dft.h:1887
dealii::MatrixFree< 3, double > d_matrixFreeDataPRefined
Definition dft.h:1513
const std::vector< std::vector< double > > & getAtomLocationsCart() const
Gets the current atom Locations in cartesian form (origin at center of domain) from dftClass.
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::uInt d_nonPeriodicDensityDofHandlerIndexElectro
Definition dft.h:1495
double computeTraceXtKX(dftfe::uInt numberWaveFunctionsEstimate)
void normalizeRhoOutQuadValues()
normalize the output total electron density in each scf
double d_groundStateEnergy
Definition dft.h:1866
dftfe::uInt d_smearedChargeQuadratureIdElectro
Definition dft.h:1498
double computeVolume(const dealii::DoFHandler< 3 > &_dofHandler)
Computes the volume of the domain.
const std::map< dealii::CellId, std::vector< double > > & getPseudoVLoc() const
return the pseudo potential field
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_gradDensityTotalOutValuesLpspQuad
Definition dft.h:1739
const std::map< dealii::CellId, std::vector< dftfe::uInt > > & getbCellNonTrivialAtomIds() const
double lowrankApproxScfDielectricMatrixInvSpinPolarized(const dftfe::uInt scfIter)
dftfe::uInt d_nlpspQuadratureId
Definition dft.h:1499
double getNumElectrons() const
Get the number of electrons.
dealii::FESystem< 3 > FEEigen
Definition dft.h:1488
void recomputeKPointCoordinates()
int lowerBoundKindex
global k index of lower bound of the local k point set
Definition dft.h:1856
std::vector< distributedCPUVec< double > > d_densityOutNodalValues
Definition dft.h:1715
dealii::FESystem< 3 > FE
Definition dft.h:1488
void trivialSolveForStress()
bool d_kohnShamDFTOperatorsInitialized
Definition dft.h:1595
std::vector< const dealii::AffineConstraints< double > * > d_constraintsVector
Definition dft.h:1556
dftfe::uInt getDensityDofHandlerIndex()
get the index of the DoF Handler corresponding to
std::vector< std::vector< double > > atomLocations
FIXME: remove atom type atributes from atomLocations.
Definition dft.h:1324
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)
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_tauOutQuadValues
Definition dft.h:1719
KohnShamDFTBaseOperator< memorySpace > * getKohnShamDFTBaseOperatorClass()
get the Ptr to the operator class ( Kohn Sham Base Operator)
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_gradDensityResidualQuadValues
Definition dft.h:1776
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
dealii::TimerOutput computingTimerStandard
Definition dft.h:1703
void normalizeAtomicRhoQuadValues()
normalize the electron density
void solveBands()
compute bands without solving the SCF iteration
const dftfe::uInt n_mpi_processes
Definition dft.h:1570
std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > d_pseudoVLocAtoms
Definition dft.h:1802
double d_atomicRhoScalingFac
Definition dft.h:1006
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_gradDensityInQuadValues
Definition dft.h:1775
std::vector< dealii::types::global_dof_index > localProc_dof_indicesImag
Definition dft.h:1578
std::vector< double > d_netFloatingDispSinceLastCheckForSmearedChargeOverlaps
Definition dft.h:1339
std::vector< double > d_kPointCoordinates
kPoint cartesian coordinates
Definition dft.h:1843
std::map< dealii::CellId, std::vector< double > > d_rhoCore
Definition dft.h:1809
KohnShamDFTBaseOperator< memorySpace > * d_kohnShamDFTOperatorPtr
Definition dft.h:1597
dftfe::uInt d_numEigenValues
Number of Kohn-Sham eigen values to be computed.
Definition dft.h:294
const dealii::Tensor< 2, 3, double > & getCellStress() const
Gets the current cell stress from dftClass.
const dftfe::uInt this_mpi_process
Definition dft.h:1571
void computeRhoNodalMassVector(dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &massVec)
Computes the diagonal mass matrix for rho nodal grid, used for nodal mixing.
const std::vector< double > & getForceonAtoms() const
Gets the current atomic forces from dftClass.
void nscf(KohnShamDFTBaseOperator< memorySpace > &kohnShamDFTEigenOperator, chebyshevOrthogonalizedSubspaceIterationSolver &subspaceIterationSolver)
double rhofieldl2Norm(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField, const dftfe::uInt dofHandlerId, const dftfe::uInt quadratureId)
double computeResidualNodalData(const distributedCPUVec< double > &outValues, const distributedCPUVec< double > &inValues, distributedCPUVec< double > &residualValues)
void finalizeKohnShamDFTOperator()
void determineAtomsOfInterstPseudopotential(const std::vector< std::vector< double > > &atomCoordinates)
std::vector< double > d_netFloatingDispSinceLastBinsUpdate
Definition dft.h:1336
distributedCPUVec< double > d_phiTotRhoOut
Definition dft.h:1784
bool d_isRestartGroundStateCalcFromChk
Definition dft.h:1889
dftUtils::constraintMatrixInfo< dftfe::utils::MemorySpace::HOST > d_constraintsRhoNodalInfo
Definition dft.h:1659
dftfe::uInt d_densityDofHandlerIndexElectro
Definition dft.h:1494
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.
const MPI_Comm interpoolcomm
Definition dft.h:1568
double totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoQuadValues)
void initPseudoPotentialAll(const bool updateNonlocalSparsity=true)
dftfe::uInt d_helmholtzDofHandlerIndexElectro
Definition dft.h:1507
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_densityDofHandlerIndex
Definition dft.h:1493
const expConfiningPotential & getConfiningPotential() const
std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, memorySpace > > getBasisOperationsElectroMemSpace()
~dftClass()
dftClass destructor
std::vector< std::vector< double > > atomLocationsFractional
Definition dft.h:1324
void normalizeRhoMagInInitialGuessQuadValues()
normalize input mag electron density to total magnetization for use in constraint magnetization case ...
std::vector< std::vector< double > > d_partialOccupancies
Definition dft.h:1665
dealii::DoFHandler< 3 > dofHandlerEigen
Definition dft.h:1489
chebyshevOrthogonalizedSubspaceIterationSolver * getSubspaceIterationSolverHost()
Get the Ptr to Chebyshev solver in host.
vselfBinsManager d_vselfBinsManager
vselfBinsManager object
Definition dft.h:1827
std::vector< distributedCPUVec< double > > d_vselfFieldGateauxDerStrainFDBins
Definition dft.h:1832
std::vector< double > d_gaussianConstantsForce
Definition dft.h:1346
dealii::AffineConstraints< double > d_constraintsForHelmholtzRhoNodal
Definition dft.h:1648
std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > d_hessianRhoCoreAtoms
Definition dft.h:1819
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_gradPhiResQuadValues
Definition dft.h:1726
const std::vector< std::vector< double > > & getEigenValues() const
Get reference to the eigen values.
const double d_pspCutOffTrunc
distance from the domain till which periodic images will be considered
Definition dft.h:1410
distributedCPUVec< double > d_phiTotRhoIn
Definition dft.h:1780
double d_minDist
Definition dft.h:1372
void init()
Does KSDFT problem pre-processing steps including mesh generation calls.
void readPSIRadialValues()
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_densityTotalOutValuesLpspQuad
Definition dft.h:1738
std::deque< distributedCPUVec< double > > d_vSpin0containerVals
Definition dft.h:1755
std::deque< distributedCPUVec< double > > d_groundStateDensityHistory
Definition dft.h:1795
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.
dftfe::uInt d_densityQuadratureId
Definition dft.h:1509
meshMovementGaussianClass d_gaussianMovePar
meshMovementGaussianClass object
Definition dft.h:1473
double getTotalChargeforRhoSplit()
dftfe::uInt d_sparsityPatternQuadratureId
Definition dft.h:1511
void calculateSmearedChargeWidths()
a
dftfe::uInt d_eigenDofHandlerIndex
Definition dft.h:1491
void calculateNearestAtomDistances()
a
void loadPSIFiles(dftfe::uInt Z, dftfe::uInt n, dftfe::uInt l, dftfe::uInt &flag)
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:50
Definition kerkerSolverProblemWrapper.h:64
Definition BLASWrapper.h:35
Class to move triangulation nodes using Gaussian functions attached to control points.
Definition meshMovementGaussian.h:30
Definition poissonSolverProblemWrapper.h:66
density symmetrization based on irreducible Brillouin zone calculation, only relevant for calculation...
Definition symmetry.h:39
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:34
Definition FEBasisOperations.h:30
double number
Definition dftfeDataTypes.h:42
@ 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
std::int32_t Int
Definition TypeConfig.h:11