aboutsummaryrefslogtreecommitdiff
path: root/Source/Diagnostics/ComputeDiagFunctors/RhoFunctor.cpp
diff options
context:
space:
mode:
authorGravatar Roelof Groenewald <40245517+roelof-groenewald@users.noreply.github.com> 2023-08-20 14:26:37 -0700
committerGravatar GitHub <noreply@github.com> 2023-08-20 14:26:37 -0700
commit5b74a61c631102a1c121a3668d0c02098c259b9b (patch)
tree818d73a3b4b75cf191b51e0bdb581b145d63b0eb /Source/Diagnostics/ComputeDiagFunctors/RhoFunctor.cpp
parent9ce0b9c2cbd8f4881347a3f0d5a6cbf04c7a7919 (diff)
downloadWarpX-5b74a61c631102a1c121a3668d0c02098c259b9b.tar.gz
WarpX-5b74a61c631102a1c121a3668d0c02098c259b9b.tar.zst
WarpX-5b74a61c631102a1c121a3668d0c02098c259b9b.zip
Include `J` in diagnostic output when an electromagnetic solver is not used (#4116)
* include current density in diagnostic output even if an electromagnetic solver is not used * do not redeposit current for the magnetostatic solver * update CI benchmarks for tests that previously did not register current density * fix remaining failing CI test * Apply suggestions from code review Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * do not output current density in collision tests * update `JFunctor` constructor doc-string * code cleanup - reduce code duplication * specify `Ex Ey Ez Bx By Bz` fields to plot for collision CI tests * specify `Er Et Ez Br Bt Bz` as output for rz collision test * rename `InterpolateToDst` to `InterpolateMFForDiag` * only deposit current density once per diagnostic output (if not already deposited) * write deposited current for all directions into `current_fp` during diagnostic step deposition * use `amrex::make_alias` to directly deposit current density into `warpx.current_fp` during diagnostic step deposition * add class variable `solver_deposits_current` to `FullDiagnostics` so that there is only one place where the determination is made whether current should be deposited during diagnostic output * correct logic to determine `m_solver_deposits_current` --------- Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
Diffstat (limited to '')
-rw-r--r--Source/Diagnostics/ComputeDiagFunctors/RhoFunctor.cpp30
1 files changed, 2 insertions, 28 deletions
diff --git a/Source/Diagnostics/ComputeDiagFunctors/RhoFunctor.cpp b/Source/Diagnostics/ComputeDiagFunctors/RhoFunctor.cpp
index 6f4fcda4d..73feef4ed 100644
--- a/Source/Diagnostics/ComputeDiagFunctors/RhoFunctor.cpp
+++ b/Source/Diagnostics/ComputeDiagFunctors/RhoFunctor.cpp
@@ -8,11 +8,8 @@
#endif
#include "Particles/MultiParticleContainer.H"
#include "Particles/WarpXParticleContainer.H"
-#include "Utils/TextMsg.H"
#include "WarpX.H"
-#include <ablastr/coarsen/sample.H>
-
#include <AMReX.H>
#include <AMReX_IntVect.H>
#include <AMReX_MultiFab.H>
@@ -69,29 +66,6 @@ RhoFunctor::operator() ( amrex::MultiFab& mf_dst, const int dcomp, const int /*i
}
#endif
-
-#ifdef WARPX_DIM_RZ
- if (m_convertRZmodes2cartesian) {
- // In cylindrical geometry, sum real part of all modes of rho in
- // temporary MultiFab mf_dst_stag, and cell-center it to mf_dst
- WARPX_ALWAYS_ASSERT_WITH_MESSAGE(
- nComp()==1,
- "The RZ averaging over modes must write into one single component");
- amrex::MultiFab mf_dst_stag( rho->boxArray(), warpx.DistributionMap(m_lev), 1, rho->nGrowVect() );
- // Mode 0
- amrex::MultiFab::Copy( mf_dst_stag, *rho, 0, 0, 1, rho->nGrowVect() );
- for (int ic=1 ; ic < rho->nComp() ; ic += 2) {
- // Real part of all modes > 0
- amrex::MultiFab::Add( mf_dst_stag, *rho, ic, 0, 1, rho->nGrowVect() );
- }
- ablastr::coarsen::sample::Coarsen( mf_dst, mf_dst_stag, dcomp, 0, nComp(), 0, m_crse_ratio );
- } else {
- ablastr::coarsen::sample::Coarsen( mf_dst, *rho, dcomp, 0, nComp(), 0, m_crse_ratio );
- }
-#else
- // In Cartesian geometry, coarsen and interpolate from temporary MultiFab rho
- // to output diagnostic MultiFab mf_dst
- ablastr::coarsen::sample::Coarsen(mf_dst, *rho, dcomp, 0, nComp(), mf_dst.nGrowVect(), m_crse_ratio );
- amrex::ignore_unused(m_convertRZmodes2cartesian);
-#endif
+ InterpolateMFForDiag(mf_dst, *rho, dcomp, warpx.DistributionMap(m_lev),
+ m_convertRZmodes2cartesian);
}