https://mooseframework.inl.gov
NLScaleIntegrator.C
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 #include "NLScaleIntegrator.h"
13 
14 namespace Moose::MFEM
15 {
16 
17 void
18 NLScaleIntegrator::AssembleElementVector(const mfem::FiniteElement & el,
19  mfem::ElementTransformation & Tr,
20  const mfem::Vector & elfun,
21  mfem::Vector & elvect)
22 {
24  _integrator->AssembleElementVector(el, Tr, elfun, elvect);
25  elvect *= _scale;
26 }
27 
28 void
29 NLScaleIntegrator::AssembleFaceVector(const mfem::FiniteElement & el1,
30  const mfem::FiniteElement & el2,
31  mfem::FaceElementTransformations & Tr,
32  const mfem::Vector & elfun,
33  mfem::Vector & elvect)
34 {
36  _integrator->AssembleFaceVector(el1, el2, Tr, elfun, elvect);
37  elvect *= _scale;
38 }
39 
40 void
41 NLScaleIntegrator::AssembleElementGrad(const mfem::FiniteElement & el,
42  mfem::ElementTransformation & Tr,
43  const mfem::Vector & elfun,
44  mfem::DenseMatrix & elmat)
45 {
47  _integrator->AssembleElementGrad(el, Tr, elfun, elmat);
48  elmat *= _scale;
49 }
50 
51 void
52 NLScaleIntegrator::AssembleFaceGrad(const mfem::FiniteElement & el1,
53  const mfem::FiniteElement & el2,
54  mfem::FaceElementTransformations & Tr,
55  const mfem::Vector & elfun,
56  mfem::DenseMatrix & elmat)
57 {
59  _integrator->AssembleFaceGrad(el1, el2, Tr, elfun, elmat);
60  elmat *= _scale;
61 }
62 
63 mfem::real_t
64 NLScaleIntegrator::GetElementEnergy(const mfem::FiniteElement & el,
65  mfem::ElementTransformation & Tr,
66  const mfem::Vector & elfun)
67 {
69  return _scale * _integrator->GetElementEnergy(el, Tr, elfun);
70 }
71 
72 } // namespace Moose::MFEM
73 
74 #endif
virtual void AssembleFaceGrad(const mfem::FiniteElement &el1, const mfem::FiniteElement &el2, mfem::FaceElementTransformations &Tr, const mfem::Vector &elfun, mfem::DenseMatrix &elmat) override
mfem::NonlinearFormIntegrator * _integrator
virtual void AssembleFaceVector(const mfem::FiniteElement &el1, const mfem::FiniteElement &el2, mfem::FaceElementTransformations &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
virtual void AssembleElementVector(const mfem::FiniteElement &el, mfem::ElementTransformation &Tr, const mfem::Vector &elfun, mfem::Vector &elvect) override
virtual mfem::real_t GetElementEnergy(const mfem::FiniteElement &el, mfem::ElementTransformation &Tr, const mfem::Vector &elfun) override
Utilities for converting between vector(s) of libMesh Points and MFEM Vector(s).