aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H
diff options
context:
space:
mode:
Diffstat (limited to 'Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H')
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H27
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,