aboutsummaryrefslogtreecommitdiff
path: root/Source/Diagnostics/Diagnostics.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Diagnostics/Diagnostics.cpp')
-rw-r--r--Source/Diagnostics/Diagnostics.cpp20
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();
}