Peano
Loading...
Searching...
No Matches
Restriction.h
Go to the documentation of this file.
1// This file is part of the Peano project. For conditions of distribution and
2// use, please see the copyright notice at www.peano-framework.org
3#pragma once
4
8
9namespace toolbox {
10 namespace blockstructured {
41 int numberOfDoFsPerAxisInPatch,
42 int overlap,
43 int unknowns,
44 double* values
45 );
46
49 int numberOfDoFsPerAxisInPatch,
50 int unknowns,
51 double* values
52 );
53
98 int numberOfDoFsPerAxisInPatch,
99 int overlap,
100 int unknowns,
101 double* fineGridValues,
102 double* coarseGridValues,
103 bool swapInsideOutside = false
104 );
105
114 int numberOfDoFsPerAxisInPatch,
115 int overlap,
116 int unknowns,
117 double* fineGridValues,
118 double* coarseGridValues
119 );
120
123 int numberOfDoFsPerAxisInPatch,
124 int unknowns,
125 double* fineGridValues,
126 double* coarseGridValues
127 );
128
151 int numberOfDoFsPerAxisInSourcePatch,
152 int numberOfDoFsPerAxisInDestinationPatch,
153 int unknowns,
154 double* sourceValues,
155 double* destinationValues
156 );
157
170 int numberOfDoFsPerAxisInSourcePatch,
171 int numberOfDoFsPerAxisInDestinationPatch,
172 int unknowns,
173 double* sourceValues,
174 double* destinationValues,
175 double weightOfInjectedValue = 0.5
176 );
177
178
184 int numberOfDoFsPerAxisInPatch,
185 int unknowns,
186 double* fineGridValues,
187 double* coarseGridValues
188 );
189
197 int numberOfDoFsPerAxisInPatch,
198 int overlap,
199 int unknowns,
200 double* fineGridValues,
201 double* coarseGridValues
202 );
203
226 int numberOfDoFsPerAxisInPatch,
227 int overlap,
228 int unknowns,
229 double* fineGridValues,
230 double* coarseGridValues,
231 bool swapInsideOutside = false
232 );
233
236 int numberOfDoFsPerAxisInPatch,
237 int unknowns,
238 const double* __restrict__ tangentialRestrictionMatrix1d,
239 double* fineGridValues,
240 double* coarseGridValues
241 );
242
245 int numberOfDoFsPerAxisInPatch,
246 int unknowns,
247 const double* __restrict__ restrictionData,
248 const int* __restrict__ columnIndices,
249 const int* __restrict__ rowIndices,
250 double* fineGridValues,
251 double* coarseGridValues
252 );
253
256 int numberOfDoFsPerAxisInPatch,
257 int unknowns,
258 double* fineGridValues,
259 double* coarseGridValues
260 );
261
264 int numberOfDoFsPerAxisInPatch,
265 int unknowns,
266 double* fineGridValues,
267 double* coarseGridValues
268 );
269
270
286 int numberOfDoFsPerAxisInPatch,
287 int overlap,
288 int unknowns,
289 const double* __restrict__ normalRestrictionMatrix1d,
290 const double* __restrict__ tangentialRestrictionMatrix1d,
291 double* fineGridValues,
292 double* coarseGridValues
293 );
294
297 int numberOfDoFsPerAxisInPatch,
298 int overlap,
299 int unknowns,
300 const double* __restrict__ restrictionData,
301 const int* __restrict__ columnIndices,
302 const int* __restrict__ rowIndices,
303 int dataOffset,
304 int rowIndicesOffset,
305 double* fineGridValues,
306 double* coarseGridValues
307 );
308
311 int numberOfDoFsPerAxisInPatch,
312 int overlap,
313 int unknowns,
314 double* fineGridValues,
315 double* coarseGridValues
316 );
317
320 int numberOfDoFsPerAxisInPatch,
321 int overlap,
322 int unknowns,
323 double* fineGridValues,
324 double* coarseGridValues
325 );
326
504 int numberOfDoFsPerAxisInPatch,
505 int overlap,
506 int unknowns,
507 const double* __restrict__ normalRestrictionMatrix1d,
508 const double* __restrict__ tangentialRestrictionMatrix1d,
509 double* fineGridValues,
510 double* coarseGridValues,
511 bool swapInsideOutside = false
512 );
513
516 int numberOfDoFsPerAxisInPatch,
517 int overlap,
518 int unknowns,
519 const double* __restrict__ restrictionMatrixData,
520 const int* __restrict__ columnIndices,
521 const int* __restrict__ rowIndices,
522 int dataOffset,
523 int rowIndicesOffset,
524 double* fineGridValues,
525 double* coarseGridValues,
526 bool swapInsideOutside = false
527 );
528
531 int numberOfDoFsPerAxisInPatch,
532 int overlap,
533 int unknowns,
534 double* fineGridValues,
535 double* coarseGridValues,
536 bool swapInsideOutside = false
537 );
538
541 int numberOfDoFsPerAxisInPatch,
542 int overlap,
543 int unknowns,
544 double* fineGridValues,
545 double* coarseGridValues,
546 bool swapInsideOutside = false
547 );
548
549
550 namespace internal {
551
578 int numberOfDoFsPerAxisInPatch,
579 int overlap,
580 int unknowns,
581 bool clearInnerPart,
582 double* values
583 );
584
596 const peano4::datamanagement::CellMarker& fineGridCellMarker,
597 int numberOfDoFsPerAxisInPatch,
598 std::function<void(
601 tarch::la::Vector<Dimensions, double> coarseVolumeCentre,
603 double coarseVolumeH,
604 double fineVolumeH
605 )> update
606 );
607 } // namespace internal
608 } // namespace blockstructured
609} // namespace toolbox
void clearHalfOfHaloLayerAoS(const peano4::datamanagement::FaceMarker &marker, int numberOfDoFsPerAxisInPatch, int overlap, int unknowns, bool clearInnerPart, double *values)
Clear half of a halo layer.
void projectCells_AoS(const peano4::datamanagement::CellMarker &fineGridCellMarker, int numberOfDoFsPerAxisInPatch, std::function< void(tarch::la::Vector< Dimensions, int > coarseVolume, tarch::la::Vector< Dimensions, int > fineVolume, tarch::la::Vector< Dimensions, double > coarseVolumeCentre, tarch::la::Vector< Dimensions, double > fineVolumeCentre, double coarseVolumeH, double fineVolumeH)> update)
Helper function.
void restrictHaloLayer_AoS_averaging(const peano4::datamanagement::FaceMarker &marker, int numberOfDoFsPerAxisInPatch, int overlap, int unknowns, double *fineGridValues, double *coarseGridValues)
Consult commend on interpolation that clarifies why we need two different halo layer restrictions,...
void restrictCell_AoS_matrix(const peano4::datamanagement::CellMarker &marker, int numberOfDoFsPerAxisInPatch, int unknowns, double *fineGridValues, double *coarseGridValues)
void restrictCellIntoOverlappingCell_inject_and_average(int numberOfDoFsPerAxisInSourcePatch, int numberOfDoFsPerAxisInDestinationPatch, int unknowns, double *sourceValues, double *destinationValues, double weightOfInjectedValue=0.5)
Flavour of restrictCellIntoOverlappingCell_inject() where we inject the solution but then take the av...
void restrictInnerHalfOfHaloLayer_AoS_matrix(const peano4::datamanagement::FaceMarker &marker, int numberOfDoFsPerAxisInPatch, int overlap, int unknowns, double *fineGridValues, double *coarseGridValues, bool swapInsideOutside=false)
void restrictCellIntoOverlappingCell_inject(int numberOfDoFsPerAxisInSourcePatch, int numberOfDoFsPerAxisInDestinationPatch, int unknowns, double *sourceValues, double *destinationValues)
This routine should be used if a cell hosts two sets of unknowns.
void restrictHaloLayer_AoS_inject(const peano4::datamanagement::FaceMarker &marker, int numberOfDoFsPerAxisInPatch, int overlap, int unknowns, double *fineGridValues, double *coarseGridValues)
Restrict data by injection.
void restrictInnerHalfOfHaloLayer_AoS_third_order(const peano4::datamanagement::FaceMarker &marker, int numberOfDoFsPerAxisInPatch, int overlap, int unknowns, double *fineGridValues, double *coarseGridValues, bool swapInsideOutside=false)
void clearCell(const peano4::datamanagement::CellMarker &marker, int numberOfDoFsPerAxisInPatch, int unknowns, double *values)
void clearHaloLayerAoS(const peano4::datamanagement::FaceMarker &marker, int numberOfDoFsPerAxisInPatch, int overlap, int unknowns, double *values)
Clear halo layer of face.
void restrictHaloLayer_AoS_matrix(const peano4::datamanagement::FaceMarker &marker, int numberOfDoFsPerAxisInPatch, int overlap, int unknowns, double *fineGridValues, double *coarseGridValues)
void restrictInnerHalfOfHaloLayer_AoS_inject(const peano4::datamanagement::FaceMarker &marker, int numberOfDoFsPerAxisInPatch, int overlap, int unknowns, double *fineGridValues, double *coarseGridValues, bool swapInsideOutside=false)
Restrict data by injection.
void restrictInnerHalfOfHaloLayer_AoS_averaging(const peano4::datamanagement::FaceMarker &marker, int numberOfDoFsPerAxisInPatch, int overlap, int unknowns, double *fineGridValues, double *coarseGridValues, bool swapInsideOutside=false)
Restrict with averaging.
void restrictHaloLayer_AoS_third_order(const peano4::datamanagement::FaceMarker &marker, int numberOfDoFsPerAxisInPatch, int overlap, int unknowns, double *fineGridValues, double *coarseGridValues)
void restrictHaloLayer_AoS_tensor_product(const peano4::datamanagement::FaceMarker &marker, int numberOfDoFsPerAxisInPatch, int overlap, int unknowns, double *fineGridValues, double *coarseGridValues)
void restrictInnerHalfOfHaloLayer_AoS_second_order(const peano4::datamanagement::FaceMarker &marker, int numberOfDoFsPerAxisInPatch, int overlap, int unknowns, double *fineGridValues, double *coarseGridValues, bool swapInsideOutside=false)
void restrictCell_AoS_averaging(const peano4::datamanagement::CellMarker &marker, int numberOfDoFsPerAxisInPatch, int unknowns, double *fineGridValues, double *coarseGridValues)
This routine is used when we delete a cell due to dynamic AMR.
void restrictCell_AoS_inject(const peano4::datamanagement::CellMarker &marker, int numberOfDoFsPerAxisInPatch, int unknowns, double *fineGridValues, double *coarseGridValues)
void restrictCell_AoS_tensor_product(const peano4::datamanagement::CellMarker &marker, int numberOfDoFsPerAxisInPatch, int unknowns, double *fineGridValues, double *coarseGridValues)
void restrictCell_AoS_second_order(const peano4::datamanagement::CellMarker &marker, int numberOfDoFsPerAxisInPatch, int unknowns, double *fineGridValues, double *coarseGridValues)
void restrictCell_AoS_third_order(const peano4::datamanagement::CellMarker &marker, int numberOfDoFsPerAxisInPatch, int unknowns, double *fineGridValues, double *coarseGridValues)
void restrictInnerHalfOfHaloLayer_AoS_tensor_product(const peano4::datamanagement::FaceMarker &marker, int numberOfDoFsPerAxisInPatch, int overlap, int unknowns, double *fineGridValues, double *coarseGridValues, bool swapInsideOutside=false)
void restrictHaloLayer_AoS_second_order(const peano4::datamanagement::FaceMarker &marker, int numberOfDoFsPerAxisInPatch, int overlap, int unknowns, double *fineGridValues, double *coarseGridValues)
Provide information about selected face.
Definition FaceMarker.h:35
Simple vector class.
Definition Vector.h:159