|
IPPL (Independent Parallel Particle Layer)
IPPL
|
A solver for Maxwell's equations using a non-standard Finite-Difference Time-Domain (FDTD) method. More...
#include <NonStandardFDTDSolver.h>
Classes | |
| struct | nondispersive |
| A structure representing nondispersive coefficients. More... | |
Public Types | |
| using | scalar = typename EMField::value_type::value_type |
| using | Vector_t |
| using | SourceVector_t |
Public Member Functions | |
| NonStandardFDTDSolver (SourceField &source, EMField &E, EMField &B) | |
| Constructs a NonStandardFDTDSolver. | |
| void | step () override |
| Advances the simulation by one time step. | |
| void | initialize () override |
| Initializes the solver. | |
| void | solve () override |
| Solves the FDTD equations. | |
| void | setPeriodicBoundaryConditions () |
| Sets periodic boundary conditions. | |
| scalar | getDt () const |
| Gets the time step size. | |
| void | timeShift () |
| Shifts the saved fields in time. | |
| void | evaluate_EB () |
| Evaluates the electric and magnetic fields. | |
| virtual void | setSources (SourceField &four_current) |
| void | setEMFields (EMField &E, EMField &B) |
| void | mergeParameters (const ParameterList ¶ms) |
Public Attributes | |
| SourceField | A_n |
| SourceField | A_np1 |
| SourceField | A_nm1 |
Static Public Attributes | |
| static constexpr unsigned | Dim = EMField::dim |
Protected Member Functions | |
| void | applyBCs () |
| Applies the boundary conditions. | |
Protected Attributes | |
| SourceField::Mesh_t * | mesh_mp |
| FieldLayout< Dim > * | layout_mp |
| NDIndex< Dim > | domain_m |
| Vector_t | hr_m |
| Vector< int, Dim > | nr_m |
| scalar | dt |
| ParameterList | params_m |
| SourceField * | JN_mp |
| EMField * | En_mp |
| EMField * | Bn_mp |
A solver for Maxwell's equations using a non-standard Finite-Difference Time-Domain (FDTD) method.
| EMField | The type representing the electromagnetic field. |
| SourceField | The type representing the source field. |
| boundary_conditions | The boundary conditions to be applied (default is periodic). |
Definition at line 38 of file NonStandardFDTDSolver.h.
| using ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::scalar = typename EMField::value_type::value_type |
Definition at line 50 of file NonStandardFDTDSolver.h.
| using ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::SourceVector_t |
Definition at line 54 of file NonStandardFDTDSolver.h.
| using ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::Vector_t |
Definition at line 52 of file NonStandardFDTDSolver.h.
| ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::NonStandardFDTDSolver | ( | SourceField & | source, |
| EMField & | E, | ||
| EMField & | B ) |
Constructs a NonStandardFDTDSolver.
Constructor for the NonStandardFDTDSolver class.
| source | The source field. |
| E | The electric field. |
| B | The magnetic field. |
This constructor initializes the NonStandardFDTDSolver with the given source field and electromagnetic fields. It checks the dispersion-free CFL condition and initializes the solver.
| source | The source field. |
| E | The electric field. |
| B | The magnetic field. |
Definition at line 20 of file NonStandardFDTDSolver.hpp.
References ippl::FDTDSolverBase< EMField, SourceField, periodic >::FDTDSolverBase(), and initialize().
|
protectedinherited |
Applies the boundary conditions.
Applies the specified boundary conditions (periodic or absorbing) to the fields.
Definition at line 88 of file FDTDSolverBase.hpp.
References A_n.
Referenced by ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::step(), and ippl::StandardFDTDSolver< EMField, SourceField, boundary_conditions >::step().
|
inherited |
Evaluates the electric and magnetic fields.
Computes the electric and magnetic fields based on the current, previous, and next time step field values, as well as the source field.
Definition at line 77 of file FDTDSolverBase.hpp.
|
inlineinherited |
|
overridevirtual |
Initializes the solver.
This function initializes the solver by setting up the layout, mesh, and fields. It retrieves the mesh spacing, domain, and mesh size, and initializes the fields to zero.
Implements ippl::FDTDSolverBase< EMField, SourceField, periodic >.
Definition at line 118 of file NonStandardFDTDSolver.hpp.
References ippl::FDTDSolverBase< EMField, SourceField, periodic >::A_n, ippl::FDTDSolverBase< EMField, SourceField, periodic >::A_nm1, ippl::FDTDSolverBase< EMField, SourceField, periodic >::A_np1, Dim, ippl::FDTDSolverBase< EMField, SourceField, periodic >::domain_m, ippl::FDTDSolverBase< EMField, SourceField, periodic >::dt, ippl::FDTDSolverBase< EMField, SourceField, periodic >::hr_m, ippl::FDTDSolverBase< EMField, SourceField, periodic >::JN_mp, ippl::FDTDSolverBase< EMField, SourceField, periodic >::layout_mp, ippl::FDTDSolverBase< EMField, SourceField, periodic >::mesh_mp, ippl::FDTDSolverBase< EMField, SourceField, periodic >::nr_m, ippl::periodic, and ippl::FDTDSolverBase< EMField, SourceField, periodic >::setPeriodicBoundaryConditions().
Referenced by NonStandardFDTDSolver().
|
inlineinherited |
|
inlineinherited |
|
inherited |
Sets periodic boundary conditions.
Configures the solver to use periodic boundary conditions by setting the appropriate boundary conditions for the fields.
Definition at line 52 of file FDTDSolverBase.hpp.
Referenced by ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize(), and ippl::StandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize().
|
inlinevirtualinherited |
|
overridevirtualinherited |
Solves the FDTD equations.
Advances the simulation by one time step, shifts the time for the fields, and evaluates the electric and magnetic fields at the new time.
Implements ippl::Maxwell< EMField, SourceField >.
Definition at line 47 of file FDTDSolverBase.hpp.
|
overridevirtual |
Advances the simulation by one time step.
This function updates the fields by one time step using non-standard FDTD method. It calculates the new field values based on the current and previous field values, as well as the source field. The boundary conditions are applied after the update.
Implements ippl::FDTDSolverBase< EMField, SourceField, periodic >.
Definition at line 39 of file NonStandardFDTDSolver.hpp.
References ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::nondispersive< scalar >::a1, ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::nondispersive< scalar >::a2, ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::nondispersive< scalar >::a4, ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::nondispersive< scalar >::a6, ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::nondispersive< scalar >::a8, ippl::FDTDSolverBase< EMField, SourceField, periodic >::A_n, ippl::FDTDSolverBase< EMField, SourceField, periodic >::A_nm1, ippl::FDTDSolverBase< EMField, SourceField, periodic >::A_np1, ippl::absorbing, ippl::FDTDSolverBase< EMField, SourceField, periodic >::applyBCs(), ippl::FDTDSolverBase< EMField, SourceField, periodic >::dt, ippl::getRangePolicy(), ippl::FDTDSolverBase< EMField, SourceField, periodic >::hr_m, ippl::Maxwell< EMField, SourceField >::JN_mp, ippl::FDTDSolverBase< EMField, SourceField, periodic >::layout_mp, and ippl::FDTDSolverBase< EMField, SourceField, periodic >::nr_m.
|
inherited |
Shifts the saved fields in time.
Copies the current field values to the previous time step field and the next time step field values to the current field.
Definition at line 68 of file FDTDSolverBase.hpp.
|
inherited |
Definition at line 61 of file FDTDSolverBase.h.
Referenced by applyBCs(), ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize(), ippl::StandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize(), ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::step(), and ippl::StandardFDTDSolver< EMField, SourceField, boundary_conditions >::step().
|
inherited |
Definition at line 63 of file FDTDSolverBase.h.
Referenced by ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize(), ippl::StandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize(), ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::step(), and ippl::StandardFDTDSolver< EMField, SourceField, boundary_conditions >::step().
|
inherited |
Definition at line 62 of file FDTDSolverBase.h.
Referenced by ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize(), ippl::StandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize(), ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::step(), and ippl::StandardFDTDSolver< EMField, SourceField, boundary_conditions >::step().
|
protectedinherited |
|
staticconstexpr |
Definition at line 49 of file NonStandardFDTDSolver.h.
Referenced by initialize().
|
protectedinherited |
Definition at line 92 of file FDTDSolverBase.h.
Referenced by ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize(), and ippl::StandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize().
|
protectedinherited |
Definition at line 96 of file FDTDSolverBase.h.
Referenced by ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize(), ippl::StandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize(), ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::step(), and ippl::StandardFDTDSolver< EMField, SourceField, boundary_conditions >::step().
|
protectedinherited |
|
protectedinherited |
Definition at line 93 of file FDTDSolverBase.h.
Referenced by ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize(), ippl::StandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize(), ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::step(), and ippl::StandardFDTDSolver< EMField, SourceField, boundary_conditions >::step().
|
protectedinherited |
Definition at line 77 of file Maxwell.h.
Referenced by ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize(), and ippl::StandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize().
|
protectedinherited |
Definition at line 91 of file FDTDSolverBase.h.
Referenced by ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize(), ippl::StandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize(), ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::step(), and ippl::StandardFDTDSolver< EMField, SourceField, boundary_conditions >::step().
|
protectedinherited |
Definition at line 90 of file FDTDSolverBase.h.
Referenced by ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize(), and ippl::StandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize().
|
protectedinherited |
Definition at line 95 of file FDTDSolverBase.h.
Referenced by ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize(), ippl::StandardFDTDSolver< EMField, SourceField, boundary_conditions >::initialize(), ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::step(), and ippl::StandardFDTDSolver< EMField, SourceField, boundary_conditions >::step().
|
protectedinherited |