www.mooseframework.org
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ViewFactorObjectSurfaceRadiation Class Reference

ViewFactorObjectSurfaceRadiation computes radiative heat transfer between side sets and the view factors are computed by a ViewFactor object. More...

#include <ViewFactorObjectSurfaceRadiation.h>

Inheritance diagram for ViewFactorObjectSurfaceRadiation:
[legend]

Public Types

enum  RAD_BND_TYPE { VARIABLE_TEMPERATURE = 0, FIXED_TEMPERATURE = 4, ADIABATIC = 8 }
 Define enum for boundary type. More...
 

Public Member Functions

 ViewFactorObjectSurfaceRadiation (const InputParameters &parameters)
 
virtual void execute () override
 
virtual void initialize () override
 
virtual void finalize () override
 
Real getSurfaceIrradiation (BoundaryID id) const
 public interface of this UserObject More...
 
Real getSurfaceHeatFluxDensity (BoundaryID id) const
 
Real getSurfaceTemperature (BoundaryID id) const
 
Real getSurfaceRadiosity (BoundaryID id) const
 
Real getSurfaceEmissivity (BoundaryID id) const
 
Real getViewFactor (BoundaryID from_id, BoundaryID to_id) const
 
std::set< BoundaryID > getSurfaceIDs () const
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

virtual std::vector< std::vector< Real > > setViewFactors () override
 a purely virtual function that defines where view factors come from More...
 
virtual void threadJoin (const UserObject &y) override
 

Protected Attributes

const Real _sigma_stefan_boltzmann
 Stefan-Boltzmann constant. More...
 
unsigned int _n_sides
 number of active boundary ids More...
 
const VariableValue & _temperature
 the coupled temperature variable More...
 
const std::vector< Real > _emissivity
 constant emissivity for each boundary More...
 
std::vector< const Function * > _fixed_side_temperature
 side id to index map, side ids can have holes or be out of order More...
 
std::vector< Real > _radiosity
 the radiosity of each surface More...
 
std::vector< Real > _heat_flux_density
 the heat flux density qdot More...
 
std::vector< Real > _side_temperature
 the average temperature: this could be important for adiabatic walls More...
 
std::vector< enum RAD_BND_TYPE_side_type
 the type of the side, allows lookup index -> type More...
 
std::map< BoundaryID, unsigned int > _side_id_index
 side id to index map, side ids can have holes or be out of order More...
 
std::vector< Real > _areas
 the area by participating side set More...
 
std::vector< Real > _beta
 the average value of sigma * eps * T^4 More...
 
std::vector< Real > _surface_irradiation
 the irradiation into each surface More...
 
std::map< unsigned int, unsigned int > _fixed_side_id_index
 side id to index map for isothermal boundaries, side ids can have holes or be out of order More...
 
std::set< unsigned int > _adiabatic_side_ids
 the set of adiabatic boundaries More...
 
std::vector< std::vector< Real > > _view_factors
 the view factors which are set by setViewFactors by derived classes More...
 

Detailed Description

ViewFactorObjectSurfaceRadiation computes radiative heat transfer between side sets and the view factors are computed by a ViewFactor object.

Definition at line 25 of file ViewFactorObjectSurfaceRadiation.h.

Member Enumeration Documentation

◆ RAD_BND_TYPE

Define enum for boundary type.

Enumerator
VARIABLE_TEMPERATURE 
FIXED_TEMPERATURE 
ADIABATIC 

Definition at line 37 of file GrayLambertSurfaceRadiationBase.h.

38  {
41  ADIABATIC = 8
42  };

Constructor & Destructor Documentation

◆ ViewFactorObjectSurfaceRadiation()

ViewFactorObjectSurfaceRadiation::ViewFactorObjectSurfaceRadiation ( const InputParameters &  parameters)

Definition at line 29 of file ViewFactorObjectSurfaceRadiation.C.

32 {
33 }

Member Function Documentation

◆ execute()

void GrayLambertSurfaceRadiationBase::execute ( )
overridevirtualinherited

Definition at line 142 of file GrayLambertSurfaceRadiationBase.C.

