DFT-EFE
 
Loading...
Searching...
No Matches
QuadratureValuesContainer.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
24 */
25#ifndef dftefeQuadratureValuesContainer_h
26#define dftefeQuadratureValuesContainer_h
27
28#include <utils/TypeConfig.h>
30#include <utils/MemoryStorage.h>
33namespace dftefe
34{
35 namespace quadrature
36 {
37 template <typename ValueType, utils::MemorySpace memorySpace>
39 {
40 public:
43 using pointer =
45 using reference =
46 typename dftefe::utils::MemoryStorage<ValueType,
47 memorySpace>::reference;
49 typename dftefe::utils::MemoryStorage<ValueType,
50 memorySpace>::const_reference;
51 using iterator =
54 typename dftefe::utils::MemoryStorage<ValueType,
55 memorySpace>::const_iterator;
56
57 public:
60 std::shared_ptr<const QuadratureRuleContainer> quadratureRuleContainer,
61 const size_type numberComponents,
62 // const std::pair<size_type, size_type> cellRange,
63 const ValueType initVal = ValueType());
64
66
67 void
68 reinit(
69 std::shared_ptr<const QuadratureRuleContainer> quadratureRuleContainer,
70 const size_type numberComponents,
71 const ValueType initVal = ValueType());
72
75
78
81
82 template <utils::MemorySpace memorySpaceSrc>
83 void
84 setCellValues(const size_type cellId, const ValueType *values);
85
86 template <utils::MemorySpace memorySpaceSrc>
87 void
88 setCellQuadValues(const size_type cellId,
89 const size_type quadId,
90 const ValueType *values);
91
92 void
93 setValue(const ValueType value);
94
95 template <utils::MemorySpace memorySpaceDst>
96 void
97 getCellValues(const size_type cellId, ValueType *values) const;
98
99 template <utils::MemorySpace memorySpaceDst>
100 void
101 getCellQuadValues(const size_type cellId,
102 const size_type quadId,
103 ValueType * values) const;
104
105 std::shared_ptr<const QuadratureRuleContainer>
107
109 getNumberComponents() const;
110
112 nCells() const;
114 nQuadraturePoints() const;
116 nEntries() const;
117
119 nCellQuadraturePoints(const size_type cellId) const;
121 nCellEntries(const size_type cellId) const;
123 cellStartId(const size_type cellId) const;
124
125 const SizeTypeVector &
126 getCellStartIds() const;
127 const SizeTypeVector &
128 getNumberCellEntries() const;
129
131 begin();
132
134 begin() const;
135
137 end();
138
140 end() const;
141
143 begin(const size_type cellId);
144
146 begin(const size_type cellId) const;
147
149 end(const size_type cellId);
150
152 end(const size_type cellId) const;
153
154 ValueType *
155 data();
156
157 const ValueType *
158 data() const;
159
160 // ValueType
161 // dotProduct() const;
162
163 private:
168 std::shared_ptr<const QuadratureRuleContainer> d_quadratureRuleContainer;
169 }; // end of QuadratureValuesContainer
170
171
172 //
173 // Helper functions
174 //
175
184 template <typename ValueType1,
185 typename ValueType2,
186 dftefe::utils::MemorySpace memorySpace>
187 void
194 memorySpace> & w,
196
205 template <typename ValueType, dftefe::utils::MemorySpace memorySpace>
206 void
207 add(ValueType a,
209 ValueType b,
212
219 template <typename ValueType1,
220 typename ValueType2,
221 dftefe::utils::MemorySpace memorySpace>
222 void
223 scale(ValueType1 alpha,
227 memorySpace> & w,
229
236 template <typename ValueType, dftefe::utils::MemorySpace memorySpace>
237 void
238 scale(ValueType alpha,
241
242 } // end of namespace quadrature
243} // end of namespace dftefe
245#endif // dftefeQuadratureValuesContainer_h
Definition: LinAlgOpContext.h:52
Definition: QuadratureValuesContainer.h:39
size_type nCells() const
Definition: QuadratureValuesContainer.t.cpp:276
void setValue(const ValueType value)
Definition: QuadratureValuesContainer.t.cpp:214
typename dftefe::utils::MemoryStorage< ValueType, memorySpace >::const_iterator const_iterator
Definition: QuadratureValuesContainer.h:55
QuadratureValuesContainer & operator=(const QuadratureValuesContainer &rhs)
Definition: QuadratureValuesContainer.t.cpp:173
void reinit(std::shared_ptr< const QuadratureRuleContainer > quadratureRuleContainer, const size_type numberComponents, const ValueType initVal=ValueType())
Definition: QuadratureValuesContainer.t.cpp:123
void getCellValues(const size_type cellId, ValueType *values) const
Definition: QuadratureValuesContainer.t.cpp:236
size_type nCellQuadraturePoints(const size_type cellId) const
Definition: QuadratureValuesContainer.t.cpp:298
SizeTypeVector d_numCellEntries
Definition: QuadratureValuesContainer.h:166
typename dftefe::utils::MemoryStorage< ValueType, memorySpace >::pointer pointer
Definition: QuadratureValuesContainer.h:44
SizeTypeVector d_cellStartIds
Definition: QuadratureValuesContainer.h:165
const SizeTypeVector & getNumberCellEntries() const
Definition: QuadratureValuesContainer.t.cpp:333
typename dftefe::utils::MemoryStorage< ValueType, memorySpace >::reference reference
Definition: QuadratureValuesContainer.h:47
size_type d_numberComponents
Definition: QuadratureValuesContainer.h:164
QuadratureValuesContainer(std::shared_ptr< const QuadratureRuleContainer > quadratureRuleContainer, const size_type numberComponents, const ValueType initVal=ValueType())
std::shared_ptr< const QuadratureRuleContainer > getQuadratureRuleContainer() const
Definition: QuadratureValuesContainer.t.cpp:261
size_type cellStartId(const size_type cellId) const
Definition: QuadratureValuesContainer.t.cpp:315
void getCellQuadValues(const size_type cellId, const size_type quadId, ValueType *values) const
Definition: QuadratureValuesContainer.t.cpp:248
iterator end()
Definition: QuadratureValuesContainer.t.cpp:355
typename dftefe::utils::MemoryStorage< ValueType, memorySpace >::iterator iterator
Definition: QuadratureValuesContainer.h:52
typename dftefe::utils::MemoryStorage< ValueType, memorySpace >::const_reference const_reference
Definition: QuadratureValuesContainer.h:50
iterator begin()
Definition: QuadratureValuesContainer.t.cpp:341
ValueType * data()
Definition: QuadratureValuesContainer.t.cpp:401
void setCellQuadValues(const size_type cellId, const size_type quadId, const ValueType *values)
Definition: QuadratureValuesContainer.t.cpp:223
const SizeTypeVector & getCellStartIds() const
Definition: QuadratureValuesContainer.t.cpp:325
void setCellValues(const size_type cellId, const ValueType *values)
Definition: QuadratureValuesContainer.t.cpp:203
size_type nCellEntries(const size_type cellId) const
Definition: QuadratureValuesContainer.t.cpp:306
size_type nEntries() const
Definition: QuadratureValuesContainer.t.cpp:290
size_type getNumberComponents() const
Definition: QuadratureValuesContainer.t.cpp:268
std::shared_ptr< const QuadratureRuleContainer > d_quadratureRuleContainer
Definition: QuadratureValuesContainer.h:168
Storage d_storage
Definition: QuadratureValuesContainer.h:167
QuadratureValuesContainer()
Definition: QuadratureValuesContainer.t.cpp:87
size_type nQuadraturePoints() const
Definition: QuadratureValuesContainer.t.cpp:283
Definition: MemoryStorage.h:38
ValueType * iterator
Definition: MemoryStorage.h:59
ValueType * pointer
Definition: MemoryStorage.h:56
typeInternal::scalar_type< ValueType1, ValueType2 > scalar_type
Definition: BlasLapackTypedef.h:183
void scale(ValueType1 alpha, const QuadratureValuesContainer< ValueType2, memorySpace > &u, QuadratureValuesContainer< linearAlgebra::blasLapack::scalar_type< ValueType1, ValueType2 >, memorySpace > &w, linearAlgebra::LinAlgOpContext< memorySpace > &linAlgOpContext)
Perform .
Definition: QuadratureValuesContainer.t.cpp:495
void add(linearAlgebra::blasLapack::scalar_type< ValueType1, ValueType2 > a, const QuadratureValuesContainer< ValueType1, memorySpace > &u, linearAlgebra::blasLapack::scalar_type< ValueType1, ValueType2 > b, const QuadratureValuesContainer< ValueType2, memorySpace > &v, QuadratureValuesContainer< linearAlgebra::blasLapack::scalar_type< ValueType1, ValueType2 >, memorySpace > &w, linearAlgebra::LinAlgOpContext< memorySpace > &linAlgOpContext)
Perform .
Definition: QuadratureValuesContainer.t.cpp:447
MemorySpace
Definition: MemorySpaceType.h:37
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
std::uint64_t size_type
Definition: TypeConfig.h:9