From 5208f4ea967212178a8524a531cf2329fcb33318 Mon Sep 17 00:00:00 2001 From: Revathi Jambunathan <41089244+RevathiJambunathan@users.noreply.github.com> Date: Wed, 19 May 2021 13:32:08 -0700 Subject: Set guard cells for allocation using field solver stencil and particle shape factor (#1969) --- .../FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H | 8 ++++++++ .../FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H | 8 ++++++++ .../FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H | 8 ++++++++ .../FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H | 8 ++++++++ 4 files changed, 32 insertions(+) (limited to 'Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms') diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H index fd63a44a7..da1a8c9a9 100644 --- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H +++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H @@ -108,6 +108,14 @@ struct CartesianCKCAlgorithm { return delta_t; } + /** + * \brief Returns maximum number of guard cells required by the field-solve + */ + static amrex::IntVect GetMaxGuardCell () { + // The ckc solver requires one guard cell in each dimension + return (amrex::IntVect(AMREX_D_DECL(1,1,1))); + } + /** * Perform derivative along x on a cell-centered grid, from a nodal field `F` */ AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H index 5bd7e88bc..68ecdfc60 100644 --- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H +++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H @@ -55,6 +55,14 @@ struct CartesianNodalAlgorithm { return delta_t; } + /** + * \brief Returns maximum number of guard cells required by the field-solve + */ + static amrex::IntVect GetMaxGuardCell () { + // The nodal solver requires one guard cell in each dimension + return (amrex::IntVect(AMREX_D_DECL(1,1,1))); + } + /** * Perform derivative along x * (For a solver on a staggered grid, `UpwardDx` and `DownwardDx` take into diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H index ca605a384..4fd76a699 100644 --- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H +++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H @@ -55,6 +55,14 @@ struct CartesianYeeAlgorithm { return delta_t; } + /** + * \brief Returns maximum number of guard cells required by the field-solve + */ + static amrex::IntVect GetMaxGuardCell () { + // The yee solver requires one guard cell in each dimension + return (amrex::IntVect(AMREX_D_DECL(1,1,1))); + } + /** * Perform derivative along x on a cell-centered grid, from a nodal field `F`*/ AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H index 2fb0c8e80..2283df09a 100644 --- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H +++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H @@ -65,6 +65,14 @@ struct CylindricalYeeAlgorithm { return delta_t; } + /** + * \brief Returns maximum number of guard cells required by the field-solve + */ + static amrex::IntVect GetMaxGuardCell () { + // The cylindrical solver requires one guard cell in each dimension + return (amrex::IntVect(AMREX_D_DECL(1,1,1))); + } + /** Applies the differential operator `1/r * d(rF)/dr`, * where `F` is on a *nodal* grid in `r` * and the differential operator is evaluated on a *cell-centered* grid. -- cgit v1.2.3