diff options
author | 2021-05-19 13:32:08 -0700 | |
---|---|---|
committer | 2021-05-19 13:32:08 -0700 | |
commit | 5208f4ea967212178a8524a531cf2329fcb33318 (patch) | |
tree | 06dc8cec72eaaf21f76964240900d946827b35be /Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms | |
parent | b6b0aa350ebc58ed32c92cfc7b873f95a10b0e26 (diff) | |
download | WarpX-5208f4ea967212178a8524a531cf2329fcb33318.tar.gz WarpX-5208f4ea967212178a8524a531cf2329fcb33318.tar.zst WarpX-5208f4ea967212178a8524a531cf2329fcb33318.zip |
Set guard cells for allocation using field solver stencil and particle shape factor (#1969)
Diffstat (limited to 'Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms')
4 files changed, 32 insertions, 0 deletions
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 @@ -109,6 +109,14 @@ struct CartesianCKCAlgorithm { } /** + * \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 static amrex::Real UpwardDx ( 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 @@ -56,6 +56,14 @@ struct CartesianNodalAlgorithm { } /** + * \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 * account the staggering; but for `CartesianNodalAlgorithm`, they are equivalent) */ 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 @@ -56,6 +56,14 @@ struct CartesianYeeAlgorithm { } /** + * \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 static amrex::Real UpwardDx ( 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. |