143 {
144  mooseAssert(_side_id_index.find(_current_boundary_id) != _side_id_index.end(),
145  "Current boundary id not in _side_id_index.");
146  unsigned int index = _side_id_index.find(_current_boundary_id)->second;
147 
148  for (unsigned int qp = 0; qp < _qrule->n_points(); qp++)
149  {
150  _areas[index] += _JxW[qp] * _coord[qp];
151 
152  Real temp = 0;
153  if (_side_type[index] == ADIABATIC)
154  continue;
155  else if (_side_type[index] == VARIABLE_TEMPERATURE)
156  temp = _temperature[qp];
157  else if (_side_type[index] == FIXED_TEMPERATURE)
158  {
159  unsigned int iso_index = _fixed_side_id_index.find(_current_boundary_id)->second;
160  temp = _fixed_side_temperature[iso_index]->value(_t, _q_point[qp]);
161  }
162 
163  _beta[index] += _JxW[qp] * _coord[qp] * _sigma_stefan_boltzmann * _emissivity[index] *
164  MathUtils::pow(temp, 4);
165  _side_temperature[index] += _JxW[qp] * _coord[qp] * temp;
166  }
167 }

◆ finalize()

void GrayLambertSurfaceRadiationBase::finalize ( )
overridevirtualinherited

Definition at line 186 of file GrayLambertSurfaceRadiationBase.C.

187 {
188  // need to do some parallel communiction here
189  gatherSum(_areas);
190  gatherSum(_beta);
191  gatherSum(_side_temperature);
192 
193  // first compute averages from the totals
194  for (unsigned int j = 0; j < _n_sides; ++j)
195  {
196  _beta[j] /= _areas[j];
197  _side_temperature[j] /= _areas[j];
198  }
199 
200  // matrix and rhs vector for the view factor calculation
201  DenseMatrix<Real> matrix(_n_sides, _n_sides);
202  DenseVector<Real> rhs(_n_sides);
203  DenseVector<Real> radiosity(_n_sides);
204  for (unsigned int i = 0; i < _n_sides; ++i)
205  {
206  rhs(i) = _beta[i];
207  matrix(i, i) = 1;
208  for (unsigned int j = 0; j < _n_sides; ++j)
209  {
210  if (_side_type[i] == ADIABATIC)
211  matrix(i, j) -= _view_factors[i][j];
212  else
213  matrix(i, j) -= (1 - _emissivity[i]) * _view_factors[i][j];
214  }
215  }
216 
217  // compute the radiosityes
218  matrix.lu_solve(rhs, radiosity);
219 
220  // store the radiosity, temperatures and heat flux density for each surface
221  for (unsigned int i = 0; i < _n_sides; ++i)
222  {
223  _radiosity[i] = radiosity(i);
224 
225  // _heat_flux_density is obtained from a somewhat cumbersome relation
226  // but it has the advantage that we do not divide by 1 - emissivity
227  // which blows up for black bodies
228  _heat_flux_density[i] = radiosity(i);
229  for (unsigned int j = 0; j < _n_sides; ++j)
230  _heat_flux_density[i] -= _view_factors[i][j] * radiosity(j);
231 
232  if (_side_type[i] == ADIABATIC)
233  _side_temperature[i] =
234  std::pow((radiosity(i) + (1 - _emissivity[i]) / _emissivity[i] * _heat_flux_density[i]) /
236  0.25);
237 
238  // compute the surface irradiation into i from the radiosities
239  _surface_irradiation[i] = 0;
240  for (unsigned int j = 0; j < _n_sides; ++j)
241  _surface_irradiation[i] += _view_factors[i][j] * radiosity(j);
242  }
243 }

◆ getSurfaceEmissivity()

Real GrayLambertSurfaceRadiationBase::getSurfaceEmissivity ( BoundaryID  id) const
inherited

Definition at line 301 of file GrayLambertSurfaceRadiationBase.C.

302 {
303  if (_side_id_index.find(id) == _side_id_index.end())
304  return 1;
305  return _emissivity[_side_id_index.find(id)->second];
306 }

Referenced by GrayLambertNeumannBC::computeQpJacobian(), GrayLambertNeumannBC::computeQpResidual(), and SurfaceRadiationVectorPostprocessor::execute().

◆ getSurfaceHeatFluxDensity()

Real GrayLambertSurfaceRadiationBase::getSurfaceHeatFluxDensity ( BoundaryID  id) const
inherited

Definition at line 277 of file GrayLambertSurfaceRadiationBase.C.

278 {
279  if (_side_id_index.find(id) == _side_id_index.end())
280  return 0;
281  return _heat_flux_density[_side_id_index.find(id)->second];
282 }

Referenced by GrayLambertNeumannBC::computeQpResidual(), SurfaceRadiationVectorPostprocessor::execute(), and GrayLambertSurfaceRadiationPP::getValue().

◆ getSurfaceIDs()

std::set< BoundaryID > GrayLambertSurfaceRadiationBase::getSurfaceIDs ( ) const
inherited

