https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
14namespace Moose::MFEM
15{
16
17void
18NLScaleIntegrator::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
28void
29NLScaleIntegrator::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
40void
41NLScaleIntegrator::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
51void
52NLScaleIntegrator::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
63mfem::real_t
64NLScaleIntegrator::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 AssembleElementVector(const mfem::FiniteElement &el, mfem::ElementTransformation &Tr, const mfem::Vector &elfun, mfem::Vector &elvect) override
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 mfem::real_t GetElementEnergy(const mfem::FiniteElement &el, mfem::ElementTransformation &Tr, const mfem::Vector &elfun) override
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
Utilities for converting between vector(s) of libMesh Points and MFEM Vector(s).