www.mooseframework.org
NavierStokesMaterial.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 #pragma once
11 
12 #include "Material.h"
13 
14 // Forward Declarations
17 
18 template <>
19 InputParameters validParams<NavierStokesMaterial>();
20 
36 class NavierStokesMaterial : public Material
37 {
38 public:
39  NavierStokesMaterial(const InputParameters & parameters);
40 
41 protected:
45  virtual void computeProperties();
46 
47  const unsigned int _mesh_dimension;
48 
49  const VariableGradient & _grad_u;
50  const VariableGradient & _grad_v;
51  const VariableGradient & _grad_w;
52 
53  MaterialProperty<RealTensorValue> & _viscous_stress_tensor;
54  MaterialProperty<Real> & _thermal_conductivity;
55  MaterialProperty<Real> & _dynamic_viscosity;
56 
57  // Also store the "cal A" matrices at each quadrature point as material
58  // poperties. These are defined in the compns notes and are needed for
59  // computing strong and weak residual values and Jacobian entries, so it's
60  // good if we reuse them...
61  MaterialProperty<std::vector<RealTensorValue>> & _calA;
62 
63  // The "velocity column" matrices. _calC[_qp][k] is a tensor with the
64  // velocity vector in the k'th column. See notes for additional details.
65  MaterialProperty<std::vector<RealTensorValue>> & _calC;
66 
67  // The energy equation inviscid flux matrix components. There are n_vars of
68  // these for each dimension, so in 3D, 3*5=15 different matrices.
69  // See notes for additional details.
70  MaterialProperty<std::vector<std::vector<RealTensorValue>>> & _calE;
71 
72  // Convenient storage for all of the velocity gradient components so
73  // we can refer to them in a loop.
74  std::vector<const VariableGradient *> _vel_grads;
75 
76  // Coupled values needed to compute strong form residuals
77  // for SUPG stabilization...
78  const VariableValue & _u_vel;
79  const VariableValue & _v_vel;
80  const VariableValue & _w_vel;
81 
82  // Temperature is needed to compute speed of sound
83  const VariableValue & _temperature;
84 
85  // Enthalpy is needed in computing energy equation strong residuals
86  const VariableValue & _enthalpy;
87 
88  // Main solution variables are all needed for computing strong residuals
89  const VariableValue & _rho;
90  const VariableValue & _rho_u;
91  const VariableValue & _rho_v;
92  const VariableValue & _rho_w;
93  const VariableValue & _rho_E;
94 
95  // Time derivative values for dependent variables
96  const VariableValue & _drho_dt;
97  const VariableValue & _drhou_dt;
98  const VariableValue & _drhov_dt;
99  const VariableValue & _drhow_dt;
100  const VariableValue & _drhoE_dt;
101 
102  // Gradients
103  const VariableGradient & _grad_rho;
104  const VariableGradient & _grad_rho_u;
105  const VariableGradient & _grad_rho_v;
106  const VariableGradient & _grad_rho_w;
107  const VariableGradient & _grad_rho_E;
108 
109  // The real-valued material properties representing the element stabilization
110  // parameters for each of the equations.
111  MaterialProperty<Real> & _hsupg;
112  MaterialProperty<Real> & _tauc;
113  MaterialProperty<Real> & _taum;
114  MaterialProperty<Real> & _taue;
115 
116  // The (vector-valued) material property which is the strong-form
117  // residual at each quadrature point.
118  MaterialProperty<std::vector<Real>> & _strong_residuals;
119 
120  // Fluid properties
122 
123 private:
124  // To be called from computeProperties() function to compute _hsupg
125  void computeHSUPG(unsigned int qp);
126 
127  // To be called from computeProperties() function to compute _tauc, _taum, _taue
128  void computeTau(unsigned int qp);
129 
130  // To be called from computeProperties() function to compute the strong residual of each equation.
131  void computeStrongResiduals(unsigned int qp);
132 };
133 
NavierStokesMaterial::_drhoE_dt
const VariableValue & _drhoE_dt
Definition: NavierStokesMaterial.h:100
NavierStokesMaterial::_w_vel
const VariableValue & _w_vel
Definition: NavierStokesMaterial.h:80
NavierStokesMaterial::_mesh_dimension
const unsigned int _mesh_dimension
Definition: NavierStokesMaterial.h:47
NavierStokesMaterial::_grad_rho_v
const VariableGradient & _grad_rho_v
Definition: NavierStokesMaterial.h:105
NavierStokesMaterial::_viscous_stress_tensor
MaterialProperty< RealTensorValue > & _viscous_stress_tensor
Definition: NavierStokesMaterial.h:53
NavierStokesMaterial::_enthalpy
const VariableValue & _enthalpy
Definition: NavierStokesMaterial.h:86
IdealGasFluidProperties
Ideal gas fluid properties Default parameters are for air at atmospheric pressure and temperature.
Definition: IdealGasFluidProperties.h:26
validParams< NavierStokesMaterial >
InputParameters validParams< NavierStokesMaterial >()
Definition: NavierStokesMaterial.C:25
NavierStokesMaterial::computeHSUPG
void computeHSUPG(unsigned int qp)
Definition: NavierStokesMaterial.C:178
NavierStokesMaterial::_rho_E
const VariableValue & _rho_E
Definition: NavierStokesMaterial.h:93
NavierStokesMaterial::_rho_u
const VariableValue & _rho_u
Definition: NavierStokesMaterial.h:90
NavierStokesMaterial::_u_vel
const VariableValue & _u_vel
Definition: NavierStokesMaterial.h:78
NavierStokesMaterial::_rho_w
const VariableValue & _rho_w
Definition: NavierStokesMaterial.h:92
NavierStokesMaterial::_vel_grads
std::vector< const VariableGradient * > _vel_grads
Definition: NavierStokesMaterial.h:74
NavierStokesMaterial::_thermal_conductivity
MaterialProperty< Real > & _thermal_conductivity
Definition: NavierStokesMaterial.h:54
NavierStokesMaterial::_grad_u
const VariableGradient & _grad_u
Definition: NavierStokesMaterial.h:49
NavierStokesMaterial
This is the base class all materials should use if you are trying to use the Navier-Stokes Kernels.
Definition: NavierStokesMaterial.h:36
NavierStokesMaterial::_calC
MaterialProperty< std::vector< RealTensorValue > > & _calC
Definition: NavierStokesMaterial.h:65
NavierStokesMaterial::_calE
MaterialProperty< std::vector< std::vector< RealTensorValue > > > & _calE
Definition: NavierStokesMaterial.h:70
NavierStokesMaterial::_tauc
MaterialProperty< Real > & _tauc
Definition: NavierStokesMaterial.h:112
NavierStokesMaterial::_calA
MaterialProperty< std::vector< RealTensorValue > > & _calA
Definition: NavierStokesMaterial.h:61
NavierStokesMaterial::_grad_rho_w
const VariableGradient & _grad_rho_w
Definition: NavierStokesMaterial.h:106
NavierStokesMaterial::_temperature
const VariableValue & _temperature
Definition: NavierStokesMaterial.h:83
NavierStokesMaterial::_drhou_dt
const VariableValue & _drhou_dt
Definition: NavierStokesMaterial.h:97
NavierStokesMaterial::_v_vel
const VariableValue & _v_vel
Definition: NavierStokesMaterial.h:79
NavierStokesMaterial::_rho
const VariableValue & _rho
Definition: NavierStokesMaterial.h:89
NavierStokesMaterial::computeProperties
virtual void computeProperties()
Must be called after the child class computes dynamic_viscocity.
Definition: NavierStokesMaterial.C:116
NavierStokesMaterial::_drho_dt
const VariableValue & _drho_dt
Definition: NavierStokesMaterial.h:96
NavierStokesMaterial::_grad_rho
const VariableGradient & _grad_rho
Definition: NavierStokesMaterial.h:103
NavierStokesMaterial::_grad_rho_E
const VariableGradient & _grad_rho_E
Definition: NavierStokesMaterial.h:107
NavierStokesMaterial::_taum
MaterialProperty< Real > & _taum
Definition: NavierStokesMaterial.h:113
NavierStokesMaterial::_grad_v
const VariableGradient & _grad_v
Definition: NavierStokesMaterial.h:50
NavierStokesMaterial::_dynamic_viscosity
MaterialProperty< Real > & _dynamic_viscosity
Definition: NavierStokesMaterial.h:55
NavierStokesMaterial::_drhov_dt
const VariableValue & _drhov_dt
Definition: NavierStokesMaterial.h:98
NavierStokesMaterial::_drhow_dt
const VariableValue & _drhow_dt
Definition: NavierStokesMaterial.h:99
NavierStokesMaterial::computeTau
void computeTau(unsigned int qp)
NavierStokesMaterial::_grad_rho_u
const VariableGradient & _grad_rho_u
Definition: NavierStokesMaterial.h:104
NavierStokesMaterial::_rho_v
const VariableValue & _rho_v
Definition: NavierStokesMaterial.h:91
NavierStokesMaterial::_hsupg
MaterialProperty< Real > & _hsupg
Definition: NavierStokesMaterial.h:111
NavierStokesMaterial::_fp
const IdealGasFluidProperties & _fp
Definition: NavierStokesMaterial.h:121
NavierStokesMaterial::_strong_residuals
MaterialProperty< std::vector< Real > > & _strong_residuals
Definition: NavierStokesMaterial.h:118
NavierStokesMaterial::NavierStokesMaterial
NavierStokesMaterial(const InputParameters &parameters)
Definition: NavierStokesMaterial.C:49
NavierStokesMaterial::computeStrongResiduals
void computeStrongResiduals(unsigned int qp)
NavierStokesMaterial::_taue
MaterialProperty< Real > & _taue
Definition: NavierStokesMaterial.h:114
NavierStokesMaterial::_grad_w
const VariableGradient & _grad_w
Definition: NavierStokesMaterial.h:51