Definition at line 260 of file GrayLambertSurfaceRadiationBase.C.

261 {
262  std::set<BoundaryID> surface_ids;
263  for (auto & p : _side_id_index)
264  surface_ids.insert(p.first);
265  return surface_ids;
266 }

Referenced by SurfaceRadiationVectorPostprocessor::initialize(), and ViewfactorVectorPostprocessor::initialize().

◆ getSurfaceIrradiation()

Real GrayLambertSurfaceRadiationBase::getSurfaceIrradiation ( BoundaryID  id) const
inherited

public interface of this UserObject

Definition at line 269 of file GrayLambertSurfaceRadiationBase.C.

270 {
271  if (_side_id_index.find(id) == _side_id_index.end())
272  return 0;
273  return _surface_irradiation[_side_id_index.find(id)->second];
274 }

Referenced by GrayLambertNeumannBC::computeQpResidual().

◆ getSurfaceRadiosity()

Real GrayLambertSurfaceRadiationBase::getSurfaceRadiosity ( BoundaryID  id) const
inherited

Definition at line 293 of file GrayLambertSurfaceRadiationBase.C.

294 {
295  if (_side_id_index.find(id) == _side_id_index.end())
296  return 0;
297  return _radiosity[_side_id_index.find(id)->second];
298 }

Referenced by SurfaceRadiationVectorPostprocessor::execute(), and GrayLambertSurfaceRadiationPP::getValue().

◆ getSurfaceTemperature()

Real GrayLambertSurfaceRadiationBase::getSurfaceTemperature ( BoundaryID  id) const
inherited

Definition at line 285 of file GrayLambertSurfaceRadiationBase.C.

286 {
287  if (_side_id_index.find(id) == _side_id_index.end())
288  return 0;
289  return _side_temperature[_side_id_index.find(id)->second];
290 }

Referenced by SurfaceRadiationVectorPostprocessor::execute(), and GrayLambertSurfaceRadiationPP::getValue().

◆ getViewFactor()

Real GrayLambertSurfaceRadiationBase::getViewFactor ( BoundaryID  from_id,
BoundaryID  to_id 
) const
inherited

Definition at line 309 of file GrayLambertSurfaceRadiationBase.C.

310 {
311  if (_side_id_index.find(from_id) == _side_id_index.end())
312  return 0;
313  if (_side_id_index.find(to_id) == _side_id_index.end())
314  return 0;
315  return _view_factors[_side_id_index.find(from_id)->second][_side_id_index.find(to_id)->second];
316 }

Referenced by ViewfactorVectorPostprocessor::execute().

◆ initialize()

void GrayLambertSurfaceRadiationBase::initialize ( )
overridevirtualinherited

Reimplemented in ConstantViewFactorSurfaceRadiation.

Definition at line 170 of file GrayLambertSurfaceRadiationBase.C.

171 {
172  // view factors are obtained here to make sure that another object had
173  // time to compute them on exec initial
175 
176  // initialize areas, beta, side temps
177  for (unsigned int j = 0; j < _n_sides; ++j)
178  {
179  _areas[j] = 0;
180  _beta[j] = 0;
181  _side_temperature[j] = 0;
182  }
183 }

Referenced by ConstantViewFactorSurfaceRadiation::initialize().

◆ setViewFactors()

std::vector< std::vector< Real > > ViewFactorObjectSurfaceRadiation::setViewFactors ( )
overrideprotectedvirtual

a purely virtual function that defines where view factors come from

Implements GrayLambertSurfaceRadiationBase.

Definition at line 36 of file ViewFactorObjectSurfaceRadiation.C.

37 {
38  const ViewFactorBase & view_factor_uo = getUserObject<ViewFactorBase>("view_factor_object_name");
39  std::vector<BoundaryName> boundary_names = getParam<std::vector<BoundaryName>>("boundary");
40  std::vector<std::vector<Real>> vf(_n_sides);
41 
42  for (unsigned int i = 0; i < _n_sides; ++i)
43  {
44  vf[i].resize(_n_sides);
45 
46  for (unsigned int j = 0; j < _n_sides; ++j)
47  vf[i][j] = view_factor_uo.getViewFactor(boundary_names[i], boundary_names[j]);
48  }
49  return vf;
50 }

◆ threadJoin()

void GrayLambertSurfaceRadiationBase::threadJoin ( const UserObject &  y)
overrideprotectedvirtualinherited

Definition at line 246 of file GrayLambertSurfaceRadiationBase.C.

