chombo-discharge
Loading...
Searching...
No Matches
CD_DataOps.H
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2021-2026 SINTEF Energy Research
3 *
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
13#ifndef CD_DATAOPS_H
14#define CD_DATAOPS_H
15
16// Std includes
17#include <array>
18
19// Chombo includes
20#include <FaceIterator.H>
21#include <VoFIterator.H>
22
23// Our includes
24#include <CD_Average.H>
25#include <CD_EBAMRData.H>
26#include <CD_Decorations.H>
27#include <CD_MFInterfaceFAB.H>
28#include <CD_NamespaceHeader.H>
29
36{
37public:
43 template <typename T>
44 static void
45 setValue(LevelData<MFInterfaceFAB<T>>& a_lhs, const T& a_value);
46
52 template <typename T>
53 static int
54 sgn(const T a_value);
55
64 static void
65 averageCellVelocityToFaceVelocity(EBAMRFluxData& a_faceData,
66 const EBAMRCellData& a_cellData,
67 const Vector<ProblemDomain>& a_domains,
68 const int a_tanGhosts,
69 Vector<RefCountedPtr<LayoutData<std::array<FaceIterator, SpaceDim>>>>& a_faceIter);
70
79 static void
80 averageCellVelocityToFaceVelocity(LevelData<EBFluxFAB>& a_faceData,
81 const LevelData<EBCellFAB>& a_cellData,
82 const ProblemDomain& a_domain,
83 const int a_tanGhosts,
84 LayoutData<std::array<FaceIterator, SpaceDim>>& a_faceIter);
85
96 static void
97 averageCellToFace(EBAMRFluxData& a_faceData,
98 const EBAMRCellData& a_cellData,
99 const Vector<ProblemDomain>& a_domains,
100 Vector<RefCountedPtr<LayoutData<std::array<FaceIterator, SpaceDim>>>>& a_faceIter);
101
114 static void
115 averageCellToFace(EBAMRFluxData& a_faceData,
116 const EBAMRCellData& a_cellData,
117 const Vector<ProblemDomain>& a_domains,
118 const int a_tanGhosts,
119 const Interval& a_faceInterval,
120 const Interval& a_cellInterval,
121 const Average& a_average,
122 Vector<RefCountedPtr<LayoutData<std::array<FaceIterator, SpaceDim>>>>& a_faceIter);
123
135 static void
136 averageCellToFace(LevelData<EBFluxFAB>& a_faceData,
137 const LevelData<EBCellFAB>& a_cellData,
138 const ProblemDomain& a_domain,
139 const int a_tanGhosts,
140 const Interval& a_faceInterval,
141 const Interval& a_cellInterval,
142 const Average& a_average,
143 LayoutData<std::array<FaceIterator, SpaceDim>>& a_faceIter);
144
153 static void
154 averageFaceToCell(EBAMRCellData& a_cellData,
155 const EBAMRFluxData& a_faceData,
156 const Vector<ProblemDomain>& a_domains,
157 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
158
167 static void
168 averageFaceToCell(LevelData<EBCellFAB>& a_cellData,
169 const LevelData<EBFluxFAB>& a_fluxData,
170 const ProblemDomain& a_domain,
171 LayoutData<VoFIterator>& a_vofIter);
172
181 static void
182 axby(LevelData<EBCellFAB>& a_lhs,
183 const LevelData<EBCellFAB>& a_x,
184 const LevelData<EBCellFAB>& a_y,
185 const Real a_a,
186 const Real a_b) noexcept;
187
195 static void
196 compute(EBAMRCellData& a_data,
197 const std::function<Real(const Real a_cellValue)>& a_func,
198 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter) noexcept;
199
207 static void
208 compute(LevelData<EBCellFAB>& a_data,
209 const std::function<Real(const Real a_cellValue)>& a_func,
210 LayoutData<VoFIterator>& a_vofIter) noexcept;
211
220 static void
221 dotProduct(MFAMRCellData& a_result, const MFAMRCellData& a_data1, const MFAMRCellData& a_data2);
222
232 static void
233 dotProduct(LevelData<MFCellFAB>& a_result, const LevelData<MFCellFAB>& a_data1, const LevelData<MFCellFAB>& a_data2);
234
244 static void
245 dotProduct(EBAMRCellData& a_result,
246 const EBAMRCellData& a_data1,
247 const EBAMRCellData& a_data2,
248 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
249
259 static void
260 dotProduct(LevelData<EBCellFAB>& a_result,
261 const LevelData<EBCellFAB>& a_data1,
262 const LevelData<EBCellFAB>& a_data2,
263 LayoutData<VoFIterator>& a_vofIter);
264
275 static void
276 dotProduct(EBCellFAB& a_result,
277 const EBCellFAB& a_data1,
278 const EBCellFAB& a_data2,
279 const Box& a_box,
280 VoFIterator& a_vofIter);
281
293 static void
294 filterSmooth(EBAMRCellData& a_data, const Real a_alpha, const int a_stride, const bool a_zeroEB) noexcept;
295
307 static void
308 filterSmooth(LevelData<EBCellFAB>& a_data, const Real a_alpha, const int a_stride, const bool a_zeroEB) noexcept;
309
316 static void
317 incr(MFAMRCellData& a_lhs, const MFAMRCellData& a_rhs, const Real a_scale) noexcept;
318
325 static void
326 incr(LevelData<MFCellFAB>& a_lhs, const LevelData<MFCellFAB>& a_rhs, const Real a_scale) noexcept;
327
334 static void
335 incr(EBAMRCellData& a_lhs, const EBAMRCellData& a_rhs, const Real& a_scale) noexcept;
336
343 static void
344 incr(LevelData<EBCellFAB>& a_lhs, const LevelData<EBCellFAB>& a_rhs, const Real& a_scale) noexcept;
345
352 static void
353 incr(EBAMRFluxData& a_lhs, const EBAMRFluxData& a_rhs, const Real& a_scale);
354
361 static void
362 incr(LevelData<EBFluxFAB>& a_lhs, const LevelData<EBFluxFAB>& a_rhs, const Real& a_scale);
363
370 static void
371 incr(EBFluxFAB& a_lhs, const EBFluxFAB& a_rhs, const Real& a_scale);
372
380 static void
381 incr(EBAMRIVData& a_lhs, const EBAMRIVData& a_rhs, const Real& a_scale);
382
390 static void
391 incr(LevelData<BaseIVFAB<Real>>& a_lhs, const LevelData<BaseIVFAB<Real>>& a_rhs, const Real& a_scale);
392
400 static void
401 incr(EBAMRIVData& a_lhs,
402 const EBAMRIVData& a_rhs,
403 const Real& a_scale,
404 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
405
413 static void
414 incr(LevelData<BaseIVFAB<Real>>& a_lhs,
415 const LevelData<BaseIVFAB<Real>>& a_rhs,
416 const Real& a_scale,
417 LayoutData<VoFIterator>& a_vofIter);
418
425 static void
426 incr(EBAMRIFData& a_lhs, const EBAMRIFData& a_rhs, const Real& a_scale);
427
434 static void
435 incr(LevelData<DomainFluxIFFAB>& a_lhs, const LevelData<DomainFluxIFFAB>& a_rhs, const Real& a_scale);
436
445 static void
446 incr(EBAMRCellData& a_lhs,
447 const EBAMRIVData& a_rhs,
448 const Real a_scale,
449 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
450
459 static void
460 incr(LevelData<EBCellFAB>& a_lhs,
461 const LevelData<BaseIVFAB<Real>>& a_rhs,
462 const Real a_scale,
463 LayoutData<VoFIterator>& a_vofIter);
464
473 static void
474 incr(EBAMRIVData& a_lhs,
475 const EBAMRCellData& a_rhs,
476 const Real a_scale,
477 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
478
487 static void
488 incr(LevelData<BaseIVFAB<Real>>& a_lhs,
489 const LevelData<EBCellFAB>& a_rhs,
490 const Real a_scale,
491 LayoutData<VoFIterator>& a_vofIter);
492
498 static void
499 copy(MFAMRCellData& a_dst, const MFAMRCellData& a_src);
500
506 static void
507 copy(EBAMRCellData& a_dst, const EBAMRCellData& a_src);
508
514 static void
515 copy(EBAMRIVData& a_dst, const EBAMRIVData& a_src);
516
524 template <typename T>
525 static void
526 copy(EBAMRData<T>& a_dst, const EBAMRData<T>& a_src, const Interval a_dstInterv, const Interval a_srcInterv);
527
535 static void
536 divide(EBAMRCellData& a_lhs, const EBAMRCellData& a_rhs, const int a_lhsComp, const int a_rhsComp);
537
545 static void
546 divide(LevelData<EBCellFAB>& a_lhs, const LevelData<EBCellFAB>& a_rhs, const int a_lhsComp, const int a_rhsComp);
547
553 static void
554 divideByScalar(EBAMRCellData& a_lhs, const EBAMRCellData& a_rhs);
555
561 static void
562 divideByScalar(LevelData<EBCellFAB>& a_lhs, const LevelData<EBCellFAB>& a_rhs);
563
571 static void
572 divideFallback(EBAMRCellData& a_numerator,
573 const EBAMRCellData& a_denominator,
574 const Real a_fallback,
575 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
576
585 static void
586 divideFallback(LevelData<EBCellFAB>& a_numerator,
587 const LevelData<EBCellFAB>& a_denominator,
588 const Real a_fallback,
589 LayoutData<VoFIterator>& a_vofIter);
590
598 static void
599 divideFallback(EBAMRCellData& a_numerator,
600 const EBAMRCellData& a_denominator,
601 const EBAMRCellData& a_fallback,
602 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
603
612 static void
613 divideFallback(LevelData<EBCellFAB>& a_numerator,
614 const LevelData<EBCellFAB>& a_denominator,
615 const LevelData<EBCellFAB>& a_fallback,
616 LayoutData<VoFIterator>& a_vofIter);
617
625 static void
626 floor(EBAMRCellData& a_lhs, const Real a_value, const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
627
635 static void
636 floor(LevelData<EBCellFAB>& a_lhs, const Real a_value, LayoutData<VoFIterator>& a_vofIter);
637
644 static void
645 floor(EBAMRIVData& a_lhs, const Real a_value, const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
646
653 static void
654 floor(LevelData<BaseIVFAB<Real>>& a_lhs, const Real a_value, LayoutData<VoFIterator>& a_vofIter);
655
663 static void
664 roof(EBAMRCellData& a_lhs, const Real a_value, const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
665
673 static void
674 roof(LevelData<EBCellFAB>& a_lhs, const Real a_value, LayoutData<VoFIterator>& a_vofIter);
675
682 static void
683 roof(EBAMRIVData& a_lhs, const Real a_value, const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
684
691 static void
692 roof(LevelData<BaseIVFAB<Real>>& a_lhs, const Real a_value, LayoutData<VoFIterator>& a_vofIter);
693
701 static void
702 max(EBAMRCellData& a_data,
703 const EBAMRCellData& a_data1,
704 const EBAMRCellData& a_data2,
705 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
706
714 static void
715 max(LevelData<EBCellFAB>& a_data,
716 const LevelData<EBCellFAB>& a_data1,
717 const LevelData<EBCellFAB>& a_data2,
718 LayoutData<VoFIterator>& a_vofIter);
719
729 static void
730 getMaxMin(Real& max,
731 Real& min,
732 EBAMRCellData& a_data,
733 const int a_comp,
734 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
735
744 static void
745 getMaxMin(Real& a_max,
746 Real& a_min,
747 LevelData<EBCellFAB>& a_data,
748 const int a_comp,
749 LayoutData<VoFIterator>& a_vofIter);
750
761 static void
762 getMaxMin(Real& a_max,
763 Real& a_min,
764 EBAMRFluxData& a_data,
765 const int a_comp,
766 Vector<RefCountedPtr<LayoutData<std::array<FaceIterator, SpaceDim>>>>& a_faceIter) noexcept;
767
777 static void
778 getMaxMin(Real& a_max,
779 Real& a_min,
780 LevelData<EBFluxFAB>& a_data,
781 const int a_comp,
782 LayoutData<std::array<FaceIterator, SpaceDim>>& a_faceIter) noexcept;
783
791 static void
792 getMaxMin(Vector<Real>& a_max, Vector<Real>& a_min, Vector<EBAMRCellData>& a_data);
793
802 static void
803 getMaxMinNorm(Real& a_max,
804 Real& a_min,
805 EBAMRCellData& data,
806 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
807
815 static void
816 getMaxMinNorm(Real& a_max, Real& a_min, LevelData<EBCellFAB>& data, LayoutData<VoFIterator>& a_vofIter);
817
826 static void
827 getMaxMinNorm(Real& a_max,
828 Real& a_min,
829 EBAMRIVData& a_data,
830 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
831
839 static void
840 getMaxMinNorm(Real& a_max, Real& a_min, LevelData<BaseIVFAB<Real>>& a_data, LayoutData<VoFIterator>& a_vofIter);
841
847 static void
848 invert(EBAMRFluxData& a_data);
849
857 static void
858 invert(EBAMRFluxData& a_data, Vector<RefCountedPtr<LayoutData<std::array<FaceIterator, SpaceDim>>>>& a_faceIter);
859
867 static void
868 invert(LevelData<EBFluxFAB>& a_data, LayoutData<std::array<FaceIterator, SpaceDim>>& a_faceIter);
869
875 static void
876 invert(EBFluxFAB& a_data);
877
886 static void
887 kappaSum(Real& a_mass,
888 const LevelData<EBCellFAB>& a_lhs,
889 const LevelData<EBCellFAB>& a_regularMask,
890 const int a_comp,
891 LayoutData<VoFIterator>& a_vofIter);
892
898 static void
899 kappaScale(EBAMRCellData& a_data, const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter) noexcept;
900
906 static void
907 kappaScale(LevelData<EBCellFAB>& a_data, LayoutData<VoFIterator>& a_vofIter) noexcept;
908
917 static void
918 kappaScale(MFAMRCellData& a_data,
919 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIterPhase0,
920 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIterPhase1) noexcept;
921
930 static void
931 kappaScale(LevelData<MFCellFAB>& a_data,
932 const RefCountedPtr<LayoutData<VoFIterator>>& a_vofIterPhase0,
933 const RefCountedPtr<LayoutData<VoFIterator>>& a_vofIterPhase1) noexcept;
934
940 static void
941 volumeScale(EBAMRCellData& a_data, const Vector<Real>& a_dx);
942
949 static void
950 multiply(EBAMRCellData& a_lhs, const EBAMRCellData& a_rhs);
951
958 static void
959 multiply(LevelData<EBCellFAB>& a_lhs, const LevelData<EBCellFAB>& a_rhs);
960
967 static void
968 multiply(EBAMRFluxData& a_lhs, const EBAMRFluxData& a_rhs);
969
976 static void
977 multiply(LevelData<EBFluxFAB>& a_lhs, const LevelData<EBFluxFAB>& a_rhs);
978
986 static void
987 multiply(EBAMRIVData& a_lhs,
988 const EBAMRIVData& a_rhs,
989 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
990
998 static void
999 multiply(LevelData<BaseIVFAB<Real>>& a_lhs,
1000 const LevelData<BaseIVFAB<Real>>& a_rhs,
1001 LayoutData<VoFIterator>& a_vofIter);
1002
1009 static void
1010 multiplyScalar(EBAMRCellData& a_lhs, const EBAMRCellData& a_rhs);
1011
1018 static void
1019 multiplyScalar(LevelData<EBCellFAB>& a_lhs, const LevelData<EBCellFAB>& a_rhs);
1020
1027 static void
1028 multiplyScalar(EBAMRIVData& a_lhs,
1029 const EBAMRIVData& a_rhs,
1030 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
1031
1038 static void
1039 multiplyScalar(LevelData<BaseIVFAB<Real>>& a_lhs,
1040 const LevelData<BaseIVFAB<Real>>& a_rhs,
1041 LayoutData<VoFIterator>& a_vofIter);
1042
1053 static Real
1054 norm(const LevelData<EBCellFAB>& a_data,
1055 const LevelData<EBCellFAB>& a_regularMask,
1056 const int a_p,
1057 LayoutData<VoFIterator>& a_vofIter,
1058 const int a_comp = 0);
1059
1069 static void
1070 plus(EBAMRCellData& a_lhs, const EBAMRCellData& a_rhs, const int a_srcComp, const int a_dstComp, const int a_numComp);
1071
1081 static void
1082 plus(LevelData<EBCellFAB>& a_lhs,
1083 const LevelData<EBCellFAB>& a_rhs,
1084 const int a_srcComp,
1085 const int a_dstComp,
1086 const int a_numComp);
1087
1093 static void
1094 scale(MFAMRCellData& a_lhs, const Real& a_scale) noexcept;
1095
1101 static void
1102 scale(LevelData<MFCellFAB>& a_lhs, const Real& a_scale) noexcept;
1103
1109 static void
1110 scale(MFAMRFluxData& a_lhs, const Real& a_scale);
1111
1117 static void
1118 scale(LevelData<MFFluxFAB>& a_lhs, const Real& a_scale);
1119
1126 static void
1127 scale(EBAMRIVData& a_lhs, const Real& a_scale, const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
1128
1134 static void
1135 scale(EBAMRCellData& a_lhs, const Real a_scale) noexcept;
1136
1142 static void
1143 scale(LevelData<EBCellFAB>& a_lhs, const Real a_scale) noexcept;
1144
1150 static void
1151 scale(EBAMRFluxData& a_lhs, const Real a_scale);
1152
1158 static void
1159 scale(LevelData<EBFluxFAB>& a_lhs, const Real a_scale);
1160
1167 static void
1168 scale(LevelData<BaseIVFAB<Real>>& a_lhs, const Real& a_scale, LayoutData<VoFIterator>& a_vofIter);
1169
1177 static void
1178 setCoveredValue(EBAMRCellData& a_lhs, const EBAMRCellData& a_coveredMask, const int a_comp, const Real a_value);
1179
1187 static void
1188 setCoveredValue(LevelData<EBCellFAB>& a_lhs,
1189 const LevelData<EBCellFAB>& a_coveredMask,
1190 const int a_comp,
1191 const Real a_value);
1192
1199 static void
1200 setCoveredValue(EBAMRCellData& a_lhs, const EBAMRCellData& a_coveredMask, const Real a_value);
1201
1208 static void
1209 setCoveredValue(LevelData<EBCellFAB>& a_lhs, const LevelData<EBCellFAB>& a_coveredMask, const Real a_value);
1210
1217 static void
1218 setCoveredValue(EBAMRFluxData& a_lhs, const int a_comp, const Real a_value) noexcept;
1219
1226 static void
1227 setCoveredValue(LevelData<EBFluxFAB>& a_lhs, const int a_comp, const Real a_value) noexcept;
1228
1234 static void
1235 setCoveredValue(EBAMRFluxData& a_lhs, const Real a_value) noexcept;
1236
1242 static void
1243 setCoveredValue(LevelData<EBFluxFAB>& a_lhs, const Real a_value) noexcept;
1244
1251 static void
1252 setInvalidValue(EBAMRCellData& a_lhs, const Vector<int>& a_refRat, const Real a_value);
1253
1267 static void
1268 setValue(MFAMRCellData& a_lhs,
1269 const std::function<Real(const RealVect)>& a_function,
1270 const RealVect& a_probLo,
1271 const Vector<Real>& a_dx,
1272 const int a_comp,
1273 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIterPhase0,
1274 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIterPhase1);
1275
1289 static void
1290 setValue(LevelData<MFCellFAB>& a_lhs,
1291 const std::function<Real(const RealVect)>& a_function,
1292 const RealVect a_probLo,
1293 const Real a_dx,
1294 const int a_comp,
1295 const RefCountedPtr<LayoutData<VoFIterator>>& a_vofIterPhase0,
1296 const RefCountedPtr<LayoutData<VoFIterator>>& a_vofIterPhase1);
1297
1308 static void
1309 setValue(EBAMRCellData& a_lhs,
1310 const std::function<Real(const RealVect)>& a_function,
1311 const RealVect& a_probLo,
1312 const Vector<Real>& a_dx,
1313 const int a_comp,
1314 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
1315
1326 static void
1327 setValue(LevelData<EBCellFAB>& a_lhs,
1328 const std::function<Real(const RealVect)>& a_function,
1329 const RealVect a_probLo,
1330 const Real a_dx,
1331 const int a_comp,
1332 LayoutData<VoFIterator>& a_vofIter);
1333
1344 static void
1345 setValue(EBAMRFluxData& a_lhs,
1346 const std::function<Real(const RealVect)>& a_function,
1347 const RealVect& a_probLo,
1348 const Vector<Real>& a_dx,
1349 const int a_comp,
1350 Vector<RefCountedPtr<LayoutData<std::array<FaceIterator, SpaceDim>>>>& a_faceIter);
1351
1362 static void
1363 setValue(LevelData<EBFluxFAB>& a_lhs,
1364 const std::function<Real(const RealVect)>& a_function,
1365 const RealVect a_probLo,
1366 const Real a_dx,
1367 const int a_comp,
1368 LayoutData<std::array<FaceIterator, SpaceDim>>& a_faceIter);
1369
1380 static void
1381 setValue(EBAMRIVData& a_lhs,
1382 const std::function<Real(const RealVect)>& a_function,
1383 const RealVect& a_probLo,
1384 const Vector<Real>& a_dx,
1385 const int a_comp,
1386 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
1387
1398 static void
1399 setValue(LevelData<BaseIVFAB<Real>>& a_lhs,
1400 const std::function<Real(const RealVect)>& a_function,
1401 const RealVect a_probLo,
1402 const Real a_dx,
1403 const int a_comp,
1404 LayoutData<VoFIterator>& a_vofIter);
1405
1415 static void
1416 setValue(EBAMRCellData& a_lhs,
1417 const std::function<RealVect(const RealVect)>& a_function,
1418 const RealVect& a_probLo,
1419 const Vector<Real>& a_dx,
1420 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
1421
1431 static void
1432 setValue(LevelData<EBCellFAB>& a_lhs,
1433 const std::function<RealVect(const RealVect)>& a_function,
1434 const RealVect a_probLo,
1435 const Real a_dx,
1436 LayoutData<VoFIterator>& a_vofIter);
1437
1443 static void
1444 setValue(EBAMRCellData& a_data, const Real& a_value);
1445
1452 static void
1453 setValue(EBAMRCellData& a_lhs, const Real a_value, const int a_comp);
1454
1461 static void
1462 setValue(LevelData<EBCellFAB>& a_lhs, const Real a_value, const int a_comp);
1463
1469 static void
1470 setValue(LevelData<EBCellFAB>& a_lhs, const Real a_value);
1471
1477 static void
1478 setValue(LevelData<EBFluxFAB>& a_lhs, const Real a_value);
1479
1485 static void
1486 setValue(LevelData<BaseIVFAB<Real>>& a_lhs, const Real a_value);
1487
1493 static void
1494 setValue(EBAMRFluxData& a_data, const Real& a_value);
1495
1501 static void
1502 setValue(EBAMRIVData& a_data, const Real& a_value);
1503
1509 static void
1510 setValue(MFAMRCellData& a_lhs, const Real& a_value) noexcept;
1511
1517 static void
1518 setValue(LevelData<MFCellFAB>& a_lhs, const Real& a_value) noexcept;
1519
1525 static void
1526 setValue(MFAMRFluxData& a_lhs, const Real& a_value);
1527
1533 static void
1534 setValue(LevelData<MFFluxFAB>& a_lhs, const Real& a_value);
1535
1541 static void
1542 setValue(MFAMRIVData& a_lhs, const Real& a_value);
1543
1549 static void
1550 setValue(LevelData<MFBaseIVFAB>& a_lhs, const Real& a_value);
1551
1557 static void
1558 setValue(EBAMRIFData& a_lhs, const Real a_value);
1559
1565 static void
1566 setValue(LevelData<DomainFluxIFFAB>& a_lhs, const Real a_value);
1567
1572 static void
1573 sum(Real& a_value);
1574
1582 static void
1583 squareRoot(EBAMRFluxData& a_lhs, Vector<RefCountedPtr<LayoutData<std::array<FaceIterator, SpaceDim>>>>& a_faceIter);
1584
1592 static void
1593 squareRoot(LevelData<EBFluxFAB>& a_lhs, LayoutData<std::array<FaceIterator, SpaceDim>>& a_faceIter);
1594
1605 static void
1606 squareRoot(MFAMRCellData& a_lhs,
1607 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIterPhase0,
1608 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIterPhase1);
1609
1620 static void
1621 squareRoot(LevelData<MFCellFAB>& a_lhs,
1622 const RefCountedPtr<LayoutData<VoFIterator>>& a_vofIterPhase0,
1623 const RefCountedPtr<LayoutData<VoFIterator>>& a_vofIterPhase1);
1624
1633 static void
1634 vectorLength(EBAMRCellData& a_lhs,
1635 const EBAMRCellData& a_rhs,
1636 const EBAMRCellData& a_notCovered,
1637 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
1638
1647 static void
1648 vectorLength(LevelData<EBCellFAB>& a_lhs,
1649 const LevelData<EBCellFAB>& a_rhs,
1650 const LevelData<EBCellFAB>& a_notCovered,
1651 LayoutData<VoFIterator>& a_vofIter);
1652
1662 static void
1663 vectorLength(EBCellFAB& a_lhs,
1664 const EBCellFAB& a_rhs,
1665 const EBCellFAB& a_notCovered,
1666 const Box& box,
1667 VoFIterator& a_vofIter);
1668
1678 static void
1679 vectorLength2(EBAMRCellData& a_lhs,
1680 const EBAMRCellData& a_rhs,
1681 const EBAMRCellData& a_notCovered,
1682 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
1683
1693 static void
1694 vectorLength2(LevelData<EBCellFAB>& a_lhs,
1695 const LevelData<EBCellFAB>& a_rhs,
1696 const LevelData<EBCellFAB>& a_notCovered,
1697 LayoutData<VoFIterator>& a_vofIter);
1698
1709 static void
1710 vectorLength2(EBCellFAB& a_lhs,
1711 const EBCellFAB& a_rhs,
1712 const EBCellFAB& a_notCovered,
1713 const Box& box,
1714 VoFIterator& a_vofIter);
1715
1723 static void
1724 computeMinValidBox(RealVect& a_lo, RealVect& a_hi, const RealVect& a_normal, const RealVect& a_centroid);
1725
1733 static bool
1734 allCornersInsideEb(const Vector<RealVect>& a_corners, const RealVect& a_normal, const RealVect& a_centroid);
1735
1742 static void
1743 shiftCorners(Vector<RealVect>& a_corners, const RealVect& a_distance);
1744};
1745
1746#include <CD_NamespaceFooter.H>
1747
1748#include <CD_DataOpsImplem.H>
1749
1750#endif
Declaration of averaging methods.
Average
Various averaging methods.
Definition CD_Average.H:25
Implementation of CD_DataOps.H.
Declaration of various decoration macros.
Class for holding data across EBAMR hierarchies.
Declaration of a class that allocates irregular data holders over the interface between two phases.
Agglomeration of useful data operations.
Definition CD_DataOps.H:36
static void scale(MFAMRCellData &a_lhs, const Real &a_scale) noexcept
Scale data by factor.
Definition CD_DataOps.cpp:2503
static void floor(EBAMRCellData &a_lhs, const Real a_value, const Vector< RefCountedPtr< LayoutData< VoFIterator > > > &a_vofIter)
Floor values in data holder. This sets all values below a_value to a_value.
Definition CD_DataOps.cpp:1465
static void getMaxMin(Real &max, Real &min, EBAMRCellData &a_data, const int a_comp, const Vector< RefCountedPtr< LayoutData< VoFIterator > > > &a_vofIter)
Get maximum and minimum value of specified component.
Definition CD_DataOps.cpp:1711
static void averageFaceToCell(EBAMRCellData &a_cellData, const EBAMRFluxData &a_faceData, const Vector< ProblemDomain > &a_domains, const Vector< RefCountedPtr< LayoutData< VoFIterator > > > &a_vofIter)
Average all components of face centered data to cell centers.
Definition CD_DataOps.cpp:362
static void volumeScale(EBAMRCellData &a_data, const Vector< Real > &a_dx)
Scale data by dx^SpaceDim.
Definition CD_DataOps.cpp:2236
static void vectorLength2(EBAMRCellData &a_lhs, const EBAMRCellData &a_rhs, const EBAMRCellData &a_notCovered, const Vector< RefCountedPtr< LayoutData< VoFIterator > > > &a_vofIter)
Compute the squared vector length of a data holder. Sets a_lhs = |a_rhs|^2 where a_rhs contains Space...
Definition CD_DataOps.cpp:3594
static int sgn(const T a_value)
Sign function. Returns +/- if the value is > 0 or < 0.
Definition CD_DataOpsImplem.H:43
static void getMaxMinNorm(Real &a_max, Real &a_min, EBAMRCellData &data, const Vector< RefCountedPtr< LayoutData< VoFIterator > > > &a_vofIter)
Get maximum and minimum value of normed data.
Definition CD_DataOps.cpp:1879
static void filterSmooth(EBAMRCellData &a_data, const Real a_alpha, const int a_stride, const bool a_zeroEB) noexcept
Apply a convolved filter phi = alpha * phi_i + 0.5*(1-alpha) * [phi_(i+s) + phi_(i-s)] in each direct...
Definition CD_DataOps.cpp:679
static void divide(EBAMRCellData &a_lhs, const EBAMRCellData &a_rhs, const int a_lhsComp, const int a_rhsComp)
Divide one data holder by another. Does specified components.
Definition CD_DataOps.cpp:1243
static void roof(EBAMRCellData &a_lhs, const Real a_value, const Vector< RefCountedPtr< LayoutData< VoFIterator > > > &a_vofIter)
Roof values in data holder. This sets all values above a_value to a_value.
Definition CD_DataOps.cpp:1556
static void setInvalidValue(EBAMRCellData &a_lhs, const Vector< int > &a_refRat, const Real a_value)
Set value in cells that are covered by a finer grid.
Definition CD_DataOps.cpp:2771
static void shiftCorners(Vector< RealVect > &a_corners, const RealVect &a_distance)
Shift points by a specified distance.
Definition CD_DataOps.cpp:3771
static void divideByScalar(EBAMRCellData &a_lhs, const EBAMRCellData &a_rhs)
Divide all components in a data holder by a scalar value.
Definition CD_DataOps.cpp:1279
static void multiply(EBAMRCellData &a_lhs, const EBAMRCellData &a_rhs)
Multiply data holder by another data holder.
Definition CD_DataOps.cpp:2246
static void invert(EBAMRFluxData &a_data)
Invert data.
static void computeMinValidBox(RealVect &a_lo, RealVect &a_hi, const RealVect &a_normal, const RealVect &a_centroid)
Compute the tightest possible valid box around a cut-cell volume.
Definition CD_DataOps.cpp:3687
static void invert(EBFluxFAB &a_data)
Invert data.
static void sum(Real &a_value)
Compute the sum of the input value.
Definition CD_DataOps.cpp:3367
static void vectorLength(EBAMRCellData &a_lhs, const EBAMRCellData &a_rhs, const EBAMRCellData &a_notCovered, const Vector< RefCountedPtr< LayoutData< VoFIterator > > > &a_vofIter)
Compute the vector length of a data holder. Sets a_lhs = |a_rhs| where a_rhs contains SpaceDim compon...
Definition CD_DataOps.cpp:3500
static void incr(MFAMRCellData &a_lhs, const MFAMRCellData &a_rhs, const Real a_scale) noexcept
Function which increments data in the form a_lhs = a_lhs + a_rhs*a_scale for all components.
Definition CD_DataOps.cpp:820
static Real norm(const LevelData< EBCellFAB > &a_data, const LevelData< EBCellFAB > &a_regularMask, const int a_p, LayoutData< VoFIterator > &a_vofIter, const int a_comp=0)
Compute specified norm of data.
Definition CD_DataOps.cpp:2418
static void kappaScale(EBAMRCellData &a_data, const Vector< RefCountedPtr< LayoutData< VoFIterator > > > &a_vofIter) noexcept
Scale data by volume fraction.
Definition CD_DataOps.cpp:2142
static void setValue(LevelData< MFInterfaceFAB< T > > &a_lhs, const T &a_value)
Set value in an MFInterfaceFAB data holder.
Definition CD_DataOpsImplem.H:24
static bool allCornersInsideEb(const Vector< RealVect > &a_corners, const RealVect &a_normal, const RealVect &a_centroid)
Check if all corners/points are inside an EB.
Definition CD_DataOps.cpp:3754
static void divideFallback(EBAMRCellData &a_numerator, const EBAMRCellData &a_denominator, const Real a_fallback, const Vector< RefCountedPtr< LayoutData< VoFIterator > > > &a_vofIter)
Divide data. If the denominator is zero, set the value to a fallback option.
Definition CD_DataOps.cpp:1387
static void dotProduct(MFAMRCellData &a_result, const MFAMRCellData &a_data1, const MFAMRCellData &a_data2)
Compote the cell-wise dot product between two data holders.
Definition CD_DataOps.cpp:537
static void squareRoot(EBAMRFluxData &a_lhs, Vector< RefCountedPtr< LayoutData< std::array< FaceIterator, SpaceDim > > > > &a_faceIter)
Compute the square root of the input data.
Definition CD_DataOps.cpp:3384
static void setCoveredValue(EBAMRCellData &a_lhs, const EBAMRCellData &a_coveredMask, const int a_comp, const Real a_value)
Set value in covered cells. Does specified component.
Definition CD_DataOps.cpp:2655
static void max(EBAMRCellData &a_data, const EBAMRCellData &a_data1, const EBAMRCellData &a_data2, const Vector< RefCountedPtr< LayoutData< VoFIterator > > > &a_vofIter)
Make a_data = max(a_data1, a_data2).
Definition CD_DataOps.cpp:1645
static void kappaSum(Real &a_mass, const LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_regularMask, const int a_comp, LayoutData< VoFIterator > &a_vofIter)
Compute the kappa-weighted sum of the input data. Assumes one component.
Definition CD_DataOps.cpp:2087
static void compute(EBAMRCellData &a_data, const std::function< Real(const Real a_cellValue)> &a_func, const Vector< RefCountedPtr< LayoutData< VoFIterator > > > &a_vofIter) noexcept
Compute a new value given the old cell value.
Definition CD_DataOps.cpp:482
static void plus(EBAMRCellData &a_lhs, const EBAMRCellData &a_rhs, const int a_srcComp, const int a_dstComp, const int a_numComp)
General addition operator for adding together data. The user can choose which components to add.
Definition CD_DataOps.cpp:885
static void copy(MFAMRCellData &a_dst, const MFAMRCellData &a_src)
Copy data from one data holder to another.
Definition CD_DataOps.cpp:1201
static void averageCellVelocityToFaceVelocity(EBAMRFluxData &a_faceData, const EBAMRCellData &a_cellData, const Vector< ProblemDomain > &a_domains, const int a_tanGhosts, Vector< RefCountedPtr< LayoutData< std::array< FaceIterator, SpaceDim > > > > &a_faceIter)
Routine which computes the average of a cell-centered quantity on faces for the normal component only...
Definition CD_DataOps.cpp:28
static void averageCellToFace(EBAMRFluxData &a_faceData, const EBAMRCellData &a_cellData, const Vector< ProblemDomain > &a_domains, Vector< RefCountedPtr< LayoutData< std::array< FaceIterator, SpaceDim > > > > &a_faceIter)
Average all components of the cell-centered data to faces (arithmetic, no tangential ghost faces).
Definition CD_DataOps.cpp:148
static void multiplyScalar(EBAMRCellData &a_lhs, const EBAMRCellData &a_rhs)
Multiply data holder by another data holder.
Definition CD_DataOps.cpp:2341
static void axby(LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_x, const LevelData< EBCellFAB > &a_y, const Real a_a, const Real a_b) noexcept
Compute lhs = a * x + b * y.
Definition CD_DataOps.cpp:462
Default class for holding LevelData<T> data across an EBAMR realm.
Definition CD_EBAMRData.H:41
Class for holding BaseIVFAB<T> on the interface between two phases.
Definition CD_MFInterfaceFAB.H:31