https://mooseframework.inl.gov
ADFlowBoundaryFlux1Phase.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 
11 #include "ADBoundaryFluxBase.h"
12 #include "THMIndicesVACE.h"
13 
14 registerMooseObject("ThermalHydraulicsApp", ADFlowBoundaryFlux1Phase);
15 
18 {
20  MooseEnum equation("mass=0 momentum=1 energy=2");
22  "equation", equation, "Equation for which to query flux vector");
23  params.addCoupledVar("variables", "Single-phase flow variables");
24  params.set<std::vector<VariableName>>("variables") = {"rhoA", "rhouA", "rhoEA", "A"};
25  params.addClassDescription(
26  "Retrieves an entry of a flux vector for a connection attached to a 1-phase junction");
27 
28  return params;
29 }
30 
32  : SideIntegralPostprocessor(parameters),
33  _n_components(THMVACE1D::N_FLUX_INPUTS),
34  _boundary_name(getParam<std::vector<BoundaryName>>("boundary")[0]),
35  _boundary_uo_name(_boundary_name + ":boundary_uo"),
36  _boundary_uo(getUserObjectByName<ADBoundaryFluxBase>(_boundary_uo_name)),
37  _equation_index(getParam<MooseEnum>("equation"))
38 {
39  for (unsigned int i = 0; i < _n_components; i++)
40  _U.push_back(&adCoupledValue("variables", i));
41 }
42 
43 Real
45 {
46  std::vector<ADReal> U(_n_components);
47  for (unsigned int i = 0; i < _n_components; i++)
48  U[i] = (*_U[i])[_qp];
49 
50  const auto & flux = _boundary_uo.getFlux(_current_side, _current_elem->id(), U, _normals[_qp]);
52 }
virtual const std::vector< ADReal > & getFlux(unsigned int iside, dof_id_type ielem, const std::vector< ADReal > &uvec1, const RealVectorValue &dwave) const
Get the boundary flux vector.
Retrieves an entry of a flux vector for a 1-phase boundary.
const unsigned int & _current_side
static InputParameters validParams()
registerMooseObject("ThermalHydraulicsApp", ADFlowBoundaryFlux1Phase)
const unsigned int _equation_index
Index within flux vector to query.
T & set(const std::string &name, bool quiet_mode=false)
auto raw_value(const Eigen::Map< T > &in)
const ADVariableValue & adCoupledValue(const std::string &var_name, unsigned int comp=0) const
const ADBoundaryFluxBase & _boundary_uo
Boundary user object.
static const unsigned int N_FLUX_INPUTS
Number of numerical flux function inputs for 3D.
void addRequiredParam(const std::string &name, const std::string &doc_string)
static InputParameters validParams()
std::vector< const ADVariableValue * > _U
Variables to pass to boundary flux user object, in the correct order.
virtual Real computeQpIntegral() override
A base class for computing/caching fluxes at boundaries.
void addCoupledVar(const std::string &name, const std::string &doc_string)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const MooseArray< Point > & _normals
void addClassDescription(const std::string &doc_string)
const Elem *const & _current_elem
ADFlowBoundaryFlux1Phase(const InputParameters &parameters)
const unsigned int _n_components
Number of components in the solution vector used to compute the flux.