Line data Source code
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 :
14 : InputParameters
15 861 : INSFEFluidKernelBase::validParams()
16 : {
17 861 : InputParameters params = Kernel::validParams();
18 :
19 : // Coupled variables
20 1722 : params.addRequiredCoupledVar("u", "velocity in x-direction");
21 1722 : params.addCoupledVar("v", "velocity in y-direction"); // required in 2D/3D
22 1722 : params.addCoupledVar("w", "velocity in z-direction"); // required in 3D
23 :
24 1722 : params.addRequiredCoupledVar("pressure", "pressure");
25 1722 : params.addRequiredCoupledVar("temperature", "temperature");
26 1722 : params.addCoupledVar("porosity", "porosity");
27 :
28 1722 : params.addParam<bool>("transient", true, "if it is a transient simulation.");
29 1722 : params.addParam<VectorValue<Real>>("gravity", "Gravity vector");
30 :
31 1722 : params.addRequiredParam<UserObjectName>("eos", "The name of equation of state object to use.");
32 :
33 861 : return params;
34 0 : }
35 :
36 462 : INSFEFluidKernelBase::INSFEFluidKernelBase(const InputParameters & parameters)
37 : : Kernel(parameters),
38 924 : _second_u(_var.secondSln()),
39 : // Coupled variables
40 462 : _u_var(_sys.getFieldVariable<Real>(_tid, parameters.get<std::vector<VariableName>>("u")[0])),
41 462 : _v_var(_sys.getFieldVariable<Real>(_tid, parameters.get<std::vector<VariableName>>("v")[0])),
42 462 : _w_var(_mesh.dimension() == 3 ? _sys.getFieldVariable<Real>(
43 0 : _tid, parameters.get<std::vector<VariableName>>("w")[0])
44 : : _u_var),
45 :
46 462 : _u_vel(coupledValue("u")),
47 462 : _v_vel(_mesh.dimension() >= 2 ? coupledValue("v") : _zero),
48 462 : _w_vel(_mesh.dimension() == 3 ? coupledValue("w") : _zero),
49 462 : _pressure(coupledValue("pressure")),
50 462 : _temperature(coupledValue("temperature")),
51 924 : _rho(getMaterialProperty<Real>("rho_fluid")),
52 :
53 924 : _has_porosity(isParamValid("porosity")),
54 462 : _porosity(_has_porosity ? coupledValue("porosity") : _zero),
55 :
56 924 : _bTransient(getParam<bool>("transient")),
57 462 : _u_vel_dot(_bTransient ? coupledDot("u") : _zero),
58 462 : _v_vel_dot(_bTransient && (_mesh.dimension() >= 2) ? coupledDot("v") : _zero),
59 462 : _w_vel_dot(_bTransient && (_mesh.dimension() == 3) ? coupledDot("w") : _zero),
60 :
61 : // Gradients
62 462 : _grad_u_vel(coupledGradient("u")),
63 462 : _grad_v_vel(_mesh.dimension() >= 2 ? coupledGradient("v") : _grad_zero),
64 462 : _grad_w_vel(_mesh.dimension() == 3 ? coupledGradient("w") : _grad_zero),
65 462 : _grad_pressure(coupledGradient("pressure")),
66 462 : _grad_temperature(coupledGradient("temperature")),
67 :
68 : // Variable numberings
69 462 : _u_vel_var_number(coupled("u")),
70 462 : _v_vel_var_number(_mesh.dimension() >= 2 ? coupled("v") : libMesh::invalid_uint),
71 462 : _w_vel_var_number(_mesh.dimension() == 3 ? coupled("w") : libMesh::invalid_uint),
72 462 : _pressure_var_number(coupled("pressure")),
73 462 : _temperature_var_number(coupled("temperature")),
74 :
75 : // Material properties
76 924 : _viscous_stress_tensor(getMaterialProperty<RealTensorValue>("viscous_stress_tensor")),
77 924 : _dynamic_viscosity(getMaterialProperty<Real>("dynamic_viscosity")),
78 924 : _turbulence_viscosity(getMaterialProperty<Real>("turbulence_viscosity")),
79 924 : _inertia_resistance_coeff(getMaterialProperty<RealTensorValue>("inertia_resistance_coeff")),
80 924 : _viscous_resistance_coeff(getMaterialProperty<RealTensorValue>("viscous_resistance_coeff")),
81 462 : _eos(getUserObject<SinglePhaseFluidProperties>("eos")),
82 462 : _vec_g(0., 0., 0.)
83 : {
84 924 : if (isParamValid("gravity"))
85 924 : _vec_g = getParam<VectorValue<Real>>("gravity");
86 0 : else if (_mesh.dimension() == 2)
87 0 : _vec_g(1) = -9.8;
88 0 : else if (_mesh.dimension() == 3)
89 0 : _vec_g(2) = -9.8;
90 462 : }
91 :
92 : unsigned int
93 53621760 : 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 53621760 : if (var == _pressure_var_number)
105 : mapped_var_number = 0;
106 38261760 : else if (var == _u_vel_var_number)
107 : mapped_var_number = 1;
108 22901760 : else if (var == _v_vel_var_number)
109 : mapped_var_number = 2;
110 7541760 : else if (var == _w_vel_var_number)
111 : mapped_var_number = 3;
112 7541760 : else if (var == _temperature_var_number)
113 : mapped_var_number = 4;
114 : else
115 : mapped_var_number = 99;
116 :
117 53621760 : return mapped_var_number;
118 : }
|