27 template <
typename EMField,
typename SourceField, fdtd_bc boundary_conditions>
30 constexpr static unsigned Dim = EMField::dim;
31 using scalar =
typename EMField::value_type::value_type;
47 void solve()
override;
void evaluate_EB()
Evaluates the electric and magnetic fields.
FieldLayout< Dim > * layout_mp
void applyBCs()
Applies the boundary conditions.
Vector< typename EMField::value_type::value_type, Dim > Vector_t
virtual void initialize()=0
Initializes the solver. This is a pure virtual function.
void setPeriodicBoundaryConditions()
Sets periodic boundary conditions.
typename SourceField::value_type SourceVector_t
static constexpr unsigned Dim
scalar getDt() const
Gets the time step size.
virtual void step()=0
Steps the solver forward in time. This is a pure virtual function.
void solve() override
Solves the FDTD equations.
void timeShift()
Shifts the saved fields in time.
SourceField::Mesh_t * mesh_mp
typename EMField::value_type::value_type scalar
FDTDSolverBase(SourceField &source, EMField &E, EMField &B)
Constructor for the FDTDSolverBase class.