121 BL_PROFILE(
"ERF::WriteBndryPlanes::write_planes");
128 const std::string chkname =
129 m_filename + Concatenate(
"/bndry_output", t_step);
133 const std::string level_prefix =
"Level_";
134 PreBuildDirectorHierarchy(chkname, level_prefix, 1,
true);
139 DistributionMapping dm{ba};
142 Box target_box_shifted(IntVect(0,0,0),new_hi);
143 BoxArray ba_shifted(target_box_shifted);
148 std::string filename = MultiFabFileFullPrefix(
bndry_lev, chkname, level_prefix, var_name);
151 if (var_name ==
"velocity") {
152 ncomp = AMREX_SPACEDIM;
161 if (var_name ==
"density")
165 }
else if (var_name ==
"temperature") {
167 MultiFab Temp(S.boxArray(),S.DistributionMap(),ncomp,0);
168 for (MFIter mfi(Temp, TilingIfNotGPU()); mfi.isValid(); ++mfi)
170 const Box& bx = mfi.tilebox();
173 bndry.copyFrom(Temp, nghost, 0, 0, ncomp,
m_geom[
bndry_lev].periodicity());
174 }
else if (var_name ==
"scalar") {
176 MultiFab Temp(S.boxArray(),S.DistributionMap(),ncomp,0);
177 for (MFIter mfi(Temp, TilingIfNotGPU()); mfi.isValid(); ++mfi)
179 const Box& bx = mfi.tilebox();
182 bndry.copyFrom(Temp, nghost, 0, 0, ncomp,
m_geom[
bndry_lev].periodicity());
184 }
else if (var_name ==
"ke") {
186 MultiFab Temp(S.boxArray(),S.DistributionMap(),ncomp,0);
187 for (MFIter mfi(Temp, TilingIfNotGPU()); mfi.isValid(); ++mfi)
189 const Box& bx = mfi.tilebox();
192 bndry.copyFrom(Temp, nghost, 0, 0, ncomp,
m_geom[
bndry_lev].periodicity());
194 }
else if (var_name ==
"qke") {
196 MultiFab Temp(S.boxArray(),S.DistributionMap(),ncomp,0);
197 for (MFIter mfi(Temp, TilingIfNotGPU()); mfi.isValid(); ++mfi)
199 const Box& bx = mfi.tilebox();
202 bndry.copyFrom(Temp, nghost, 0, 0, ncomp,
m_geom[
bndry_lev].periodicity());
204 }
else if (var_name ==
"qv") {
206 MultiFab Temp(S.boxArray(),S.DistributionMap(),ncomp,0);
207 for (MFIter mfi(Temp, TilingIfNotGPU()); mfi.isValid(); ++mfi)
209 const Box& bx = mfi.tilebox();
212 bndry.copyFrom(Temp, nghost, 0, 0, ncomp,
m_geom[
bndry_lev].periodicity());
214 }
else if (var_name ==
"qc") {
216 MultiFab Temp(S.boxArray(),S.DistributionMap(),ncomp,0);
217 for (MFIter mfi(Temp, TilingIfNotGPU()); mfi.isValid(); ++mfi)
219 const Box& bx = mfi.tilebox();
222 bndry.copyFrom(Temp, nghost, 0, 0, ncomp,
m_geom[
bndry_lev].periodicity());
224 }
else if (var_name ==
"velocity") {
225 MultiFab Vel(S.boxArray(), S.DistributionMap(), 3,
m_out_rad);
226 average_face_to_cellcenter(Vel,0,Array<const MultiFab*,3>{&
xvel,&
yvel,&
zvel});
227 bndry.copyFrom(Vel, nghost, 0, 0, ncomp,
m_geom[
bndry_lev].periodicity());
230 Error(
"Don't know how to output this variable");
233 for (OrientationIter oit; oit !=
nullptr; ++oit) {
235 if (ori.coordDir() < 2) {
236 std::string facename = Concatenate(filename +
'_', ori, 1);
237 br_shift(oit, bndry, bndry_shifted);
238 bndry_shifted[ori].write(facename);
245 if (ParallelDescriptor::IOProcessor()) {
246 std::ofstream oftime(
m_time_file, std::ios::out | std::ios::app);
247 oftime << t_step <<
' ' << time <<
'\n';
void br_shift(OrientationIter oit, const BndryRegister &b1, BndryRegister &b2)
Definition: ERF_WriteBndryPlanes.cpp:18
#define Rho_comp
Definition: IndexDefines.H:12
#define RhoQ2_comp
Definition: IndexDefines.H:18
#define RhoQ1_comp
Definition: IndexDefines.H:17
#define RhoQKE_comp
Definition: IndexDefines.H:15
#define RhoKE_comp
Definition: IndexDefines.H:14
const int m_out_rad
Definition: ERF_WriteBndryPlanes.H:50
const int m_extent_rad
Definition: ERF_WriteBndryPlanes.H:51
const int m_in_rad
controls extents on native bndry output
Definition: ERF_WriteBndryPlanes.H:49
@ xvel
Definition: IndexDefines.H:100
@ cons
Definition: IndexDefines.H:99
@ zvel
Definition: IndexDefines.H:102
@ yvel
Definition: IndexDefines.H:101
void erf_derrhodivide(const Box &bx, FArrayBox &derfab, const FArrayBox &datfab, const int scalar_index)
Definition: Derive.cpp:18
void erf_dertemp(const Box &bx, FArrayBox &derfab, int, int, const FArrayBox &datfab, const Geometry &, Real, const int *, const int)
Definition: Derive.cpp:91