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>
36#include <basis/BasisManager.h>
37namespace dftefe
38{
39 namespace basis
40 {
41 namespace realspace
42 {
43 enum class VectorMathOp
44 {
45 DOT,
46 CROSS,
47 MULT,
48 ADD
49 };
50
51 enum class LinearLocalOp
52 {
54 GRAD,
56 CURL
57 };
58 } // end of namespace realspace
63 template <typename ValueTypeBasisCoeff,
64 typename ValueTypeBasisData,
65 utils::MemorySpace memorySpace>
67 {
68 public:
71 ValueTypeBasisData>;
72
75
78
79 public:
80 virtual ~BasisOperations() = default;
81
82 virtual void
85 & vectorData,
89 ValueTypeBasisData>,
90 memorySpace> &quadValuesContainer) const = 0;
91
92 virtual void
95 & vectorData,
99 ValueTypeBasisData>,
100 memorySpace> &quadValuesContainer) const = 0;
101
102 virtual void
105 linearAlgebra::blasLapack::scalar_type<ValueTypeBasisCoeff,
106 ValueTypeBasisData>,
107 memorySpace> & inp,
110 &vectorData) const = 0;
111
112 }; // end of BasisOperations
113 } // end of namespace basis
114} // end of namespace dftefe
115#endif // dftefeBasisOperations_h
An abstract class to encapsulate the partitioning of a basis across multiple processors.
Definition: BasisManager.h:54
Definition: BasisOperations.h:67
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:71
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
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition: MultiVector.h:134
Definition: QuadratureValuesContainer.h:39
VectorMathOp
Definition: BasisOperations.h:44
LinearLocalOp
Definition: BasisOperations.h:52
typeInternal::scalar_type< ValueType1, ValueType2 > scalar_type
Definition: BlasLapackTypedef.h:183
MemorySpace
Definition: MemorySpaceType.h:37
dealii includes
Definition: AtomFieldDataSpherical.cpp:31