12#ifndef MFEM_JOULE_SOLVER
13#define MFEM_JOULE_SOLVER
26namespace electromagnetics
50 std::map<int, real_t> *materialMap;
60 if (materialMap != NULL) {
delete materialMap; }
187 std::map<int, real_t> sigmaAttMap,
188 std::map<int, real_t> TcapacityAttMap,
189 std::map<int, real_t> InvTcapAttMap,
190 std::map<int, real_t> InvTcondAttMap
237 : E_gf(E_gf_),
sigma(sigma_) {}
Base class Coefficients that optionally depend on space and time. These are used by the BilinearFormI...
Coefficient defined by a GridFunction. This coefficient is mesh dependent.
Class for grid function - Vector with associated FE space.
Wrapper for hypre's ParCSR matrix class.
Abstract class for hypre's solvers and preconditioners.
Class for integration point with weight.
Abstract parallel finite element space.
Class for parallel grid function.
Base abstract class for first order time dependent operators.
virtual ~JouleHeatingCoefficient()
virtual real_t Eval(ElementTransformation &T, const IntegrationPoint &ip)
Evaluate the coefficient in the element described by T at the point ip.
JouleHeatingCoefficient(const MeshDependentCoefficient &sigma_, ParGridFunction &E_gf_)
void Debug(const char *basefilename, real_t time)
void buildS1(real_t muInv)
Array< int > thermal_ess_bdr
void buildDiv(MeshDependentCoefficient &InvTcap)
virtual void Mult(const Vector &vx, Vector &dvx_dt) const
Perform the action of the operator: y = k = f(x, t), where k solves the algebraic equation F(x,...
ParFiniteElementSpace & L2FESpace
ParFiniteElementSpace & HGradFESpace
ParMixedBilinearForm * weakDivC
ParFiniteElementSpace & HCurlFESpace
void buildS2(MeshDependentCoefficient &alpha)
MeshDependentCoefficient * InvTcond
MeshDependentCoefficient * Tcapacity
Array< int > poisson_ess_bdr_vdofs
void buildM2(MeshDependentCoefficient &alpha)
void buildM3(MeshDependentCoefficient &Tcap)
ParDiscreteLinearOperator * curl
void buildM1(MeshDependentCoefficient &sigma)
void GetJouleHeating(ParGridFunction &E_gf, ParGridFunction &w_gf) const
void buildA1(real_t muInv, MeshDependentCoefficient &sigma, real_t dt)
void SetTime(const real_t t_)
Set the current time.
ParDiscreteLinearOperator * grad
Array< int > poisson_ess_bdr
virtual void ImplicitSolve(const real_t dt, const Vector &x, Vector &k)
Solve the equation: k = f(x + dt k, t), for the unknown k at the current time t.
Array< int > thermal_ess_bdr_vdofs
void buildA0(MeshDependentCoefficient &sigma)
real_t ElectricLosses(ParGridFunction &E_gf) const
Array< int > ess_bdr_vdofs
void buildCurl(real_t muInv)
void buildA2(MeshDependentCoefficient &InvTcond, MeshDependentCoefficient &InvTcap, real_t dt)
virtual ~MagneticDiffusionEOperator()
ParMixedBilinearForm * weakCurl
MeshDependentCoefficient * InvTcap
MagneticDiffusionEOperator(int len, ParFiniteElementSpace &L2FES, ParFiniteElementSpace &HCurlFES, ParFiniteElementSpace &HDivFES, ParFiniteElementSpace &HGradFES, Array< int > &ess_bdr, Array< int > &thermal_ess_bdr, Array< int > &poisson_ess_bdr, real_t mu, std::map< int, real_t > sigmaAttMap, std::map< int, real_t > TcapacityAttMap, std::map< int, real_t > InvTcapAttMap, std::map< int, real_t > InvTcondAttMap)
ParFiniteElementSpace & HDivFESpace
ParMixedBilinearForm * weakDiv
MeshDependentCoefficient * sigma
virtual ~MeshDependentCoefficient()
MeshDependentCoefficient(const std::map< int, real_t > &inputMap, real_t scale=1.0)
virtual real_t Eval(ElementTransformation &T, const IntegrationPoint &ip)
Evaluate the coefficient in the element described by T at the point ip.
void SetScaleFactor(const real_t &scale)
ScaledGFCoefficient(GridFunction *gf, MeshDependentCoefficient &input_mdc)
void SetMDC(const MeshDependentCoefficient &input_mdc)
virtual ~ScaledGFCoefficient()
virtual real_t Eval(ElementTransformation &T, const IntegrationPoint &ip)
Evaluate the coefficient at ip.
real_t sigma(const Vector &x)
real_t muInv(const Vector &x)
real_t p_bc(const Vector &x, real_t t)
void e_exact(const Vector &x, real_t t, Vector &E)
real_t t_exact(const Vector &x)
void edot_bc(const Vector &x, Vector &E)
void b_exact(const Vector &x, real_t t, Vector &B)