diff options
Diffstat (limited to 'Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H')
-rw-r--r-- | Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H index e60ceed3e..31f8008bf 100644 --- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H +++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H @@ -9,6 +9,7 @@ #define WARPX_FINITE_DIFFERENCE_SOLVER_H_ #include <AMReX_MultiFab.H> +#include "MacroscopicProperties/MacroscopicProperties.H" #include "BoundaryConditions/PML.H" /** @@ -54,6 +55,24 @@ class FiniteDifferenceSolver void ComputeDivE ( const std::array<std::unique_ptr<amrex::MultiFab>,3>& Efield, amrex::MultiFab& divE ); + /** + * \brief Macroscopic E-update for non-vacuum medium using the user-selected + * finite-difference algorithm and macroscopic sigma-method defined in + * WarpXAlgorithmSelection.H + * + * \param[out] Efield vector of electric field MultiFabs updated at a given level + * \param[in] Bfield vector of magnetic field MultiFabs at a given level + * \param[in] Jfield vector of current density MultiFabs at a given level + * \param[in] dt timestep of the simulation + * \param[in] macroscopic_properties contains user-defined properties of the medium. + */ + + void MacroscopicEvolveE ( std::array< std::unique_ptr<amrex::MultiFab>, 3>& Efield, + std::array< std::unique_ptr<amrex::MultiFab>, 3> const& Bfield, + std::array< std::unique_ptr<amrex::MultiFab>, 3 > const& Jfield, + amrex::Real const dt, + std::unique_ptr<MacroscopicProperties> const& macroscopic_properties); + void EvolveBPML ( std::array< amrex::MultiFab*, 3 > Bfield, std::array< amrex::MultiFab*, 3 > const Efield, amrex::Real const dt ); @@ -146,6 +165,14 @@ class FiniteDifferenceSolver amrex::MultiFab& divE ); template< typename T_Algo > + void MacroscopicEvolveECartesian ( + std::array< std::unique_ptr< amrex::MultiFab>, 3>& Efield, + std::array< std::unique_ptr< amrex::MultiFab>, 3> const &Bfield, + std::array< std::unique_ptr< amrex::MultiFab>, 3> const& Jfield, + amrex::Real const dt, + std::unique_ptr<MacroscopicProperties> const& macroscopic_properties); + + template< typename T_Algo > void EvolveBPMLCartesian ( std::array< amrex::MultiFab*, 3 > Bfield, std::array< amrex::MultiFab*, 3 > const Efield, |