11 #ifdef MOOSE_MFEM_ENABLED 18 mfem::Coefficient & curlu_dk_dcurlu,
19 mfem::VectorCoefficient & curlu_vec,
20 mfem::real_t curlu_zero_tol)
21 : mfem::MatrixCoefficient(curlu_vec.GetVDim()),
23 _curlu_dk_dcurlu_coef(curlu_dk_dcurlu),
24 _curlu_zero_tol(curlu_zero_tol),
25 _curlu_hat_coef(curlu_vec, _curlu_zero_tol)
32 MatrixCoefficient::SetTime(t);
40 mfem::ElementTransformation & T,
41 const mfem::IntegrationPoint & ip)
43 const int dim = GetHeight();
44 mfem::Vector curlu_hat(
dim);
47 const mfem::real_t k =
_k_coef.Eval(T, ip);
51 for (
int i = 0; i <
dim; ++i)
52 for (
int j = 0; j <
dim; ++j)
53 K(i, j) += curlu_dk_dcurlu * curlu_hat(i) * curlu_hat(j);
57 mfem::Coefficient & curlu_dk_dcurlu,
58 mfem::VectorCoefficient & curlu_vec,
59 mfem::real_t curlu_zero_tol,
60 const mfem::IntegrationRule * ir)
61 : _curlcurl_res_integ(k, ir),
62 _curlcurl_jac_matrix_coef(k, curlu_dk_dcurlu, curlu_vec, curlu_zero_tol),
63 _curlcurl_jac_integ(_curlcurl_jac_matrix_coef, ir)
69 mfem::ElementTransformation & Tr,
70 const mfem::Vector & elfun,
71 mfem::Vector & elvect)
78 mfem::ElementTransformation & Tr,
79 const mfem::Vector & elfun,
80 mfem::DenseMatrix & elmat)
mfem::CurlCurlIntegrator _curlcurl_res_integ
mfem::Coefficient & _k_coef
virtual void AssembleElementVector(const mfem::FiniteElement &el, mfem::ElementTransformation &Tr, const mfem::Vector &elfun, mfem::Vector &elvect) override
virtual void AssembleElementGrad(const mfem::FiniteElement &el, mfem::ElementTransformation &Tr, const mfem::Vector &elfun, mfem::DenseMatrix &elmat) override
static constexpr std::size_t dim
This is the dimension of all vector and tensor datastructures used in MOOSE.
void SetTime(mfem::real_t t) override
mfem::Coefficient & _curlu_dk_dcurlu_coef
NLCurlCurlJacMatrixCoefficient(mfem::Coefficient &k, mfem::Coefficient &curlu_dk_dcurlu, mfem::VectorCoefficient &curlu_vec, mfem::real_t curlu_zero_tol)
mfem::CurlCurlIntegrator _curlcurl_jac_integ
mfem::NormalizedVectorCoefficient _curlu_hat_coef
NLCurlCurlIntegrator(mfem::Coefficient &k, mfem::Coefficient &curlu_dk_dcurlu, mfem::VectorCoefficient &curlu_vec, mfem::real_t curlu_zero_tol=1e-32, const mfem::IntegrationRule *ir=nullptr)
void Eval(mfem::DenseMatrix &K, mfem::ElementTransformation &T, const mfem::IntegrationPoint &ip) override
Utilities for converting between vector(s) of libMesh Points and MFEM Vector(s).