DFT-EFE
 
Loading...
Searching...
No Matches
AtomSevereFunction.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 dftefeAtomSevereFunction_h
27#define dftefeAtomSevereFunction_h
28
31
32namespace dftefe
33{
34 namespace atoms
35 {
36 template <utils::MemorySpace memorySpace>
37 class AtomSevereFunction : public AtomSuperpositionFunction<memorySpace>,
39 {
40 public:
42 std::shared_ptr<const AtomSphericalDataContainer>
43 atomSphericalDataContainer,
44 const std::vector<std::string> & atomSymbol,
45 const std::vector<utils::Point> & atomCoordinates,
46 const std::string fieldName,
47 const size_type derivativeType,
48 const size_type sphericalValPower = 2,
49 const double constant = 1.0,
50 linearAlgebra::LinAlgOpContext<memorySpace> *linAlgOpContext = nullptr);
51
52 double
53 operator()(const utils::Point &point) const override;
54
55 std::vector<double>
56 operator()(const std::vector<utils::Point> &points) const override;
57
58 protected:
59 void
60 evalHost(size_type numPoints, const double *t, double *q) const override;
61
62#ifdef DFTEFE_WITH_DEVICE
63 void
64 evalDevice(size_type numPoints,
65 const double *t,
66 double * q) const override;
67#endif
68
69 private:
72 double d_constant;
73 };
74
75 } // namespace atoms
76} // namespace dftefe
77
79
80#endif // dftefeAtomSevereFunction_h
Definition: AtomSevereFunction.h:39
AtomSuperpositionFuncType d_atomSupType
Definition: AtomSevereFunction.h:70
size_type d_dim
Definition: AtomSevereFunction.h:71
double operator()(const utils::Point &point) const override
Definition: AtomSevereFunction.t.cpp:67
double d_constant
Definition: AtomSevereFunction.h:72
void evalHost(size_type numPoints, const double *t, double *q) const override
Definition: AtomSevereFunction.t.cpp:96
Definition: AtomSuperpositionFunction.h:55
Definition: LinAlgOpContext.h:52
Definition: PointImpl.h:13
Abstract base for scalar functions of a spatial point.
Definition: ScalarSpatialFunction.h:23
AtomSuperpositionFuncType
Definition: AtomSuperpositionFunction.h:46
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
std::uint64_t size_type
Definition: TypeConfig.h:9