20#ifndef DFTFE_ATOMCENTEREDSPHERICALFUNCTIONCONTAINERBASE_H
21#define DFTFE_ATOMCENTEREDSPHERICALFUNCTIONCONTAINERBASE_H
47 init(
const std::vector<unsigned int> &atomicNumbers,
48 const std::map<std::pair<unsigned int, unsigned int>,
49 std::shared_ptr<AtomCenteredSphericalFunctionBase>>
50 &listOfSphericalFunctions);
61 const std::vector<std::vector<double>> &periodicCoords,
62 const std::vector<int> & imageIds);
75 const std::vector<double> &
81 const std::map<unsigned int, std::vector<double>> &
124 unsigned int & totalAtomsInCurrentProcessor,
125 unsigned int & totalNonLocalElements,
126 std::vector<unsigned int> &numberCellsForEachAtom,
127 std::vector<unsigned int> &numberCellsAccumNonLocalAtoms,
128 std::vector<unsigned int> &iElemNonLocalToElemIndexMap);
139 const std::map<std::pair<unsigned int, unsigned int>,
140 std::shared_ptr<AtomCenteredSphericalFunctionBase>> &
145 const std::vector<unsigned int> &
150 const std::vector<unsigned int> &
161 template <
typename NumberType>
168 & basisOperationsPtr,
169 const unsigned int quadratureIndex,
170 const double cutOffVal = 1.0E-8,
171 const unsigned int cutOffType = 0);
177 const std::vector<std::vector<double>> &periodicCoords);
181 const std::vector<int> &
184 const std::map<unsigned int, std::vector<int>> &
192 const std::map<
unsigned int, std::vector<int>> &sparsityPattern,
193 const std::vector<std::vector<dealii::CellId>>
194 &elementIdsInAtomCompactSupport,
195 const std::vector<std::vector<unsigned int>>
196 & elementIndexesInAtomCompactSupport,
197 const std::vector<unsigned int> &atomIdsInCurrentProcess,
198 unsigned int numberElements);
223 std::map<std::pair<unsigned int, unsigned int>,
224 std::shared_ptr<AtomCenteredSphericalFunctionBase>>
238 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
243 std::map<unsigned int, std::vector<unsigned int>>
Definition AtomCenteredSphericalFunctionContainer.h:37
void init(const std::vector< unsigned int > &atomicNumbers, const std::map< std::pair< unsigned int, unsigned int >, std::shared_ptr< AtomCenteredSphericalFunctionBase > > &listOfSphericalFunctions)
Initialises the class with the atomicNumbers of various atoms and the AtomCenteredSphericalFn of vari...
const unsigned int getTotalSphericalFunctionIndexStart(unsigned int Znum, unsigned int alpha)
Returns the startIndex of spherical Function alpha associated with atomic number Znum.
std::vector< std::vector< dealii::CellId > > d_elementIdsInAtomCompactSupport
Definition AtomCenteredSphericalFunctionContainer.h:235
bool atomSupportInElement(unsigned int iElem)
const std::map< std::pair< unsigned int, unsigned int >, std::shared_ptr< AtomCenteredSphericalFunctionBase > > & getSphericalFunctions() const
Returns the shared_ptr of AtomCenteredSphericalFunctionBase associated with std::pair(atomic Number a...
unsigned int getTotalNumberOfRadialSphericalFunctionsPerAtom(unsigned int atomicNumber)
Returns the he number of radial spherical functions indexed by {i} associated with an atomic number....
std::map< unsigned int, std::vector< int > > d_sparsityPattern
Definition AtomCenteredSphericalFunctionContainer.h:233
std::map< unsigned int, std::vector< double > > d_periodicImageCoord
Definition AtomCenteredSphericalFunctionContainer.h:218
unsigned int getMaximumNumberOfSphericalFunctions()
Returns the maximum number of total spherical functions indexed by {ilm} across all atom Types presen...
unsigned int getTotalNumberOfRadialSphericalFunctions()
Returns the total number of total radial-spherical functions indexed by {i} present in atomicNumbers ...
unsigned int getTotalNumberOfSphericalFunctionsPerAtom(unsigned int atomicNumber)
Returns the he number of total spherical functions indexed by {ilm} associated with an atomic number....
const unsigned int getOffsetLocation(const unsigned int iAtom)
unsigned int getNumAtomCentersSize()
Returns the number of atoms present in domain.
std::map< unsigned int, unsigned int > d_numSphericalFunctions
Definition AtomCenteredSphericalFunctionContainer.h:230
std::vector< unsigned int > d_AtomIdsInCurrentProcess
Definition AtomCenteredSphericalFunctionContainer.h:240
const std::vector< unsigned int > & getAtomIdsInCurrentProcess() const
Returns the atomIds of atoms present in current processor.
const std::vector< int > & getAtomIdsInElement(unsigned int iElem)
std::vector< std::vector< int > > d_AtomIdsInElement
Definition AtomCenteredSphericalFunctionContainer.h:242
void getTotalAtomsAndNonLocalElementsInCurrentProcessor(unsigned int &totalAtomsInCurrentProcessor, unsigned int &totalNonLocalElements, std::vector< unsigned int > &numberCellsForEachAtom, std::vector< unsigned int > &numberCellsAccumNonLocalAtoms, std::vector< unsigned int > &iElemNonLocalToElemIndexMap)
std::vector< double > d_atomCoords
Definition AtomCenteredSphericalFunctionContainer.h:208
const std::vector< double > & getAtomCoordinates() const
Returns the cooridnates of atom present in domain.
const std::map< unsigned int, std::vector< double > > & getPeriodicImageCoordinatesList() const
Returns the map of atomId vs vector of image coordinates.
unsigned int getTotalNumberOfSphericalFunctionsInCurrentProcessor()
Returns the total number of total spherical functions indexed by {ilm} present in the current process...
std::map< unsigned int, unsigned int > d_numRadialSphericalFunctions
Definition AtomCenteredSphericalFunctionContainer.h:227
void initaliseCoordinates(const std::vector< double > &atomCoords, const std::vector< std::vector< double > > &periodicCoords, const std::vector< int > &imageIds)
Initialises the position of atoms, the image posisiton and image ids after every update of atom posit...
void computeSparseStructure(std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int quadratureIndex, const double cutOffVal=1.0E-8, const unsigned int cutOffType=0)
std::map< unsigned int, std::vector< unsigned int > > d_totalSphericalFunctionIndexStart
Definition AtomCenteredSphericalFunctionContainer.h:244
const std::vector< unsigned int > & getAtomicNumbers() const
Returns the vector of size Natoms of all atoms in system.
const std::map< unsigned int, std::vector< int > > & getSparsityPattern()
std::map< std::pair< unsigned int, unsigned int >, std::shared_ptr< AtomCenteredSphericalFunctionBase > > d_sphericalFunctionsContainer
Definition AtomCenteredSphericalFunctionContainer.h:225
void setImageCoordinates(const std::vector< int > &imageIds, const std::vector< std::vector< double > > &periodicCoords)
std::vector< std::vector< unsigned int > > d_elementIndexesInAtomCompactSupport
Definition AtomCenteredSphericalFunctionContainer.h:174
std::vector< unsigned int > d_atomicNumbers
Definition AtomCenteredSphericalFunctionContainer.h:213
std::vector< unsigned int > d_offsetLocation
Definition AtomCenteredSphericalFunctionContainer.h:241
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_elementOneFieldIteratorsInAtomCompactSupport
Definition AtomCenteredSphericalFunctionContainer.h:239
void getDataForSparseStructure(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)
Definition FEBasisOperations.h:84
@ HOST
Definition MemorySpaceType.h:34
Definition pseudoPotentialToDftfeConverter.cc:34