#include <ElectrostaticLocalFE.h>
Public Types | |
using | ValueType = typename ElectrostaticFE< ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim >::ValueType |
using | Storage = typename ElectrostaticFE< ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim >::Storage |
using | RealType = typename ElectrostaticFE< ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim >::RealType |
Public Types inherited from dftefe::ksdft::ElectrostaticFE< ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim > | |
using | ValueType = linearAlgebra::blasLapack::scalar_type< ValueTypeBasisData, ValueTypeBasisCoeff > |
using | Storage = utils::MemoryStorage< linearAlgebra::blasLapack::scalar_type< linearAlgebra::blasLapack::scalar_type< ValueTypeBasisData, ValueTypeWaveFnBasisData >, ValueTypeBasisCoeff >, memorySpace > |
using | RealType = linearAlgebra::blasLapack::real_type< ValueType > |
Public Member Functions | |
ElectrostaticLocalFE (std::vector< utils::Point > atomCoordinates, std::vector< double > atomCharges, std::vector< double > smearedChargeRadius, const quadrature::QuadratureValuesContainer< RealType, memorySpace > &electronChargeDensity, std::shared_ptr< const basis::FEBasisManager< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > > feBMTotalCharge, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBDTotalChargeStiffnessMatrix, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBDTotalChargeRhs, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFnBasisData, memorySpace > > feBDHamiltonian, const utils::ScalarSpatialFunctionReal &externalPotentialFunction, std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > linAlgOpContext, const size_type maxCellTimesNumVecs) | |
Constructor. More... | |
ElectrostaticLocalFE (std::vector< utils::Point > atomCoordinates, std::vector< double > atomCharges, std::vector< double > smearedChargeRadius, const quadrature::QuadratureValuesContainer< RealType, memorySpace > &electronChargeDensity, std::shared_ptr< const basis::FEBasisManager< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > > feBMTotalCharge, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBDTotalChargeStiffnessMatrix, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBDTotalChargeRhs, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBDNuclearChargeStiffnessMatrix, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBDNuclearChargeRhs, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFnBasisData, memorySpace > > feBDHamiltonian, const utils::ScalarSpatialFunctionReal &externalPotentialFunction, std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > linAlgOpContext, const size_type maxCellTimesNumVecs) | |
~ElectrostaticLocalFE () | |
void | reinitBasis (std::vector< utils::Point > atomCoordinates, std::shared_ptr< const basis::FEBasisManager< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > > feBMTotalCharge, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBDTotalChargeStiffnessMatrix, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBDTotalChargeRhs, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFnBasisData, memorySpace > > feBDHamiltonian) |
void | reinitBasis (std::vector< utils::Point > atomCoordinates, std::shared_ptr< const basis::FEBasisManager< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > > feBMTotalCharge, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBDTotalChargeStiffnessMatrix, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBDTotalChargeRhs, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBDNuclearChargeStiffnessMatrix, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBDNuclearChargeRhs, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFnBasisData, memorySpace > > feBDHamiltonian) |
void | reinitField (const quadrature::QuadratureValuesContainer< RealType, memorySpace > &electronChargeDensity) |
void | getLocal (Storage &cellWiseStorage) const override |
void | evalEnergy () |
RealType | getEnergy () const override |
virtual void | getLocal (Storage &cellWiseStorage) const =0 |
virtual RealType | getEnergy () const =0 |
Public Member Functions inherited from dftefe::ksdft::Hamiltonian< linearAlgebra::blasLapack::scalar_type< linearAlgebra::blasLapack::scalar_type< ValueTypeBasisData, ValueTypeWaveFnBasisData >, ValueTypeBasisCoeff >, memorySpace > | |
virtual void | getLocal (utils::MemoryStorage< linearAlgebra::blasLapack::scalar_type< linearAlgebra::blasLapack::scalar_type< ValueTypeBasisData, ValueTypeWaveFnBasisData >, ValueTypeBasisCoeff >, memorySpace > &cellWiseStorage) const=0 |
virtual linearAlgebra::blasLapack::real_type< linearAlgebra::blasLapack::scalar_type< ValueTypeBasisData, ValueTypeBasisCoeff > > | getEnergy () const=0 |
Private Member Functions | |
void | nuclearPotentialSolve (std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBDNuclearChargeStiffnessMatrix, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBDNuclearChargeRhs) |
using dftefe::ksdft::ElectrostaticLocalFE< ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim >::RealType = typename ElectrostaticFE<ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim>::RealType |
using dftefe::ksdft::ElectrostaticLocalFE< ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim >::Storage = typename ElectrostaticFE<ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim>::Storage |
using dftefe::ksdft::ElectrostaticLocalFE< ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim >::ValueType = typename ElectrostaticFE<ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim>::ValueType |
dftefe::ksdft::ElectrostaticLocalFE< ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim >::ElectrostaticLocalFE | ( | std::vector< utils::Point > | atomCoordinates, |
std::vector< double > | atomCharges, | ||
std::vector< double > | smearedChargeRadius, | ||
const quadrature::QuadratureValuesContainer< RealType, memorySpace > & | electronChargeDensity, | ||
std::shared_ptr< const basis::FEBasisManager< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > > | feBMTotalCharge, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > | feBDTotalChargeStiffnessMatrix, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > | feBDTotalChargeRhs, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFnBasisData, memorySpace > > | feBDHamiltonian, | ||
const utils::ScalarSpatialFunctionReal & | externalPotentialFunction, | ||
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > | linAlgOpContext, | ||
const size_type | maxCellTimesNumVecs | ||
) |
Constructor.
dftefe::ksdft::ElectrostaticLocalFE< ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim >::ElectrostaticLocalFE | ( | std::vector< utils::Point > | atomCoordinates, |
std::vector< double > | atomCharges, | ||
std::vector< double > | smearedChargeRadius, | ||
const quadrature::QuadratureValuesContainer< RealType, memorySpace > & | electronChargeDensity, | ||
std::shared_ptr< const basis::FEBasisManager< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > > | feBMTotalCharge, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > | feBDTotalChargeStiffnessMatrix, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > | feBDTotalChargeRhs, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > | feBDNuclearChargeStiffnessMatrix, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > | feBDNuclearChargeRhs, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFnBasisData, memorySpace > > | feBDHamiltonian, | ||
const utils::ScalarSpatialFunctionReal & | externalPotentialFunction, | ||
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > | linAlgOpContext, | ||
const size_type | maxCellTimesNumVecs | ||
) |
dftefe::ksdft::ElectrostaticLocalFE< ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim >::~ElectrostaticLocalFE |
void dftefe::ksdft::ElectrostaticLocalFE< ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim >::evalEnergy |
|
overridevirtual |
template <typename ValueTypeBasisData, typename ValueTypeBasisCoeff, typename ValueTypeWaveFnBasisData, utils::MemorySpace memorySpace, size_type dim> typename ElectrostaticFE<ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim>RealType ElectrostaticLocalFE<ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim>::getTotalChargePotentialTimesRho() const { auto jxwStorage = d_feBDTotalChargeRhs->getJxWInAllCells();
const size_type numLocallyOwnedCells = d_feBMTotalCharge->nLocallyOwnedCells();
std::vector<RealType> totalChargePotentialTimesRhoVec = ElectrostaticLocalFEInternal::getIntegralFieldTimesRho< ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim>(*d_totalChargePotentialQuad, d_electronChargeDensity, jxwStorage, numLocallyOwnedCells, d_linAlgOpContext, d_feBMTotalCharge->getMPIPatternP2P()->mpiCommunicator());
RealType totalChargePotentialTimesRho = totalChargePotentialTimesRhoVec[0]; return totalChargePotentialTimesRho; }
|
overridevirtual |
|
private |
void dftefe::ksdft::ElectrostaticLocalFE< ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim >::reinitBasis | ( | std::vector< utils::Point > | atomCoordinates, |
std::shared_ptr< const basis::FEBasisManager< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > > | feBMTotalCharge, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > | feBDTotalChargeStiffnessMatrix, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > | feBDTotalChargeRhs, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > | feBDNuclearChargeStiffnessMatrix, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > | feBDNuclearChargeRhs, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFnBasisData, memorySpace > > | feBDHamiltonian | ||
) |
void dftefe::ksdft::ElectrostaticLocalFE< ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim >::reinitBasis | ( | std::vector< utils::Point > | atomCoordinates, |
std::shared_ptr< const basis::FEBasisManager< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > > | feBMTotalCharge, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > | feBDTotalChargeStiffnessMatrix, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > | feBDTotalChargeRhs, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFnBasisData, memorySpace > > | feBDHamiltonian | ||
) |
void dftefe::ksdft::ElectrostaticLocalFE< ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim >::reinitField | ( | const quadrature::QuadratureValuesContainer< RealType, memorySpace > & | electronChargeDensity | ) |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |