26#ifndef dftefeElectrostaticLocalFE_h
27#define dftefeElectrostaticLocalFE_h
44 template <
typename ValueTypeBasisData,
45 typename ValueTypeBasisCoeff,
46 typename ValueTypeWaveFnBasisData,
52 ValueTypeWaveFnBasisData,
59 ValueTypeWaveFnBasisData,
64 ValueTypeWaveFnBasisData,
69 ValueTypeWaveFnBasisData,
78 std::vector<utils::Point> atomCoordinates,
79 std::vector<double> atomCharges,
80 std::vector<double> smearedChargeRadius,
82 & electronChargeDensity,
86 dim>> feBMTotalCharge,
89 feBDTotalChargeStiffnessMatrix,
95 memorySpace>> feBDHamiltonian,
102 std::vector<utils::Point> atomCoordinates,
103 std::vector<double> atomCharges,
104 std::vector<double> smearedChargeRadius,
106 & electronChargeDensity,
110 dim>> feBMTotalCharge,
113 feBDTotalChargeStiffnessMatrix,
119 feBDNuclearChargeStiffnessMatrix,
122 feBDNuclearChargeRhs,
125 memorySpace>> feBDHamiltonian,
136 std::vector<utils::Point> atomCoordinates,
140 dim>> feBMTotalCharge,
143 feBDTotalChargeStiffnessMatrix,
149 memorySpace>> feBDHamiltonian);
153 std::vector<utils::Point> atomCoordinates,
157 dim>> feBMTotalCharge,
160 feBDTotalChargeStiffnessMatrix,
166 feBDNuclearChargeStiffnessMatrix,
169 feBDNuclearChargeRhs,
172 memorySpace>> feBDHamiltonian);
177 &electronChargeDensity);
201 feBDNuclearChargeStiffnessMatrix,
204 feBDNuclearChargeRhs);
232 std::vector<linearAlgebra::MultiVector<ValueType, memorySpace> *>
259 ValueTypeWaveFnBasisData,
263 std::shared_ptr<linearAlgebra::LinAlgOpContext<memorySpace>>
An abstract class to store and access data for a given basis, such as the basis function values on a ...
Definition: FEBasisDataStorage.h:53
An abstract class to encapsulate the partitioning of a finite element basis across multiple processor...
Definition: FEBasisManager.h:44
Definition: FEBasisOperations.h:57
A derived class of linearAlgebra::LinearSolverFunction to encapsulate the Poisson partial differentia...
Definition: PoissonLinearSolverFunctionFE.h:76
A derived class of linearAlgebra::OperatorContext to encapsulate the action of a discrete operator on...
Definition: ElectrostaticFE.h:64
Definition: ElectrostaticLocalFE.h:55
void getLocal(Storage &cellWiseStorage) const override
Definition: ElectrostaticLocalFE.t.cpp:917
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)
Definition: ElectrostaticLocalFE.t.cpp:646
typename ElectrostaticFE< ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim >::ValueType ValueType
Definition: ElectrostaticLocalFE.h:61
RealType d_energy
Definition: ElectrostaticLocalFE.h:212
~ElectrostaticLocalFE()
Definition: ElectrostaticLocalFE.t.cpp:311
const size_type d_numAtoms
Definition: ElectrostaticLocalFE.h:209
std::vector< utils::Point > d_atomCoordinates
Definition: ElectrostaticLocalFE.h:208
void evalEnergy()
Definition: ElectrostaticLocalFE.t.cpp:1097
std::vector< linearAlgebra::MultiVector< ValueType, memorySpace > * > d_nuclearChargesPotential
Definition: ElectrostaticLocalFE.h:233
quadrature::QuadratureValuesContainer< ValueType, memorySpace > * d_totalAuxChargePotentialQuad
Definition: ElectrostaticLocalFE.h:223
std::shared_ptr< electrostatics::PoissonLinearSolverFunctionFE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim > > d_linearSolverFunction
Definition: ElectrostaticLocalFE.h:272
std::vector< RealType > d_nuclearChargeQuad
Definition: ElectrostaticLocalFE.h:265
quadrature::QuadratureValuesContainer< RealType, memorySpace > * d_nuclearChargesDensity
Definition: ElectrostaticLocalFE.h:219
quadrature::QuadratureValuesContainer< ValueType, memorySpace > * d_totalAuxChargePotAtbSmearQuad
Definition: ElectrostaticLocalFE.h:225
linearAlgebra::MultiVector< ValueType, memorySpace > * d_totalChargePotential
Definition: ElectrostaticLocalFE.h:215
quadrature::QuadratureValuesContainer< ValueType, memorySpace > * d_nuclearCorrectionPotAtRhoQuad
Definition: ElectrostaticLocalFE.h:229
const std::vector< double > d_atomCharges
Definition: ElectrostaticLocalFE.h:210
const size_type d_numComponents
Definition: ElectrostaticLocalFE.h:207
quadrature::QuadratureValuesContainer< RealType, memorySpace > * d_totalChargeDensity
Definition: ElectrostaticLocalFE.h:217
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > d_linAlgOpContext
Definition: ElectrostaticLocalFE.h:264
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > d_feBDNuclearChargeRhs
Definition: ElectrostaticLocalFE.h:257
typename ElectrostaticFE< ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim >::RealType RealType
Definition: ElectrostaticLocalFE.h:71
std::shared_ptr< const basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim > > d_feBasisOpHamiltonian
Definition: ElectrostaticLocalFE.h:262
quadrature::QuadratureValuesContainer< ValueType, memorySpace > * d_nuclearCorrectionPotQuad
Definition: ElectrostaticLocalFE.h:227
std::shared_ptr< const basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > > d_feBasisOp
Definition: ElectrostaticLocalFE.h:243
bool d_isNumerical
Definition: ElectrostaticLocalFE.h:206
void reinitField(const quadrature::QuadratureValuesContainer< RealType, memorySpace > &electronChargeDensity)
Definition: ElectrostaticLocalFE.t.cpp:843
quadrature::QuadratureValuesContainer< ValueType, memorySpace > * d_totalChargePotentialQuad
Definition: ElectrostaticLocalFE.h:231
typename ElectrostaticFE< ValueTypeBasisData, ValueTypeBasisCoeff, ValueTypeWaveFnBasisData, memorySpace, dim >::Storage Storage
Definition: ElectrostaticLocalFE.h:66
const quadrature::QuadratureValuesContainer< ValueType, memorySpace > * d_electronChargeDensity
Definition: ElectrostaticLocalFE.h:221
size_type d_cellTimesNumVecPoisson
Definition: ElectrostaticLocalFE.h:266
std::shared_ptr< const basis::FEBasisManager< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > > d_feBMTotalCharge
Definition: ElectrostaticLocalFE.h:248
std::vector< std::shared_ptr< basis::FEBasisManager< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > > > d_feBMNuclearCharge
Definition: ElectrostaticLocalFE.h:238
const std::vector< double > d_smearedChargeRadius
Definition: ElectrostaticLocalFE.h:211
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > d_feBDTotalChargeStiffnessMatrix
Definition: ElectrostaticLocalFE.h:251
std::shared_ptr< electrostatics::PoissonLinearSolverFunctionFE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim > > d_linearSolverFunctionNuclear
Definition: ElectrostaticLocalFE.h:278
RealType getEnergy() const override
Definition: ElectrostaticLocalFE.t.cpp:1307
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > d_feBDTotalChargeRhs
Definition: ElectrostaticLocalFE.h:254
const utils::ScalarSpatialFunctionReal & d_externalPotentialFunction
Definition: ElectrostaticLocalFE.h:213
void nuclearPotentialSolve(std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBDNuclearChargeStiffnessMatrix, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBDNuclearChargeRhs)
Definition: ElectrostaticLocalFE.t.cpp:950
Definition: LinAlgOpContext.h:38
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition: MultiVector.h:134
Definition: QuadratureValuesContainer.h:39
Definition: Function.h:10
MemorySpace
Definition: MemorySpaceType.h:37
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
unsigned int size_type
Definition: TypeConfig.h:8