https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
Moose::MFEM::ScaleIntegrator Class Reference

Integrator which scales its results by a constant value. More...

#include <ScaleIntegrator.h>

Inheritance diagram for Moose::MFEM::ScaleIntegrator:
[legend]

Public Member Functions

 ScaleIntegrator (mfem::BilinearFormIntegrator *integ)
 
 ScaleIntegrator (mfem::BilinearFormIntegrator *integ, mfem::real_t scale)
 
 ScaleIntegrator (mfem::BilinearFormIntegrator *integ, mfem::real_t scale, bool own)
 
void SetIntegrator (mfem::BilinearFormIntegrator *integ)
 
void SetScale (mfem::real_t scale)
 
void SetOwn (bool own)
 
void CheckIntegrator ()
 
virtual void SetIntRule (const mfem::IntegrationRule *ir) override
 
virtual void AssembleElementMatrix (const mfem::FiniteElement &el, mfem::ElementTransformation &Trans, mfem::DenseMatrix &elmat) override
 
virtual void AssembleElementMatrix2 (const mfem::FiniteElement &trial_fe, const mfem::FiniteElement &test_fe, mfem::ElementTransformation &Trans, mfem::DenseMatrix &elmat) override
 
virtual void AssembleFaceMatrix (const mfem::FiniteElement &el1, const mfem::FiniteElement &el2, mfem::FaceElementTransformations &Trans, mfem::DenseMatrix &elmat) override
 
virtual void AssemblePA (const mfem::FiniteElementSpace &fes) override
 
virtual void AssembleDiagonalPA (mfem::Vector &diag) override
 
virtual void AssemblePAInteriorFaces (const mfem::FiniteElementSpace &fes) override
 
virtual void AssemblePABoundaryFaces (const mfem::FiniteElementSpace &fes) override
 
virtual void AddMultTransposePA (const mfem::Vector &x, mfem::Vector &y) const override
 
virtual void AddMultPA (const mfem::Vector &x, mfem::Vector &y) const override
 
virtual void AssembleEA (const mfem::FiniteElementSpace &fes, mfem::Vector &emat, const bool add) override
 
virtual void AssembleEABoundary (const mfem::FiniteElementSpace &fes, mfem::Vector &emat, const bool add) override
 
virtual void AssembleMF (const mfem::FiniteElementSpace &fes) override
 
virtual void AddMultMF (const mfem::Vector &x, mfem::Vector &y) const override
 
virtual void AssembleDiagonalMF (mfem::Vector &diag) override
 
virtual ~ScaleIntegrator ()
 

Private Attributes

mfem::BilinearFormIntegrator * _integrator {nullptr}
 
mfem::real_t _scale
 
bool _own_integrator
 

Detailed Description

Integrator which scales its results by a constant value.

Definition at line 24 of file ScaleIntegrator.h.

Constructor & Destructor Documentation

◆ ScaleIntegrator() [1/3]

Moose::MFEM::ScaleIntegrator::ScaleIntegrator ( mfem::BilinearFormIntegrator *  integ)
inline

Definition at line 32 of file ScaleIntegrator.h.

33 : _integrator{integ}, _scale{1}, _own_integrator{true}
34 {
35 }
mfem::BilinearFormIntegrator * _integrator

◆ ScaleIntegrator() [2/3]

Moose::MFEM::ScaleIntegrator::ScaleIntegrator ( mfem::BilinearFormIntegrator *  integ,
mfem::real_t  scale 
)
inline

Definition at line 36 of file ScaleIntegrator.h.

37 : _integrator{integ}, _scale{scale}, _own_integrator{true}
38 {
39 }
Real scale
Definition MortarUtils.C:62

◆ ScaleIntegrator() [3/3]

Moose::MFEM::ScaleIntegrator::ScaleIntegrator ( mfem::BilinearFormIntegrator *  integ,
mfem::real_t  scale,
bool  own 
)
inline

Definition at line 40 of file ScaleIntegrator.h.

42 {
43 }

◆ ~ScaleIntegrator()

Moose::MFEM::ScaleIntegrator::~ScaleIntegrator ( )
virtual

Definition at line 169 of file ScaleIntegrator.C.

