https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
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"};
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
43Real
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}
registerMooseObject("ThermalHydraulicsApp", ADFlowBoundaryFlux1Phase)
A base class for computing/caching fluxes at boundaries.
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 _n_components
Number of components in the solution vector used to compute the flux.
virtual Real computeQpIntegral() override
const ADBoundaryFluxBase & _boundary_uo
Boundary user object.
static InputParameters validParams()
std::vector< const ADVariableValue * > _U
Variables to pass to boundary flux user object, in the correct order.
ADFlowBoundaryFlux1Phase(const InputParameters &parameters)
const unsigned int _equation_index
Index within flux vector to query.
const ADVariableValue & adCoupledValue(const std::string &var_name, unsigned int comp=0) const
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
T & set(const std::string &name, bool quiet_mode=false)
void addCoupledVar(const std::string &name, const std::string &doc_string)
static InputParameters validParams()
const unsigned int & _current_side
const MooseArray< Point > & _normals
const Elem *const & _current_elem
auto raw_value(const Eigen::Map< T > &in)