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
297 static void
298 filterSmooth(EBAMRCellData& a_data, const Real a_alpha, const int a_stride, const bool a_zeroEB) noexcept;
299
315 static void
316 filterSmooth(LevelData<EBCellFAB>& a_data, const Real a_alpha, const int a_stride, const bool a_zeroEB) noexcept;
317
324 static void
325 incr(MFAMRCellData& a_lhs, const MFAMRCellData& a_rhs, const Real a_scale) noexcept;
326
333 static void
334 incr(LevelData<MFCellFAB>& a_lhs, const LevelData<MFCellFAB>& a_rhs, const Real a_scale) noexcept;
335
342 static void
343 incr(EBAMRCellData& a_lhs, const EBAMRCellData& a_rhs, const Real& a_scale) noexcept;
344
351 static void
352 incr(LevelData<EBCellFAB>& a_lhs, const LevelData<EBCellFAB>& a_rhs, const Real& a_scale) noexcept;
353
360 static void
361 incr(EBAMRFluxData& a_lhs, const EBAMRFluxData& a_rhs, const Real& a_scale);
362
369 static void
370 incr(LevelData<EBFluxFAB>& a_lhs, const LevelData<EBFluxFAB>& a_rhs, const Real& a_scale);
371
378 static void
379 incr(EBFluxFAB& a_lhs, const EBFluxFAB& a_rhs, const Real& a_scale);
380
388 static void
389 incr(EBAMRIVData& a_lhs, const EBAMRIVData& a_rhs, const Real& a_scale);
390
398 static void
399 incr(LevelData<BaseIVFAB<Real>>& a_lhs, const LevelData<BaseIVFAB<Real>>& a_rhs, const Real& a_scale);
400
408 static void
409 incr(EBAMRIVData& a_lhs,
410 const EBAMRIVData& a_rhs,
411 const Real& a_scale,
412 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
413
421 static void
422 incr(LevelData<BaseIVFAB<Real>>& a_lhs,
423 const LevelData<BaseIVFAB<Real>>& a_rhs,
424 const Real& a_scale,
425 LayoutData<VoFIterator>& a_vofIter);
426
433 static void
434 incr(EBAMRIFData& a_lhs, const EBAMRIFData& a_rhs, const Real& a_scale);
435
442 static void
443 incr(LevelData<DomainFluxIFFAB>& a_lhs, const LevelData<DomainFluxIFFAB>& a_rhs, const Real& a_scale);
444
453 static void
454 incr(EBAMRCellData& a_lhs,
455 const EBAMRIVData& a_rhs,
456 const Real a_scale,
457 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
458
467 static void
468 incr(LevelData<EBCellFAB>& a_lhs,
469 const LevelData<BaseIVFAB<Real>>& a_rhs,
470 const Real a_scale,
471 LayoutData<VoFIterator>& a_vofIter);
472
481 static void
482 incr(EBAMRIVData& a_lhs,
483 const EBAMRCellData& a_rhs,
484 const Real a_scale,
485 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
486
495 static void
496 incr(LevelData<BaseIVFAB<Real>>& a_lhs,
497 const LevelData<EBCellFAB>& a_rhs,
498 const Real a_scale,
499 LayoutData<VoFIterator>& a_vofIter);
500
506 static void
507 copy(MFAMRCellData& a_dst, const MFAMRCellData& a_src);
508
514 static void
515 copy(EBAMRCellData& a_dst, const EBAMRCellData& a_src);
516
522 static void
523 copy(EBAMRIVData& a_dst, const EBAMRIVData& a_src);
524
532 template <typename T>
533 static void
534 copy(EBAMRData<T>& a_dst, const EBAMRData<T>& a_src, const Interval a_dstInterv, const Interval a_srcInterv);
535
543 static void
544 divide(EBAMRCellData& a_lhs, const EBAMRCellData& a_rhs, const int a_lhsComp, const int a_rhsComp);
545
553 static void
554 divide(LevelData<EBCellFAB>& a_lhs, const LevelData<EBCellFAB>& a_rhs, const int a_lhsComp, const int a_rhsComp);
555
561 static void
562 divideByScalar(EBAMRCellData& a_lhs, const EBAMRCellData& a_rhs);
563
569 static void
570 divideByScalar(LevelData<EBCellFAB>& a_lhs, const LevelData<EBCellFAB>& a_rhs);
571
579 static void
580 divideFallback(EBAMRCellData& a_numerator,
581 const EBAMRCellData& a_denominator,
582 const Real a_fallback,
583 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
584
593 static void
594 divideFallback(LevelData<EBCellFAB>& a_numerator,
595 const LevelData<EBCellFAB>& a_denominator,
596 const Real a_fallback,
597 LayoutData<VoFIterator>& a_vofIter);
598
606 static void
607 divideFallback(EBAMRCellData& a_numerator,
608 const EBAMRCellData& a_denominator,
609 const EBAMRCellData& a_fallback,
610 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
611
620 static void
621 divideFallback(LevelData<EBCellFAB>& a_numerator,
622 const LevelData<EBCellFAB>& a_denominator,
623 const LevelData<EBCellFAB>& a_fallback,
624 LayoutData<VoFIterator>& a_vofIter);
625
633 static void
634 floor(EBAMRCellData& a_lhs, const Real a_value, const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
635
643 static void
644 floor(LevelData<EBCellFAB>& a_lhs, const Real a_value, LayoutData<VoFIterator>& a_vofIter);
645
652 static void
653 floor(EBAMRIVData& a_lhs, const Real a_value, const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
654
661 static void
662 floor(LevelData<BaseIVFAB<Real>>& a_lhs, const Real a_value, LayoutData<VoFIterator>& a_vofIter);
663
671 static void
672 roof(EBAMRCellData& a_lhs, const Real a_value, const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
673
681 static void
682 roof(LevelData<EBCellFAB>& a_lhs, const Real a_value, LayoutData<VoFIterator>& a_vofIter);
683
690 static void
691 roof(EBAMRIVData& a_lhs, const Real a_value, const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
692
699 static void
700 roof(LevelData<BaseIVFAB<Real>>& a_lhs, const Real a_value, LayoutData<VoFIterator>& a_vofIter);
701
709 static void
710 max(EBAMRCellData& a_data,
711 const EBAMRCellData& a_data1,
712 const EBAMRCellData& a_data2,
713 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
714
722 static void
723 max(LevelData<EBCellFAB>& a_data,
724 const LevelData<EBCellFAB>& a_data1,
725 const LevelData<EBCellFAB>& a_data2,
726 LayoutData<VoFIterator>& a_vofIter);
727
737 static void
738 getMaxMin(Real& max,
739 Real& min,
740 EBAMRCellData& a_data,
741 const int a_comp,
742 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
743
752 static void
753 getMaxMin(Real& a_max,
754 Real& a_min,
755 LevelData<EBCellFAB>& a_data,
756 const int a_comp,
757 LayoutData<VoFIterator>& a_vofIter);
758
769 static void
770 getMaxMin(Real& a_max,
771 Real& a_min,
772 EBAMRFluxData& a_data,
773 const int a_comp,
774 Vector<RefCountedPtr<LayoutData<std::array<FaceIterator, SpaceDim>>>>& a_faceIter) noexcept;
775
785 static void
786 getMaxMin(Real& a_max,
787 Real& a_min,
788 LevelData<EBFluxFAB>& a_data,
789 const int a_comp,
790 LayoutData<std::array<FaceIterator, SpaceDim>>& a_faceIter) noexcept;
791
799 static void
800 getMaxMin(Vector<Real>& a_max, Vector<Real>& a_min, Vector<EBAMRCellData>& a_data);
801
810 static void
811 getMaxMinNorm(Real& a_max,
812 Real& a_min,
813 EBAMRCellData& data,
814 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
815
823 static void
824 getMaxMinNorm(Real& a_max, Real& a_min, LevelData<EBCellFAB>& data, LayoutData<VoFIterator>& a_vofIter);
825
834 static void
835 getMaxMinNorm(Real& a_max,
836 Real& a_min,
837 EBAMRIVData& a_data,
838 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
839
847 static void
848 getMaxMinNorm(Real& a_max, Real& a_min, LevelData<BaseIVFAB<Real>>& a_data, LayoutData<VoFIterator>& a_vofIter);
849
855 static void
856 invert(EBAMRFluxData& a_data);
857
865 static void
866 invert(EBAMRFluxData& a_data, Vector<RefCountedPtr<LayoutData<std::array<FaceIterator, SpaceDim>>>>& a_faceIter);
867
875 static void
876 invert(LevelData<EBFluxFAB>& a_data, LayoutData<std::array<FaceIterator, SpaceDim>>& a_faceIter);
877
883 static void
884 invert(EBFluxFAB& a_data);
885
894 static void
895 kappaSum(Real& a_mass,
896 const LevelData<EBCellFAB>& a_lhs,
897 const LevelData<EBCellFAB>& a_regularMask,
898 const int a_comp,
899 LayoutData<VoFIterator>& a_vofIter);
900
906 static void
907 kappaScale(EBAMRCellData& a_data, const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter) noexcept;
908
914 static void
915 kappaScale(LevelData<EBCellFAB>& a_data, LayoutData<VoFIterator>& a_vofIter) noexcept;
916
925 static void
926 kappaScale(MFAMRCellData& a_data,
927 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIterPhase0,
928 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIterPhase1) noexcept;
929
938 static void
939 kappaScale(LevelData<MFCellFAB>& a_data,
940 const RefCountedPtr<LayoutData<VoFIterator>>& a_vofIterPhase0,
941 const RefCountedPtr<LayoutData<VoFIterator>>& a_vofIterPhase1) noexcept;
942
948 static void
949 volumeScale(EBAMRCellData& a_data, const Vector<Real>& a_dx);
950
957 static void
958 multiply(EBAMRCellData& a_lhs, const EBAMRCellData& a_rhs);
959
966 static void
967 multiply(LevelData<EBCellFAB>& a_lhs, const LevelData<EBCellFAB>& a_rhs);
968
975 static void
976 multiply(EBAMRFluxData& a_lhs, const EBAMRFluxData& a_rhs);
977
984 static void
985 multiply(LevelData<EBFluxFAB>& a_lhs, const LevelData<EBFluxFAB>& a_rhs);
986
994 static void
995 multiply(EBAMRIVData& a_lhs,
996 const EBAMRIVData& a_rhs,
997 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
998
1006 static void
1007 multiply(LevelData<BaseIVFAB<Real>>& a_lhs,
1008 const LevelData<BaseIVFAB<Real>>& a_rhs,
1009 LayoutData<VoFIterator>& a_vofIter);
1010
1017 static void
1018 multiplyScalar(EBAMRCellData& a_lhs, const EBAMRCellData& a_rhs);
1019
1026 static void
1027 multiplyScalar(LevelData<EBCellFAB>& a_lhs, const LevelData<EBCellFAB>& a_rhs);
1028
1035 static void
1036 multiplyScalar(EBAMRIVData& a_lhs,
1037 const EBAMRIVData& a_rhs,
1038 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
1039
1046 static void
1047 multiplyScalar(LevelData<BaseIVFAB<Real>>& a_lhs,
1048 const LevelData<BaseIVFAB<Real>>& a_rhs,
1049 LayoutData<VoFIterator>& a_vofIter);
1050
1061 static Real
1062 norm(const LevelData<EBCellFAB>& a_data,
1063 const LevelData<EBCellFAB>& a_regularMask,
1064 const int a_p,
1065 LayoutData<VoFIterator>& a_vofIter,
1066 const int a_comp = 0);
1067
1077 static void
1078 plus(EBAMRCellData& a_lhs, const EBAMRCellData& a_rhs, const int a_srcComp, const int a_dstComp, const int a_numComp);
1079
1089 static void
1090 plus(LevelData<EBCellFAB>& a_lhs,
1091 const LevelData<EBCellFAB>& a_rhs,
1092 const int a_srcComp,
1093 const int a_dstComp,
1094 const int a_numComp);
1095
1101 static void
1102 scale(MFAMRCellData& a_lhs, const Real& a_scale) noexcept;
1103
1109 static void
1110 scale(LevelData<MFCellFAB>& a_lhs, const Real& a_scale) noexcept;
1111
1117 static void
1118 scale(MFAMRFluxData& a_lhs, const Real& a_scale);
1119
1125 static void
1126 scale(LevelData<MFFluxFAB>& a_lhs, const Real& a_scale);
1127
1134 static void
1135 scale(EBAMRIVData& a_lhs, const Real& a_scale, const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
1136
1142 static void
1143 scale(EBAMRCellData& a_lhs, const Real a_scale) noexcept;
1144
1150 static void
1151 scale(LevelData<EBCellFAB>& a_lhs, const Real a_scale) noexcept;
1152
1158 static void
1159 scale(EBAMRFluxData& a_lhs, const Real a_scale);
1160
1166 static void
1167 scale(LevelData<EBFluxFAB>& a_lhs, const Real a_scale);
1168
1175 static void
1176 scale(LevelData<BaseIVFAB<Real>>& a_lhs, const Real& a_scale, LayoutData<VoFIterator>& a_vofIter);
1177
1185 static void
1186 setCoveredValue(EBAMRCellData& a_lhs, const EBAMRCellData& a_coveredMask, const int a_comp, const Real a_value);
1187
1195 static void
1196 setCoveredValue(LevelData<EBCellFAB>& a_lhs,
1197 const LevelData<EBCellFAB>& a_coveredMask,
1198 const int a_comp,
1199 const Real a_value);
1200
1207 static void
1208 setCoveredValue(EBAMRCellData& a_lhs, const EBAMRCellData& a_coveredMask, const Real a_value);
1209
1216 static void
1217 setCoveredValue(LevelData<EBCellFAB>& a_lhs, const LevelData<EBCellFAB>& a_coveredMask, const Real a_value);
1218
1225 static void
1226 setCoveredValue(EBAMRFluxData& a_lhs, const int a_comp, const Real a_value) noexcept;
1227
1234 static void
1235 setCoveredValue(LevelData<EBFluxFAB>& a_lhs, const int a_comp, const Real a_value) noexcept;
1236
1242 static void
1243 setCoveredValue(EBAMRFluxData& a_lhs, const Real a_value) noexcept;
1244
1250 static void
1251 setCoveredValue(LevelData<EBFluxFAB>& a_lhs, const Real a_value) noexcept;
1252
1259 static void
1260 setInvalidValue(EBAMRCellData& a_lhs, const Vector<int>& a_refRat, const Real a_value);
1261
1275 static void
1276 setValue(MFAMRCellData& a_lhs,
1277 const std::function<Real(const RealVect)>& a_function,
1278 const RealVect& a_probLo,
1279 const Vector<Real>& a_dx,
1280 const int a_comp,
1281 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIterPhase0,
1282 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIterPhase1);
1283
1297 static void
1298 setValue(LevelData<MFCellFAB>& a_lhs,
1299 const std::function<Real(const RealVect)>& a_function,
1300 const RealVect a_probLo,
1301 const Real a_dx,
1302 const int a_comp,
1303 const RefCountedPtr<LayoutData<VoFIterator>>& a_vofIterPhase0,
1304 const RefCountedPtr<LayoutData<VoFIterator>>& a_vofIterPhase1);
1305
1316 static void
1317 setValue(EBAMRCellData& a_lhs,
1318 const std::function<Real(const RealVect)>& a_function,
1319 const RealVect& a_probLo,
1320 const Vector<Real>& a_dx,
1321 const int a_comp,
1322 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
1323
1334 static void
1335 setValue(LevelData<EBCellFAB>& a_lhs,
1336 const std::function<Real(const RealVect)>& a_function,
1337 const RealVect a_probLo,
1338 const Real a_dx,
1339 const int a_comp,
1340 LayoutData<VoFIterator>& a_vofIter);
1341
1352 static void
1353 setValue(EBAMRFluxData& a_lhs,
1354 const std::function<Real(const RealVect)>& a_function,
1355 const RealVect& a_probLo,
1356 const Vector<Real>& a_dx,
1357 const int a_comp,
1358 Vector<RefCountedPtr<LayoutData<std::array<FaceIterator, SpaceDim>>>>& a_faceIter);
1359
1370 static void
1371 setValue(LevelData<EBFluxFAB>& a_lhs,
1372 const std::function<Real(const RealVect)>& a_function,
1373 const RealVect a_probLo,
1374 const Real a_dx,
1375 const int a_comp,
1376 LayoutData<std::array<FaceIterator, SpaceDim>>& a_faceIter);
1377
1388 static void
1389 setValue(EBAMRIVData& a_lhs,
1390 const std::function<Real(const RealVect)>& a_function,
1391 const RealVect& a_probLo,
1392 const Vector<Real>& a_dx,
1393 const int a_comp,
1394 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
1395
1406 static void
1407 setValue(LevelData<BaseIVFAB<Real>>& a_lhs,
1408 const std::function<Real(const RealVect)>& a_function,
1409 const RealVect a_probLo,
1410 const Real a_dx,
1411 const int a_comp,
1412 LayoutData<VoFIterator>& a_vofIter);
1413
1423 static void
1424 setValue(EBAMRCellData& a_lhs,
1425 const std::function<RealVect(const RealVect)>& a_function,
1426 const RealVect& a_probLo,
1427 const Vector<Real>& a_dx,
1428 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
1429
1439 static void
1440 setValue(LevelData<EBCellFAB>& a_lhs,
1441 const std::function<RealVect(const RealVect)>& a_function,
1442 const RealVect a_probLo,
1443 const Real a_dx,
1444 LayoutData<VoFIterator>& a_vofIter);
1445
1451 static void
1452 setValue(EBAMRCellData& a_data, const Real& a_value);
1453
1460 static void
1461 setValue(EBAMRCellData& a_lhs, const Real a_value, const int a_comp);
1462
1469 static void
1470 setValue(LevelData<EBCellFAB>& a_lhs, const Real a_value, const int a_comp);
1471
1477 static void
1478 setValue(LevelData<EBCellFAB>& a_lhs, const Real a_value);
1479
1485 static void
1486 setValue(LevelData<EBFluxFAB>& a_lhs, const Real a_value);
1487
1493 static void
1494 setValue(LevelData<BaseIVFAB<Real>>& a_lhs, const Real a_value);
1495
1501 static void
1502 setValue(EBAMRFluxData& a_data, const Real& a_value);
1503
1509 static void
1510 setValue(EBAMRIVData& a_data, const Real& a_value);
1511
1517 static void
1518 setValue(MFAMRCellData& a_lhs, const Real& a_value) noexcept;
1519
1525 static void
1526 setValue(LevelData<MFCellFAB>& a_lhs, const Real& a_value) noexcept;
1527
1533 static void
1534 setValue(MFAMRFluxData& a_lhs, const Real& a_value);
1535
1541 static void
1542 setValue(LevelData<MFFluxFAB>& a_lhs, const Real& a_value);
1543
1549 static void
1550 setValue(MFAMRIVData& a_lhs, const Real& a_value);
1551
1557 static void
1558 setValue(LevelData<MFBaseIVFAB>& a_lhs, const Real& a_value);
1559
1565 static void
1566 setValue(EBAMRIFData& a_lhs, const Real a_value);
1567
1573 static void
1574 setValue(LevelData<DomainFluxIFFAB>& a_lhs, const Real a_value);
1575
1580 static void
1581 sum(Real& a_value);
1582
1590 static void
1591 squareRoot(EBAMRFluxData& a_lhs, Vector<RefCountedPtr<LayoutData<std::array<FaceIterator, SpaceDim>>>>& a_faceIter);
1592
1600 static void
1601 squareRoot(LevelData<EBFluxFAB>& a_lhs, LayoutData<std::array<FaceIterator, SpaceDim>>& a_faceIter);
1602
1613 static void
1614 squareRoot(MFAMRCellData& a_lhs,
1615 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIterPhase0,
1616 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIterPhase1);
1617
1628 static void
1629 squareRoot(LevelData<MFCellFAB>& a_lhs,
1630 const RefCountedPtr<LayoutData<VoFIterator>>& a_vofIterPhase0,
1631 const RefCountedPtr<LayoutData<VoFIterator>>& a_vofIterPhase1);
1632
1641 static void
1642 vectorLength(EBAMRCellData& a_lhs,
1643 const EBAMRCellData& a_rhs,
1644 const EBAMRCellData& a_notCovered,
1645 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
1646
1655 static void
1656 vectorLength(LevelData<EBCellFAB>& a_lhs,
1657 const LevelData<EBCellFAB>& a_rhs,
1658 const LevelData<EBCellFAB>& a_notCovered,
1659 LayoutData<VoFIterator>& a_vofIter);
1660
1670 static void
1671 vectorLength(EBCellFAB& a_lhs,
1672 const EBCellFAB& a_rhs,
1673 const EBCellFAB& a_notCovered,
1674 const Box& box,
1675 VoFIterator& a_vofIter);
1676
1686 static void
1687 vectorLength2(EBAMRCellData& a_lhs,
1688 const EBAMRCellData& a_rhs,
1689 const EBAMRCellData& a_notCovered,
1690 const Vector<RefCountedPtr<LayoutData<VoFIterator>>>& a_vofIter);
1691
1701 static void
1702 vectorLength2(LevelData<EBCellFAB>& a_lhs,
1703 const LevelData<EBCellFAB>& a_rhs,
1704 const LevelData<EBCellFAB>& a_notCovered,
1705 LayoutData<VoFIterator>& a_vofIter);
1706
1717 static void
1718 vectorLength2(EBCellFAB& a_lhs,
1719 const EBCellFAB& a_rhs,
1720 const EBCellFAB& a_notCovered,
1721 const Box& box,
1722 VoFIterator& a_vofIter);
1723
1731 static void
1732 computeMinValidBox(RealVect& a_lo, RealVect& a_hi, const RealVect& a_normal, const RealVect& a_centroid);
1733
1741 static bool
1742 allCornersInsideEb(const Vector<RealVect>& a_corners, const RealVect& a_normal, const RealVect& a_centroid);
1743
1750 static void
1751 shiftCorners(Vector<RealVect>& a_corners, const RealVect& a_distance);
1752};
1753
1754#include <CD_NamespaceFooter.H>
1755
1756#include <CD_DataOpsImplem.H>
1757
1758#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:2564
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:1526
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:1772
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:363
static void volumeScale(EBAMRCellData &a_data, const Vector< Real > &a_dx)
Scale data by dx^SpaceDim.
Definition CD_DataOps.cpp:2297
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:3655
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:1940
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:680
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:1304
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:1617
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:2832
static void shiftCorners(Vector< RealVect > &a_corners, const RealVect &a_distance)
Shift points by a specified distance.
Definition CD_DataOps.cpp:3832
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:1340
static void multiply(EBAMRCellData &a_lhs, const EBAMRCellData &a_rhs)
Multiply data holder by another data holder.
Definition CD_DataOps.cpp:2307
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:3748
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:3428
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:3561
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:881
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:2479
static void kappaScale(EBAMRCellData &a_data, const Vector< RefCountedPtr< LayoutData< VoFIterator > > > &a_vofIter) noexcept
Scale data by volume fraction.
Definition CD_DataOps.cpp:2203
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:3815
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:1448
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:538
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:3445
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:2716
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:1706
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:2148
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:483
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:946
static void copy(MFAMRCellData &a_dst, const MFAMRCellData &a_src)
Copy data from one data holder to another.
Definition CD_DataOps.cpp:1262
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:29
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:149
static void multiplyScalar(EBAMRCellData &a_lhs, const EBAMRCellData &a_rhs)
Multiply data holder by another data holder.
Definition CD_DataOps.cpp:2402
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:463
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