DFT-EFE
 
Loading...
Searching...
No Matches
SphericalDataMixed.h
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright (c) 2021. *
3 * The Regents of the University of Michigan and DFT-EFE developers. *
4 * *
5 * This file is part of the DFT-EFE code. *
6 * *
7 * DFT-EFE is free software: you can redistribute it and/or modify *
8 * it under the terms of the Lesser GNU General Public License as *
9 * published by the Free Software Foundation, either version 3 of *
10 * the License, or (at your option) any later version. *
11 * *
12 * DFT-EFE is distributed in the hope that it will be useful, but *
13 * WITHOUT ANY WARRANTY; without even the implied warranty *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
15 * See the Lesser GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU Lesser General Public *
18 * License at the top level of DFT-EFE distribution. If not, see *
19 * <https://www.gnu.org/licenses/>. *
20 ******************************************************************************/
21
22/*
23 * @author Avirup Sircar
24 */
25
26#ifndef dftefeSphericalDataMixed_h
27#define dftefeSphericalDataMixed_h
28
29#include <utils/TypeConfig.h>
30#include <vector>
31#include <utils/Point.h>
32#include <atoms/SphericalData.h>
33#include <utils/Spline.h>
35#include <memory>
36#include <utils/Point.h>
37#include <atoms/Defaults.h>
39
40namespace dftefe
41{
42 namespace atoms
43 {
45 {
46 public:
48 const std::vector<int> qNumbers,
49 const std::vector<double> radialPoints,
50 const std::vector<double> radialValues,
52 double leftValue,
54 double rightValue,
55 const utils::ScalarSpatialFunctionReal &funcAfterRadialGrid,
56 const SphericalHarmonicFunctions & sphericalHarmonicFunc,
57 const double polarAngleTolerance = SphericalDataDefaults::POL_ANG_TOL,
59
61
62 void
64 double leftValue,
66 double rightValue);
67
68 std::vector<double>
69 getValue(const std::vector<utils::Point> &point,
70 const utils::Point & origin) override;
71
72 std::vector<double>
73 getGradientValue(const std::vector<utils::Point> &point,
74 const utils::Point & origin) override;
75
76 std::vector<double>
77 getHessianValue(const std::vector<utils::Point> &point,
78 const utils::Point & origin) override;
79
80 double
81 getValue(const utils::Point &point, const utils::Point &origin) override;
82
83 std::vector<double>
84 getGradientValue(const utils::Point &point,
85 const utils::Point &origin) override;
86
87 std::vector<double>
88 getHessianValue(const utils::Point &point,
89 const utils::Point &origin) override;
90
91 std::vector<double>
92 getRadialValue(const std::vector<double> &r) override;
93
94 std::vector<double>
95 getAngularValue(const std::vector<double> &r,
96 const std::vector<double> &theta,
97 const std::vector<double> &phi) override;
98
99 std::vector<double>
100 getRadialDerivative(const std::vector<double> &r) override;
101
102 std::vector<std::vector<double>>
103 getAngularDerivative(const std::vector<double> &r,
104 const std::vector<double> &theta,
105 const std::vector<double> &phi) override;
106
107 std::vector<int>
108 getQNumbers() const override;
109
110 double
111 getCutoff() const override;
112
113 double
114 getSmoothness() const override;
115
116 private:
117 std::vector<int> d_qNumbers;
118 std::vector<double> d_radialPoints;
119 std::vector<double> d_radialValues;
120 std::shared_ptr<const utils::Spline> d_spline;
125
128 };
129
130 } // end of namespace atoms
131} // end of namespace dftefe
132#endif // dftefeSphericalDataMixed_h
static const double POL_ANG_TOL
Setting all the SphericalDataDefaults.
Definition: Defaults.h:43
static const size_type DEFAULT_DIM
Definition: Defaults.h:60
Definition: SphericalDataMixed.h:45
std::vector< double > getGradientValue(const std::vector< utils::Point > &point, const utils::Point &origin) override
Definition: SphericalDataMixed.cpp:137
std::vector< int > d_qNumbers
Definition: SphericalDataMixed.h:117
std::vector< double > d_radialValues
Definition: SphericalDataMixed.h:119
std::vector< double > getAngularValue(const std::vector< double > &r, const std::vector< double > &theta, const std::vector< double > &phi) override
Definition: SphericalDataMixed.cpp:215
std::shared_ptr< const utils::Spline > d_spline
Definition: SphericalDataMixed.h:120
std::vector< double > d_radialPoints
Definition: SphericalDataMixed.h:118
double d_polarAngleTolerance
Definition: SphericalDataMixed.h:121
double getSmoothness() const override
Definition: SphericalDataMixed.cpp:266
std::vector< int > getQNumbers() const override
Definition: SphericalDataMixed.cpp:252
void initSpline(utils::Spline::bd_type left, double leftValue, utils::Spline::bd_type right, double rightValue)
Definition: SphericalDataMixed.cpp:97
std::vector< double > getRadialDerivative(const std::vector< double > &r) override
Definition: SphericalDataMixed.cpp:227
double getCutoff() const override
Definition: SphericalDataMixed.cpp:258
std::vector< double > getValue(const std::vector< utils::Point > &point, const utils::Point &origin) override
Definition: SphericalDataMixed.cpp:115
double d_cutoffTolerance
Definition: SphericalDataMixed.h:122
const SphericalHarmonicFunctions & d_sphericalHarmonicFunc
Definition: SphericalDataMixed.h:126
const utils::ScalarSpatialFunctionReal & d_funcAfterRadialGrid
Definition: SphericalDataMixed.h:127
std::vector< double > getHessianValue(const std::vector< utils::Point > &point, const utils::Point &origin) override
Definition: SphericalDataMixed.cpp:148
double d_radiusTolerance
Definition: SphericalDataMixed.h:123
size_type d_dim
Definition: SphericalDataMixed.h:124
std::vector< std::vector< double > > getAngularDerivative(const std::vector< double > &r, const std::vector< double > &theta, const std::vector< double > &phi) override
Definition: SphericalDataMixed.cpp:237
std::vector< double > getRadialValue(const std::vector< double > &r) override
Definition: SphericalDataMixed.cpp:205
Definition: SphericalData.h:40
Definition: SphericalHarmonicFunctions.h:17
Definition: Function.h:10
Definition: PointImpl.h:13
bd_type
Definition: Spline.h:58
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
unsigned int size_type
Definition: TypeConfig.h:8