aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms
diff options
context:
space:
mode:
authorGravatar Revathi Jambunathan <41089244+RevathiJambunathan@users.noreply.github.com> 2021-05-19 13:32:08 -0700
committerGravatar GitHub <noreply@github.com> 2021-05-19 13:32:08 -0700
commit5208f4ea967212178a8524a531cf2329fcb33318 (patch)
tree06dc8cec72eaaf21f76964240900d946827b35be /Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms
parentb6b0aa350ebc58ed32c92cfc7b873f95a10b0e26 (diff)
downloadWarpX-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')
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H8
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H8
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H8
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H8
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.