12 #ifndef MFEM_MAXWELL_SOLVER
13 #define MFEM_MAXWELL_SOLVER
15 #include "../common/pfem_extras.hpp"
33 namespace electromagnetics
40 double (*eps )(
const Vector&),
52 HYPRE_Int GetProblemSize();
61 void ImplicitSolve(
const double dt,
const Vector &x,
Vector &k);
63 double GetMaximumTimeStep()
const;
65 double GetEnergy()
const;
76 void WriteVisItFields(
int it = 0);
78 void InitializeGLVis();
80 void DisplayToGLVis();
85 void setupSolver(
const int idt,
const double dt)
const;
87 void implicitSolve(
const double dt,
const Vector &x,
Vector &k)
const;
135 double (*eps_ )(
const Vector&);
136 double (*muInv_ )(
const Vector&);
137 double (*sigma_ )(
const Vector&);
155 mutable std::map<int, ParBilinearForm *> a1_;
156 mutable std::map<int, HypreParMatrix *> A1_;
157 mutable std::map<int, Coefficient *> dtCoef_;
158 mutable std::map<int, Coefficient *> dtSigmaCoef_;
159 mutable std::map<int, Coefficient *> dtEtaInvCoef_;
160 mutable std::map<int, HypreDiagScale *> diagScale_;
161 mutable std::map<int, HyprePCG *> pcg_;
167 std::map<std::string, socketstream*> socks_;
174 #endif // MFEM_USE_MPI
176 #endif // MFEM_MAXWELL_SOLVER
Base abstract class for 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 Coefficient that may optionally depend on time.
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)