diff options
Diffstat (limited to 'Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H')
-rw-r--r-- | Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H index c1fdef5dd..98a34e634 100644 --- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H +++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H @@ -14,11 +14,23 @@ class FiniteDifferenceSolver using ConstVectorField = std::array< std::unique_ptr<amrex::MultiFab const>, 3 >; // Constructor - void FiniteDifferenceSolver( std::array<Real,3> dx ); + void FiniteDifferenceSolver::FiniteDifferenceSolver ( std::array<Real,3> cell_size ) { + // Select algorithm (The choice of algorithm is a runtime option, + // but we compile code for each algorithm, using templates) + 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 ); + } else { + amrex::Abort("Unknown algorithm"); + } + }; - void EvolveB( VectorField Bfield, - ConstVectorField Efield, - amrex::Real dt ) const; + void EvolveB ( VectorField Bfield, + ConstVectorField Efield, + amrex::Real dt ) const; }; @@ -31,7 +43,9 @@ class FiniteDifferenceSolver amrex::Gpu::ManagedVector<amrex::Real> stencil_coefs_z; template< typename fdtd_algo > - void EvolveB + void EvolveBwithAlgo ( VectorField Bfield, + ConstVectorField Efield, + amrex::Real dt ) const; }; |