www.mooseframework.org
BoundaryFluxPostprocessor.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 
11 #include "BoundaryFluxBase.h"
12 
14 
15 template <>
16 InputParameters
18 {
19  InputParameters params = validParams<SideIntegralPostprocessor>();
20 
21  params.addRequiredParam<UserObjectName>("boundary_flux_uo", "Boundary flux user object name");
22  params.addRequiredParam<unsigned int>("flux_index", "Index within flux vector to query");
23  params.addParam<Point>("normal", "Normal vector for boundary (if requesting override)");
24  params.addRequiredCoupledVar(
25  "variables", "Variables to pass to boundary flux user object, in the correct order");
26 
27  params.addClassDescription(
28  "Computes the side integral of a flux entry from a BoundaryFluxBase user object");
29 
30  return params;
31 }
32 
33 BoundaryFluxPostprocessor::BoundaryFluxPostprocessor(const InputParameters & parameters)
34  : SideIntegralPostprocessor(parameters),
35 
36  _boundary_flux_uo(getUserObject<BoundaryFluxBase>("boundary_flux_uo")),
37  _flux_index(getParam<unsigned int>("flux_index")),
38  _provided_normal(isParamValid("normal")),
39  _n_components(coupledComponents("variables"))
40 {
41  for (unsigned int i = 0; i < _n_components; i++)
42  _U.push_back(&coupledValue("variables", i));
43 }
44 
45 Real
47 {
48  std::vector<Real> U(_n_components);
49  for (unsigned int i = 0; i < _n_components; i++)
50  U[i] = (*_U[i])[_qp];
51 
52  const Point & normal = _provided_normal ? getParam<Point>("normal") : _normals[_qp];
53 
54  const auto & flux = _boundary_flux_uo.getFlux(_current_side, _current_elem->id(), U, normal);
55  return flux[_flux_index];
56 }
BoundaryFluxPostprocessor
Computes the side integral of a flux entry from a BoundaryFluxBase user object.
Definition: BoundaryFluxPostprocessor.h:23
registerMooseObject
registerMooseObject("RdgApp", BoundaryFluxPostprocessor)
BoundaryFluxPostprocessor::_provided_normal
const bool _provided_normal
Did the user request to override the boundary normal?
Definition: BoundaryFluxPostprocessor.h:38
BoundaryFluxPostprocessor::_flux_index
const unsigned int & _flux_index
Index within flux vector to query.
Definition: BoundaryFluxPostprocessor.h:35
BoundaryFluxPostprocessor.h
BoundaryFluxBase.h
BoundaryFluxPostprocessor::_n_components
const unsigned int _n_components
Number of components in the solution vector used to compute the flux.
Definition: BoundaryFluxPostprocessor.h:41
validParams< BoundaryFluxPostprocessor >
InputParameters validParams< BoundaryFluxPostprocessor >()
Definition: BoundaryFluxPostprocessor.C:17
BoundaryFluxBase
A base class for computing/caching fluxes at boundaries.
Definition: BoundaryFluxBase.h:30
BoundaryFluxPostprocessor::computeQpIntegral
virtual Real computeQpIntegral() override
Definition: BoundaryFluxPostprocessor.C:46
BoundaryFluxPostprocessor::_boundary_flux_uo
const BoundaryFluxBase & _boundary_flux_uo
Boundary flux user object.
Definition: BoundaryFluxPostprocessor.h:32
BoundaryFluxBase::getFlux
virtual const std::vector< Real > & getFlux(unsigned int iside, dof_id_type ielem, const std::vector< Real > &uvec1, const RealVectorValue &dwave) const
Get the boundary flux vector.
Definition: BoundaryFluxBase.C:54
BoundaryFluxPostprocessor::BoundaryFluxPostprocessor
BoundaryFluxPostprocessor(const InputParameters &parameters)
Definition: BoundaryFluxPostprocessor.C:33
BoundaryFluxPostprocessor::_U
std::vector< const VariableValue * > _U
Variables to pass to boundary flux user object, in the correct order.
Definition: BoundaryFluxPostprocessor.h:44