DFT-FE 1.1.0-pre
Density Functional Theory With Finite-Elements
|
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 dftParameters & | d_dftParams |
dealii::ConditionalOStream | pcout |
parallel message stream | |
Calculates the ksdft problem total energy and its components.
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.
mpi_comm_parent | parent mpi communicator |
mpi_comm_domain | mpi communicator of domain decomposition |
interpool_comm | mpi interpool communicator over k points |
interBandGroupComm | mpi interpool communicator over band groups |
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
dofHandlerElectrostatic | p 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. |
dofHandlerElectronic | DoFHandler object on which the electrostatics for the eigen solve are computed. |
quadratureElectrostatic | qudarature object for dofHandlerElectrostatic. |
quadratureElectronic | qudarature object for dofHandlerElectronic. |
eigenValues | eigenValues for each k point. |
kPointWeights | |
fermiEnergy | |
funcX | exchange functional object. |
funcC | correlation functional object. |
phiTotRhoIn | nodal vector field of total electrostatic potential using input electron density to an eigensolve. This vector field is based on dofHandlerElectronic. |
phiTotRhoOut | nodal vector field of total electrostatic potential using output electron density to an eigensolve. This vector field is based on dofHandlerElectrostatic. |
rhoInValues | cell quadrature data of input electron density to an eigensolve. This data must correspond to quadratureElectronic. |
rhoOutValues | cell quadrature data of output electron density of an eigensolve. This data must correspond to quadratureElectronic. |
rhoOutValuesElectrostatic | cell quadrature data of output electron density of an eigensolve evaluated on a p refined mesh. This data corresponds to quadratureElectrostatic. |
gradRhoInValues | cell quadrature data of input gradient electron density to an eigensolve. This data must correspond to quadratureElectronic. |
gradRhoOutValues | cell quadrature data of output gradient electron density of an eigensolve. This data must correspond to quadratureElectronic. |
localVselfs | peak vselfs of local atoms in each vself bin |
atomElectrostaticNodeIdToChargeMap | map between locally processor atom global node ids of dofHandlerElectrostatic to atom charge value. |
numberGlobalAtoms | |
lowerBoundKindex | global k index of lower bound of the local k point set in the current pool |
if | scf is converged |
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 ) |
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 |
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 ) |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
parallel message stream