1 #ifndef ERF_SAMPLEDATA_H
2 #define ERF_SAMPLEDATA_H
6 #include <AMReX_ParmParse.H>
7 #include <AMReX_MultiFab.H>
8 #include <AMReX_MultiFabUtil.H>
9 #include <AMReX_PlotFileUtil.H>
21 amrex::ParmParse
pp(
"erf");
24 int n_line_lo =
pp.countval(
"sample_line_lo") / AMREX_SPACEDIM;
25 int n_line_hi =
pp.countval(
"sample_line_hi") / AMREX_SPACEDIM;
26 int n_line_dir =
pp.countval(
"sample_line_dir");
27 AMREX_ALWAYS_ASSERT( (n_line_lo==n_line_hi ) &&
28 (n_line_lo==n_line_dir) );
33 amrex::Vector<int> idx_lo; idx_lo.resize(n_line_lo*AMREX_SPACEDIM);
34 amrex::Vector<amrex::IntVect> iv_lo; iv_lo.resize(n_line_lo);
35 pp.queryarr(
"sample_line_lo",idx_lo,0,n_line_lo*AMREX_SPACEDIM);
36 for (
int i(0); i < n_line_lo; i++) {
37 amrex::IntVect iv(idx_lo[AMREX_SPACEDIM*i+0],
38 idx_lo[AMREX_SPACEDIM*i+1],
39 idx_lo[AMREX_SPACEDIM*i+2]);
44 amrex::Vector<int> idx_hi; idx_hi.resize(n_line_hi*AMREX_SPACEDIM);
45 amrex::Vector<amrex::IntVect> iv_hi; iv_hi.resize(n_line_hi);
46 pp.queryarr(
"sample_line_hi",idx_hi,0,n_line_hi*AMREX_SPACEDIM);
47 for (
int i(0); i < n_line_hi; i++) {
48 amrex::IntVect iv(idx_hi[AMREX_SPACEDIM*i+0],
49 idx_hi[AMREX_SPACEDIM*i+1],
50 idx_hi[AMREX_SPACEDIM*i+2]);
56 for (
int i = 0; i < n_line_hi; i++){
57 amrex::Box lbx(iv_lo[i],iv_hi[i]);
62 m_dir.resize(n_line_dir);
63 pp.queryarr(
"sample_line_dir",
m_dir,0,n_line_dir);
66 std::string name_base =
"plt_line_";
68 int n_names =
pp.countval(
"sample_line_name");
70 AMREX_ALWAYS_ASSERT( n_names==n_line_lo );
71 pp.queryarr(
"sample_line_name",
m_name,0,n_names);
73 for (
int iline(0); iline<n_line_lo; ++iline) {
74 m_name[iline] = amrex::Concatenate(name_base, iline , 5);
79 m_lev.resize(n_line_dir,0);
85 if (
pp.countval(
"line_sampling_vars") > 0) {
87 amrex::Vector<std::string> requested_vars;
88 pp.queryarr(
"line_sampling_vars",requested_vars);
89 amrex::Print() <<
"Selected line sampling vars :";
92 amrex::Print() <<
" " <<
"density";
96 amrex::Print() <<
" " <<
"x_velocity";
100 amrex::Print() <<
" " <<
"y_velocity";
104 amrex::Print() <<
" " <<
"z_velocity";
108 amrex::Print() <<
" " <<
"magvel";
112 amrex::Print() <<
" " <<
"theta";
116 amrex::Print() <<
" " <<
"qv";
120 amrex::Print() <<
" " <<
"qc";
124 amrex::Print() <<
" " <<
"pressure";
126 amrex::Print() << std::endl;
132 if (
m_write_ascii && amrex::ParallelDescriptor::IOProcessor()) {
133 int nvar =
static_cast<int>(
m_varnames.size());
136 for (
int iline(0); iline<n_line_lo; ++iline) {
137 for (
int ivar(0); ivar<nvar; ++ivar) {
140 m_datastream[i]->open(filename.c_str(),std::ios::out|std::ios::app);
142 amrex::FileOpenFailed(filename);
156 amrex::Print() <<
"Writing out line coordinates to text" << std::endl;
158 for (
int lev(0); lev < z_phys_cc.size(); ++lev) {
160 std::ofstream outfile;
161 if (amrex::ParallelDescriptor::IOProcessor()) {
162 std::string fname = amrex::Concatenate(
"plt_line_lev", lev, 1);
166 if (!outfile.is_open()) {
167 amrex::AllPrint() <<
"Could not open " << fname << std::endl;
172 int nline =
static_cast<int>(
m_ls_mf.size());
173 for (
int iline(0); iline<nline; ++iline) {
174 int dir =
m_dir[iline];
175 amrex::Box bnd_bx =
m_bnd_bx[iline];
176 amrex::IntVect first_cell = bnd_bx.smallEnd();
179 amrex::MultiFab line_coords_mf = get_line_data(
180 *z_phys_cc[lev], dir, first_cell, bnd_bx
184 amrex::Gpu::HostVector<amrex::Real> vec = sumToLine(
185 line_coords_mf, 0, 1, bnd_bx, dir
189 if (amrex::ParallelDescriptor::IOProcessor()) {
190 for (
const auto& zval : vec) {
191 outfile <<
" " << zval;
193 outfile << std::endl;
204 int nlev =
static_cast<int>(vars_new.size());
205 int nline =
static_cast<int>(
m_bnd_bx.size());
206 int ncomp =
static_cast<int>(
m_varnames.size());
211 for (
int iline(0); iline<nline; ++iline) {
212 int dir =
m_dir[iline];
213 amrex::Box bnd_bx =
m_bnd_bx[iline];
214 amrex::IntVect cell = bnd_bx.smallEnd();
217 for (
int ilev(nlev-1); ilev>=0; --ilev) {
220 amrex::MultiFab mf_cc_vel;
221 auto ba = vars_new[ilev][
Vars::cons].boxArray();
222 auto dm = vars_new[ilev][
Vars::cons].DistributionMap();
223 mf_cc_vel.define(ba, dm, AMREX_SPACEDIM, amrex::IntVect(1,1,1));
224 average_face_to_cellcenter(mf_cc_vel,0,
225 amrex::Array<const amrex::MultiFab*,3>{&vars_new[ilev][
Vars::xvel],
230 amrex::MultiFab mf_cc_data;
231 mf_cc_data.define(ba, dm, ncomp, 1);
236 amrex::MultiFab::Copy(mf_cc_data, vars_new[ilev][
Vars::cons],
Rho_comp, mf_comp, 1, 0);
241 amrex::MultiFab::Copy(mf_cc_data, mf_cc_vel, 0, mf_comp, 1, 0);
245 amrex::MultiFab::Copy(mf_cc_data, mf_cc_vel, 1, mf_comp, 1, 0);
249 amrex::MultiFab::Copy(mf_cc_data, mf_cc_vel, 2, mf_comp, 1, 0);
255 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
257 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
258 const amrex::Box& tbx = mfi.tilebox();
259 auto const& dfab = mf_cc_data.array(mfi);
260 auto const& vfab = mf_cc_vel.array(mfi);
262 amrex::ParallelFor(tbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
264 dfab(i,j,k,mf_comp) = std::sqrt(vfab(i,j,k,0)*vfab(i,j,k,0)
265 + vfab(i,j,k,1)*vfab(i,j,k,1)
266 + vfab(i,j,k,2)*vfab(i,j,k,2)) ;
274 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
276 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
277 const amrex::Box& tbx = mfi.tilebox();
278 auto const& dfab = mf_cc_data.array(mfi);
279 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
281 amrex::ParallelFor(tbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
291 if (qv_comp >= 0) AMREX_ALWAYS_ASSERT(qv_comp == mf_comp);
294 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
296 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
297 const amrex::Box& tbx = mfi.tilebox();
298 auto const& dfab = mf_cc_data.array(mfi);
299 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
301 amrex::ParallelFor(tbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
310 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
312 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
313 const amrex::Box& tbx = mfi.tilebox();
314 auto const& dfab = mf_cc_data.array(mfi);
315 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
317 amrex::ParallelFor(tbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
328 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
330 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
331 const amrex::Box& tbx = mfi.tilebox();
332 auto const& dfab = mf_cc_data.array(mfi);
333 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
335 amrex::ParallelFor(tbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
338 dfab(i,j,k,qv_comp));
346 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
348 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
349 const amrex::Box& tbx = mfi.tilebox();
350 auto const& dfab = mf_cc_data.array(mfi);
351 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
353 amrex::ParallelFor(tbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
362 m_ls_mf[iline] = get_line_data(mf_cc_data, dir, cell, bnd_bx);
365 auto min_bnd_bx =
m_ls_mf[iline].boxArray().minimalBox();
366 if (bnd_bx == min_bnd_bx) {
break; }
374 amrex::Vector<int>& level_steps,
375 amrex::Vector<amrex::IntVect>& ref_ratio,
376 amrex::Vector<amrex::Geometry>& geom)
389 constexpr
int datwidth = 14;
390 constexpr
int datprecision = 6;
391 constexpr
int timeprecision = 13;
393 int nline =
static_cast<int>(
m_ls_mf.size());
394 int nvar =
static_cast<int>(
m_varnames.size());
395 for (
int iline(0); iline<nline; ++iline) {
396 int dir =
m_dir[iline];
397 int lev =
m_lev[iline];
401 for (
int ivar(0); ivar<nvar; ++ivar) {
403 amrex::Gpu::HostVector<amrex::Real> vec = sumToLine(
m_ls_mf[iline], ivar, 1, m_dom, dir);
405 if (amrex::ParallelDescriptor::IOProcessor()) {
406 int ifile = iline*nvar + ivar;
408 fs << std::setw(datwidth) << std::setprecision(timeprecision) << m_time
409 << std::setw(datwidth) << std::setprecision(datprecision);
410 for (
const auto& val : vec) {
421 amrex::Vector<int>& level_steps,
422 amrex::Vector<amrex::IntVect>& ref_ratio,
423 amrex::Vector<amrex::Geometry>& geom)
425 int nline =
static_cast<int>(
m_ls_mf.size());
426 for (
int iline(0); iline<nline; ++iline) {
428 int dir =
m_dir[iline];
429 int lev =
m_lev[iline];
431 amrex::Vector<int> m_level_steps = {level_steps[lev]};
432 amrex::Vector<amrex::IntVect> m_ref_ratio = {ref_ratio[lev]};
435 auto plo = geom[lev].ProbLo();
436 auto dx = geom[lev].CellSize();
437 amrex::Vector<amrex::Geometry> m_geom; m_geom.resize(1);
438 amrex::Vector<int> is_per(AMREX_SPACEDIM,0);
441 for (
int d(0); d<AMREX_SPACEDIM; ++d) {
449 is_per[d] = geom[lev].isPeriodic(d);
451 m_geom[0].define(m_dom, &m_rb, geom[lev].
Coord(), is_per.data());
454 std::string name_line =
m_name[iline];
455 name_line +=
"_step_";
456 std::string plotfilename = amrex::Concatenate(name_line, m_level_steps[0], 5);
459 amrex::Vector<const amrex::MultiFab*> mf = {&(
m_ls_mf[iline])};
462 WriteMultiLevelPlotfile(plotfilename, 1, mf,
464 m_level_steps, m_ref_ratio);
484 amrex::ParmParse
pp(
"erf");
487 int n_plane_lo =
pp.countval(
"sample_plane_lo") / AMREX_SPACEDIM;
488 int n_plane_hi =
pp.countval(
"sample_plane_hi") / AMREX_SPACEDIM;
489 int n_plane_dir =
pp.countval(
"sample_plane_dir");
490 AMREX_ALWAYS_ASSERT( (n_plane_lo==n_plane_hi ) &&
491 (n_plane_lo==n_plane_dir) );
494 if (n_plane_lo > 0) {
496 amrex::Vector<amrex::Real> r_lo; r_lo.resize(n_plane_lo*AMREX_SPACEDIM);
497 amrex::Vector<amrex::Vector<amrex::Real>> rv_lo;
498 pp.queryarr(
"sample_plane_lo",r_lo,0,n_plane_lo*AMREX_SPACEDIM);
499 for (
int i(0); i < n_plane_lo; i++) {
500 amrex::Vector<amrex::Real> rv = {r_lo[AMREX_SPACEDIM*i+0],
501 r_lo[AMREX_SPACEDIM*i+1],
502 r_lo[AMREX_SPACEDIM*i+2]};
507 amrex::Vector<amrex::Real> r_hi; r_hi.resize(n_plane_hi*AMREX_SPACEDIM);
508 amrex::Vector<amrex::Vector<amrex::Real>> rv_hi;
509 pp.queryarr(
"sample_plane_hi",r_hi,0,n_plane_hi*AMREX_SPACEDIM);
510 for (
int i(0); i < n_plane_hi; i++) {
511 amrex::Vector<amrex::Real> rv = {r_hi[AMREX_SPACEDIM*i+0],
512 r_hi[AMREX_SPACEDIM*i+1],
513 r_hi[AMREX_SPACEDIM*i+2]};
519 for (
int i(0); i < n_plane_hi; i++){
520 amrex::RealBox rbx(rv_lo[i].data(),rv_hi[i].data());
525 m_dir.resize(n_plane_dir);
526 pp.queryarr(
"sample_plane_dir",
m_dir,0,n_plane_dir);
529 std::string name_base =
"plt_plane_";
530 m_name.resize(n_plane_lo);
531 int n_names =
pp.countval(
"sample_plane_name");
533 AMREX_ALWAYS_ASSERT( n_names==n_plane_lo );
534 pp.queryarr(
"sample_plane_name",
m_name,0,n_names);
536 for (
int iplane(0); iplane<n_plane_lo; ++iplane) {
537 m_name[iplane] = amrex::Concatenate(name_base, iplane , 5);
542 m_lev.resize(n_plane_dir,0);
552 const amrex::Geometry& geom) {
553 amrex::IntVect slice_lo, slice_hi;
555 AMREX_D_TERM(slice_lo[0]=
static_cast<int>(std::floor((real_box.lo(0) - geom.ProbLo(0))/geom.CellSize(0)));,
556 slice_lo[1]=
static_cast<int>(std::floor((real_box.lo(1) - geom.ProbLo(1))/geom.CellSize(1)));,
557 slice_lo[2]=
static_cast<int>(std::floor((real_box.lo(2) - geom.ProbLo(2))/geom.CellSize(2))););
559 AMREX_D_TERM(slice_hi[0]=
static_cast<int>(std::floor((real_box.hi(0) - geom.ProbLo(0))/geom.CellSize(0)));,
560 slice_hi[1]=
static_cast<int>(std::floor((real_box.hi(1) - geom.ProbLo(1))/geom.CellSize(1)));,
561 slice_hi[2]=
static_cast<int>(std::floor((real_box.hi(2) - geom.ProbLo(2))/geom.CellSize(2))););
563 return amrex::Box(slice_lo, slice_hi) & geom.Domain();
568 amrex::Vector<amrex::Vector<amrex::MultiFab>>& vars_new)
570 int nlev =
static_cast<int>(vars_new.size());
571 int nplane =
static_cast<int>(
m_bnd_rbx.size());
573 bool interpolate =
true;
576 for (
int iplane(0); iplane<nplane; ++iplane) {
577 int dir =
m_dir[iplane];
578 amrex::RealBox bnd_rbx =
m_bnd_rbx[iplane];
582 for (
int ilev(nlev-1); ilev>=0; --ilev) {
585 amrex::MultiFab mf_cc_vel;
586 auto ba = vars_new[ilev][
Vars::cons].boxArray();
587 auto dm = vars_new[ilev][
Vars::cons].DistributionMap();
588 mf_cc_vel.define(ba, dm, AMREX_SPACEDIM, amrex::IntVect(1,1,1));
589 average_face_to_cellcenter(mf_cc_vel,0,
590 amrex::Array<const amrex::MultiFab*,3>{&vars_new[ilev][
Vars::xvel],
595 amrex::MultiFab mf_cc_data;
596 mf_cc_data.define(ba, dm, ncomp, 1);
598 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
600 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
601 const amrex::Box& tbx = mfi.tilebox();
602 auto const& dfab = mf_cc_data.array(mfi);
603 auto const& tfab = vars_new[ilev][
Vars::cons].array(mfi);
604 auto const& wfab = mf_cc_vel.array(mfi);
605 amrex::ParallelFor(tbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
607 dfab(i,j,k,0) = tfab(i,j,k,1)/tfab(i,j,k,0);
608 dfab(i,j,k,1) = std::sqrt(wfab(i,j,k,0)*wfab(i,j,k,0)
609 + wfab(i,j,k,1)*wfab(i,j,k,1)
610 + wfab(i,j,k,2)*wfab(i,j,k,2)) ;
615 m_lev[iplane] = ilev;
616 m_ps_mf[iplane] = get_slice_data(dir, point, mf_cc_data, geom[ilev],
617 0, ncomp, interpolate, bnd_rbx);
620 auto min_bnd_bx =
m_ps_mf[iplane]->boxArray().minimalBox();
621 amrex::Box bnd_bx =
getIndexBox(bnd_rbx, geom[ilev]);
622 if (bnd_bx == min_bnd_bx) {
break; }
630 amrex::Vector<int>& level_steps,
631 amrex::Vector<amrex::IntVect>& ref_ratio,
632 amrex::Vector<amrex::Geometry>& geom)
634 amrex::Vector<std::string> varnames = {
"T",
"Wsp"};
637 for (
int iplane(0); iplane<nplane; ++iplane) {
639 int dir =
m_dir[iplane];
640 int lev =
m_lev[iplane];
642 amrex::Vector<int> m_level_steps = {level_steps[lev]};
643 amrex::Vector<amrex::IntVect> m_ref_ratio = {ref_ratio[lev]};
649 amrex::Vector<int> is_per(AMREX_SPACEDIM,0);
650 for (
int d(0); d<AMREX_SPACEDIM; ++d) {
652 m_rb.setLo(d,point-0.5*geom[lev].CellSize(d));
653 m_rb.setHi(d,point+0.5*geom[lev].CellSize(d));
655 is_per[d] = geom[lev].isPeriodic(d);
657 amrex::Vector<amrex::Geometry> m_geom; m_geom.resize(1);
658 m_geom[0].define(m_dom, &m_rb, geom[lev].
Coord(), is_per.data());
661 std::string name_plane =
m_name[iplane];
662 name_plane +=
"_step_";
663 std::string plotfilename = amrex::Concatenate(name_plane, m_level_steps[0], 5);
666 amrex::Vector<const amrex::MultiFab*> mf = {
m_ps_mf[iplane].get()};
669 WriteMultiLevelPlotfile(plotfilename, 1, mf,
670 varnames, m_geom, m_time,
671 m_level_steps, m_ref_ratio);
678 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
m_ps_mf;
689 if(do_line)
m_ls = std::make_unique<LineSampler >();
690 if(do_plane)
m_ps = std::make_unique<PlaneSampler>();
694 write_coords (amrex::Vector<std::unique_ptr<amrex::MultiFab> >& z_phys_cc)
696 if (
m_ls)
m_ls->write_line_coords(z_phys_cc);
701 amrex::Vector<amrex::Vector<amrex::MultiFab>>& vars_new)
703 if (
m_ls)
m_ls->get_line_mfs(vars_new);
704 if (
m_ps)
m_ps->get_plane_mfs(geom, vars_new);
709 amrex::Vector<int>& level_steps,
710 amrex::Vector<amrex::IntVect>& ref_ratio,
711 amrex::Vector<amrex::Geometry>& geom)
713 if (
m_ls)
m_ls->write_line_mfs(time, level_steps, ref_ratio, geom);
714 if (
m_ps)
m_ps->write_plane_mfs(time, level_steps, ref_ratio, geom);
720 std::unique_ptr<LineSampler>
m_ls =
nullptr;
723 std::unique_ptr<PlaneSampler>
m_ps =
nullptr;
bool containerHasElement(const V &iterable, const T &query)
Definition: ERF_Container.H:5
Coord
Definition: ERF_DataStruct.H:85
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real getPgivenRTh(const amrex::Real rhotheta, const amrex::Real qv=0.)
Definition: ERF_EOS.H:81
#define Rho_comp
Definition: ERF_IndexDefines.H:36
#define RhoTheta_comp
Definition: ERF_IndexDefines.H:37
#define RhoQ2_comp
Definition: ERF_IndexDefines.H:43
#define RhoQ1_comp
Definition: ERF_IndexDefines.H:42
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real pp(amrex::Real y)
Definition: ERF_MicrophysicsUtils.H:230
AMREX_FORCE_INLINE IntVect offset(const int face_dir, const int normal)
Definition: ERF_ReadBndryPlanes.cpp:28
amrex::Real Real
Definition: ERF_ShocInterface.H:19
Definition: ERF_SampleData.H:684
void write_coords(amrex::Vector< std::unique_ptr< amrex::MultiFab > > &z_phys_cc)
Definition: ERF_SampleData.H:694
std::unique_ptr< LineSampler > m_ls
Definition: ERF_SampleData.H:720
void get_sample_data(amrex::Vector< amrex::Geometry > &geom, amrex::Vector< amrex::Vector< amrex::MultiFab >> &vars_new)
Definition: ERF_SampleData.H:700
SampleData(bool do_line=false, bool do_plane=false)
Definition: ERF_SampleData.H:686
std::unique_ptr< PlaneSampler > m_ps
Definition: ERF_SampleData.H:723
void write_sample_data(amrex::Vector< amrex::Real > &time, amrex::Vector< int > &level_steps, amrex::Vector< amrex::IntVect > &ref_ratio, amrex::Vector< amrex::Geometry > &geom)
Definition: ERF_SampleData.H:708
@ fs
Definition: ERF_AdvanceMorrison.cpp:117
@ xvel
Definition: ERF_IndexDefines.H:141
@ cons
Definition: ERF_IndexDefines.H:140
@ zvel
Definition: ERF_IndexDefines.H:143
@ yvel
Definition: ERF_IndexDefines.H:142
Definition: ERF_SampleData.H:18
amrex::Vector< std::string > m_varnames
Definition: ERF_SampleData.H:475
amrex::Vector< amrex::MultiFab > m_ls_mf
Definition: ERF_SampleData.H:471
void get_line_mfs(amrex::Vector< amrex::Vector< amrex::MultiFab >> &vars_new)
Definition: ERF_SampleData.H:202
amrex::Vector< std::unique_ptr< std::fstream > > m_datastream
Definition: ERF_SampleData.H:476
void write_line_plotfile(amrex::Vector< amrex::Real > &time, amrex::Vector< int > &level_steps, amrex::Vector< amrex::IntVect > &ref_ratio, amrex::Vector< amrex::Geometry > &geom)
Definition: ERF_SampleData.H:420
amrex::Vector< int > m_dir
Definition: ERF_SampleData.H:468
amrex::Vector< std::string > m_name
Definition: ERF_SampleData.H:472
void write_line_ascii(amrex::Vector< amrex::Real > &time)
Definition: ERF_SampleData.H:386
LineSampler()
Definition: ERF_SampleData.H:19
amrex::Vector< amrex::Box > m_bnd_bx
Definition: ERF_SampleData.H:470
bool m_write_ascii
Definition: ERF_SampleData.H:474
void write_line_mfs(amrex::Vector< amrex::Real > &time, amrex::Vector< int > &level_steps, amrex::Vector< amrex::IntVect > &ref_ratio, amrex::Vector< amrex::Geometry > &geom)
Definition: ERF_SampleData.H:373
void write_line_coords(amrex::Vector< std::unique_ptr< amrex::MultiFab > > &z_phys_cc)
Definition: ERF_SampleData.H:152
amrex::Vector< int > m_lev
Definition: ERF_SampleData.H:469
Definition: ERF_SampleData.H:481
amrex::Vector< int > m_dir
Definition: ERF_SampleData.H:675
amrex::Box getIndexBox(const amrex::RealBox &real_box, const amrex::Geometry &geom)
Definition: ERF_SampleData.H:551
amrex::Vector< int > m_lev
Definition: ERF_SampleData.H:676
amrex::Vector< std::string > m_name
Definition: ERF_SampleData.H:679
void get_plane_mfs(amrex::Vector< amrex::Geometry > &geom, amrex::Vector< amrex::Vector< amrex::MultiFab >> &vars_new)
Definition: ERF_SampleData.H:567
amrex::Vector< std::unique_ptr< amrex::MultiFab > > m_ps_mf
Definition: ERF_SampleData.H:678
amrex::Vector< amrex::RealBox > m_bnd_rbx
Definition: ERF_SampleData.H:677
PlaneSampler()
Definition: ERF_SampleData.H:482
void write_plane_mfs(amrex::Vector< amrex::Real > &time, amrex::Vector< int > &level_steps, amrex::Vector< amrex::IntVect > &ref_ratio, amrex::Vector< amrex::Geometry > &geom)
Definition: ERF_SampleData.H:629