From 0e14e871a29027ded4258b079abd63ada94bc874 Mon Sep 17 00:00:00 2001 From: Remi Lehe Date: Mon, 27 Jan 2020 16:08:21 -0800 Subject: Implement nodal solver --- .../FiniteDifferenceSolver.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp') diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp index d89e6e9d3..94499200a 100644 --- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp +++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp @@ -1,9 +1,19 @@ +#include "WarpXAlgorithmSelection.H" +#ifdef WARPX_DIM_RZ + #include "FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H" +#else + #include "FiniteDifferenceAlgorithms/YeeAlgorithm.H" + #include "FiniteDifferenceAlgorithms/CKCAlgorithm.H" + #include "FiniteDifferenceAlgorithms/NodalAlgorithm.H" +#endif #include "FiniteDifferenceSolver.H" #include "WarpX.H" // Constructor -FiniteDifferenceSolver::FiniteDifferenceSolver ( int const fdtd_algo, - std::array cell_size ) { +FiniteDifferenceSolver::FiniteDifferenceSolver ( + int const fdtd_algo, + std::array cell_size, + int do_nodal ) { // Register the type of finite-difference algorithm m_fdtd_algo = fdtd_algo; @@ -13,11 +23,14 @@ FiniteDifferenceSolver::FiniteDifferenceSolver ( int const fdtd_algo, m_dr = cell_size[0]; m_nmodes = WarpX::GetInstance().n_rz_azimuthal_modes; m_rmin = WarpX::GetInstance().Geom(0).ProbLo(0); - if (fdtd_algo == MaxwellSolverAlgo::Yee){ + if (fdtd_algo == MaxwellSolverAlgo::Yee) { CylindricalYeeAlgorithm::InitializeStencilCoefficients( cell_size, stencil_coefs_r, stencil_coefs_z ); #else - if (fdtd_algo == MaxwellSolverAlgo::Yee){ + 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) { -- cgit v1.2.3