12 #ifndef MFEM_MAXWELL_SOLVER
13 #define MFEM_MAXWELL_SOLVER
15 #include "../common/pfem_extras.hpp"
16 #include "../common/mesh_extras.hpp"
34 namespace electromagnetics
41 double (*eps )(
const Vector&),
62 void ImplicitSolve(
const double dt,
const Vector &x,
Vector &k);
64 double GetMaximumTimeStep()
const;
66 double GetEnergy()
const;
77 void WriteVisItFields(
int it = 0);
79 void InitializeGLVis();
81 void DisplayToGLVis();
86 void setupSolver(
const int idt,
const double dt)
const;
88 void implicitSolve(
const double dt,
const Vector &x,
Vector &k)
const;
136 double (*eps_ )(
const Vector&);
137 double (*muInv_ )(
const Vector&);
138 double (*sigma_ )(
const Vector&);
156 mutable std::map<int, ParBilinearForm *> a1_;
157 mutable std::map<int, HypreParMatrix *> A1_;
158 mutable std::map<int, Coefficient *> dtCoef_;
159 mutable std::map<int, Coefficient *> dtSigmaCoef_;
160 mutable std::map<int, Coefficient *> dtEtaInvCoef_;
161 mutable std::map<int, HypreDiagScale *> diagScale_;
162 mutable std::map<int, HyprePCG *> pcg_;
168 std::map<std::string, socketstream*> socks_;
175 #endif // MFEM_USE_MPI
177 #endif // MFEM_MAXWELL_SOLVER
Base class for vector Coefficients that optionally depend on time and space.
Base abstract class for first order time dependent operators.
void Mult(const Table &A, const Table &B, Table &C)
C = A * B (as boolean matrices)
Data collection with VisIt I/O routines.
double muInv(const Vector &x)
Wrapper for hypre's parallel vector class.
void j_src(const Vector &x, double t, Vector &j)
Base class Coefficients that optionally depend on space and time. These are used by the BilinearFormI...
void SetLogging(int logging)
Class for parallel grid function.
Wrapper for hypre's ParCSR matrix class.
Class for parallel meshes.
double sigma(const Vector &x)