aboutsummaryrefslogtreecommitdiff
path: root/Source/Diagnostics/FieldIO.cpp
diff options
context:
space:
mode:
authorGravatar Edoardo Zoni <59625522+EZoni@users.noreply.github.com> 2020-02-27 11:17:56 -0800
committerGravatar GitHub <noreply@github.com> 2020-02-27 11:17:56 -0800
commit51e866e9a3f450d7767df97b0a2011cf65857c7a (patch)
treedd92e1108085a6d5f43039691cc39884230a7fb7 /Source/Diagnostics/FieldIO.cpp
parent6b345e38a9e312f2352c13b1e8e58399944d2798 (diff)
downloadWarpX-51e866e9a3f450d7767df97b0a2011cf65857c7a.tar.gz
WarpX-51e866e9a3f450d7767df97b0a2011cf65857c7a.tar.zst
WarpX-51e866e9a3f450d7767df97b0a2011cf65857c7a.zip
Implement div(E) diagnostics for spectral case (#720)
* Implement div(E) diagnostics for spectral case. * split travis tests in bigger matrix * split more TravisCI tests, add electrostatic, use defaults values * typo * Move computation of div(E) to base class SpectralBaseAlgorithm. * need to split psatd too * consistent variable names and use function to avoid duplication * fix typo for qed tests * typo * also need to update run_tests.sg * Update copyright tags. * change matrix * Add test of div(E) vs rho/epsilon_0 in PML test. * SpectralFieldIndex: reuse memory slot for Bx when computing divE. Co-authored-by: MaxThevenet <mthevenet@lbl.gov>
Diffstat (limited to 'Source/Diagnostics/FieldIO.cpp')
-rw-r--r--Source/Diagnostics/FieldIO.cpp27
1 files changed, 15 insertions, 12 deletions
diff --git a/Source/Diagnostics/FieldIO.cpp b/Source/Diagnostics/FieldIO.cpp
index 03e5e07d5..7d6ca85e2 100644
--- a/Source/Diagnostics/FieldIO.cpp
+++ b/Source/Diagnostics/FieldIO.cpp
@@ -1,6 +1,5 @@
-/* Copyright 2019-2020 Andrew Myers, Axel Huebl, David Grote
- * Maxence Thevenet, Remi Lehe, Revathi Jambunathan
- * Weiqun Zhang
+/* Copyright 2019-2020 Andrew Myers, Axel Huebl, David Grote, Maxence Thevenet,
+ * Remi Lehe, Revathi Jambunathan, Weiqun Zhang, Edoardo Zoni
*
* This file is part of WarpX.
*
@@ -13,7 +12,10 @@
#include <AMReX_Interpolater.H>
#ifdef WARPX_USE_OPENPMD
-# include <openPMD/openPMD.hpp>
+#include <openPMD/openPMD.hpp>
+#endif
+#ifdef WARPX_USE_PSATD
+#include <SpectralSolver.H>
#endif
@@ -643,15 +645,16 @@ WarpX::AverageAndPackFields ( Vector<std::string>& varnames,
Bfield_aux[lev][2].get()},
WarpX::CellSize(lev) );
} else if (fieldname == "divE"){
- if (do_nodal) amrex::Abort("TODO: do_nodal && plot dive");
+ if (do_nodal) amrex::Abort("TODO: do_nodal && plot divE");
const BoxArray& ba = amrex::convert(boxArray(lev),IntVect::TheUnitVector());
- MultiFab dive(ba,DistributionMap(lev),1,0);
- ComputeDivE( dive, 0,
- {Efield_aux[lev][0].get(),
- Efield_aux[lev][1].get(),
- Efield_aux[lev][2].get()},
- WarpX::CellSize(lev) );
- AverageAndPackScalarField( mf_avg[lev], dive, dcomp++, ngrow );
+ MultiFab divE( ba, DistributionMap(lev), 1, 0 );
+#ifdef WARPX_USE_PSATD
+ spectral_solver_fp[lev]->ComputeSpectralDivE( Efield_aux[lev], divE );
+#else
+ ComputeDivE( divE, 0, {Efield_aux[lev][0].get(), Efield_aux[lev][1].get(),
+ Efield_aux[lev][2].get()}, WarpX::CellSize(lev) );
+#endif
+ AverageAndPackScalarField( mf_avg[lev], divE, dcomp++, ngrow );
} else {
amrex::Abort("unknown field in fields_to_plot: " + fieldname);
}