aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms
diff options
context:
space:
mode:
Diffstat (limited to 'Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms')
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H15
1 files changed, 15 insertions, 0 deletions
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H
index 9258fdff4..5d160d865 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H
+++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H
@@ -19,6 +19,21 @@ struct CylindricalYeeAlgorithm {
stencil_coefs_z[0] = 1./cell_size[2]; // 1./dz
}
+ /** 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 *cell-centered* grid.
+ * The input parameter `r` is given at the cell-centered position*/
+ AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+ static amrex::Real UpwardDrr_over_r(
+ amrex::Array4<amrex::Real> const& F,
+ amrex::Real const r, int const dr,
+ amrex::Real const* coefs_r, int const n_coefs_r,
+ int const i, int const j, int const k, int const comp ) {
+
+ amrex::Real inv_dr = coefs_r[0];
+ return inv_dr*( (r+0.5*dr)*F(i+1,j,k,comp) - (r-0.5*dr)*F(i,j,k,comp) );
+ };
+
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
static amrex::Real UpwardDr(
amrex::Array4<amrex::Real> const& F,