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)
double muInv(const Vector &x)
Data collection with VisIt I/O routines.
Wrapper for hypre's parallel vector class.
Base class Coefficients that optionally depend on space and time. These are used by the BilinearFormI...
void j_src(const Vector &x, double t, Vector &j)
double sigma(const Vector &x)
void SetLogging(int logging)
Class for parallel grid function.
Wrapper for hypre's ParCSR matrix class.
Class for parallel meshes.