24#ifndef energyCalculator_H_
25# define energyCalculator_H_
34 const std::shared_ptr<
36 FEBasisOperations<T, double, dftfe::utils::MemorySpace::HOST>>
38 const unsigned int quadratureId,
39 const std::map<dealii::CellId, std::vector<double>> &fieldValues,
46 const std::shared_ptr<
48 FEBasisOperations<T, double, dftfe::utils::MemorySpace::HOST>>
50 const unsigned int quadratureId,
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>>
64 const unsigned int quadratureId,
73 const std::shared_ptr<
75 FEBasisOperations<T, double, dftfe::utils::MemorySpace::HOST>>
77 const unsigned int quadratureId,
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,
93 const unsigned int numberAtoms,
94 const dealii::ConditionalOStream &pcout,
95 const bool reproducibleOutput,
97 const unsigned int verbosity,
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,
108 const unsigned int spinPolarized,
109 const dealii::ConditionalOStream & scout,
110 const MPI_Comm & interpoolcomm,
111 const unsigned int lowerBoundKindex,
112 const unsigned int verbosity,
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<unsigned int>>
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<unsigned int>>
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,
226 const unsigned int densityQuadratureID,
227 const unsigned int densityQuadratureIDElectro,
228 const unsigned int smearedChargeQuadratureIDElectro,
229 const unsigned int lpspQuadratureIDElectro,
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,
241 & phiTotRhoOutValues,
251 &gradDensityOutValues,
255 auxDensityXCInRepresentationPtr,
257 auxDensityXCOutRepresentationPtr,
258 const std::map<dealii::CellId, std::vector<double>> &smearedbValues,
259 const std::map<dealii::CellId, std::vector<unsigned int>>
260 & smearedbNonTrivialAtomIds,
261 const std::vector<std::vector<double>> &localVselfs,
262 const std::map<dealii::CellId, std::vector<double>> &pseudoLocValues,
263 const std::map<dealii::types::global_dof_index, double>
264 & atomElectrostaticNodeIdToChargeMap,
265 const unsigned int numberGlobalAtoms,
266 const unsigned int lowerBoundKindex,
267 const unsigned int scfConverged,
269 const bool smearedNuclearCharges =
false);
273 const std::shared_ptr<
278 const std::shared_ptr<
280 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
281 & basisOperationsPtrElectro,
282 const unsigned int densityQuadratureID,
283 const unsigned int densityQuadratureIDElectro,
284 const unsigned int smearedChargeQuadratureIDElectro,
285 const unsigned int lpspQuadratureIDElectro,
290 & phiTotRhoOutValues,
301 &gradDensityInValues,
304 &gradDensityOutValues,
306 AuxDensityXCInRepresentationPtr,
308 AuxDensityXCOutRepresentationPtr,
309 const std::map<dealii::CellId, std::vector<double>> &smearedbValues,
310 const std::map<dealii::CellId, std::vector<unsigned int>>
311 & smearedbNonTrivialAtomIds,
312 const std::vector<std::vector<double>> &localVselfs,
313 const std::map<dealii::types::global_dof_index, double>
314 & atomElectrostaticNodeIdToChargeMap,
315 const bool smearedNuclearCharges);
321 const std::shared_ptr<
325 & basisOperationsPtr,
326 const unsigned int quadratureId,
333 &gradDensityOutValues,
335 AuxDensityXCInRepresentationPtr,
337 auxDensityXCOutRepresentationPtr,
338 double &exchangeEnergy,
339 double &correlationEnergy,
340 double &excCorrPotentialTimesRho);
344 const std::vector<std::vector<double>> &eigenValues,
345 const std::vector<std::vector<double>> &partialOccupancies,
346 const std::vector<double> & kPointWeights,
347 const double fermiEnergy,
348 const double fermiEnergyUp,
349 const double fermiEnergyDown,
350 const bool isSpinPolarized,
351 const bool isConstraintMagnetization,
352 const double temperature)
const;
Definition AuxDensityMatrix.h:33
Definition FEBasisOperations.h:84
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:35
Calculates dispersion correction to energy, force and stress.
Definition dftd.h:37
const MPI_Comm interpoolcomm
Definition energyCalculator.h:359
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
const MPI_Comm d_mpiCommParent
Definition energyCalculator.h:357
const dftParameters & d_dftParams
Definition energyCalculator.h:362
const MPI_Comm interBandGroupComm
Definition energyCalculator.h:360
const MPI_Comm mpi_communicator
Definition energyCalculator.h:358
dealii::ConditionalOStream pcout
parallel message stream
Definition energyCalculator.h:365
void computeXCEnergyTermsSpinPolarized(const std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int 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, std::shared_ptr< AuxDensityMatrix< memorySpace > > AuxDensityXCInRepresentationPtr, std::shared_ptr< AuxDensityMatrix< memorySpace > > auxDensityXCOutRepresentationPtr, double &exchangeEnergy, double &correlationEnergy, double &excCorrPotentialTimesRho)
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 unsigned int densityQuadratureID, const unsigned int densityQuadratureIDElectro, const unsigned int smearedChargeQuadratureIDElectro, const unsigned int 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, 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< unsigned int > > &smearedbNonTrivialAtomIds, const std::vector< std::vector< double > > &localVselfs, const std::map< dealii::types::global_dof_index, double > &atomElectrostaticNodeIdToChargeMap, const bool smearedNuclearCharges)
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 unsigned int densityQuadratureID, const unsigned int densityQuadratureIDElectro, const unsigned int smearedChargeQuadratureIDElectro, const unsigned int 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 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< unsigned int > > &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 unsigned int numberGlobalAtoms, const unsigned int lowerBoundKindex, const unsigned int 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:44
Definition energyCalculator.h:30
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 unsigned int spinPolarized, const dealii::ConditionalOStream &scout, const MPI_Comm &interpoolcomm, const unsigned int lowerBoundKindex, const unsigned int verbosity, const dftParameters &dftParams)
void printEnergy(const double bandEnergy, const double totalkineticEnergy, const double totalexchangeEnergy, const double totalcorrelationEnergy, const double totalElectrostaticEnergy, const double dispersionEnergy, const double totalEnergy, const unsigned int numberAtoms, const dealii::ConditionalOStream &pcout, const bool reproducibleOutput, const bool isPseudo, const unsigned int verbosity, const dftParameters &dftParams)
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< unsigned int > > &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 computeFieldTimesDensityResidual(const std::shared_ptr< dftfe::basis::FEBasisOperations< T, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int 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)
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< unsigned int > > &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 computeRepulsiveEnergy(const std::vector< std::vector< double > > &atomLocationsAndCharge, const bool isPseudopotential)
double computeFieldTimesDensity(const std::shared_ptr< dftfe::basis::FEBasisOperations< T, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int quadratureId, const std::map< dealii::CellId, std::vector< double > > &fieldValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &densityQuadValues)
@ HOST
Definition MemorySpaceType.h:34
Definition pseudoPotentialToDftfeConverter.cc:34
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:92