DFT-EFE
 
Loading...
Searching...
No Matches
BasisOperations.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 Bikash Kanungo, Vishal Subramanian
24 */
25
26#ifndef dftefeBasisOperations_h
27#define dftefeBasisOperations_h
28
29#include <utils/TypeConfig.h>
36namespace dftefe
37{
38 namespace basis
39 {
40 namespace realspace
41 {
42 enum class VectorMathOp
43 {
44 DOT,
45 CROSS,
46 MULT,
47 ADD
48 };
49
50 enum class LinearLocalOp
51 {
53 GRAD,
55 CURL
56 };
57 } // end of namespace realspace
62 template <typename ValueTypeBasisCoeff,
63 typename ValueTypeBasisData,
64 utils::MemorySpace memorySpace>
66 {
67 public:
70 ValueTypeBasisData>;
71
74
77
78 public:
79 virtual ~BasisOperations() = default;
80
81 // virtual void
82 // integrateWithBasisValues(const
83 // ScalarSpatialFunction<ValueTypeBasisCoeff> &f,
84 // const quadrature::QuadratureRuleAttributes &
85 // quadratureRuleAttributes,
86 // Field<ValueTypeBasisCoeff, memorySpace> &
87 // field) const = 0;
88
89 virtual void
93 ValueTypeBasisData>,
94 memorySpace> &quadValuesContainer) const = 0;
95
96 virtual void
99 & vectorData,
102 linearAlgebra::blasLapack::scalar_type<ValueTypeBasisCoeff,
103 ValueTypeBasisData>,
104 memorySpace> &quadValuesContainer) const = 0;
105
106 virtual void
109 & vectorData,
112 linearAlgebra::blasLapack::scalar_type<ValueTypeBasisCoeff,
113 ValueTypeBasisData>,
114 memorySpace> &quadValuesContainer) const = 0;
115
116
117 virtual void
120 linearAlgebra::blasLapack::scalar_type<ValueTypeBasisCoeff,
121 ValueTypeBasisData>,
122 memorySpace> & inp,
124
125 virtual void
128 linearAlgebra::blasLapack::scalar_type<ValueTypeBasisCoeff,
129 ValueTypeBasisData>,
130 memorySpace> & inp,
133 &vectorData) const = 0;
134 // virtual void
135 // integrateWithBasisValues(
136 // const Field<ValueTypeBasisCoeff, memorySpace> & fieldInput,
137 // const quadrature::QuadratureRuleAttributes &quadratureRuleAttributes,
138 // Field<ValueTypeBasisCoeff, memorySpace> & fieldOutput)
139 // const = 0;
140
141 }; // end of BasisOperations
142 } // end of namespace basis
143} // end of namespace dftefe
144#endif // dftefeBasisOperations_h
An abstract class to encapsulate the partitioning of a basis across multiple processors.
Definition: BasisManager.h:54
Definition: BasisOperations.h:66
virtual void interpolate(const linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &vectorData, const BasisManager< ValueTypeBasisCoeff, memorySpace > &basisManager, quadrature::QuadratureValuesContainer< linearAlgebra::blasLapack::scalar_type< ValueTypeBasisCoeff, ValueTypeBasisData >, memorySpace > &quadValuesContainer) const =0
linearAlgebra::blasLapack::scalar_type< ValueTypeBasisCoeff, ValueTypeBasisData > ValueTypeUnion
Definition: BasisOperations.h:70
virtual void integrateWithBasisValues(const quadrature::QuadratureValuesContainer< linearAlgebra::blasLapack::scalar_type< ValueTypeBasisCoeff, ValueTypeBasisData >, memorySpace > &inp, const BasisManager< ValueTypeBasisCoeff, memorySpace > &basisManager, linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &vectorData) const =0
virtual void interpolateWithBasisGradient(const linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &vectorData, const BasisManager< ValueTypeBasisCoeff, memorySpace > &basisManager, quadrature::QuadratureValuesContainer< linearAlgebra::blasLapack::scalar_type< ValueTypeBasisCoeff, ValueTypeBasisData >, memorySpace > &quadValuesContainer) const =0
virtual ~BasisOperations()=default
virtual void integrateWithBasisValues(const quadrature::QuadratureValuesContainer< linearAlgebra::blasLapack::scalar_type< ValueTypeBasisCoeff, ValueTypeBasisData >, memorySpace > &inp, Field< ValueTypeBasisCoeff, memorySpace > &f) const =0
virtual void interpolate(const Field< ValueTypeBasisCoeff, memorySpace > &field, quadrature::QuadratureValuesContainer< linearAlgebra::blasLapack::scalar_type< ValueTypeBasisCoeff, ValueTypeBasisData >, memorySpace > &quadValuesContainer) const =0
Definition: Field.h:47
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition: MultiVector.h:134
Definition: QuadratureValuesContainer.h:39
Definition: MemoryStorage.h:38
VectorMathOp
Definition: BasisOperations.h:43
LinearLocalOp
Definition: BasisOperations.h:51
blas::scalar_type< ValueType1, ValueType2 > scalar_type
Definition: BlasLapackTypedef.h:70
MemorySpace
Definition: MemorySpaceType.h:37
dealii includes
Definition: AtomFieldDataSpherical.cpp:31