https://mooseframework.inl.gov
INSFEFluidKernelBase.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 "INSFEFluidKernelBase.h"
11 #include "MooseMesh.h"
12 #include "SystemBase.h"
13 
16 {
18 
19  // Coupled variables
20  params.addRequiredCoupledVar("u", "velocity in x-direction");
21  params.addCoupledVar("v", "velocity in y-direction"); // required in 2D/3D
22  params.addCoupledVar("w", "velocity in z-direction"); // required in 3D
23 
24  params.addRequiredCoupledVar("pressure", "pressure");
25  params.addRequiredCoupledVar("temperature", "temperature");
26  params.addCoupledVar("porosity", "porosity");
27 
28  params.addParam<bool>("transient", true, "if it is a transient simulation.");
29  params.addParam<VectorValue<Real>>("gravity", "Gravity vector");
30 
31  params.addRequiredParam<UserObjectName>("eos", "The name of equation of state object to use.");
32 
33  return params;
34 }
35 
37  : Kernel(parameters),
38  _second_u(_var.secondSln()),
39  // Coupled variables
40  _u_var(_sys.getFieldVariable<Real>(_tid, parameters.get<std::vector<VariableName>>("u")[0])),
41  _v_var(_sys.getFieldVariable<Real>(_tid, parameters.get<std::vector<VariableName>>("v")[0])),
42  _w_var(_mesh.dimension() == 3 ? _sys.getFieldVariable<Real>(
43  _tid, parameters.get<std::vector<VariableName>>("w")[0])
44  : _u_var),
45 
46  _u_vel(coupledValue("u")),
47  _v_vel(_mesh.dimension() >= 2 ? coupledValue("v") : _zero),
48  _w_vel(_mesh.dimension() == 3 ? coupledValue("w") : _zero),
49  _pressure(coupledValue("pressure")),
50  _temperature(coupledValue("temperature")),
51  _rho(getMaterialProperty<Real>("rho_fluid")),
52 
53  _has_porosity(isParamValid("porosity")),
54  _porosity(_has_porosity ? coupledValue("porosity") : _zero),
55 
56  _bTransient(getParam<bool>("transient")),
57  _u_vel_dot(_bTransient ? coupledDot("u") : _zero),
58  _v_vel_dot(_bTransient && (_mesh.dimension() >= 2) ? coupledDot("v") : _zero),
59  _w_vel_dot(_bTransient && (_mesh.dimension() == 3) ? coupledDot("w") : _zero),
60 
61  // Gradients
62  _grad_u_vel(coupledGradient("u")),
63  _grad_v_vel(_mesh.dimension() >= 2 ? coupledGradient("v") : _grad_zero),
64  _grad_w_vel(_mesh.dimension() == 3 ? coupledGradient("w") : _grad_zero),
65  _grad_pressure(coupledGradient("pressure")),
66  _grad_temperature(coupledGradient("temperature")),
67 
68  // Variable numberings
69  _u_vel_var_number(coupled("u")),
70  _v_vel_var_number(_mesh.dimension() >= 2 ? coupled("v") : libMesh::invalid_uint),
71  _w_vel_var_number(_mesh.dimension() == 3 ? coupled("w") : libMesh::invalid_uint),
72  _pressure_var_number(coupled("pressure")),
73  _temperature_var_number(coupled("temperature")),
74 
75  // Material properties
76  _viscous_stress_tensor(getMaterialProperty<RealTensorValue>("viscous_stress_tensor")),
77  _dynamic_viscosity(getMaterialProperty<Real>("dynamic_viscosity")),
78  _turbulence_viscosity(getMaterialProperty<Real>("turbulence_viscosity")),
79  _inertia_resistance_coeff(getMaterialProperty<RealTensorValue>("inertia_resistance_coeff")),
80  _viscous_resistance_coeff(getMaterialProperty<RealTensorValue>("viscous_resistance_coeff")),
81  _eos(getUserObject<SinglePhaseFluidProperties>("eos")),
82  _vec_g(0., 0., 0.)
83 {
84  if (isParamValid("gravity"))
85  _vec_g = getParam<VectorValue<Real>>("gravity");
86  else if (_mesh.dimension() == 2)
87  _vec_g(1) = -9.8;
88  else if (_mesh.dimension() == 3)
89  _vec_g(2) = -9.8;
90 }
91 
92 unsigned int
93 INSFEFluidKernelBase::mapVarNumber(unsigned int var) const
94 {
95  // Convert the Moose numbering to:
96  // 0 for pressure
97  // 1 for u
98  // 2 for v
99  // 3 for w
100  // 4 for temperature
101  // regardless of the problem dimension, etc.
102  unsigned mapped_var_number = 99;
103 
104  if (var == _pressure_var_number)
105  mapped_var_number = 0;
106  else if (var == _u_vel_var_number)
107  mapped_var_number = 1;
108  else if (var == _v_vel_var_number)
109  mapped_var_number = 2;
110  else if (var == _w_vel_var_number)
111  mapped_var_number = 3;
112  else if (var == _temperature_var_number)
113  mapped_var_number = 4;
114  else
115  mapped_var_number = 99;
116 
117  return mapped_var_number;
118 }
MooseMesh & _mesh
static InputParameters validParams()
const unsigned int invalid_uint
INSFEFluidKernelBase(const InputParameters &parameters)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
The following methods are specializations for using the Parallel::packed_range_* routines for a vecto...
void addRequiredParam(const std::string &name, const std::string &doc_string)
bool isParamValid(const std::string &name) const
TensorValue< Real > RealTensorValue
virtual unsigned int dimension() const
Common class for single phase fluid properties.
void addCoupledVar(const std::string &name, const std::string &doc_string)
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
unsigned int mapVarNumber(unsigned int var) const
Helper function for mapping Moose variable numberings into the "canonical" numbering for the porous m...
const Elem & get(const ElemType type_in)
static InputParameters validParams()