170{
171 if (_own_integrator)
172 delete _integrator;
173}

Member Function Documentation

◆ AddMultMF()

void Moose::MFEM::ScaleIntegrator::AddMultMF ( const mfem::Vector &  x,
mfem::Vector &  y 
) const
overridevirtual

Definition at line 152 of file ScaleIntegrator.C.

153{
154 // y += Mx*scale
155 mfem::Vector Mx(y.Size());
156 Mx = 0.0;
157 _integrator->AddMultMF(x, Mx);
158 Mx *= _scale;
159 y += Mx;
160}

◆ AddMultPA()

void Moose::MFEM::ScaleIntegrator::AddMultPA ( const mfem::Vector &  x,
mfem::Vector &  y 
) const
overridevirtual

Definition at line 83 of file ScaleIntegrator.C.

84{
85 // y += Mx*scale
86 mfem::Vector Mx(y.Size());
87 Mx = 0.0;
88 _integrator->AddMultPA(x, Mx);
89 Mx *= _scale;
90 y += Mx;
91}

◆ AddMultTransposePA()

void Moose::MFEM::ScaleIntegrator::AddMultTransposePA ( const mfem::Vector &  x,
mfem::Vector &  y 
) const
overridevirtual

Definition at line 94 of file ScaleIntegrator.C.

95{
96 // y += M^T x*scale
97 mfem::Vector MTx(y.Size());
98 MTx = 0.0;
99 _integrator->AddMultTransposePA(x, MTx);
100 MTx *= _scale;
101 y += MTx;
102}

◆ AssembleDiagonalMF()

void Moose::MFEM::ScaleIntegrator::AssembleDiagonalMF ( mfem::Vector &  diag)
overridevirtual

Definition at line 163 of file ScaleIntegrator.C.

164{
165 _integrator->AssembleDiagonalMF(diag);
166 diag *= _scale;
167}

◆ AssembleDiagonalPA()

void Moose::MFEM::ScaleIntegrator::AssembleDiagonalPA ( mfem::Vector &  diag)
overridevirtual

Definition at line 64 of file ScaleIntegrator.C.

65{
66 _integrator->AssembleDiagonalPA(diag);
67 diag *= _scale;
68}

◆ AssembleEA()

void Moose::MFEM::ScaleIntegrator::AssembleEA ( const mfem::FiniteElementSpace &  fes,
mfem::Vector &  emat,
const bool  add 
)
overridevirtual

Definition at line 105 of file ScaleIntegrator.C.

108{
110 if (add)
111 {
112 mfem::Vector emat_scale(emat.Size());
113 _integrator->AssembleEA(fes, emat_scale, false);
114 emat_scale *= _scale;
115 emat += emat_scale;
116 }
117 else
118 {
119 _integrator->AssembleEA(fes, emat, add);
120 emat *= _scale;
121 }
122}

◆ AssembleEABoundary()

void Moose::MFEM::ScaleIntegrator::AssembleEABoundary ( const mfem::FiniteElementSpace &  fes,
mfem::Vector &  emat,
const bool  add 
)
overridevirtual

Definition at line 125 of file ScaleIntegrator.C.

128{
130 if (add)
131 {
132 mfem::Vector emat_scale(emat.Size());
133 _integrator->AssembleEABoundary(fes, emat_scale, false);
134 emat_scale *= _scale;
135 emat += emat_scale;
136 }
137 else
138 {
139 _integrator->AssembleEABoundary(fes, emat, add);
140 emat *= _scale;
141 }
142}

◆ AssembleElementMatrix()

void Moose::MFEM::ScaleIntegrator::AssembleElementMatrix ( const mfem::FiniteElement &  el,
mfem::ElementTransformation &  Trans,
mfem::DenseMatrix &  elmat 
)
overridevirtual

Definition at line 25 of file ScaleIntegrator.C.

28{
30 _integrator->AssembleElementMatrix(el, Trans, elmat);
31 elmat *= _scale;
32}

◆ AssembleElementMatrix2()

void Moose::MFEM::ScaleIntegrator::AssembleElementMatrix2 ( const mfem::FiniteElement &  trial_fe,
const mfem::FiniteElement &  test_fe,
mfem::ElementTransformation &  Trans,
mfem::DenseMatrix &  elmat 
)
overridevirtual

