https://mooseframework.inl.gov
NLDiffusionIntegrator.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #ifdef MOOSE_MFEM_ENABLED
11 
12 #pragma once
13 #include "libmesh/ignore_warnings.h"
14 #include <mfem.hpp>
15 #include "libmesh/restore_warnings.h"
16 
17 namespace Moose::MFEM
18 {
24 class NLDiffusionIntegrator : public mfem::NonlinearFormIntegrator
25 {
26 public:
27  NLDiffusionIntegrator(mfem::Coefficient & k,
28  mfem::Coefficient & dk_du,
29  const mfem::GridFunction * gf,
30  const mfem::IntegrationRule * ir = nullptr);
31 
32  virtual void AssembleElementVector(const mfem::FiniteElement & el,
33  mfem::ElementTransformation & Tr,
34  const mfem::Vector & elfun,
35  mfem::Vector & elvect) override;
36  virtual void AssembleElementGrad(const mfem::FiniteElement & el,
37  mfem::ElementTransformation & Tr,
38  const mfem::Vector & elfun,
39  mfem::DenseMatrix & elmat) override;
40 
41 protected:
42  mfem::DiffusionIntegrator _diffusion_integ;
43  mfem::GradientGridFunctionCoefficient _grad_trial;
44  mfem::ScalarVectorProductCoefficient _neg_grad_trial;
45  mfem::ScalarVectorProductCoefficient _neg_dk_du_grad_trial;
46  mfem::MixedScalarWeakDivergenceIntegrator _weak_div_integ;
47  mfem::SumIntegrator _sum{0};
48 };
49 }
50 
51 #endif
mfem::DiffusionIntegrator _diffusion_integ
mfem::MixedScalarWeakDivergenceIntegrator _weak_div_integ
mfem::GradientGridFunctionCoefficient _grad_trial
virtual void AssembleElementGrad(const mfem::FiniteElement &el, mfem::ElementTransformation &Tr, const mfem::Vector &elfun, mfem::DenseMatrix &elmat) override
virtual void AssembleElementVector(const mfem::FiniteElement &el, mfem::ElementTransformation &Tr, const mfem::Vector &elfun, mfem::Vector &elvect) override
mfem::ScalarVectorProductCoefficient _neg_grad_trial
mfem::ScalarVectorProductCoefficient _neg_dk_du_grad_trial
Utilities for converting between vector(s) of libMesh Points and MFEM Vector(s).
NLDiffusionIntegrator(mfem::Coefficient &k, mfem::Coefficient &dk_du, const mfem::GridFunction *gf, const mfem::IntegrationRule *ir=nullptr)