aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H
diff options
context:
space:
mode:
authorGravatar Remi Lehe <remi.lehe@normalesup.org> 2020-02-26 11:10:53 -0800
committerGravatar GitHub <noreply@github.com> 2020-02-26 11:10:53 -0800
commit846c54ec7627513cb470e69aee32eac1b5fc45e7 (patch)
tree06871dba8ae9b612453f7537dcca2a6b0e6dea54 /Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H
parent7ded8dbbea0a294b862ce174a065022b15898a00 (diff)
downloadWarpX-846c54ec7627513cb470e69aee32eac1b5fc45e7.tar.gz
WarpX-846c54ec7627513cb470e69aee32eac1b5fc45e7.tar.zst
WarpX-846c54ec7627513cb470e69aee32eac1b5fc45e7.zip
Use C++ templates in `EvolveE` function (#676)
* Prepare EvolveE * Cartesian equations without current * Implement Cartesian EvolveE * Progress towards cylindrical solver * Correct typo * Implement cylindrical solver (without on-axis condition) * Fix compilation errors * Add regularization for RZ solver * Added correction term for F * Remove file for nodal stencil * Apply stylistic changes to EvolveE * Fix compilation errors * Correction to avoid out of bound * Remove references to old file * Correct bug in EvolveB * Implement correction on axis for Et * Remove previous field update functions * Remove unused code
Diffstat (limited to 'Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H')
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H23
1 files changed, 23 insertions, 0 deletions
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H
index 4bf88077f..1e042da27 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H
+++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H
@@ -37,6 +37,13 @@ class FiniteDifferenceSolver
void EvolveB ( std::array< std::unique_ptr<amrex::MultiFab>, 3 >& Bfield,
std::array< std::unique_ptr<amrex::MultiFab>, 3 > const& Efield,
amrex::Real const dt );
+
+ void EvolveE ( 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,
+ std::unique_ptr<amrex::MultiFab> const& Ffield,
+ amrex::Real const dt );
+
private:
int m_fdtd_algo;
@@ -63,12 +70,28 @@ class FiniteDifferenceSolver
std::array< std::unique_ptr<amrex::MultiFab>, 3 >& Bfield,
std::array< std::unique_ptr<amrex::MultiFab>, 3 > const& Efield,
amrex::Real const dt );
+
+ template< typename T_Algo >
+ void EvolveECylindrical (
+ 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,
+ std::unique_ptr<amrex::MultiFab> const& Ffield,
+ amrex::Real const dt );
#else
template< typename T_Algo >
void EvolveBCartesian (
std::array< std::unique_ptr<amrex::MultiFab>, 3 >& Bfield,
std::array< std::unique_ptr<amrex::MultiFab>, 3 > const& Efield,
amrex::Real const dt );
+
+ template< typename T_Algo >
+ void EvolveECartesian (
+ 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,
+ std::unique_ptr<amrex::MultiFab> const& Ffield,
+ amrex::Real const dt );
#endif
};