diff options
Diffstat (limited to 'Source/Diagnostics/Diagnostics.cpp')
-rw-r--r-- | Source/Diagnostics/Diagnostics.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/Source/Diagnostics/Diagnostics.cpp b/Source/Diagnostics/Diagnostics.cpp index 484ea88c9..c3d387987 100644 --- a/Source/Diagnostics/Diagnostics.cpp +++ b/Source/Diagnostics/Diagnostics.cpp @@ -13,7 +13,7 @@ #endif #include "WarpX.H" #include "Utils/WarpXUtil.H" - +using namespace amrex::literals; Diagnostics::Diagnostics (int i, std::string name) : m_diag_name(name), m_diag_index(i) @@ -74,6 +74,22 @@ Diagnostics::BaseReadParameters () m_hi[idim] = warpx.Geom(0).ProbHi(idim); } } + // For a moving window simulation, the user-defined m_lo and m_hi must be converted. + if (warpx.do_moving_window) { +#if (AMREX_SPACEDIM == 3) + amrex::Vector<int> dim_map {0, 1, 2}; +#else + amrex::Vector<int> dim_map {0, 2}; +#endif + if (warpx.boost_direction[ dim_map[warpx.moving_window_dir] ] == 1) { + // Convert user-defined lo and hi for diagnostics to account for boosted-frame + // simulations with moving window + amrex::Real convert_factor = 1._rt/(warpx.gamma_boost * (1._rt - warpx.beta_boost) ); + // Assuming that the window travels with speed c + m_lo[warpx.moving_window_dir] *= convert_factor; + m_hi[warpx.moving_window_dir] *= convert_factor; + } + } // Initialize cr_ratio with default value of 1 for each dimension. amrex::Vector<int> cr_ratio(AMREX_SPACEDIM, 1); @@ -182,7 +198,7 @@ Diagnostics::ComputeAndPack () // Call all functors in m_all_field_functors[lev]. Each of them computes // a diagnostics and writes in one or more components of the output // multifab m_mf_output[lev]. - m_all_field_functors[lev][icomp]->operator()(m_mf_output[i_buffer][lev], icomp_dst); + m_all_field_functors[lev][icomp]->operator()(m_mf_output[i_buffer][lev], icomp_dst, i_buffer); // update the index of the next component to fill icomp_dst += m_all_field_functors[lev][icomp]->nComp(); } |