Definition at line 35 of file ScaleIntegrator.C.

39{
41 _integrator->AssembleElementMatrix2(el1, el2, Trans, elmat);
42 elmat *= _scale;
43}

◆ AssembleFaceMatrix()

void Moose::MFEM::ScaleIntegrator::AssembleFaceMatrix ( const mfem::FiniteElement &  el1,
const mfem::FiniteElement &  el2,
mfem::FaceElementTransformations &  Trans,
mfem::DenseMatrix &  elmat 
)
overridevirtual

Definition at line 46 of file ScaleIntegrator.C.

50{
52 _integrator->AssembleFaceMatrix(el1, el2, Trans, elmat);
53 elmat *= _scale;
54}

◆ AssembleMF()

void Moose::MFEM::ScaleIntegrator::AssembleMF ( const mfem::FiniteElementSpace &  fes)
overridevirtual

Definition at line 145 of file ScaleIntegrator.C.

146{
148 _integrator->AssembleMF(fes);
149}

◆ AssemblePA()

void Moose::MFEM::ScaleIntegrator::AssemblePA ( const mfem::FiniteElementSpace &  fes)
overridevirtual

Definition at line 57 of file ScaleIntegrator.C.

58{
60 _integrator->AssemblePA(fes);
61}

◆ AssemblePABoundaryFaces()

void Moose::MFEM::ScaleIntegrator::AssemblePABoundaryFaces ( const mfem::FiniteElementSpace &  fes)
overridevirtual

Definition at line 77 of file ScaleIntegrator.C.

78{
79 _integrator->AssemblePABoundaryFaces(fes);
80}

◆ AssemblePAInteriorFaces()

void Moose::MFEM::ScaleIntegrator::AssemblePAInteriorFaces ( const mfem::FiniteElementSpace &  fes)
overridevirtual

Definition at line 71 of file ScaleIntegrator.C.

72{
73 _integrator->AssemblePAInteriorFaces(fes);
74}

◆ CheckIntegrator()

void Moose::MFEM::ScaleIntegrator::CheckIntegrator ( )
inline

Definition at line 59 of file ScaleIntegrator.h.

60 {
61 if (!_integrator)
62 mooseError("Integrator not set");
63 }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application.
Definition MooseError.h:311

Referenced by AssembleEA(), AssembleEABoundary(), AssembleElementMatrix(), AssembleElementMatrix2(), AssembleFaceMatrix(), AssembleMF(), and AssemblePA().

◆ SetIntegrator()

void Moose::MFEM::ScaleIntegrator::SetIntegrator ( mfem::BilinearFormIntegrator *  integ)
inline

Definition at line 45 of file ScaleIntegrator.h.

46 {
48 {
49 delete _integrator;
50 }
51
52 _integrator = integ;
53 }

◆ SetIntRule()

void Moose::MFEM::ScaleIntegrator::SetIntRule ( const mfem::IntegrationRule *  ir)
overridevirtual

Definition at line 18 of file ScaleIntegrator.C.

19{
20 IntRule = ir;
21 _integrator->SetIntRule(ir);
22}

◆ SetOwn()

void Moose::MFEM::ScaleIntegrator::SetOwn ( bool  own)
inline

Definition at line 57 of file ScaleIntegrator.h.

57{ _own_integrator = own; }

◆ SetScale()

void Moose::MFEM::ScaleIntegrator::SetScale ( mfem::real_t  scale)
inline

Definition at line 55 of file ScaleIntegrator.h.

55{ _scale = scale; }

Member Data Documentation

◆ _integrator

mfem::BilinearFormIntegrator* Moose::MFEM::ScaleIntegrator::_integrator {nullptr}
private

◆ _own_integrator

bool Moose::MFEM::ScaleIntegrator::_own_integrator
private

Definition at line 29 of file ScaleIntegrator.h.

Referenced by SetIntegrator(), SetOwn(), and ~ScaleIntegrator().

◆ _scale

mfem::real_t Moose::MFEM::ScaleIntegrator::_scale
private

The documentation for this class was generated from the following files: