https://mooseframework.inl.gov
MFEMConvectiveHeatFluxBC.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 MFEM_ENABLED
11 
13 #include "MFEMProblem.h"
14 
16 
19 {
21  // FIXME: Should these really be specified via properties? T_infinity in particular? Use functions
22  // instead?
23  params.addClassDescription(
24  "Convective heat transfer boundary condition with temperature and heat "
25  "transfer coefficent given by material properties to add to MFEM problems.");
26  params.addParam<MFEMScalarCoefficientName>(
27  "T_infinity", "0.", "Name of a coefficient specifying the far-field temperature");
28  params.addParam<MFEMScalarCoefficientName>(
29  "heat_transfer_coefficient",
30  "1.",
31  "Name of the coefficient specifying the heat transfer coefficient");
32  return params;
33 }
34 
36  : MFEMIntegratedBC(parameters),
37  _heat_transfer_coef(
38  getScalarCoefficient(getParam<MFEMScalarCoefficientName>("heat_transfer_coefficient"))),
39  _T_inf_coef(getScalarCoefficient(getParam<MFEMScalarCoefficientName>("T_infinity"))),
40  _external_heat_flux_coef(
41  getMFEMProblem().getCoefficients().declareScalar<mfem::ProductCoefficient>(
42  "__ConvectiveHeatFluxBC_" + parameters.get<std::string>("_unique_name"),
43  _heat_transfer_coef,
44  _T_inf_coef))
45 {
46 }
47 
48 // Create a new MFEM integrator to apply to the RHS of the weak form. Ownership managed by the
49 // caller.
50 mfem::LinearFormIntegrator *
52 {
53  return new mfem::BoundaryLFIntegrator(_external_heat_flux_coef);
54 }
55 
56 // Create a new MFEM integrator to apply to LHS of the weak form. Ownership managed by the caller.
57 mfem::BilinearFormIntegrator *
59 {
60  return new mfem::BoundaryMassIntegrator(_heat_transfer_coef);
61 }
62 
63 #endif
mfem::Coefficient & _heat_transfer_coef
T * get(const std::unique_ptr< T > &u)
The MooseUtils::get() specializations are used to support making forwards-compatible code changes fro...
Definition: MooseUtils.h:1155
registerMooseObject("MooseApp", MFEMConvectiveHeatFluxBC)
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
static InputParameters validParams()
mfem::ProductCoefficient & _external_heat_flux_coef
static InputParameters validParams()
virtual mfem::BilinearFormIntegrator * createBFIntegrator() override
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...
virtual mfem::LinearFormIntegrator * createLFIntegrator() override
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...
MFEMConvectiveHeatFluxBC(const InputParameters &parameters)