aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp')
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp24
1 files changed, 19 insertions, 5 deletions
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp
index c333c6d17..06f5960a6 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp
+++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp
@@ -1,15 +1,22 @@
#include "WarpXAlgorithmSelection.H"
#ifdef WARPX_DIM_RZ
- #include "FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H"
+# include "FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H"
#else
- #include "FiniteDifferenceAlgorithms/YeeAlgorithm.H"
- #include "FiniteDifferenceAlgorithms/CKCAlgorithm.H"
- #include "FiniteDifferenceAlgorithms/NodalAlgorithm.H"
+# include "FiniteDifferenceAlgorithms/YeeAlgorithm.H"
+# include "FiniteDifferenceAlgorithms/CKCAlgorithm.H"
+# include "FiniteDifferenceAlgorithms/NodalAlgorithm.H"
#endif
#include "FiniteDifferenceSolver.H"
#include "WarpX.H"
-// Constructor
+/* \brief Initialize the finite-difference Maxwell solver (for a given refinement level)
+ *
+ * This function initializes the stencil coefficients for the chosen finite-difference algorithm
+ *
+ * \param fdtd_algo Identifies the chosen algorithm, as defined in WarpXAlgorithmSelection.H
+ * \param cell_size Cell size along each dimension, for the chosen refinement level
+ * \param do_nodal Whether the solver is applied to a nodal or staggered grid
+ */
FiniteDifferenceSolver::FiniteDifferenceSolver (
int const fdtd_algo,
std::array<amrex::Real,3> cell_size,
@@ -25,18 +32,25 @@ FiniteDifferenceSolver::FiniteDifferenceSolver (
m_nmodes = WarpX::GetInstance().n_rz_azimuthal_modes;
m_rmin = WarpX::GetInstance().Geom(0).ProbLo(0);
if (fdtd_algo == MaxwellSolverAlgo::Yee) {
+
CylindricalYeeAlgorithm::InitializeStencilCoefficients( cell_size,
stencil_coefs_r, stencil_coefs_z );
#else
if (do_nodal) {
+
NodalAlgorithm::InitializeStencilCoefficients( cell_size,
stencil_coefs_x, stencil_coefs_y, stencil_coefs_z );
+
} else if (fdtd_algo == MaxwellSolverAlgo::Yee) {
+
YeeAlgorithm::InitializeStencilCoefficients( cell_size,
stencil_coefs_x, stencil_coefs_y, stencil_coefs_z );
+
} else if (fdtd_algo == MaxwellSolverAlgo::CKC) {
+
CKCAlgorithm::InitializeStencilCoefficients( cell_size,
stencil_coefs_x, stencil_coefs_y, stencil_coefs_z );
+
#endif
} else {
amrex::Abort("Unknown algorithm");