https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
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
92unsigned int
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}
INSFEFluidKernelBase(const InputParameters &parameters)
static InputParameters validParams()
unsigned int mapVarNumber(unsigned int var) const
Helper function for mapping Moose variable numberings into the "canonical" numbering for the porous m...
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addCoupledVar(const std::string &name, const std::string &doc_string)
static InputParameters validParams()
bool isParamValid(const std::string &name) const
virtual unsigned int dimension() const
MooseMesh & _mesh
Common class for single phase fluid properties.
The following methods are specializations for using the Parallel::packed_range_* routines for a vecto...