7#include "FieldLayout/FieldLayout.h"
8#include "MaxwellSolvers/AbsorbingBC.h"
9#include "MaxwellSolvers/Maxwell.h"
10#include "Meshes/UniformCartesian.h"
11#include "Particle/ParticleBase.h"
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;
33 using SourceVector_t =
typename SourceField::value_type;
47 void solve()
override;
59 scalar
getDt()
const {
return dt; }
90 typename SourceField::Mesh_t* mesh_mp;
100#include "FDTDSolverBase.hpp"
Base class for FDTD solvers in the ippl library.
Definition FDTDSolverBase.h:28
void evaluate_EB()
Evaluates the electric and magnetic fields.
Definition FDTDSolverBase.hpp:92
void applyBCs()
Applies the boundary conditions.
Definition FDTDSolverBase.hpp:72
virtual void initialize()=0
Initializes the solver. This is a pure virtual function.
void setPeriodicBoundaryConditions()
Sets periodic boundary conditions.
Definition FDTDSolverBase.hpp:37
scalar getDt() const
Gets the time step size.
Definition FDTDSolverBase.h:59
virtual void step()=0
Steps the solver forward in time. This is a pure virtual function.
void solve() override
Solves the FDTD equations.
Definition FDTDSolverBase.hpp:23
void timeShift()
Shifts the saved fields in time.
Definition FDTDSolverBase.hpp:60
Definition FieldLayout.h:166