WARPXM v1.10.0
Loading...
Searching...
No Matches
wmunstructuredsubdomainarray.h
Go to the documentation of this file.
1#ifndef __WmUnstructuredSubdomainArray__h__
2#define __WmUnstructuredSubdomainArray__h__
3
4#include <limits>
5//#include <ga.h>
6//#include <macdecls.h>
7#include <mpi.h>
8#include <algorithm>
9
10// WarpM includes
11#include "lib/wmdomain.h"
12#include "lib/wxany.h"
13#include "lib/wxmsgbase.h"
15#include "lib/wxrange.h"
17
22// forward declarations
23template<typename T> class WmUnstructuredPatchArray;
24class WmSolverBase;
25
27{
28public:
30 {
31 }
32
33 // Shared for structured and unstructured
34
35 virtual const WxAny min() const = 0;
36
37 virtual const WxAny absoluteMin() const = 0;
38
39 virtual void fill(const WxAny& fillValue) = 0;
40
41 virtual void fill(const std::vector<WxAny>& fillValuesVector) = 0;
42
43 virtual void
44 dump(WxIoBase& io, WxIoNodeType& grpNode, bool writeGhostCellsToo = false) const = 0;
45
46 virtual void
47 load(WxIoBase& io, const WxIoNodeType& grpNode, bool loadGhostCellsToo) = 0;
48
49 virtual bool checkCompatible(const WmUnstructuredSubdomainArrayBase& other) const = 0;
50
51 virtual const std::type_info& getElementType() const = 0;
52
54 virtual void downloadInternalElementsFromBuffers() const = 0;
57
59 {
60 return NULL;
61 }
63 getPatchArrayData(int patchIndex) const
64 {
65 return NULL;
66 }
67
68 virtual void print() const = 0;
69
70protected:
71private:
72};
73
74template<typename T>
76{
77
78public:
84 typedef typename std::map<int, WmUnstructuredPatchArray<T>*> patchArrays_t;
85
92 WmUnstructuredSubdomainArray(const std::string& arrayName,
93 std::string& variableName,
94 int componentIndex,
95 int numSubComponents,
96 std::string& subdomainName,
97 const WmDomain& domain,
98 const std::string& basisArraySetName = "");
99
101
108 bool hasPatch(const int patchIndex) const;
109
120 void fill(const WxAny& fillValue);
121
131 void fill(const std::vector<WxAny>& fillValuesVector);
132
139 virtual bool checkCompatible(const WmUnstructuredSubdomainArrayBase& other) const;
140
146 virtual const std::type_info& getElementType() const;
147
155 virtual void
156 dump(WxIoBase& io, WxIoNodeType& grpNode, bool writeGhostCellsToo = false) const;
157
166 virtual void load(WxIoBase& io, const WxIoNodeType& grpNode, bool includeGhosts);
167
175
182 virtual const WmUnstructuredPatchArray<T>& getPatchArray(int patchIndex) const;
183
191
199 getPatchArrayData(int patchIndex) const;
200
211 const WxAny min() const;
212
224 const WxAny absoluteMin() const;
225
232 void print() const;
233
234protected:
235 // Protected variables
236
238
239 // Ranges of dataset
240 unsigned _ndims;
242
243 // Parents
245
246 // Global array identities
247 std::string _arrayName;
248 std::string _variableName;
250 std::string _subdomainName;
251
252 // Number of subcomponents per element
255
256 // Is there a local portion to this global array
258
259 // Patch array allocations
261
262 // Mesh id
264
265private:
266 // Default constructor blocked.
268
269 // Default copy constructor blocked.
271
272 // Default equate blocked.
274};
275
278#endif // __WmUnstructuredSubdomainArray__h__
Definition: wmbasisarrayset.h:13
Definition: wmdomain.h:35
A base class for solvers in WARPM.
Definition: wmsolverbase.h:35
Defines common interface for arrays of elements.
Definition: wmsimplearrays.h:23
Definition: wmunstructuredpatcharray.h:23
Definition: wmunstructuredsubdomainarray.h:27
virtual void load(WxIoBase &io, const WxIoNodeType &grpNode, bool loadGhostCellsToo)=0
virtual void print() const =0
virtual void downloadInternalElementsFromBuffers() const =0
virtual const std::type_info & getElementType() const =0
virtual bool checkCompatible(const WmUnstructuredSubdomainArrayBase &other) const =0
virtual void fill(const WxAny &fillValue)=0
virtual void uploadImportElementsToBuffers()=0
virtual void downloadImportExportElementsFromBuffers() const =0
virtual const WxAny min() const =0
virtual const WmTypeOpaqueArray< _WX_ROW_MAJOR_ORDER > * getPatchArrayData(int patchIndex) const
Definition: wmunstructuredsubdomainarray.h:63
virtual const WxAny absoluteMin() const =0
virtual ~WmUnstructuredSubdomainArrayBase()
Definition: wmunstructuredsubdomainarray.h:29
virtual void dump(WxIoBase &io, WxIoNodeType &grpNode, bool writeGhostCellsToo=false) const =0
virtual void uploadInternalElementsToBuffers()=0
virtual void fill(const std::vector< WxAny > &fillValuesVector)=0
virtual WmTypeOpaqueArray< _WX_ROW_MAJOR_ORDER > * getPatchArrayData(int patchIndex)
Definition: wmunstructuredsubdomainarray.h:58
Definition: wmunstructuredsubdomainarray.h:76
patchArrays_t _patchArrays
Definition: wmunstructuredsubdomainarray.h:260
void print() const
Prints what is in host memory.
std::string _arrayName
Definition: wmunstructuredsubdomainarray.h:247
virtual const std::type_info & getElementType() const
Returns the element type stored by the array.
virtual const WmUnstructuredPatchArray< T > & getPatchArray(int patchIndex) const
Get patch array.
void fill(const std::vector< WxAny > &fillValuesVector)
Fill all of the Global Array with a specified fill values.
std::map< int, WmUnstructuredPatchArray< T > * > patchArrays_t
Holds the references to the patch arrays Unstructured arrays have separate dataspaces for each patch.
Definition: wmunstructuredsubdomainarray.h:84
const WxAny absoluteMin() const
Returns the absolute minimum value in global array Absolute min is the closest value to zero Value wi...
bool _existsOnProcess
Definition: wmunstructuredsubdomainarray.h:257
virtual WmTypeOpaqueArray< _WX_ROW_MAJOR_ORDER > * getPatchArrayData(int patchIndex)
Get a pointer to the locally held array for a patch.
const WxAny min() const
Returns the minimum value in global array.
void fill(const WxAny &fillValue)
Fill all of the Global Array with a specified fill value.
virtual void load(WxIoBase &io, const WxIoNodeType &grpNode, bool includeGhosts)
Load object from file.
virtual bool checkCompatible(const WmUnstructuredSubdomainArrayBase &other) const
Checks the supplied global array is compatible with this one for swap.
std::string _subdomainName
Definition: wmunstructuredsubdomainarray.h:250
bool _gatherListSet
Definition: wmunstructuredsubdomainarray.h:237
bool hasPatch(const int patchIndex) const
Check if subdomain array contains patch.
WmBasisArraySet _basisSet
Definition: wmunstructuredsubdomainarray.h:253
int _numSubComponents
Definition: wmunstructuredsubdomainarray.h:254
std::string _variableName
Definition: wmunstructuredsubdomainarray.h:248
virtual WmUnstructuredPatchArray< T > & getPatchArray(int patchIndex)
Get patch array.
const WmSolverBase * _parentSolver
Definition: wmunstructuredsubdomainarray.h:244
virtual const WmTypeOpaqueArray< _WX_ROW_MAJOR_ORDER > * getPatchArrayData(int patchIndex) const
Get a pointer to the locally held array for a patch.
WxRange _globalRange
Definition: wmunstructuredsubdomainarray.h:241
virtual void dump(WxIoBase &io, WxIoNodeType &grpNode, bool writeGhostCellsToo=false) const
Write out the array to file.
int _componentIndex
Definition: wmunstructuredsubdomainarray.h:249
unsigned _ndims
Definition: wmunstructuredsubdomainarray.h:240
WmUnstructuredSubdomainArray(const std::string &arrayName, std::string &variableName, int componentIndex, int numSubComponents, std::string &subdomainName, const WmDomain &domain, const std::string &basisArraySetName="")
Constructor for WmUnstructuredSubdomainArray.
int _meshID
Definition: wmunstructuredsubdomainarray.h:263
Class WxAny is based on the "any" class described in "Valued Conversion", Kevlin Henney,...
Definition: wxany.h:139
Provides an abstract interface for access to hierachical datasets.
Definition: wxiobase.h:25
WxRange represents a hyper-rectangular domain of an n-dimensional space of integers.
Definition: wxrange.h:23
Provides a means for derived messengers to return implimentation specific message status flags and da...
Definition: wxiotmpl.h:23