263 BL_PROFILE(
"ERF::WriteBndryPlanes::write_planes");
270 const std::string chkname =
271 m_filename + Concatenate(
"/bndry_output", t_step);
275 const std::string level_prefix =
"Level_";
276 PreBuildDirectorHierarchy(chkname, level_prefix, 1,
true);
281 DistributionMapping dm{ba};
284 Box target_box_shifted(IntVect(0,0,0),new_hi);
285 BoxArray ba_shifted(target_box_shifted);
290 std::string filename = MultiFabFileFullPrefix(
bndry_lev, chkname, level_prefix, var_name);
293 if (var_name ==
"velocity") {
294 ncomp = AMREX_SPACEDIM;
303 if (var_name ==
"density")
307 }
else if (var_name ==
"temperature") {
308 MultiFab
Temp(
S.boxArray(),
S.DistributionMap(),ncomp,0);
309 for (MFIter mfi(Temp, TilingIfNotGPU()); mfi.isValid(); ++mfi)
311 const Box& bx = mfi.tilebox();
312 Real time =
static_cast<Real>(time_d);
321 bndry.copyFrom(Temp, nghost, 0, 0, ncomp,
m_geom[
bndry_lev].periodicity());
322 }
else if (var_name ==
"theta") {
323 MultiFab
Temp(
S.boxArray(),
S.DistributionMap(),ncomp,0);
324 for (MFIter mfi(Temp, TilingIfNotGPU()); mfi.isValid(); ++mfi)
326 const Box& bx = mfi.tilebox();
329 bndry.copyFrom(Temp, nghost, 0, 0, ncomp,
m_geom[
bndry_lev].periodicity());
330 }
else if (var_name ==
"scalar") {
331 MultiFab
Temp(
S.boxArray(),
S.DistributionMap(),ncomp,0);
332 for (MFIter mfi(Temp, TilingIfNotGPU()); mfi.isValid(); ++mfi)
334 const Box& bx = mfi.tilebox();
337 bndry.copyFrom(Temp, nghost, 0, 0, ncomp,
m_geom[
bndry_lev].periodicity());
338 }
else if (var_name ==
"ke") {
339 MultiFab
Temp(
S.boxArray(),
S.DistributionMap(),ncomp,0);
340 for (MFIter mfi(Temp, TilingIfNotGPU()); mfi.isValid(); ++mfi)
342 const Box& bx = mfi.tilebox();
345 bndry.copyFrom(Temp, nghost, 0, 0, ncomp,
m_geom[
bndry_lev].periodicity());
346 }
else if (var_name ==
"qv") {
347 MultiFab
Temp(
S.boxArray(),
S.DistributionMap(),ncomp,0);
349 for (MFIter mfi(Temp, TilingIfNotGPU()); mfi.isValid(); ++mfi)
351 const Box& bx = mfi.tilebox();
357 bndry.copyFrom(Temp, nghost, 0, 0, ncomp,
m_geom[
bndry_lev].periodicity());
358 }
else if (var_name ==
"qc") {
359 MultiFab
Temp(
S.boxArray(),
S.DistributionMap(),ncomp,0);
361 for (MFIter mfi(Temp, TilingIfNotGPU()); mfi.isValid(); ++mfi)
363 const Box& bx = mfi.tilebox();
369 bndry.copyFrom(Temp, nghost, 0, 0, ncomp,
m_geom[
bndry_lev].periodicity());
370 }
else if (var_name ==
"velocity") {
371 MultiFab Vel(
S.boxArray(),
S.DistributionMap(), 3,
m_out_rad);
372 average_face_to_cellcenter(Vel,0,Array<const MultiFab*,3>{&
xvel,&
yvel,&
zvel});
373 bndry.copyFrom(Vel, nghost, 0, 0, ncomp,
m_geom[
bndry_lev].periodicity());
376 Error(
"Don't know how to output this variable");
379 for (OrientationIter oit; oit !=
nullptr; ++oit) {
381 if (ori.coordDir() < 2) {
382 std::string facename = Concatenate(filename +
'_', ori, 1);
383 br_shift(oit, bndry, bndry_shifted);
384 bndry_shifted[ori].write(facename);
391 if (ParallelDescriptor::IOProcessor()) {
396 std::ofstream out(tmp_file, std::ios::out | std::ios::trunc);
402 Abort(
"WriteBndryPlanes: cannot write " + tmp_file);
405 std::filesystem::rename(tmp_file,
m_time_file, ec);
407 Abort(
"WriteBndryPlanes: cannot replace " +
m_time_file +
" with " + tmp_file +
": " + ec.message());
412 std::ofstream oftime(
m_time_file, std::ios::out | std::ios::app);
413 oftime << std::setprecision(17) << t_step <<
' ' << time_d <<
'\n';
#define RhoScalar_comp
Definition: ERF_IndexDefines.H:46
#define Rho_comp
Definition: ERF_IndexDefines.H:42
#define RhoTheta_comp
Definition: ERF_IndexDefines.H:43
#define RhoQ2_comp
Definition: ERF_IndexDefines.H:49
#define RhoQ1_comp
Definition: ERF_IndexDefines.H:48
#define RhoKE_comp
Definition: ERF_IndexDefines.H:44
void br_shift(OrientationIter oit, const BndryRegister &b1, BndryRegister &b2)
Definition: ERF_WriteBndryPlanes.cpp:29
const int m_out_rad
Definition: ERF_WriteBndryPlanes.H:75
const int m_extent_rad
Definition: ERF_WriteBndryPlanes.H:76
constexpr int S
Definition: ERF_TwoStreamColumn.H:604
@ xvel
Definition: ERF_IndexDefines.H:218
@ cons
Definition: ERF_IndexDefines.H:217
@ zvel
Definition: ERF_IndexDefines.H:220
@ yvel
Definition: ERF_IndexDefines.H:219
void erf_derrhodivide(const Box &bx, FArrayBox &derfab, const FArrayBox &datfab, const int scalar_index)
Definition: ERF_Derive.cpp:183
void erf_dermoisttemp(const Box &bx, FArrayBox &derfab, int, int, const FArrayBox &datfab, const FArrayBox &, const Geometry &, Real, const int *, const int)
Definition: ERF_Derive.cpp:281
void erf_dertemp(const Box &bx, FArrayBox &derfab, int, int, const FArrayBox &datfab, const FArrayBox &, const Geometry &, Real, const int *, const int)
Definition: ERF_Derive.cpp:258