diff options
author | 2020-01-27 16:08:21 -0800 | |
---|---|---|
committer | 2020-01-27 16:16:16 -0800 | |
commit | 0e14e871a29027ded4258b079abd63ada94bc874 (patch) | |
tree | 3bd320bc55578f90928af1defa5f7f71f9e79e09 /Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp | |
parent | 6d77161d6e80b943230c2969c15674fe044cdb30 (diff) | |
download | WarpX-0e14e871a29027ded4258b079abd63ada94bc874.tar.gz WarpX-0e14e871a29027ded4258b079abd63ada94bc874.tar.zst WarpX-0e14e871a29027ded4258b079abd63ada94bc874.zip |
Implement nodal solver
Diffstat (limited to 'Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp')
-rw-r--r-- | Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp | 21 |
1 files changed, 17 insertions, 4 deletions
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<amrex::Real,3> cell_size ) { +FiniteDifferenceSolver::FiniteDifferenceSolver ( + int const fdtd_algo, + std::array<amrex::Real,3> 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) { |