aboutsummaryrefslogtreecommitdiff
path: root/Source/Parallelization/WarpXRegrid.cpp
diff options
context:
space:
mode:
authorGravatar Revathi Jambunathan <41089244+RevathiJambunathan@users.noreply.github.com> 2022-11-07 13:52:46 -0800
committerGravatar GitHub <noreply@github.com> 2022-11-07 13:52:46 -0800
commitada6fc49cf16f40d1764d3a95c8338126360f329 (patch)
treee28c28108cc75edcdbe7d67238d0d093618d9e71 /Source/Parallelization/WarpXRegrid.cpp
parent8f9da8cbfcbb304e7ee09531a64b567631a382e2 (diff)
downloadWarpX-ada6fc49cf16f40d1764d3a95c8338126360f329.tar.gz
WarpX-ada6fc49cf16f40d1764d3a95c8338126360f329.tar.zst
WarpX-ada6fc49cf16f40d1764d3a95c8338126360f329.zip
Load balancing bug fix: remake MultiFabs for Vay deposition, current centering, time averaging (#3508)
Additional MultiFabs for Vay deposition, current centering, and time averaging need to be allocated after load-balancing, otherwise the simulation crashes.
Diffstat (limited to '')
-rw-r--r--Source/Parallelization/WarpXRegrid.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/Source/Parallelization/WarpXRegrid.cpp b/Source/Parallelization/WarpXRegrid.cpp
index 4e0662fbf..794a48a5b 100644
--- a/Source/Parallelization/WarpXRegrid.cpp
+++ b/Source/Parallelization/WarpXRegrid.cpp
@@ -1,6 +1,6 @@
/* Copyright 2019 Andrew Myers, Ann Almgren, Axel Huebl
* David Grote, Maxence Thevenet, Michael Rowan
- * Remi Lehe, Weiqun Zhang, levinem
+ * Remi Lehe, Weiqun Zhang, levinem, Revathi Jambunathan
*
* This file is part of WarpX.
*
@@ -170,7 +170,16 @@ WarpX::RemakeLevel (int lev, Real /*time*/, const BoxArray& ba, const Distributi
RemakeMultiFab(Efield_fp[lev][idim], dm, true);
RemakeMultiFab(current_fp[lev][idim], dm, false);
RemakeMultiFab(current_store[lev][idim], dm, false);
-
+ if (current_deposition_algo == CurrentDepositionAlgo::Vay) {
+ RemakeMultiFab(current_fp_vay[lev][idim], dm, false);
+ }
+ if (do_current_centering) {
+ RemakeMultiFab(current_fp_nodal[lev][idim], dm, false);
+ }
+ if (fft_do_time_averaging) {
+ RemakeMultiFab(Efield_avg_fp[lev][idim], dm, true);
+ RemakeMultiFab(Bfield_avg_fp[lev][idim], dm, true);
+ }
#ifdef AMREX_USE_EB
if (WarpX::maxwell_solver_id == MaxwellSolverAlgo::Yee ||
WarpX::maxwell_solver_id == MaxwellSolverAlgo::ECT ||
@@ -264,6 +273,10 @@ WarpX::RemakeLevel (int lev, Real /*time*/, const BoxArray& ba, const Distributi
RemakeMultiFab(Bfield_cp[lev][idim], dm, true);
RemakeMultiFab(Efield_cp[lev][idim], dm, true);
RemakeMultiFab(current_cp[lev][idim], dm, false);
+ if (fft_do_time_averaging) {
+ RemakeMultiFab(Efield_avg_cp[lev][idim], dm, true);
+ RemakeMultiFab(Bfield_avg_cp[lev][idim], dm, true);
+ }
}
RemakeMultiFab(F_cp[lev], dm, true);
RemakeMultiFab(rho_cp[lev], dm, false);