24#ifndef energyCalculator_H_
25# define energyCalculator_H_
34 const std::shared_ptr<
36 FEBasisOperations<T, double, dftfe::utils::MemorySpace::HOST>>
39 const std::map<dealii::CellId, std::vector<double>> &fieldValues,
46 const std::shared_ptr<
48 FEBasisOperations<T, double, dftfe::utils::MemorySpace::HOST>>
51 const std::map<dealii::CellId, std::vector<double>> &fieldValues,
55 &densityQuadValuesOut);
60 const std::shared_ptr<
62 FEBasisOperations<T, double, dftfe::utils::MemorySpace::HOST>>
73 const std::shared_ptr<
75 FEBasisOperations<T, double, dftfe::utils::MemorySpace::HOST>>
83 &densityQuadValuesOut);
87 const double totalkineticEnergy,
88 const double totalexchangeEnergy,
89 const double totalcorrelationEnergy,
90 const double totalElectrostaticEnergy,
91 const double dispersionEnergy,
92 const double totalEnergy,
94 const dealii::ConditionalOStream &pcout,
95 const bool reproducibleOutput,
102 const std::vector<std::vector<double>> &partialOccupancies,
103 const std::vector<double> &kPointWeights,
104 const double fermiEnergy,
105 const double fermiEnergyUp,
106 const double fermiEnergyDown,
109 const dealii::ConditionalOStream &scout,
110 const MPI_Comm &interpoolcomm,
118 const std::vector<std::vector<double>> &localVselfs,
119 const std::map<dealii::CellId, std::vector<double>> &smearedbValues,
120 const std::map<dealii::CellId, std::vector<dftfe::uInt>>
121 &smearedbNonTrivialAtomIds,
122 const dealii::DoFHandler<3> &dofHandlerElectrostatic,
123 const dealii::Quadrature<3> &quadratureElectrostatic,
124 const dealii::Quadrature<3> &quadratureSmearedCharge,
125 const std::map<dealii::types::global_dof_index, double>
126 &atomElectrostaticNodeIdToChargeMap,
127 const bool smearedNuclearCharges =
false);
133 const std::map<dealii::CellId, std::vector<double>> &smearedbValues,
134 const std::map<dealii::CellId, std::vector<dftfe::uInt>>
135 &smearedbNonTrivialAtomIds,
136 const dealii::DoFHandler<3> &dofHandlerElectrostatic,
137 const dealii::Quadrature<3> &quadratureSmearedCharge,
138 const std::map<dealii::types::global_dof_index, double>
139 &atomElectrostaticNodeIdToChargeMap,
140 const bool smearedNuclearCharges =
false);
144 const std::vector<std::vector<double>> &atomLocationsAndCharge,
145 const bool isPseudopotential);
153 template <dftfe::utils::MemorySpace memorySpace>
166 const MPI_Comm &mpi_comm_domain,
167 const MPI_Comm &interpool_comm,
217 const std::shared_ptr<
222 const std::shared_ptr<
224 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
225 &basisOperationsPtrElectro,
228 const dftfe::uInt smearedChargeQuadratureIDElectro,
230 const std::vector<std::vector<double>> &eigenValues,
231 const std::vector<std::vector<double>> &partialOccupancies,
232 const std::vector<double> &kPointWeights,
233 const double fermiEnergy,
234 const double fermiEnergyUp,
235 const double fermiEnergyDown,
251 &gradDensityOutValues,
261 auxDensityXCInRepresentationPtr,
263 auxDensityXCOutRepresentationPtr,
264 const std::map<dealii::CellId, std::vector<double>> &smearedbValues,
265 const std::map<dealii::CellId, std::vector<dftfe::uInt>>
266 &smearedbNonTrivialAtomIds,
267 const std::vector<std::vector<double>> &localVselfs,
268 const std::map<dealii::CellId, std::vector<double>> &pseudoLocValues,
269 const std::map<dealii::types::global_dof_index, double>
270 &atomElectrostaticNodeIdToChargeMap,
275 const bool smearedNuclearCharges =
false);
279 const std::shared_ptr<
284 const std::shared_ptr<
286 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
287 &basisOperationsPtrElectro,
290 const dftfe::uInt smearedChargeQuadratureIDElectro,
307 &gradDensityInValues,
310 &gradDensityOutValues,
318 AuxDensityXCInRepresentationPtr,
320 AuxDensityXCOutRepresentationPtr,
321 const std::map<dealii::CellId, std::vector<double>> &smearedbValues,
322 const std::map<dealii::CellId, std::vector<dftfe::uInt>>
323 &smearedbNonTrivialAtomIds,
324 const std::vector<std::vector<double>> &localVselfs,
325 const std::map<dealii::types::global_dof_index, double>
326 &atomElectrostaticNodeIdToChargeMap,
327 const bool smearedNuclearCharges);
332 const std::shared_ptr<
344 &gradDensityOutValues,
349 AuxDensityXCInRepresentationPtr,
351 auxDensityXCOutRepresentationPtr,
352 double &exchangeEnergy,
353 double &correlationEnergy,
354 double &excCorrPotentialTimesRho);
358 const std::vector<std::vector<double>> &eigenValues,
359 const std::vector<std::vector<double>> &partialOccupancies,
360 const std::vector<double> &kPointWeights,
361 const double fermiEnergy,
362 const double fermiEnergyUp,
363 const double fermiEnergyDown,
364 const bool isSpinPolarized,
365 const bool isConstraintMagnetization,
366 const double temperature)
const;
Definition AuxDensityMatrix.h:40
Definition FEBasisOperations.h:85
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:36
Calculates dispersion correction to energy, force and stress.
Definition dftd.h:37
const MPI_Comm interpoolcomm
Definition energyCalculator.h:373
double computeEnergyResidual(const std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtrElectro, const dftfe::uInt densityQuadratureID, const dftfe::uInt densityQuadratureIDElectro, const dftfe::uInt smearedChargeQuadratureIDElectro, const dftfe::uInt lpspQuadratureIDElectro, const std::shared_ptr< excManager< memorySpace > > excManagerPtr, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &phiTotRhoInValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &phiTotRhoOutValues, const distributedCPUVec< double > &phiTotRhoIn, const distributedCPUVec< double > &phiTotRhoOut, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &tauInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &tauOutValues, std::shared_ptr< AuxDensityMatrix< memorySpace > > AuxDensityXCInRepresentationPtr, std::shared_ptr< AuxDensityMatrix< memorySpace > > AuxDensityXCOutRepresentationPtr, const std::map< dealii::CellId, std::vector< double > > &smearedbValues, const std::map< dealii::CellId, std::vector< dftfe::uInt > > &smearedbNonTrivialAtomIds, const std::vector< std::vector< double > > &localVselfs, const std::map< dealii::types::global_dof_index, double > &atomElectrostaticNodeIdToChargeMap, const bool smearedNuclearCharges)
double computeEntropicEnergy(const std::vector< std::vector< double > > &eigenValues, const std::vector< std::vector< double > > &partialOccupancies, const std::vector< double > &kPointWeights, const double fermiEnergy, const double fermiEnergyUp, const double fermiEnergyDown, const bool isSpinPolarized, const bool isConstraintMagnetization, const double temperature) const
void computeXCEnergyTermsSpinPolarized(const std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const dftfe::uInt quadratureId, const std::shared_ptr< excManager< memorySpace > > excManagerPtr, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &tauInValues, std::shared_ptr< AuxDensityMatrix< memorySpace > > AuxDensityXCInRepresentationPtr, std::shared_ptr< AuxDensityMatrix< memorySpace > > auxDensityXCOutRepresentationPtr, double &exchangeEnergy, double &correlationEnergy, double &excCorrPotentialTimesRho)
const MPI_Comm d_mpiCommParent
Definition energyCalculator.h:371
const dftParameters & d_dftParams
Definition energyCalculator.h:376
const MPI_Comm interBandGroupComm
Definition energyCalculator.h:374
const MPI_Comm mpi_communicator
Definition energyCalculator.h:372
dealii::ConditionalOStream pcout
parallel message stream
Definition energyCalculator.h:379
double computeEnergy(const std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtrElectro, const dftfe::uInt densityQuadratureID, const dftfe::uInt densityQuadratureIDElectro, const dftfe::uInt smearedChargeQuadratureIDElectro, const dftfe::uInt lpspQuadratureIDElectro, const std::vector< std::vector< double > > &eigenValues, const std::vector< std::vector< double > > &partialOccupancies, const std::vector< double > &kPointWeights, const double fermiEnergy, const double fermiEnergyUp, const double fermiEnergyDown, const std::shared_ptr< excManager< memorySpace > > excManagerPtr, const dispersionCorrection &dispersionCorr, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &phiTotRhoInValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &phiTotRhoOutValues, const distributedCPUVec< double > &phiTotRhoOut, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &tauInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &tauOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoOutValuesLpsp, std::shared_ptr< AuxDensityMatrix< memorySpace > > auxDensityXCInRepresentationPtr, std::shared_ptr< AuxDensityMatrix< memorySpace > > auxDensityXCOutRepresentationPtr, const std::map< dealii::CellId, std::vector< double > > &smearedbValues, const std::map< dealii::CellId, std::vector< dftfe::uInt > > &smearedbNonTrivialAtomIds, const std::vector< std::vector< double > > &localVselfs, const std::map< dealii::CellId, std::vector< double > > &pseudoLocValues, const std::map< dealii::types::global_dof_index, double > &atomElectrostaticNodeIdToChargeMap, const dftfe::uInt numberGlobalAtoms, const dftfe::uInt lowerBoundKindex, const dftfe::uInt scfConverged, const bool print, const bool smearedNuclearCharges=false)
energyCalculator(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &interpool_comm, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams)
Constructor.
Definition excManager.h:28
Definition MemoryStorage.h:33
Definition FEBasisOperations.h:30
double number
Definition dftfeDataTypes.h:42
Definition energyCalculator.h:30
double computeFieldTimesDensity(const std::shared_ptr< dftfe::basis::FEBasisOperations< T, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const dftfe::uInt quadratureId, const std::map< dealii::CellId, std::vector< double > > &fieldValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &densityQuadValues)
double nuclearElectrostaticEnergyResidualLocal(const distributedCPUVec< double > &phiTotRhoIn, const distributedCPUVec< double > &phiTotRhoOut, const std::map< dealii::CellId, std::vector< double > > &smearedbValues, const std::map< dealii::CellId, std::vector< dftfe::uInt > > &smearedbNonTrivialAtomIds, const dealii::DoFHandler< 3 > &dofHandlerElectrostatic, const dealii::Quadrature< 3 > &quadratureSmearedCharge, const std::map< dealii::types::global_dof_index, double > &atomElectrostaticNodeIdToChargeMap, const bool smearedNuclearCharges=false)
double localBandEnergy(const std::vector< std::vector< double > > &eigenValues, const std::vector< std::vector< double > > &partialOccupancies, const std::vector< double > &kPointWeights, const double fermiEnergy, const double fermiEnergyUp, const double fermiEnergyDown, const double TVal, const dftfe::uInt spinPolarized, const dealii::ConditionalOStream &scout, const MPI_Comm &interpoolcomm, const dftfe::uInt lowerBoundKindex, const dftfe::uInt verbosity, const dftParameters &dftParams)
double computeRepulsiveEnergy(const std::vector< std::vector< double > > &atomLocationsAndCharge, const bool isPseudopotential)
double nuclearElectrostaticEnergyLocal(const distributedCPUVec< double > &phiTotRhoOut, const std::vector< std::vector< double > > &localVselfs, const std::map< dealii::CellId, std::vector< double > > &smearedbValues, const std::map< dealii::CellId, std::vector< dftfe::uInt > > &smearedbNonTrivialAtomIds, const dealii::DoFHandler< 3 > &dofHandlerElectrostatic, const dealii::Quadrature< 3 > &quadratureElectrostatic, const dealii::Quadrature< 3 > &quadratureSmearedCharge, const std::map< dealii::types::global_dof_index, double > &atomElectrostaticNodeIdToChargeMap, const bool smearedNuclearCharges=false)
double computeFieldTimesDensityResidual(const std::shared_ptr< dftfe::basis::FEBasisOperations< T, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const dftfe::uInt quadratureId, const std::map< dealii::CellId, std::vector< double > > &fieldValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &densityQuadValuesIn, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &densityQuadValuesOut)
void printEnergy(const double bandEnergy, const double totalkineticEnergy, const double totalexchangeEnergy, const double totalcorrelationEnergy, const double totalElectrostaticEnergy, const double dispersionEnergy, const double totalEnergy, const dftfe::uInt numberAtoms, const dealii::ConditionalOStream &pcout, const bool reproducibleOutput, const bool isPseudo, const dftfe::uInt verbosity, const dftParameters &dftParams)
@ HOST
Definition MemorySpaceType.h:34
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