247 {
248  const GrayLambertSurfaceRadiationBase & pps =
249  static_cast<const GrayLambertSurfaceRadiationBase &>(y);
250 
251  for (unsigned int j = 0; j < _n_sides; ++j)
252  {
253  _areas[j] += pps._areas[j];
255  _beta[j] += pps._beta[j];
256  }
257 }

◆ validParams()

InputParameters ViewFactorObjectSurfaceRadiation::validParams ( )
static

Definition at line 18 of file ViewFactorObjectSurfaceRadiation.C.

19 {
20  InputParameters params = GrayLambertSurfaceRadiationBase::validParams();
21  params.addRequiredParam<UserObjectName>("view_factor_object_name",
22  "Name of the ViewFactor userobjects.");
23  params.addClassDescription(
24  "ViewFactorObjectSurfaceRadiation computes radiative heat transfer between side sets and the "
25  "view factors are computed by a ViewFactor object");
26  return params;
27 }

Member Data Documentation

◆ _adiabatic_side_ids

std::set<unsigned int> GrayLambertSurfaceRadiationBase::_adiabatic_side_ids
protectedinherited

the set of adiabatic boundaries

Definition at line 103 of file GrayLambertSurfaceRadiationBase.h.

Referenced by GrayLambertSurfaceRadiationBase::GrayLambertSurfaceRadiationBase().

◆ _areas

std::vector<Real> GrayLambertSurfaceRadiationBase::_areas
protectedinherited

◆ _beta

std::vector<Real> GrayLambertSurfaceRadiationBase::_beta
protectedinherited

◆ _emissivity

const std::vector<Real> GrayLambertSurfaceRadiationBase::_emissivity
protectedinherited

◆ _fixed_side_id_index

std::map<unsigned int, unsigned int> GrayLambertSurfaceRadiationBase::_fixed_side_id_index
protectedinherited

side id to index map for isothermal boundaries, side ids can have holes or be out of order

Definition at line 100 of file GrayLambertSurfaceRadiationBase.h.

Referenced by GrayLambertSurfaceRadiationBase::execute(), and GrayLambertSurfaceRadiationBase::GrayLambertSurfaceRadiationBase().

◆ _fixed_side_temperature

std::vector<const Function *> GrayLambertSurfaceRadiationBase::_fixed_side_temperature
protectedinherited

side id to index map, side ids can have holes or be out of order

Definition at line 73 of file GrayLambertSurfaceRadiationBase.h.

Referenced by GrayLambertSurfaceRadiationBase::execute(), and GrayLambertSurfaceRadiationBase::GrayLambertSurfaceRadiationBase().

◆ _heat_flux_density

std::vector<Real> GrayLambertSurfaceRadiationBase::_heat_flux_density
protectedinherited

◆ _n_sides

unsigned int GrayLambertSurfaceRadiationBase::_n_sides
protectedinherited

◆ _radiosity

std::vector<Real> GrayLambertSurfaceRadiationBase::_radiosity
protectedinherited

◆ _side_id_index

std::map<BoundaryID, unsigned int> GrayLambertSurfaceRadiationBase::_side_id_index
protectedinherited

◆ _side_temperature

std::vector<Real> GrayLambertSurfaceRadiationBase::_side_temperature
protectedinherited

◆ _side_type

std::vector<enum RAD_BND_TYPE> GrayLambertSurfaceRadiationBase::_side_type
protectedinherited

◆ _sigma_stefan_boltzmann

const Real GrayLambertSurfaceRadiationBase::_sigma_stefan_boltzmann
protectedinherited

Stefan-Boltzmann constant.

Definition at line 61 of file GrayLambertSurfaceRadiationBase.h.

Referenced by GrayLambertSurfaceRadiationBase::execute(), and GrayLambertSurfaceRadiationBase::finalize().

◆ _surface_irradiation

std::vector<Real> GrayLambertSurfaceRadiationBase::_surface_irradiation
protectedinherited

◆ _temperature

const VariableValue& GrayLambertSurfaceRadiationBase::_temperature
protectedinherited

the coupled temperature variable

Definition at line 67 of file GrayLambertSurfaceRadiationBase.h.

Referenced by GrayLambertSurfaceRadiationBase::execute().

◆ _view_factors

std::vector<std::vector<Real> > GrayLambertSurfaceRadiationBase::_view_factors
protectedinherited

