aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/SpectralSolver
diff options
context:
space:
mode:
authorGravatar David Grote <grote1@llnl.gov> 2020-10-19 17:47:30 -0700
committerGravatar GitHub <noreply@github.com> 2020-10-19 17:47:30 -0700
commit4f32c2eb2961436118412f3d3ec53cc12d1b65f1 (patch)
treea7fbc178c2a6fccc86f31ebe8fd8f12859591d15 /Source/FieldSolver/SpectralSolver
parent1e7de3b536c974327513d17f9aee156d93030825 (diff)
downloadWarpX-4f32c2eb2961436118412f3d3ec53cc12d1b65f1.tar.gz
WarpX-4f32c2eb2961436118412f3d3ec53cc12d1b65f1.tar.zst
WarpX-4f32c2eb2961436118412f3d3ec53cc12d1b65f1.zip
RZ PSATD, in forward transforms, initialize the copies to zero if needed (#1445)
Diffstat (limited to 'Source/FieldSolver/SpectralSolver')
-rw-r--r--Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.cpp b/Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.cpp
index c98c79835..c2d8dfe94 100644
--- a/Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.cpp
+++ b/Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.cpp
@@ -423,6 +423,11 @@ SpectralFieldDataRZ::ForwardTransform (amrex::MultiFab const & field_mf, int con
// field_mf does not.
amrex::Box const& realspace_bx = tempHTransformed[mfi].box();
+ if ( !(field_mf[mfi].box().contains(field_mf_copy[mfi].box())) ) {
+ // If field_mf[mfi] is smaller than field_mf_copy[mfi], then fill field_mf_copy[mfi] with
+ // zeros so that all of it is initialized.
+ field_mf_copy[mfi].setVal<amrex::RunOn::Device>(0._rt, realspace_bx, 0, ncomp);
+ }
field_mf_copy[mfi].copy<amrex::RunOn::Device>(field_mf[mfi], i_comp*ncomp, 0, ncomp);
multi_spectral_hankel_transformer[mfi].PhysicalToSpectral_Scalar(field_mf_copy[mfi], tempHTransformedSplit[mfi]);
@@ -456,6 +461,12 @@ SpectralFieldDataRZ::ForwardTransform (amrex::MultiFab const & field_mf_r, int c
amrex::Box const& realspace_bx = tempHTransformed[mfi].box();
+ if ( !(field_mf_r[mfi].box().contains(field_mf_r_copy[mfi].box())) ) {
+ // If field_mf_r[mfi] is smaller than field_mf_r_copy[mfi], then fill field_mf_r_copy[mfi] with
+ // zeros so that all of it is initialized.
+ field_mf_r_copy[mfi].setVal<amrex::RunOn::Device>(0._rt, realspace_bx, 0, 2*n_rz_azimuthal_modes);
+ field_mf_t_copy[mfi].setVal<amrex::RunOn::Device>(0._rt, realspace_bx, 0, 2*n_rz_azimuthal_modes);
+ }
field_mf_r_copy[mfi].copy<amrex::RunOn::Device>(field_mf_r[mfi], 0, 0, 1); // Real part of mode 0
field_mf_t_copy[mfi].copy<amrex::RunOn::Device>(field_mf_t[mfi], 0, 0, 1); // Real part of mode 0
field_mf_r_copy[mfi].setVal<amrex::RunOn::Device>(0._rt, realspace_bx, 1, 1); // Imaginary part of mode 0