@@ -18,24 +18,35 @@ namespace amrex
18
18
void average_node_to_cellcenter (MultiFab& cc, int dcomp,
19
19
const MultiFab& nd, int scomp,
20
20
int ncomp, int ngrow = 0 );
21
+ void average_node_to_cellcenter (MultiFab& cc, int dcomp,
22
+ const MultiFab& nd, int scomp,
23
+ int ncomp, IntVect const & ng_vect);
21
24
22
25
/* *
23
26
* \brief Average edge-based MultiFab onto cell-centered MultiFab.
24
27
*
25
- * This fills in \p ngrow ghost cells in the cell-centered MultiFab. Both cell centered and
26
- * edge centered MultiFabs need to have \p ngrow ghost values.
28
+ * This fills in \p ngrow ghost cells in the cell-centered MultiFab. Both cell- centered and
29
+ * edge- centered MultiFabs need to have \p ngrow ghost values.
27
30
*/
28
31
void average_edge_to_cellcenter (MultiFab& cc, int dcomp,
29
32
const Vector<const MultiFab*>& edge,
30
33
int ngrow = 0 );
31
- // ! Average face-based MultiFab onto cell-centered MultiFab.
34
+ void average_edge_to_cellcenter (MultiFab& cc, int dcomp,
35
+ const Vector<const MultiFab*>& edge,
36
+ IntVect const & ng_vect);
37
+
38
+ /* *
39
+ * \brief Average face-based MultiFab onto cell-centered MultiFab.
40
+ *
41
+ * This fills in \p ngrow ghost cells in the cell-centered MultiFab. Both cell-centered and
42
+ * face-centered MultiFabs need to have \p ngrow ghost values.
43
+ */
32
44
void average_face_to_cellcenter (MultiFab& cc, int dcomp,
33
45
const Vector<const MultiFab*>& fc,
34
46
int ngrow = 0 );
35
- // ! Average face-based MultiFab onto cell-centered MultiFab.
36
47
void average_face_to_cellcenter (MultiFab& cc, int dcomp,
37
48
const Vector<const MultiFab*>& fc,
38
- IntVect ngrow = IntVect::TheZeroVector() );
49
+ IntVect const & ng_vect );
39
50
40
51
// ! Average face-based FabArray onto cell-centered FabArray.
41
52
template <typename CMF, typename FMF,
@@ -44,6 +55,12 @@ namespace amrex
44
55
const Array<const FMF*,AMREX_SPACEDIM>& fc,
45
56
int ngrow = 0 );
46
57
58
+ template <typename CMF, typename FMF,
59
+ std::enable_if_t <IsFabArray_v<CMF> && IsFabArray_v<FMF>, int > = 0 >
60
+ void average_face_to_cellcenter (CMF& cc, int dcomp,
61
+ const Array<const FMF*,AMREX_SPACEDIM>& fc,
62
+ IntVect const & ngrow);
63
+
47
64
// ! Average face-based MultiFab onto cell-centered MultiFab with geometric weighting.
48
65
void average_face_to_cellcenter (MultiFab& cc,
49
66
const Vector<const MultiFab*>& fc,
@@ -894,7 +911,7 @@ NormHelper (const MMF& mask,
894
911
}
895
912
896
913
template <typename CMF, typename FMF,
897
- std::enable_if_t <IsFabArray_v<CMF> && IsFabArray_v<FMF>, IntVect > FOO>
914
+ std::enable_if_t <IsFabArray_v<CMF> && IsFabArray_v<FMF>, int > FOO>
898
915
void average_face_to_cellcenter (CMF& cc, int dcomp,
899
916
const Array<const FMF*,AMREX_SPACEDIM>& fc,
900
917
int ngrow)
@@ -907,7 +924,7 @@ template <typename CMF, typename FMF,
907
924
std::enable_if_t <IsFabArray_v<CMF> && IsFabArray_v<FMF>, int > FOO>
908
925
void average_face_to_cellcenter (CMF& cc, int dcomp,
909
926
const Array<const FMF*,AMREX_SPACEDIM>& fc,
910
- IntVect ngrow )
927
+ IntVect const & ng_vect )
911
928
{
912
929
AMREX_ASSERT (cc.nComp () >= dcomp + AMREX_SPACEDIM);
913
930
AMREX_ASSERT (fc[0 ]->nComp () == 1 );
@@ -918,7 +935,7 @@ void average_face_to_cellcenter (CMF& cc, int dcomp,
918
935
AMREX_D_TERM (auto const & fxma = fc[0 ]->const_arrays ();,
919
936
auto const & fyma = fc[1 ]->const_arrays ();,
920
937
auto const & fzma = fc[2 ]->const_arrays (););
921
- ParallelFor (cc, ngrow ,
938
+ ParallelFor (cc, ng_vect ,
922
939
[=] AMREX_GPU_DEVICE (int box_no, int i, int j, int k) noexcept
923
940
{
924
941
#if (AMREX_SPACEDIM == 1)
@@ -945,7 +962,7 @@ void average_face_to_cellcenter (CMF& cc, int dcomp,
945
962
#endif
946
963
for (MFIter mfi (cc,TilingIfNotGPU ()); mfi.isValid (); ++mfi)
947
964
{
948
- const Box bx = mfi.growntilebox (ngrow );
965
+ const Box bx = mfi.growntilebox (ng_vect );
949
966
auto const & ccarr = cc.array (mfi);
950
967
AMREX_D_TERM (auto const & fxarr = fc[0 ]->const_array (mfi);,
951
968
auto const & fyarr = fc[1 ]->const_array (mfi);,
0 commit comments