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.H38
1 files changed, 38 insertions, 0 deletions
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H
new file mode 100644
index 000000000..c1fdef5dd
--- /dev/null
+++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H
@@ -0,0 +1,38 @@
+#ifndef WARPX_FINITE_DIFFERENCE_SOLVER_H_
+#define WARPX_FINITE_DIFFERENCE_SOLVER_H_
+
+/**
+ * \brief Top-level class for the electromagnetic finite-difference solver
+ *
+ * TODO
+ */
+class FiniteDifferenceSolver
+{
+ public:
+
+ using VectorField = std::array< std::unique_ptr<amrex::MultiFab>, 3 >;
+ using ConstVectorField = std::array< std::unique_ptr<amrex::MultiFab const>, 3 >;
+
+ // Constructor
+ void FiniteDifferenceSolver( std::array<Real,3> dx );
+
+ void EvolveB( VectorField Bfield,
+ ConstVectorField Efield,
+ amrex::Real dt ) const;
+
+ };
+
+ private:
+
+ int fdtd_algo;
+
+ amrex::Gpu::ManagedVector<amrex::Real> stencil_coefs_x;
+ amrex::Gpu::ManagedVector<amrex::Real> stencil_coefs_y;
+ amrex::Gpu::ManagedVector<amrex::Real> stencil_coefs_z;
+
+ template< typename fdtd_algo >
+ void EvolveB
+
+};
+
+#endif // WARPX_FINITE_DIFFERENCE_SOLVER_H_