DFT-FE 1.1.0-pre
Density Functional Theory With Finite-Elements
Loading...
Searching...
No Matches
dftfe::energyCalculator< memorySpace > Class Template Reference

Calculates the ksdft problem total energy and its components. More...

#include <energyCalculator.h>

Public Member Functions

 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.
 
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)
 
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)
 
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 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
 

Private Attributes

const MPI_Comm d_mpiCommParent
 
const MPI_Comm mpi_communicator
 
const MPI_Comm interpoolcomm
 
const MPI_Comm interBandGroupComm
 
const dftParametersd_dftParams
 
dealii::ConditionalOStream pcout
 parallel message stream
 

Detailed Description

template<dftfe::utils::MemorySpace memorySpace>
class dftfe::energyCalculator< memorySpace >

Calculates the ksdft problem total energy and its components.

Author
Sambit Das, Shiva Rudraraju, Phani Motamarri, Krishnendu Ghosh

Constructor & Destructor Documentation

◆ energyCalculator()

template<dftfe::utils::MemorySpace memorySpace>
dftfe::energyCalculator< memorySpace >::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.

Parameters
mpi_comm_parentparent mpi communicator
mpi_comm_domainmpi communicator of domain decomposition
interpool_commmpi interpool communicator over k points
interBandGroupCommmpi interpool communicator over band groups

Member Function Documentation

◆ computeEnergy()

template<dftfe::utils::MemorySpace memorySpace>
double dftfe::energyCalculator< memorySpace >::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 )

Computes total energy of the ksdft problem in the current state and also prints the individual components of the energy

Parameters
dofHandlerElectrostaticp refined DoFHandler object used for re-computing the electrostatic fields using the ground state electron density. If electrostatics is not recomputed on p refined mesh, use dofHandlerElectronic for this argument.
dofHandlerElectronicDoFHandler object on which the electrostatics for the eigen solve are computed.
quadratureElectrostaticqudarature object for dofHandlerElectrostatic.
quadratureElectronicqudarature object for dofHandlerElectronic.
eigenValueseigenValues for each k point.
kPointWeights
fermiEnergy
funcXexchange functional object.
funcCcorrelation functional object.
phiTotRhoInnodal vector field of total electrostatic potential using input electron density to an eigensolve. This vector field is based on dofHandlerElectronic.
phiTotRhoOutnodal vector field of total electrostatic potential using output electron density to an eigensolve. This vector field is based on dofHandlerElectrostatic.
rhoInValuescell quadrature data of input electron density to an eigensolve. This data must correspond to quadratureElectronic.
rhoOutValuescell quadrature data of output electron density of an eigensolve. This data must correspond to quadratureElectronic.
rhoOutValuesElectrostaticcell quadrature data of output electron density of an eigensolve evaluated on a p refined mesh. This data corresponds to quadratureElectrostatic.
gradRhoInValuescell quadrature data of input gradient electron density to an eigensolve. This data must correspond to quadratureElectronic.
gradRhoOutValuescell quadrature data of output gradient electron density of an eigensolve. This data must correspond to quadratureElectronic.
localVselfspeak vselfs of local atoms in each vself bin
atomElectrostaticNodeIdToChargeMapmap between locally processor atom global node ids of dofHandlerElectrostatic to atom charge value.
numberGlobalAtoms
lowerBoundKindexglobal k index of lower bound of the local k point set in the current pool
ifscf is converged
print
Returns
total energy

◆ computeEnergyResidual()

template<dftfe::utils::MemorySpace memorySpace>
double dftfe::energyCalculator< memorySpace >::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 )

◆ computeEntropicEnergy()

template<dftfe::utils::MemorySpace memorySpace>
double dftfe::energyCalculator< memorySpace >::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

◆ computeXCEnergyTermsSpinPolarized()

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::energyCalculator< memorySpace >::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 )

Member Data Documentation

◆ d_dftParams

template<dftfe::utils::MemorySpace memorySpace>
const dftParameters& dftfe::energyCalculator< memorySpace >::d_dftParams
private

◆ d_mpiCommParent

template<dftfe::utils::MemorySpace memorySpace>
const MPI_Comm dftfe::energyCalculator< memorySpace >::d_mpiCommParent
private

◆ interBandGroupComm

template<dftfe::utils::MemorySpace memorySpace>
const MPI_Comm dftfe::energyCalculator< memorySpace >::interBandGroupComm
private

◆ interpoolcomm

template<dftfe::utils::MemorySpace memorySpace>
const MPI_Comm dftfe::energyCalculator< memorySpace >::interpoolcomm
private

◆ mpi_communicator

template<dftfe::utils::MemorySpace memorySpace>
const MPI_Comm dftfe::energyCalculator< memorySpace >::mpi_communicator
private

◆ pcout

template<dftfe::utils::MemorySpace memorySpace>
dealii::ConditionalOStream dftfe::energyCalculator< memorySpace >::pcout
private

parallel message stream


The documentation for this class was generated from the following file: