20#ifndef DFTFE_ONCVCLASS_H
21#define DFTFE_ONCVCLASS_H
43# define omp_get_thread_num() 0
47 template <
typename ValueType, dftfe::utils::MemorySpace memorySpace>
52 const std::string & scratchFolderName,
53 const std::set<unsigned int> &atomTypes,
54 const bool floatingNuclearCharges,
55 const unsigned int nOMPThreads,
56 const std::map<unsigned int, unsigned int> &atomAttributes,
57 const bool reproducibleOutput,
60 const bool memOptMode);
81 FEBasisOperations<ValueType, double, dftfe::utils::MemorySpace::HOST>>
82 basisOperationsHostPtr,
83#
if defined(DFTFE_WITH_DEVICE)
88 basisOperationsDevicePtr,
93#
if defined(DFTFE_WITH_DEVICE)
98 unsigned int densityQuadratureId,
99 unsigned int localContributionQuadratureId,
100 unsigned int sparsityPatternQuadratureId,
101 unsigned int nlpspQuadratureId,
102 unsigned int densityQuadratureIdElectro,
104 const std::vector<std::vector<double>> & atomLocations,
105 unsigned int numEigenValues,
106 const bool singlePrecNonLocalOperator,
107 const bool computeSphericalFnTimesXNonLocalOperator =
true);
127 const std::vector<std::vector<double>> &atomLocations,
128 const std::vector<int> & imageIds,
129 const std::vector<std::vector<double>> &periodicCoords,
130 const std::vector<double> & kPointWeights,
131 const std::vector<double> & kPointCoordinates,
132 const bool updateNonlocalSparsity);
137 const std::vector<std::vector<double>> & atomLocations,
138 const std::vector<int> & imageIds,
139 const std::vector<std::vector<double>> & periodicCoords,
140 const std::vector<double> & kPointWeights,
141 const std::vector<double> & kPointCoordinates,
142 const bool updateNonlocalSparsity,
143 const std::map<
unsigned int, std::vector<int>> &sparsityPattern,
144 const std::vector<std::vector<dealii::CellId>>
145 &elementIdsInAtomCompactSupport,
146 const std::vector<std::vector<unsigned int>>
147 & elementIndexesInAtomCompactSupport,
148 const std::vector<unsigned int> &atomIdsInCurrentProcess,
149 unsigned int numberElements);
161 std::vector<double> &Val);
172 std::vector<double> &Val);
203 const std::shared_ptr<
229 const std::vector<int> & imageIds,
230 const std::vector<std::vector<double>> &periodicCoords,
231 std::vector<unsigned int> & imageIdsTemp,
232 std::vector<double> &imageCoordsTemp);
249#if defined(DFTFE_WITH_DEVICE)
252 d_BLASWrapperDevicePtr;
255 std::map<unsigned int, std::vector<double>>
265 std::vector<std::shared_ptr<AtomCenteredSphericalFunctionBase>>
267 std::shared_ptr<AtomCenteredSphericalFunctionContainer>
269 std::map<std::pair<unsigned int, unsigned int>,
270 std::shared_ptr<AtomCenteredSphericalFunctionBase>>
290 FEBasisOperations<ValueType, double, dftfe::utils::MemorySpace::HOST>>
292#if defined(DFTFE_WITH_DEVICE)
295 FEBasisOperations<ValueType, double, dftfe::utils::MemorySpace::DEVICE>>
296 d_BasisOperatorDevicePtr;
313 std::shared_ptr<AtomicCenteredNonLocalOperator<ValueType, memorySpace>>
322 std::vector<std::shared_ptr<AtomCenteredSphericalFunctionBase>>
324 std::vector<std::map<
unsigned int,
325 std::shared_ptr<AtomCenteredSphericalFunctionBase>>>
327 std::vector<std::map<
unsigned int,
328 std::shared_ptr<AtomCenteredSphericalFunctionBase>>>
330 std::vector<std::map<
unsigned int,
331 std::shared_ptr<AtomCenteredSphericalFunctionBase>>>
Definition AtomicCenteredNonLocalOperator.h:58
Definition FEBasisOperations.h:84
Definition excManager.h:28
Definition BLASWrapper.h:35
std::map< unsigned int, unsigned int > d_atomTypeAtributes
Definition oncvClass.h:336
int d_verbosity
Definition oncvClass.h:302
const dftfe::utils::MemoryStorage< typename dftfe::dataTypes::singlePrecType< ValueType >::type, memorySpace > & getCouplingMatrixSinglePrec()
void createAtomCenteredSphericalFunctionsForDensities()
Creating Density splines for all atomTypes.
void computeNonlocalPseudoPotentialConstants()
oncvClass(const MPI_Comm &mpi_comm_parent, const std::string &scratchFolderName, const std::set< unsigned int > &atomTypes, const bool floatingNuclearCharges, const unsigned int nOMPThreads, const std::map< unsigned int, unsigned int > &atomAttributes, const bool reproducibleOutput, const int verbosity, const bool useDevice, const bool memOptMode)
const std::shared_ptr< AtomicCenteredNonLocalOperator< ValueType, memorySpace > > getNonLocalOperator()
std::vector< std::vector< double > > d_nonLocalPseudoPotentialConstants
Definition oncvClass.h:254
std::shared_ptr< excManager< memorySpace > > d_excManagerPtr
Definition oncvClass.h:287
unsigned int getAtomIdInCurrentProcessor(unsigned int iAtom)
const unsigned int d_this_mpi_process
Definition oncvClass.h:275
std::map< unsigned int, bool > d_atomTypeCoreFlagMap
Definition oncvClass.h:299
void initialiseNonLocalContribution(const std::vector< std::vector< double > > &atomLocations, const std::vector< int > &imageIds, const std::vector< std::vector< double > > &periodicCoords, const std::vector< double > &kPointWeights, const std::vector< double > &kPointCoordinates, const bool updateNonlocalSparsity)
Initialises all the data members with addresses/values to/of dftClass.
std::shared_ptr< AtomicCenteredNonLocalOperator< ValueType, memorySpace > > d_nonLocalOperator
Definition oncvClass.h:314
unsigned int getTotalNumberOfSphericalFunctionsForAtomId(unsigned int atomId)
void createAtomCenteredSphericalFunctionsForLocalPotential()
bool d_HamiltonianCouplingMatrixSinglePrecEntriesUpdated
Definition oncvClass.h:264
unsigned int d_nlpspQuadratureId
Definition oncvClass.h:286
std::vector< std::vector< double > > d_atomLocations
Definition oncvClass.h:303
void setImageCoordinates(const std::vector< std::vector< double > > &atomLocations, const std::vector< int > &imageIds, const std::vector< std::vector< double > > &periodicCoords, std::vector< unsigned int > &imageIdsTemp, std::vector< double > &imageCoordsTemp)
Converts the periodic image data structure to relevant form for the container class.
double getRmaxLocalPot(unsigned int Znum)
double getRadialValenceDensity(unsigned int Znum, double rad)
unsigned int d_localContributionQuadratureId
Definition oncvClass.h:282
std::vector< std::vector< double > > d_imagePositions
Definition oncvClass.h:308
dftfe::utils::MemoryStorage< ValueType, memorySpace > d_couplingMatrixEntries
Definition oncvClass.h:257
void getRadialValenceDensity(unsigned int Znum, double rad, std::vector< double > &Val)
const MPI_Comm d_mpiCommParent
Definition oncvClass.h:274
bool d_singlePrecNonLocalOperator
Definition oncvClass.h:301
dftfe::utils::MemoryStorage< typename dftfe::dataTypes::singlePrecType< ValueType >::type, memorySpace > d_couplingMatrixEntriesSinglePrec
Definition oncvClass.h:261
unsigned int d_nuclearChargeQuadratureIdElectro
Definition oncvClass.h:283
std::shared_ptr< AtomCenteredSphericalFunctionContainer > d_atomicProjectorFnsContainer
Definition oncvClass.h:268
double getRmaxValenceDensity(unsigned int Znum)
std::vector< std::shared_ptr< AtomCenteredSphericalFunctionBase > > d_atomicProjectorFnsVector
Definition oncvClass.h:323
unsigned int d_sparsityPatternQuadratureId
Definition oncvClass.h:285
bool d_HamiltonianCouplingMatrixEntriesUpdated
Definition oncvClass.h:263
bool d_floatingNuclearCharges
Definition oncvClass.h:300
bool coreNuclearDensityPresent(unsigned int Znum)
std::set< unsigned int > d_atomTypes
Definition oncvClass.h:304
const std::shared_ptr< AtomicCenteredNonLocalOperator< typename dftfe::dataTypes::singlePrecType< ValueType >::type, memorySpace > > getNonLocalOperatorSinglePrec()
std::vector< std::map< unsigned int, std::shared_ptr< AtomCenteredSphericalFunctionBase > > > d_atomicCoreDensityVector
Definition oncvClass.h:332
unsigned int d_densityQuadratureId
Definition oncvClass.h:281
void initialiseNonLocalContribution(const std::vector< std::vector< double > > &atomLocations, const std::vector< int > &imageIds, const std::vector< std::vector< double > > &periodicCoords, const std::vector< double > &kPointWeights, const std::vector< double > &kPointCoordinates, const bool updateNonlocalSparsity, const std::map< unsigned int, std::vector< int > > &sparsityPattern, const std::vector< std::vector< dealii::CellId > > &elementIdsInAtomCompactSupport, const std::vector< std::vector< unsigned int > > &elementIndexesInAtomCompactSupport, const std::vector< unsigned int > &atomIdsInCurrentProcess, unsigned int numberElements)
std::shared_ptr< AtomicCenteredNonLocalOperator< typename dftfe::dataTypes::singlePrecType< ValueType >::type, memorySpace > > d_nonLocalOperatorSinglePrec
Definition oncvClass.h:319
unsigned int getTotalNumberOfAtomsInCurrentProcessor()
std::vector< int > d_imageIds
Definition oncvClass.h:307
void initialise(std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, dftfe::utils::MemorySpace::HOST > > basisOperationsHostPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > BLASWrapperPtrHost, unsigned int densityQuadratureId, unsigned int localContributionQuadratureId, unsigned int sparsityPatternQuadratureId, unsigned int nlpspQuadratureId, unsigned int densityQuadratureIdElectro, std::shared_ptr< excManager< memorySpace > > excFunctionalPtr, const std::vector< std::vector< double > > &atomLocations, unsigned int numEigenValues, const bool singlePrecNonLocalOperator, const bool computeSphericalFnTimesXNonLocalOperator=true)
Initialises all the data members with addresses/values to/of dftClass.
const dftfe::utils::MemoryStorage< ValueType, memorySpace > & getCouplingMatrix()
std::vector< std::shared_ptr< AtomCenteredSphericalFunctionBase > > d_atomicWaveFnsVector
Definition oncvClass.h:266
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > d_BLASWrapperHostPtr
Definition oncvClass.h:248
void initLocalPotential()
Initialises local potential.
dealii::ConditionalOStream pcout
Definition oncvClass.h:278
unsigned int d_densityQuadratureIdElectro
Definition oncvClass.h:284
std::map< unsigned int, std::vector< unsigned int > > d_atomTypesList
Definition oncvClass.h:305
double getRadialCoreDensity(unsigned int Znum, double rad)
std::map< unsigned int, std::vector< double > > d_atomicNonLocalPseudoPotentialConstants
Definition oncvClass.h:256
unsigned int d_numEigenValues
Definition oncvClass.h:309
void createAtomCenteredSphericalFunctionsForProjectors()
std::vector< std::map< unsigned int, std::shared_ptr< AtomCenteredSphericalFunctionBase > > > d_atomicValenceDensityVector
Definition oncvClass.h:329
bool d_reproducible_output
Definition oncvClass.h:333
bool d_memoryOptMode
Definition oncvClass.h:280
bool d_useDevice
Definition oncvClass.h:279
std::vector< std::map< unsigned int, std::shared_ptr< AtomCenteredSphericalFunctionBase > > > d_atomicLocalPotVector
Definition oncvClass.h:326
std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, dftfe::utils::MemorySpace::HOST > > d_BasisOperatorHostPtr
Definition oncvClass.h:291
double getRmaxCoreDensity(unsigned int Znum)
std::map< std::pair< unsigned int, unsigned int >, std::shared_ptr< AtomCenteredSphericalFunctionBase > > d_atomicProjectorFnsMap
Definition oncvClass.h:271
void getRadialCoreDensity(unsigned int Znum, double rad, std::vector< double > &Val)
unsigned int d_nOMPThreads
Definition oncvClass.h:310
std::string d_dftfeScratchFolderName
Definition oncvClass.h:306
double getRadialLocalPseudo(unsigned int Znum, double rad)
Definition MemoryStorage.h:33
Definition FEBasisOperations.h:30
@ DEVICE
Definition MemorySpaceType.h:36
Definition pseudoPotentialToDftfeConverter.cc:34
T type
Definition dftfeDataTypes.h:115