DFT-FE 1.1.0-pre
Density Functional Theory With Finite-Elements
Loading...
Searching...
No Matches
atomCenteredPostProcessing.h
Go to the documentation of this file.
1#ifndef ATOMCENTEREDOORBTIALPOSTPROCESING_H
2#define ATOMCENTEREDOORBTIALPOSTPROCESING_H
3
4#include "vector"
5#include "map"
12#include <memory>
13#include <MemorySpaceType.h>
14#include <headers.h>
15#include <TypeConfig.h>
16#include <dftUtils.h>
17#include "FEBasisOperations.h"
18#include <BLASWrapper.h>
19#include <xc.h>
20#include <excManager.h>
21#ifdef _OPENMP
22# include <omp.h>
23#else
24# define omp_get_thread_num() 0
25#endif
26namespace dftfe
27{
28 template <typename ValueType, dftfe::utils::MemorySpace memorySpace>
30 {
31 public:
32 atomCenteredOrbitalsPostProcessing(const MPI_Comm & mpi_comm_parent,
33 const MPI_Comm & mpi_comm_domain,
34 const std::string &scratchFolderName,
35 const std::set<unsigned int> &atomTypes,
36 const bool reproducibleOutput,
37 const int verbosity,
38 const bool useDevice,
39 const dftParameters *dftParamsPtr);
40 /**
41 * @brief Initialises all the data members with addresses/values to/of dftClass.
42 * @param[in] numEigenValues number of eigenvalues
43 * @param[in] atomLocations atomic Coordinates
44 * @param[in] imageIds image IDs of periodic cell
45 * @param[in] periodicCoords coordinates of image atoms
46 */
47
48 void
50 std::shared_ptr<
52 FEBasisOperations<ValueType, double, dftfe::utils::MemorySpace::HOST>>
53 basisOperationsHostPtr,
54#if defined(DFTFE_WITH_DEVICE)
55 std::shared_ptr<
57 double,
59 basisOperationsDevicePtr,
60#endif
61 std::shared_ptr<
63 BLASWrapperPtrHost,
64#if defined(DFTFE_WITH_DEVICE)
65 std::shared_ptr<
67 BLASWrapperPtrDevice,
68#endif
69 unsigned int sparsityPatternQuadratureId,
70 unsigned int nlpspQuadratureId,
71 const std::vector<std::vector<double>> &atomLocations,
72 unsigned int numEigenValues);
73
74
75 /**
76 * @brief Initialises all the data members with addresses/values to/of dftClass.
77 * @param[in] atomLocations atomic Coordinates
78 * @param[in] imageIds image IDs of periodic cell
79 * @param[in] periodicCoords coordinates of image atoms
80 */
81 void
83 const std::vector<std::vector<double>> &atomLocations,
84 const std::vector<int> & imageIds,
85 const std::vector<std::vector<double>> &periodicCoords,
86 const std::vector<double> & kPointWeights,
87 const std::vector<double> & kPointCoordinates,
88 const bool updateNonlocalSparsity);
89
90 const std::shared_ptr<
93
94 double
95 smearFunction(double x, const dftParameters *dftParamsPtr);
96
97 std::unordered_map<unsigned int, std::string> LQnumToNameMap;
98
99 void
102 const unsigned int totalNumWaveFunctions,
103 const std::vector<std::vector<double>> &eigenValues,
104 std::shared_ptr<
106 &basisOperationsPtr,
107#if defined(DFTFE_WITH_DEVICE)
108 std::shared_ptr<
110 BLASWrapperPtrDevice,
111#endif
112 std::shared_ptr<
114 BLASWrapperPtrHost,
115 const unsigned int quadratureIndex,
116 const std::vector<double> &kPointWeights,
117 const MPI_Comm & interBandGroupComm,
118 const MPI_Comm & interpoolComm,
119 const dftParameters * dftParamsPtr,
120 double fermiEnergy,
121 unsigned int highestStateNscfSolve);
122
123 private:
125 const MPI_Comm d_mpiCommDomain;
126 const unsigned int d_this_mpi_process;
128 std::set<unsigned int> d_atomTypes;
130 unsigned int d_verbosity;
132 dealii::ConditionalOStream pcout;
135 unsigned int d_numEigenValues;
136
137 void
139
140 std::map<unsigned int, std::vector<std::pair<unsigned int, unsigned int>>>
142 dealii::TimerOutput computing_timer;
143
144 std::shared_ptr<AtomCenteredSphericalFunctionContainer>
146
147 std::map<std::pair<unsigned int, unsigned int>,
148 std::shared_ptr<AtomCenteredSphericalFunctionBase>>
150
151 std::shared_ptr<AtomicCenteredNonLocalOperator<ValueType, memorySpace>>
153
154 std::shared_ptr<
155 dftfe::basis::
156 FEBasisOperations<ValueType, double, dftfe::utils::MemorySpace::HOST>>
158
159
160 std::shared_ptr<
163#if defined(DFTFE_WITH_DEVICE)
164 std::shared_ptr<
166 d_BLASWrapperDevicePtr;
167 std::shared_ptr<
168 dftfe::basis::
169 FEBasisOperations<ValueType, double, dftfe::utils::MemorySpace::DEVICE>>
170 d_BasisOperatorDevicePtr;
171#endif
172 };
173} // namespace dftfe
174
175#endif
Definition AtomicCenteredNonLocalOperator.h:58
const MPI_Comm d_mpiCommParentPostProcessing
Definition atomCenteredPostProcessing.h:124
bool d_reproducible_output
Definition atomCenteredPostProcessing.h:129
bool d_useDevice
Definition atomCenteredPostProcessing.h:131
std::shared_ptr< AtomCenteredSphericalFunctionContainer > d_atomicOrbitalFnsContainer
Definition atomCenteredPostProcessing.h:145
unsigned int d_verbosity
Definition atomCenteredPostProcessing.h:130
std::unordered_map< unsigned int, std::string > LQnumToNameMap
Definition atomCenteredPostProcessing.h:97
unsigned int d_sparsityPatternQuadratureId
Definition atomCenteredPostProcessing.h:133
std::shared_ptr< AtomicCenteredNonLocalOperator< ValueType, memorySpace > > d_nonLocalOperator
Definition atomCenteredPostProcessing.h:152
void computeAtomCenteredEntries(const dftfe::utils::MemoryStorage< ValueType, memorySpace > *X, const unsigned int totalNumWaveFunctions, const std::vector< std::vector< double > > &eigenValues, std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, memorySpace > > &basisOperationsPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > BLASWrapperPtrHost, const unsigned int quadratureIndex, const std::vector< double > &kPointWeights, const MPI_Comm &interBandGroupComm, const MPI_Comm &interpoolComm, const dftParameters *dftParamsPtr, double fermiEnergy, unsigned int highestStateNscfSolve)
const std::shared_ptr< AtomicCenteredNonLocalOperator< ValueType, memorySpace > > getNonLocalOperator()
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 sparsityPatternQuadratureId, unsigned int nlpspQuadratureId, const std::vector< std::vector< double > > &atomLocations, unsigned int numEigenValues)
Initialises all the data members with addresses/values to/of dftClass.
std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, dftfe::utils::MemorySpace::HOST > > d_BasisOperatorHostPtr
Definition atomCenteredPostProcessing.h:157
dealii::ConditionalOStream pcout
Definition atomCenteredPostProcessing.h:132
std::map< unsigned int, std::vector< std::pair< unsigned int, unsigned int > > > nlNumsMap
Definition atomCenteredPostProcessing.h:141
void createAtomCenteredSphericalFunctionsForOrbitals()
dealii::TimerOutput computing_timer
Definition atomCenteredPostProcessing.h:142
const unsigned int d_this_mpi_process
Definition atomCenteredPostProcessing.h:126
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > d_BLASWrapperHostPtr
Definition atomCenteredPostProcessing.h:162
unsigned int d_numEigenValues
Definition atomCenteredPostProcessing.h:135
unsigned int d_nlpspQuadratureId
Definition atomCenteredPostProcessing.h:134
atomCenteredOrbitalsPostProcessing(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const std::string &scratchFolderName, const std::set< unsigned int > &atomTypes, const bool reproducibleOutput, const int verbosity, const bool useDevice, const dftParameters *dftParamsPtr)
const MPI_Comm d_mpiCommDomain
Definition atomCenteredPostProcessing.h:125
double smearFunction(double x, const dftParameters *dftParamsPtr)
std::map< std::pair< unsigned int, unsigned int >, std::shared_ptr< AtomCenteredSphericalFunctionBase > > d_atomicOrbitalFnsMap
Definition atomCenteredPostProcessing.h:149
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::string d_dftfeScratchFolderName
Definition atomCenteredPostProcessing.h:127
std::set< unsigned int > d_atomTypes
Definition atomCenteredPostProcessing.h:128
Definition FEBasisOperations.h:84
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:35
Definition BLASWrapper.h:35
Definition MemoryStorage.h:33
Definition FEBasisOperations.h:30
@ DEVICE
Definition MemorySpaceType.h:36
Definition pseudoPotentialToDftfeConverter.cc:34