diff options
author | 2020-02-27 11:17:56 -0800 | |
---|---|---|
committer | 2020-02-27 11:17:56 -0800 | |
commit | 51e866e9a3f450d7767df97b0a2011cf65857c7a (patch) | |
tree | dd92e1108085a6d5f43039691cc39884230a7fb7 /Source/Diagnostics/FieldIO.cpp | |
parent | 6b345e38a9e312f2352c13b1e8e58399944d2798 (diff) | |
download | WarpX-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.cpp | 27 |
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); } |