IPPL (Independent Parallel Particle Layer)
IPPL
Loading...
Searching...
No Matches
NonStandardFDTDSolver.h
Go to the documentation of this file.
1
10
11#ifndef IPPL_NON_STANDARD_FDTD_SOLVER_H
12#define IPPL_NON_STANDARD_FDTD_SOLVER_H
13
14#include <cstddef>
15using std::size_t;
16#include "Types/Vector.h"
17
24
25namespace ippl {
26
36
37 template <typename EMField, typename SourceField, fdtd_bc boundary_conditions = periodic>
38 class NonStandardFDTDSolver : public FDTDSolverBase<EMField, SourceField, boundary_conditions> {
39 public:
47 NonStandardFDTDSolver(SourceField& source, EMField& E, EMField& B);
48
49 constexpr static unsigned Dim = EMField::dim; // Dimension of the electromagnetic field.
50 using scalar = typename EMField::value_type::value_type; // Scalar type used in the
51 // electromagnetic field.
52 using Vector_t = Vector<typename EMField::value_type::value_type,
53 Dim>; // Vector type used in the electromagnetic field.
55 typename SourceField::value_type; // Vector type used in the source field.
56
66 template <typename scalar>
74
78 void step() override;
82 void initialize() override;
83 };
84} // namespace ippl
85
87#endif
Impelmentation of the NonStandardFDTDSolver class functions.
Definition Archive.h:20
FDTDSolverBase(SourceField &source, EMField &E, EMField &B)
static constexpr unsigned Dim
typename SourceField::value_type SourceVector_t
Vector< typename EMField::value_type::value_type, Dim > Vector_t
void step() override
Advances the simulation by one time step.
NonStandardFDTDSolver(SourceField &source, EMField &E, EMField &B)
Constructs a NonStandardFDTDSolver.
void initialize() override
Initializes the solver.
typename EMField::value_type::value_type scalar
A structure representing nondispersive coefficients.