https://mooseframework.inl.gov
Loading...
Searching...
No Matches
MFEMScalarQuadratureFunctionCoefficient.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
15
22class MFEMScalarQuadratureFunctionCoefficient : public mfem::QuadratureFunctionCoefficient,
24{
25public:
26 MFEMScalarQuadratureFunctionCoefficient(mfem::QuadratureFunction & qf,
27 UpdatePolicy update_policy,
28 const std::string & name);
29
32 void SetTime(mfem::real_t t) override;
33
35 void SetSourceCoefficient(mfem::Coefficient * coeff) { _source = coeff; }
36
38 mfem::real_t Eval(mfem::ElementTransformation & T, const mfem::IntegrationPoint & ip) override;
39
41 void Project(mfem::QuadratureFunction & qf) override;
42
43private:
45 void Refresh();
46
48 mfem::Coefficient * _source;
50 mfem::QuadratureFunction & _qf;
51};
52
53#endif
Shared lazy-update state for quadrature function coefficients.
Scalar coefficient holding precomputed values of a source coefficient at the quadrature points of a Q...
mfem::Coefficient * _source
Source coefficient the stored values are projected from.
mfem::real_t Eval(mfem::ElementTransformation &T, const mfem::IntegrationPoint &ip) override
Return the stored value at ip, re-projecting the source first if invalidated.
void SetSourceCoefficient(mfem::Coefficient *coeff)
Set the source coefficient.
void Refresh()
Project the source coefficient into the quadrature function if invalidated.
void Project(mfem::QuadratureFunction &qf) override
Copy the stored values into qf, re-projecting the source first if invalidated.
mfem::QuadratureFunction & _qf
Storage for the projected values, shared with the owning MOOSE object.
void SetTime(mfem::real_t t) override
Set the time for the coefficient, invalidating the stored values unless the update policy is NONE.