The documentation for this class was generated from the following files:
ViewFactorBase
A base class for automatic computation of view factors between sidesets.
Definition: ViewFactorBase.h:23
GrayLambertSurfaceRadiationBase::_surface_irradiation
std::vector< Real > _surface_irradiation
the irradiation into each surface
Definition: GrayLambertSurfaceRadiationBase.h:97
pow
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Definition: ExpressionBuilder.h:673
ViewFactorBase::getViewFactor
Real getViewFactor(BoundaryID from_id, BoundaryID to_id) const
public interface for obtaining view factors
Definition: ViewFactorBase.C:52
GrayLambertSurfaceRadiationBase::FIXED_TEMPERATURE
Definition: GrayLambertSurfaceRadiationBase.h:40
GrayLambertSurfaceRadiationBase::ADIABATIC
Definition: GrayLambertSurfaceRadiationBase.h:41
GrayLambertSurfaceRadiationBase::_fixed_side_temperature
std::vector< const Function * > _fixed_side_temperature
side id to index map, side ids can have holes or be out of order
Definition: GrayLambertSurfaceRadiationBase.h:73
GrayLambertSurfaceRadiationBase::_sigma_stefan_boltzmann
const Real _sigma_stefan_boltzmann
Stefan-Boltzmann constant.
Definition: GrayLambertSurfaceRadiationBase.h:61
GrayLambertSurfaceRadiationBase::_temperature
const VariableValue & _temperature
the coupled temperature variable
Definition: GrayLambertSurfaceRadiationBase.h:67
GrayLambertSurfaceRadiationBase::GrayLambertSurfaceRadiationBase
GrayLambertSurfaceRadiationBase(const InputParameters &parameters)
Definition: GrayLambertSurfaceRadiationBase.C:42
GrayLambertSurfaceRadiationBase::_fixed_side_id_index
std::map< unsigned int, unsigned int > _fixed_side_id_index
side id to index map for isothermal boundaries, side ids can have holes or be out of order
Definition: GrayLambertSurfaceRadiationBase.h:100
GrayLambertSurfaceRadiationBase::_radiosity
std::vector< Real > _radiosity
the radiosity of each surface
Definition: GrayLambertSurfaceRadiationBase.h:76
GrayLambertSurfaceRadiationBase::validParams
static InputParameters validParams()
Definition: GrayLambertSurfaceRadiationBase.C:20
GrayLambertSurfaceRadiationBase::_heat_flux_density
std::vector< Real > _heat_flux_density
the heat flux density qdot
Definition: GrayLambertSurfaceRadiationBase.h:79
GrayLambertSurfaceRadiationBase::_beta
std::vector< Real > _beta
the average value of sigma * eps * T^4
Definition: GrayLambertSurfaceRadiationBase.h:94
GrayLambertSurfaceRadiationBase::_emissivity
const std::vector< Real > _emissivity
constant emissivity for each boundary
Definition: GrayLambertSurfaceRadiationBase.h:70
GrayLambertSurfaceRadiationBase::VARIABLE_TEMPERATURE
Definition: GrayLambertSurfaceRadiationBase.h:39
GrayLambertSurfaceRadiationBase::_view_factors
std::vector< std::vector< Real > > _view_factors
the view factors which are set by setViewFactors by derived classes
Definition: GrayLambertSurfaceRadiationBase.h:106
GrayLambertSurfaceRadiationBase::_side_temperature
std::vector< Real > _side_temperature
the average temperature: this could be important for adiabatic walls
Definition: GrayLambertSurfaceRadiationBase.h:82
GrayLambertSurfaceRadiationBase::_n_sides
unsigned int _n_sides
number of active boundary ids
Definition: GrayLambertSurfaceRadiationBase.h:64
GrayLambertSurfaceRadiationBase
GrayLambertSurfaceRadiationBase computes the heat flux on a set of surfaces in radiative heat transfe...
Definition: GrayLambertSurfaceRadiationBase.h:25
GrayLambertSurfaceRadiationBase::_side_type
std::vector< enum RAD_BND_TYPE > _side_type
the type of the side, allows lookup index -> type
Definition: GrayLambertSurfaceRadiationBase.h:85
GrayLambertSurfaceRadiationBase::_side_id_index
std::map< BoundaryID, unsigned int > _side_id_index
side id to index map, side ids can have holes or be out of order
Definition: GrayLambertSurfaceRadiationBase.h:88
GrayLambertSurfaceRadiationBase::setViewFactors
virtual std::vector< std::vector< Real > > setViewFactors()=0
a purely virtual function that defines where view factors come from
GrayLambertSurfaceRadiationBase::_areas
std::vector< Real > _areas
the area by participating side set
Definition: GrayLambertSurfaceRadiationBase.h:91