From ada6fc49cf16f40d1764d3a95c8338126360f329 Mon Sep 17 00:00:00 2001 From: Revathi Jambunathan <41089244+RevathiJambunathan@users.noreply.github.com> Date: Mon, 7 Nov 2022 13:52:46 -0800 Subject: 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. --- Source/Parallelization/WarpXRegrid.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'Source/Parallelization/WarpXRegrid.cpp') 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); -- cgit v1.2.3