https://mooseframework.inl.gov
ADBoundaryFlux3EqnBC.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 
10 #include "ADBoundaryFlux3EqnBC.h"
11 #include "MooseVariable.h"
12 #include "THMIndicesVACE.h"
13 
14 registerMooseObject("ThermalHydraulicsApp", ADBoundaryFlux3EqnBC);
15 
18 {
20 
21  params.addClassDescription(
22  "Boundary conditions for the 1-D, 1-phase, variable-area Euler equations");
23 
24  params.addRequiredCoupledVar("A_linear", "Cross-sectional area, linear");
25  params.addRequiredCoupledVar("rhoA", "Conserved variable: rho*A");
26  params.addRequiredCoupledVar("rhouA", "Conserved variable: rho*u*A");
27  params.addRequiredCoupledVar("rhoEA", "Conserved variable: rho*E*A");
28 
29  params.addRequiredParam<UserObjectName>("boundary_flux", "Name of boundary flux user object");
30 
31  return params;
32 }
33 
35  : ADOneDIntegratedBC(parameters),
36 
37  _A_linear(adCoupledValue("A_linear")),
38 
39  _rhoA(getADMaterialProperty<Real>("rhoA")),
40  _rhouA(getADMaterialProperty<Real>("rhouA")),
41  _rhoEA(getADMaterialProperty<Real>("rhoEA")),
42 
43  _rhoA_var(coupled("rhoA")),
44  _rhouA_var(coupled("rhouA")),
45  _rhoEA_var(coupled("rhoEA")),
46 
47  _flux(getUserObject<ADBoundaryFluxBase>("boundary_flux"))
48 {
49 }
50 
51 void
53 {
55 
56  const auto jmap = getIndexMapping();
57  _equation_index = jmap.at(_var.number());
58 }
59 
60 ADReal
62 {
63  const auto & flux = _flux.getFlux(
65 
66  return flux[_equation_index] * _normal * _test[_i][_qp];
67 }
68 
69 std::vector<ADReal>
71 {
72  std::vector<ADReal> U(THMVACE1D::N_FLUX_INPUTS, 0);
77 
78  return U;
79 }
80 
81 std::map<unsigned int, unsigned int>
83 {
84  std::map<unsigned int, unsigned int> jmap;
85  jmap.insert(std::pair<unsigned int, unsigned int>(_rhoA_var, THMVACE1D::MASS));
86  jmap.insert(std::pair<unsigned int, unsigned int>(_rhouA_var, THMVACE1D::MOMENTUM));
87  jmap.insert(std::pair<unsigned int, unsigned int>(_rhoEA_var, THMVACE1D::ENERGY));
88 
89  return jmap;
90 }
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.
unsigned int number() const
const Elem *const & _current_elem
const ADBoundaryFluxBase & _flux
boundary flux user object
auto raw_value(const Eigen::Map< T > &in)
ADBoundaryFlux3EqnBC(const InputParameters &parameters)
DualNumber< Real, DNDerivativeType, true > ADReal
void addRequiredParam(const std::string &name, const std::string &doc_string)
unsigned int _qp
virtual std::vector< ADReal > fluxInputVector() const
Returns the flux input vector.
const unsigned int _rhouA_var
registerMooseObject("ThermalHydraulicsApp", ADBoundaryFlux3EqnBC)
const unsigned int _rhoEA_var
virtual void initialSetup() override
virtual std::map< unsigned int, unsigned int > getIndexMapping() const
Creates the mapping of coupled variable index to index in Euler system.
const ADMaterialProperty< Real > & _rhoA
static InputParameters validParams()
static InputParameters validParams()
static const unsigned int N_FLUX_INPUTS
Number of numerical flux function inputs for 1D.
Boundary conditions for the 1-D, 1-phase, variable-area Euler equations using a boundary flux user ob...
MooseVariableFE< T > & _var
const ADMaterialProperty< Real > & _rhouA
A base class for computing/caching fluxes at boundaries.
const ADVariableValue & _A_linear
Cross-sectional area, linear.
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
const unsigned int & _current_side
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const ADTemplateVariableTestValue< T > & _test
void addClassDescription(const std::string &doc_string)
unsigned int _equation_index
index within the Euler system of the equation upon which this BC acts
const unsigned int _rhoA_var
const Real _normal
Component of outward normals along 1-D direction.
virtual ADReal computeQpResidual() override
virtual void initialSetup()
Base class for integrated boundary conditions for 1D problems in 3D space.
const MooseArray< ADPoint > & _normals
const ADMaterialProperty< Real > & _rhoEA