www.mooseframework.org
GrayLambertNeumannBC.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 #include "GrayLambertNeumannBC.h"
11 #include "MathUtils.h"
12 
13 registerMooseObject("HeatConductionApp", GrayLambertNeumannBC);
14 
16 
18 
19 InputParameters
21 {
22  InputParameters params = IntegratedBC::validParams();
23  params.addRequiredParam<UserObjectName>("surface_radiation_object_name",
24  "Name of the GrayLambertSurfaceRadiationBase UO");
25  params.addParam<bool>(
26  "reconstruct_emission",
27  true,
28  "Flag to apply constant heat flux on sideset or reconstruct emission by T^4 law.");
29  params.addClassDescription("This BC imposes a heat flux density that is computed from the "
30  "GrayLambertSurfaceRadiationBase userobject.");
31  return params;
32 }
33 
34 GrayLambertNeumannBC::GrayLambertNeumannBC(const InputParameters & parameters)
35  : IntegratedBC(parameters),
36  _glsr_uo(getUserObject<GrayLambertSurfaceRadiationBase>("surface_radiation_object_name")),
37  _reconstruct_emission(getParam<bool>("reconstruct_emission"))
38 {
39 }
40 
41 Real
43 {
45  return _test[_i][_qp] * _glsr_uo.getSurfaceHeatFluxDensity(_current_boundary_id);
46 
47  Real eps = _glsr_uo.getSurfaceEmissivity(_current_boundary_id);
48  Real emission = _sigma_stefan_boltzmann * MathUtils::pow(_u[_qp], 4);
49  return _test[_i][_qp] * eps * (emission - _glsr_uo.getSurfaceIrradiation(_current_boundary_id));
50 }
51 
52 Real
54 {
55  // this is not the exact Jacobian but it ensures correct scaling
56  return _test[_i][_qp] * _sigma_stefan_boltzmann *
57  _glsr_uo.getSurfaceEmissivity(_current_boundary_id) * 4 * MathUtils::pow(_u[_qp], 3) *
58  _phi[_j][_qp];
59 }
GrayLambertNeumannBC::computeQpResidual
virtual Real computeQpResidual() override
Definition: GrayLambertNeumannBC.C:42
GrayLambertNeumannBC::_glsr_uo
const GrayLambertSurfaceRadiationBase & _glsr_uo
Definition: GrayLambertNeumannBC.h:37
GrayLambertNeumannBC::GrayLambertNeumannBC
GrayLambertNeumannBC(const InputParameters &parameters)
Definition: GrayLambertNeumannBC.C:34
pow
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Definition: ExpressionBuilder.h:673
defineLegacyParams
defineLegacyParams(GrayLambertNeumannBC)
registerMooseObject
registerMooseObject("HeatConductionApp", GrayLambertNeumannBC)
GrayLambertNeumannBC.h
GrayLambertNeumannBC::_sigma_stefan_boltzmann
static Real _sigma_stefan_boltzmann
Definition: GrayLambertNeumannBC.h:31
GrayLambertNeumannBC::_reconstruct_emission
bool _reconstruct_emission
Definition: GrayLambertNeumannBC.h:38
GrayLambertNeumannBC
Boundary condition for radiative heat that is computed by the GrayLambertSurfaceRadiationBase userobj...
Definition: GrayLambertNeumannBC.h:24
GrayLambertNeumannBC::validParams
static InputParameters validParams()
Definition: GrayLambertNeumannBC.C:20
GrayLambertSurfaceRadiationBase::getSurfaceIrradiation
Real getSurfaceIrradiation(BoundaryID id) const
public interface of this UserObject
Definition: GrayLambertSurfaceRadiationBase.C:269
GrayLambertSurfaceRadiationBase::getSurfaceEmissivity
Real getSurfaceEmissivity(BoundaryID id) const
Definition: GrayLambertSurfaceRadiationBase.C:301
validParams
InputParameters validParams()
GrayLambertSurfaceRadiationBase::getSurfaceHeatFluxDensity
Real getSurfaceHeatFluxDensity(BoundaryID id) const
Definition: GrayLambertSurfaceRadiationBase.C:277
GrayLambertNeumannBC::computeQpJacobian
virtual Real computeQpJacobian() override
Definition: GrayLambertNeumannBC.C:53
GrayLambertSurfaceRadiationBase
GrayLambertSurfaceRadiationBase computes the heat flux on a set of surfaces in radiative heat transfe...
Definition: GrayLambertSurfaceRadiationBase.h:25