aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H
diff options
context:
space:
mode:
authorGravatar Remi Lehe <remi.lehe@normalesup.org> 2020-01-10 14:11:57 -0800
committerGravatar Remi Lehe <remi.lehe@normalesup.org> 2020-01-10 14:11:57 -0800
commitb178920da516e66a21a283c8b794a63b491d24a2 (patch)
tree8d20a64ad808662554c35b74f53c4f1c3df1c6ab /Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H
parent9035ee165054e25aedf98d97f16786d8d5f2965a (diff)
downloadWarpX-b178920da516e66a21a283c8b794a63b491d24a2.tar.gz
WarpX-b178920da516e66a21a283c8b794a63b491d24a2.tar.zst
WarpX-b178920da516e66a21a283c8b794a63b491d24a2.zip
Update Evolve B
Diffstat (limited to 'Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H')
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H24
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;
};