From 69b0a98b3e8495eb2eca4269533516d66f3ff6f3 Mon Sep 17 00:00:00 2001 From: Weiqun Zhang Date: Fri, 27 Sep 2019 11:41:49 -0700 Subject: nodal auxilary data --- Source/Parallelization/WarpXRegrid.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'Source/Parallelization/WarpXRegrid.cpp') diff --git a/Source/Parallelization/WarpXRegrid.cpp b/Source/Parallelization/WarpXRegrid.cpp index 5441755f5..4ae2b6dca 100644 --- a/Source/Parallelization/WarpXRegrid.cpp +++ b/Source/Parallelization/WarpXRegrid.cpp @@ -1,5 +1,6 @@ #include +#include #include using namespace amrex; @@ -91,7 +92,7 @@ WarpX::RemakeLevel (int lev, Real time, const BoxArray& ba, const DistributionMa // Aux patch - if (lev == 0) + if (lev == 0 && field_gathering_algo != GatheringAlgo::MomentumConserving) { for (int idim = 0; idim < 3; ++idim) { Bfield_aux[lev][idim].reset(new MultiFab(*Bfield_fp[lev][idim], amrex::make_alias, 0, Bfield_aux[lev][idim]->nComp())); -- cgit v1.2.3 From 4e31df96d3e73ddc8d9e876c84a5bdb3989dceb0 Mon Sep 17 00:00:00 2001 From: Weiqun Zhang Date: Mon, 30 Sep 2019 09:40:45 -0700 Subject: no need to have an extra ghost cell if do_nodal is true --- Source/Parallelization/WarpXRegrid.cpp | 2 +- Source/WarpX.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'Source/Parallelization/WarpXRegrid.cpp') diff --git a/Source/Parallelization/WarpXRegrid.cpp b/Source/Parallelization/WarpXRegrid.cpp index 4ae2b6dca..649ea80de 100644 --- a/Source/Parallelization/WarpXRegrid.cpp +++ b/Source/Parallelization/WarpXRegrid.cpp @@ -92,7 +92,7 @@ WarpX::RemakeLevel (int lev, Real time, const BoxArray& ba, const DistributionMa // Aux patch - if (lev == 0 && field_gathering_algo != GatheringAlgo::MomentumConserving) + if (lev == 0 && Bfield_aux[0][0]->ixType() == Bfield_fp[0][0]->ixType()) { for (int idim = 0; idim < 3; ++idim) { Bfield_aux[lev][idim].reset(new MultiFab(*Bfield_fp[lev][idim], amrex::make_alias, 0, Bfield_aux[lev][idim]->nComp())); diff --git a/Source/WarpX.cpp b/Source/WarpX.cpp index bac0d4121..ba3c41d3e 100644 --- a/Source/WarpX.cpp +++ b/Source/WarpX.cpp @@ -792,8 +792,8 @@ WarpX::AllocLevelMFs (int lev, const BoxArray& ba, const DistributionMapping& dm ncomps = n_rz_azimuthal_modes*2 - 1; #endif - bool is_nodal = (field_gathering_algo == GatheringAlgo::MomentumConserving); - IntVect ngextra(static_cast(is_nodal)); + bool aux_is_nodal = (field_gathering_algo == GatheringAlgo::MomentumConserving); + IntVect ngextra(static_cast(aux_is_nodal and !do_nodal)); // // The fine patch @@ -851,7 +851,7 @@ WarpX::AllocLevelMFs (int lev, const BoxArray& ba, const DistributionMapping& dm // // The Aux patch (i.e., the full solution) // - if (is_nodal) + if (aux_is_nodal and !do_nodal) { BoxArray const nba = amrex::convert(ba,IntVect::TheUnitVector()); Bfield_aux[lev][0].reset( new MultiFab(nba,dm,ncomps,ngE)); @@ -943,7 +943,7 @@ WarpX::AllocLevelMFs (int lev, const BoxArray& ba, const DistributionMapping& dm cba.coarsen(refRatio(lev-1)); if (n_field_gather_buffer > 0 || mypc->nSpeciesGatherFromMainGrid() > 0) { - if (field_gathering_algo == GatheringAlgo::MomentumConserving) { + if (aux_is_nodal) { BoxArray const& cnba = amrex::convert(cba,IntVect::TheUnitVector()); Bfield_cax[lev][0].reset( new MultiFab(cnba,dm,ncomps,ngE)); Bfield_cax[lev][1].reset( new MultiFab(cnba,dm,ncomps,ngE)); -- cgit v1.2.3 From ae5a90efcbef57d4619ad1111c52a46dbdb5bcd6 Mon Sep 17 00:00:00 2001 From: Weiqun Zhang Date: Thu, 24 Oct 2019 09:29:29 -0700 Subject: cleanup and comment --- Docs/source/running_cpp/parameters.rst | 2 -- Source/Parallelization/WarpXRegrid.cpp | 1 - Source/WarpX.cpp | 5 +++-- 3 files changed, 3 insertions(+), 5 deletions(-) (limited to 'Source/Parallelization/WarpXRegrid.cpp') diff --git a/Docs/source/running_cpp/parameters.rst b/Docs/source/running_cpp/parameters.rst index b0791cc75..59bfbb14e 100644 --- a/Docs/source/running_cpp/parameters.rst +++ b/Docs/source/running_cpp/parameters.rst @@ -608,8 +608,6 @@ Numerics and algorithms - ``direct``: simpler current deposition algorithm, described in the section :doc:`../theory/picsar_theory`. Note that this algorithm is not strictly charge-conserving. - v - * ``algo.charge_deposition`` (`string`, optional) The algorithm for the charge density deposition. Available options are: diff --git a/Source/Parallelization/WarpXRegrid.cpp b/Source/Parallelization/WarpXRegrid.cpp index 649ea80de..2ae167283 100644 --- a/Source/Parallelization/WarpXRegrid.cpp +++ b/Source/Parallelization/WarpXRegrid.cpp @@ -1,6 +1,5 @@ #include -#include #include using namespace amrex; diff --git a/Source/WarpX.cpp b/Source/WarpX.cpp index a0362dd57..9ba0741bb 100644 --- a/Source/WarpX.cpp +++ b/Source/WarpX.cpp @@ -876,7 +876,8 @@ WarpX::AllocLevelMFs (int lev, const BoxArray& ba, const DistributionMapping& dm // if (aux_is_nodal and !do_nodal) { - BoxArray const nba = amrex::convert(ba,IntVect::TheUnitVector()); + // Create aux multifabs on Nodal Box Array + BoxArray const nba = amrex::convert(ba,IntVect::TheNodeVector()); Bfield_aux[lev][0].reset( new MultiFab(nba,dm,ncomps,ngE)); Bfield_aux[lev][1].reset( new MultiFab(nba,dm,ncomps,ngE)); Bfield_aux[lev][2].reset( new MultiFab(nba,dm,ncomps,ngE)); @@ -967,7 +968,7 @@ WarpX::AllocLevelMFs (int lev, const BoxArray& ba, const DistributionMapping& dm if (n_field_gather_buffer > 0 || mypc->nSpeciesGatherFromMainGrid() > 0) { if (aux_is_nodal) { - BoxArray const& cnba = amrex::convert(cba,IntVect::TheUnitVector()); + BoxArray const& cnba = amrex::convert(cba,IntVect::TheNodeVector()); Bfield_cax[lev][0].reset( new MultiFab(cnba,dm,ncomps,ngE)); Bfield_cax[lev][1].reset( new MultiFab(cnba,dm,ncomps,ngE)); Bfield_cax[lev][2].reset( new MultiFab(cnba,dm,ncomps,ngE)); -- cgit v1.2.3