DFT-EFE
 
Loading...
Searching...
No Matches
SmearChargePotentialFunction.h
Go to the documentation of this file.
1#ifndef dftefeSmearChargePotentialFunction_h
2#define dftefeSmearChargePotentialFunction_h
3
5#include "MemorySpaceType.h"
6#include "MemoryStorage.h"
7#include <memory>
8#include "TypeConfig.h"
9#include <vector>
10
11namespace dftefe
12{
13 namespace utils
14 {
16 {
17 public:
19 const std::vector<utils::Point> &atomCoordinates,
20 const std::vector<double> & atomCharges,
21 const std::vector<double> & smearedChargeRadius);
22
24 const std::vector<utils::Point> &atomCoordinates,
25 const std::vector<double> & atomCharges,
26 const double & smearedChargeRadius);
27
28 SmearChargePotentialFunction(const utils::Point &atomCoordinates,
29 const double atomCharges,
30 const double smearedChargeRadius);
31
32 double
33 operator()(const utils::Point &point) const override;
34 std::vector<double>
35 operator()(const std::vector<utils::Point> &points) const override;
36
37 protected:
38 void
39 evalHost(size_type numPoints, const double *t, double *q) const override;
40
41#ifdef DFTEFE_WITH_DEVICE
42 void
43 evalDevice(size_type numPoints,
44 const double *t,
45 double * q) const override;
46#endif
47
48 private:
49 std::vector<utils::Point> d_atomCoordinates;
50 std::vector<double> d_rc;
51 std::vector<double> d_z;
54
55#ifdef DFTEFE_WITH_DEVICE
56 mutable std::unique_ptr<MemoryStorage<double, MemorySpace::DEVICE>>
57 d_atomCoordsFlatDevice;
58 mutable std::unique_ptr<MemoryStorage<double, MemorySpace::DEVICE>>
59 d_rcDevice;
60 mutable std::unique_ptr<MemoryStorage<double, MemorySpace::DEVICE>>
61 d_zDevice;
62#endif
63 };
64
65 } // namespace utils
66} // namespace dftefe
67
68#endif // dftefeSmearChargePotentialFunction_h
Definition: PointImpl.h:13
Abstract base for scalar functions of a spatial point.
Definition: ScalarSpatialFunction.h:23
Definition: SmearChargePotentialFunction.h:16
void evalHost(size_type numPoints, const double *t, double *q) const override
Definition: SmearChargePotentialFunction.cpp:96
std::vector< double > d_rc
Definition: SmearChargePotentialFunction.h:50
std::vector< utils::Point > d_atomCoordinates
Definition: SmearChargePotentialFunction.h:49
size_type d_numAtoms
Definition: SmearChargePotentialFunction.h:52
std::vector< double > d_z
Definition: SmearChargePotentialFunction.h:51
double operator()(const utils::Point &point) const override
Definition: SmearChargePotentialFunction.cpp:39
size_type d_dim
Definition: SmearChargePotentialFunction.h:53
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
std::uint64_t size_type
Definition: TypeConfig.h:9