https://mooseframework.inl.gov
Loading...
Searching...
No Matches
MFEMDGDiffusionBC.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 "MFEMDGDiffusionBC.h"
13#include "MFEMProblem.h"
14
16
19{
21 params.addClassDescription("Applies a Dirichlet condition for DG diffusion");
22 params.addParam<MFEMScalarCoefficientName>(
23 "diffusion_coefficient", "1.0", "Name of property for diffusion coefficient k");
24 params.addParam<MFEMScalarCoefficientName>(
25 "boundary_coefficient", "0.0", "Name of property for Dirichlet coefficient");
26 params.addParam<mfem::real_t>("sigma", -1.0, "Symmetry parameter. Typically +/- 1.0");
27 params.addParam<mfem::real_t>(
28 "kappa", "Penalty parameter. Should be non-negative. Will default to (order+1)^2");
29 return params;
30}
31
33 : MFEMIntegratedBC(parameters),
34 _fe_order(getMFEMProblem().getGridFunction(_test_var_name)->ParFESpace()->FEColl()->GetOrder()),
35 _dcoef(getScalarCoefficient("diffusion_coefficient")),
36 _bcoef(getScalarCoefficient("boundary_coefficient")),
37 _sigma(getParam<mfem::real_t>("sigma")),
38 _kappa((isParamSetByUser("kappa")) ? getParam<mfem::real_t>("kappa")
39 : (_fe_order + 1) * (_fe_order + 1))
40{
41}
42
43// Create a new MFEM integrator to apply to LHS of the weak form. Ownership managed by the caller.
44mfem::BilinearFormIntegrator *
46{
47 return new mfem::DGDiffusionIntegrator(_dcoef, _sigma, _kappa);
48}
49
50// Create a new MFEM integrator to apply to the RHS of the weak form. Ownership managed by the
51// caller.
52mfem::LinearFormIntegrator *
54{
55 return new mfem::DGDirichletLFIntegrator(_bcoef, _dcoef, _sigma, _kappa);
56}
57
58#endif
registerMooseObject("MooseApp", MFEMDGDiffusionBC)
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
void addParam(const std::string &name, const S &value, const std::string &doc_string)
These methods add an optional parameter and a documentation string to the InputParameters object.
void addClassDescription(const std::string &doc_string)
This method adds a description of the class that will be displayed in the input file syntax dump.
MFEMDGDiffusionBC(const InputParameters &parameters)
mfem::Coefficient & _dcoef
virtual mfem::BilinearFormIntegrator * createBFIntegrator() override
Create MFEM integrator to apply to the LHS of the weak form. Ownership managed by the caller.
mfem::Coefficient & _bcoef
virtual mfem::LinearFormIntegrator * createLFIntegrator() override
Create MFEM integrator to apply to the RHS of the weak form. Ownership managed by the caller.
static InputParameters validParams()
static InputParameters validParams()