34{%
if FLOAT_TYPE==
"std::float16_t" or FLOAT_TYPE==
"std::bfloat16_t" %}
39{%
for item in NAMESPACE -%}
40 namespace {{ item }} {
45{%
for item in NAMESPACE -%}
54struct {{NAMESPACE | join(
"::")}}::{{CLASSNAME}} {
57 static MPI_Datatype Datatype;
75 std::shared_ptr< {{FLOAT_TYPE}}[] > _dataSmartPointer;
77 typedef {{FLOAT_TYPE}} DoFType;
82 enum ObjectConstruction {
87 static constexpr int Cardinality = {{CARDINALITY_2D}};
89 static constexpr int Cardinality = {{CARDINALITY_3D}};
106 {{FLOAT_TYPE}}*
value;
146 {{CLASSNAME}}( ObjectConstruction );
152 ~{{CLASSNAME}}() =
default;
167 {{CLASSNAME}}(
const {{CLASSNAME}}& other);
190 void clone(
const {{CLASSNAME}}& other);
196 #if not defined(GPUOffloadingOff)
197 void reallocateOnDevice(
int deviceNumber);
200 std::shared_ptr< {{FLOAT_TYPE}}[] > getSmartPointer()
const;
205 {{CLASSNAME}}& operator=(
const {{CLASSNAME}}& other);
209 {%
if DATA_ASSOCIATION == 1 -%}
213 {%
for arg in ADDITIONAL_LOAD_STORE_ARGUMENTS %},
const {{arg[1]}}& {{arg[2]}} {% endfor %}
215 bool receiveAndMerge(
217 {%
for arg in ADDITIONAL_LOAD_STORE_ARGUMENTS %},
const {{arg[1]}}& {{arg[2]}} {% endfor %}
219 static ::peano4::grid::LoadStoreComputeFlag loadStoreComputeFlag(
221 {%
for arg in ADDITIONAL_LOAD_STORE_ARGUMENTS %},
const {{arg[1]}}& {{arg[2]}} {% endfor %}
225 {%
if DATA_ASSOCIATION == 2 -%}
229 {%
for arg in ADDITIONAL_LOAD_STORE_ARGUMENTS %},
const {{arg[1]}}& {{arg[2]}} {% endfor %}
231 bool receiveAndMerge(
233 {%
for arg in ADDITIONAL_LOAD_STORE_ARGUMENTS %},
const {{arg[1]}}& {{arg[2]}} {% endfor %}
235 static ::peano4::grid::LoadStoreComputeFlag loadStoreComputeFlag(
237 {%
for arg in ADDITIONAL_LOAD_STORE_ARGUMENTS %},
const {{arg[1]}}& {{arg[2]}} {% endfor %}
241 {%
if DATA_ASSOCIATION == 3 -%}
245 {%
for arg in ADDITIONAL_LOAD_STORE_ARGUMENTS %},
const {{arg[1]}}& {{arg[2]}} {% endfor %}
247 bool receiveAndMerge(
249 {%
for arg in ADDITIONAL_LOAD_STORE_ARGUMENTS %},
const {{arg[1]}}& {{arg[2]}} {% endfor %}
251 static ::peano4::grid::LoadStoreComputeFlag loadStoreComputeFlag(
253 {%
for arg in ADDITIONAL_LOAD_STORE_ARGUMENTS %},
const {{arg[1]}}& {{arg[2]}} {% endfor %}
264 {{FLOAT_TYPE}} get(
int index)
const;
272 void set(
int index, {{FLOAT_TYPE}}
value);
278 static void initDatatype();
283 static void shutdownDatatype();
289 static MPI_Datatype getForkDatatype();
290 static MPI_Datatype getJoinDatatype();
291 static MPI_Datatype getBoundaryExchangeDatatype();
292 static MPI_Datatype getMultiscaleDataExchangeDatatype();
293 static MPI_Datatype getGlobalCommunciationDatatype();
std::string toString(exahype2::RefinementCommand value)
SendReceiveContext
There are three different scenarios when we merge data:
std::vector< GridControlEvent > merge(std::vector< GridControlEvent > events, const double Tolerance=0.1)
Merge set of refinement/coarsening commands.
Provide information about selected face.
Vertex marker to provide information about selected vertex.