www.mooseframework.org
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
NavierStokesMaterial Class Reference

This is the base class all materials should use if you are trying to use the Navier-Stokes Kernels. More...

#include <NavierStokesMaterial.h>

Inheritance diagram for NavierStokesMaterial:
[legend]

Public Member Functions

 NavierStokesMaterial (const InputParameters &parameters)
 

Protected Member Functions

virtual void computeProperties ()
 Must be called after the child class computes dynamic_viscocity. More...
 

Protected Attributes

const unsigned int _mesh_dimension
 
const VariableGradient & _grad_u
 
const VariableGradient & _grad_v
 
const VariableGradient & _grad_w
 
MaterialProperty< RealTensorValue > & _viscous_stress_tensor
 
MaterialProperty< Real > & _thermal_conductivity
 
MaterialProperty< Real > & _dynamic_viscosity
 
MaterialProperty< std::vector< RealTensorValue > > & _calA
 
MaterialProperty< std::vector< RealTensorValue > > & _calC
 
MaterialProperty< std::vector< std::vector< RealTensorValue > > > & _calE
 
std::vector< const VariableGradient * > _vel_grads
 
const VariableValue & _u_vel
 
const VariableValue & _v_vel
 
const VariableValue & _w_vel
 
const VariableValue & _temperature
 
const VariableValue & _enthalpy
 
const VariableValue & _rho
 
const VariableValue & _rho_u
 
const VariableValue & _rho_v
 
const VariableValue & _rho_w
 
const VariableValue & _rho_E
 
const VariableValue & _drho_dt
 
const VariableValue & _drhou_dt
 
const VariableValue & _drhov_dt
 
const VariableValue & _drhow_dt
 
const VariableValue & _drhoE_dt
 
const VariableGradient & _grad_rho
 
const VariableGradient & _grad_rho_u
 
const VariableGradient & _grad_rho_v
 
const VariableGradient & _grad_rho_w
 
const VariableGradient & _grad_rho_E
 
MaterialProperty< Real > & _hsupg
 
MaterialProperty< Real > & _tauc
 
MaterialProperty< Real > & _taum
 
MaterialProperty< Real > & _taue
 
MaterialProperty< std::vector< Real > > & _strong_residuals
 
const IdealGasFluidProperties_fp
 

Private Member Functions

void computeHSUPG (unsigned int qp)
 
void computeTau (unsigned int qp)
 
void computeStrongResiduals (unsigned int qp)
 

Detailed Description

This is the base class all materials should use if you are trying to use the Navier-Stokes Kernels.

Note that the derived class just needs to compute dynamic_viscocity then call this class's computeProperties() function.

Also make sure that the derived class's validParams function just adds to this class's validParams.

Finally, note that this Material isn't registered with the MaterialFactory. The reason is that by itself this material doesn't work! You must derive from this material and compute dynamic_viscocity!

Definition at line 36 of file NavierStokesMaterial.h.

Constructor & Destructor Documentation

◆ NavierStokesMaterial()

NavierStokesMaterial::NavierStokesMaterial ( const InputParameters &  parameters)

Definition at line 49 of file NavierStokesMaterial.C.

50  : Material(parameters),
51  _mesh_dimension(_mesh.dimension()),
52  _grad_u(coupledGradient(NS::velocity_x)),
53  _grad_v(_mesh_dimension >= 2 ? coupledGradient(NS::velocity_y) : _grad_zero),
54  _grad_w(_mesh_dimension == 3 ? coupledGradient(NS::velocity_z) : _grad_zero),
55 
56  _viscous_stress_tensor(declareProperty<RealTensorValue>("viscous_stress_tensor")),
57  _thermal_conductivity(declareProperty<Real>("thermal_conductivity")),
58 
59  // Declared here but _not_ calculated here
60  // (See e.g. derived class, bighorn/include/materials/FluidTC1.h)
61  _dynamic_viscosity(declareProperty<Real>("dynamic_viscosity")),
62 
63  // The momentum components of the inviscid flux Jacobians.
64  _calA(declareProperty<std::vector<RealTensorValue>>("calA")),
65 
66  // "Velocity column" matrices
67  _calC(declareProperty<std::vector<RealTensorValue>>("calC")),
68 
69  // Energy equation inviscid flux matrices, "cal E_{kl}" in the notes.
70  _calE(declareProperty<std::vector<std::vector<RealTensorValue>>>("calE")),
72 
73  // Coupled solution values needed for computing SUPG stabilization terms
74  _u_vel(coupledValue(NS::velocity_x)),
75  _v_vel(_mesh.dimension() >= 2 ? coupledValue(NS::velocity_y) : _zero),
76  _w_vel(_mesh.dimension() == 3 ? coupledValue(NS::velocity_z) : _zero),
77 
78  _temperature(coupledValue(NS::temperature)),
79  _enthalpy(coupledValue(NS::enthalpy)),
80 
81  // Coupled solution values
82  _rho(coupledValue(NS::density)),
83  _rho_u(coupledValue(NS::momentum_x)),
84  _rho_v(_mesh.dimension() >= 2 ? coupledValue(NS::momentum_y) : _zero),
85  _rho_w(_mesh.dimension() == 3 ? coupledValue(NS::momentum_z) : _zero),
86  _rho_E(coupledValue(NS::total_energy)),
87 
88  // Time derivative values
89  _drho_dt(coupledDot(NS::density)),
90  _drhou_dt(coupledDot(NS::momentum_x)),
91  _drhov_dt(_mesh.dimension() >= 2 ? coupledDot(NS::momentum_y) : _zero),
92  _drhow_dt(_mesh.dimension() == 3 ? coupledDot(NS::momentum_z) : _zero),
93  _drhoE_dt(coupledDot(NS::total_energy)),
94 
95  // Gradients
96  _grad_rho(coupledGradient(NS::density)),
97  _grad_rho_u(coupledGradient(NS::momentum_x)),
98  _grad_rho_v(_mesh.dimension() >= 2 ? coupledGradient(NS::momentum_y) : _grad_zero),
99  _grad_rho_w(_mesh.dimension() == 3 ? coupledGradient(NS::momentum_z) : _grad_zero),
100  _grad_rho_E(coupledGradient(NS::total_energy)),
101 
102  // Material properties for stabilization
103  _hsupg(declareProperty<Real>("hsupg")),
104  _tauc(declareProperty<Real>("tauc")),
105  _taum(declareProperty<Real>("taum")),
106  _taue(declareProperty<Real>("taue")),
107  _strong_residuals(declareProperty<std::vector<Real>>("strong_residuals")),
108  _fp(getUserObject<IdealGasFluidProperties>("fluid_properties"))
109 {
110 }

Member Function Documentation

◆ computeHSUPG()

void NavierStokesMaterial::computeHSUPG ( unsigned int  qp)
private

Definition at line 178 of file NavierStokesMaterial.C.

Referenced by computeProperties().

◆ computeProperties()

void NavierStokesMaterial::computeProperties ( )
protectedvirtual

Must be called after the child class computes dynamic_viscocity.

Must be called after the child class computes dynamic_viscosity.

Reimplemented in Air.

Definition at line 116 of file NavierStokesMaterial.C.

117 {
118  for (unsigned int qp = 0; qp < _qrule->n_points(); ++qp)
119  {
120  /******* Viscous Stress Tensor *******/
121  // Technically... this _is_ the transpose (since we are loading these by rows)
122  // But it doesn't matter....
123  RealTensorValue grad_outer_u(_grad_u[qp], _grad_v[qp], _grad_w[qp]);
124 
125  grad_outer_u += grad_outer_u.transpose();
126 
127  Real div_vel = 0.0;
128  for (unsigned int i = 0; i < 3; ++i)
129  div_vel += (*_vel_grads[i])[qp](i);
130 
131  // Add diagonal terms
132  for (unsigned int i = 0; i < 3; ++i)
133  grad_outer_u(i, i) -= 2.0 / 3.0 * div_vel;
134 
135  grad_outer_u *= _dynamic_viscosity[qp];
136 
137  _viscous_stress_tensor[qp] = grad_outer_u;
138 
139  // Tabulated values of thermal conductivity vs. Temperature for air (k increases slightly with
140  // T):
141  // T (K) k (W/m-K)
142  // 273 0.0243
143  // 373 0.0314
144  // 473 0.0386
145  // 573 0.0454
146  // 673 0.0515
147 
148  // Pr = (mu * cp) / k ==> k = (mu * cp) / Pr = (mu * gamma * cv) / Pr.
149  // TODO: We are using a fixed value of the Prandtl number which is
150  // valid for air, it may or may not depend on temperature? Since
151  // this is a property of the fluid, it could possibly be moved to
152  // the FluidProperties module...
153  const Real Pr = 0.71;
154  _thermal_conductivity[qp] = (_dynamic_viscosity[qp] * _fp.cp()) / Pr;
155 
156  // Compute stabilization parameters:
157 
158  // .) Compute SUPG element length scale.
159  computeHSUPG(qp);
160  // Moose::out << "_hsupg[" << qp << "]=" << _hsupg[qp] << std::endl;
161 
162  // .) Compute SUPG parameter values. (Must call this after computeHSUPG())
163  computeTau(qp);
164  // Moose::out << "_tauc[" << qp << "]=" << _tauc[qp] << ", ";
165  // Moose::out << "_taum[" << qp << "]=" << _taum[qp] << ", ";
166  // Moose::out << "_taue[" << qp << "]=" << _taue[qp] << std::endl;
167 
168  // .) Compute strong residual values.
170  // Moose::out << "_strong_residuals[" << qp << "]=";
171  // for (unsigned i=0; i<_strong_residuals[qp].size(); ++i)
172  // Moose::out << _strong_residuals[qp][i] << " ";
173  // Moose::out << std::endl;
174  }
175 }

Referenced by Air::computeProperties().

◆ computeStrongResiduals()

void NavierStokesMaterial::computeStrongResiduals ( unsigned int  qp)
private

Referenced by computeProperties().

◆ computeTau()

void NavierStokesMaterial::computeTau ( unsigned int  qp)
private

Referenced by computeProperties().

Member Data Documentation

◆ _calA

MaterialProperty<std::vector<RealTensorValue> >& NavierStokesMaterial::_calA
protected

Definition at line 61 of file NavierStokesMaterial.h.

◆ _calC

MaterialProperty<std::vector<RealTensorValue> >& NavierStokesMaterial::_calC
protected

Definition at line 65 of file NavierStokesMaterial.h.

◆ _calE

MaterialProperty<std::vector<std::vector<RealTensorValue> > >& NavierStokesMaterial::_calE
protected

Definition at line 70 of file NavierStokesMaterial.h.

◆ _drho_dt

const VariableValue& NavierStokesMaterial::_drho_dt
protected

Definition at line 96 of file NavierStokesMaterial.h.

◆ _drhoE_dt

const VariableValue& NavierStokesMaterial::_drhoE_dt
protected

Definition at line 100 of file NavierStokesMaterial.h.

◆ _drhou_dt

const VariableValue& NavierStokesMaterial::_drhou_dt
protected

Definition at line 97 of file NavierStokesMaterial.h.

◆ _drhov_dt

const VariableValue& NavierStokesMaterial::_drhov_dt
protected

Definition at line 98 of file NavierStokesMaterial.h.

◆ _drhow_dt

const VariableValue& NavierStokesMaterial::_drhow_dt
protected

Definition at line 99 of file NavierStokesMaterial.h.

◆ _dynamic_viscosity

MaterialProperty<Real>& NavierStokesMaterial::_dynamic_viscosity
protected

Definition at line 55 of file NavierStokesMaterial.h.

Referenced by Air::computeProperties(), and computeProperties().

◆ _enthalpy

const VariableValue& NavierStokesMaterial::_enthalpy
protected

Definition at line 86 of file NavierStokesMaterial.h.

◆ _fp

const IdealGasFluidProperties& NavierStokesMaterial::_fp
protected

Definition at line 121 of file NavierStokesMaterial.h.

Referenced by computeProperties().

◆ _grad_rho

const VariableGradient& NavierStokesMaterial::_grad_rho
protected

Definition at line 103 of file NavierStokesMaterial.h.

◆ _grad_rho_E

const VariableGradient& NavierStokesMaterial::_grad_rho_E
protected

Definition at line 107 of file NavierStokesMaterial.h.

◆ _grad_rho_u

const VariableGradient& NavierStokesMaterial::_grad_rho_u
protected

Definition at line 104 of file NavierStokesMaterial.h.

◆ _grad_rho_v

const VariableGradient& NavierStokesMaterial::_grad_rho_v
protected

Definition at line 105 of file NavierStokesMaterial.h.

◆ _grad_rho_w

const VariableGradient& NavierStokesMaterial::_grad_rho_w
protected

Definition at line 106 of file NavierStokesMaterial.h.

◆ _grad_u

const VariableGradient& NavierStokesMaterial::_grad_u
protected

Definition at line 49 of file NavierStokesMaterial.h.

Referenced by computeProperties(), and NavierStokesMaterial().

◆ _grad_v

const VariableGradient& NavierStokesMaterial::_grad_v
protected

Definition at line 50 of file NavierStokesMaterial.h.

Referenced by computeProperties(), and NavierStokesMaterial().

◆ _grad_w

const VariableGradient& NavierStokesMaterial::_grad_w
protected

Definition at line 51 of file NavierStokesMaterial.h.

Referenced by computeProperties(), and NavierStokesMaterial().

◆ _hsupg

MaterialProperty<Real>& NavierStokesMaterial::_hsupg
protected

Definition at line 111 of file NavierStokesMaterial.h.

Referenced by computeHSUPG().

◆ _mesh_dimension

const unsigned int NavierStokesMaterial::_mesh_dimension
protected

Definition at line 47 of file NavierStokesMaterial.h.

◆ _rho

const VariableValue& NavierStokesMaterial::_rho
protected

Definition at line 89 of file NavierStokesMaterial.h.

◆ _rho_E

const VariableValue& NavierStokesMaterial::_rho_E
protected

Definition at line 93 of file NavierStokesMaterial.h.

◆ _rho_u

const VariableValue& NavierStokesMaterial::_rho_u
protected

Definition at line 90 of file NavierStokesMaterial.h.

◆ _rho_v

const VariableValue& NavierStokesMaterial::_rho_v
protected

Definition at line 91 of file NavierStokesMaterial.h.

◆ _rho_w

const VariableValue& NavierStokesMaterial::_rho_w
protected

Definition at line 92 of file NavierStokesMaterial.h.

◆ _strong_residuals

MaterialProperty<std::vector<Real> >& NavierStokesMaterial::_strong_residuals
protected

Definition at line 118 of file NavierStokesMaterial.h.

◆ _tauc

MaterialProperty<Real>& NavierStokesMaterial::_tauc
protected

Definition at line 112 of file NavierStokesMaterial.h.

◆ _taue

MaterialProperty<Real>& NavierStokesMaterial::_taue
protected

Definition at line 114 of file NavierStokesMaterial.h.

◆ _taum

MaterialProperty<Real>& NavierStokesMaterial::_taum
protected

Definition at line 113 of file NavierStokesMaterial.h.

◆ _temperature

const VariableValue& NavierStokesMaterial::_temperature
protected

Definition at line 83 of file NavierStokesMaterial.h.

◆ _thermal_conductivity

MaterialProperty<Real>& NavierStokesMaterial::_thermal_conductivity
protected

Definition at line 54 of file NavierStokesMaterial.h.

Referenced by computeProperties().

◆ _u_vel

const VariableValue& NavierStokesMaterial::_u_vel
protected

Definition at line 78 of file NavierStokesMaterial.h.

◆ _v_vel

const VariableValue& NavierStokesMaterial::_v_vel
protected

Definition at line 79 of file NavierStokesMaterial.h.

◆ _vel_grads

std::vector<const VariableGradient *> NavierStokesMaterial::_vel_grads
protected

Definition at line 74 of file NavierStokesMaterial.h.

Referenced by computeProperties().

◆ _viscous_stress_tensor

MaterialProperty<RealTensorValue>& NavierStokesMaterial::_viscous_stress_tensor
protected

Definition at line 53 of file NavierStokesMaterial.h.

Referenced by computeProperties().

◆ _w_vel

const VariableValue& NavierStokesMaterial::_w_vel
protected

Definition at line 80 of file NavierStokesMaterial.h.


The documentation for this class was generated from the following files:
NS::velocity_x
const std::string velocity_x
Definition: NS.h:22
NavierStokesMaterial::_drhoE_dt
const VariableValue & _drhoE_dt
Definition: NavierStokesMaterial.h:100
IdealGasFluidProperties::cp
virtual Real cp() const
Definition: IdealGasFluidProperties.h:119
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
NS::velocity_y
const std::string velocity_y
Definition: NS.h:23
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
NS::velocity_z
const std::string velocity_z
Definition: NS.h:24
NavierStokesMaterial::_rho_w
const VariableValue & _rho_w
Definition: NavierStokesMaterial.h:92
NS::momentum_y
const std::string momentum_y
Definition: NS.h:18
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
NS
Definition: NS.h:14
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
NS::density
const std::string density
Definition: NS.h:16
NS::enthalpy
const std::string enthalpy
Definition: NS.h:27
NavierStokesMaterial::_rho
const VariableValue & _rho
Definition: NavierStokesMaterial.h:89
NS::momentum_z
const std::string momentum_z
Definition: NS.h:19
NavierStokesMaterial::_drho_dt
const VariableValue & _drho_dt
Definition: NavierStokesMaterial.h:96
NS::momentum_x
const std::string momentum_x
Definition: NS.h:17
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
NS::temperature
const std::string temperature
Definition: NS.h:26
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::computeStrongResiduals
void computeStrongResiduals(unsigned int qp)
NS::total_energy
const std::string total_energy
Definition: NS.h:20
NavierStokesMaterial::_taue
MaterialProperty< Real > & _taue
Definition: NavierStokesMaterial.h:114
NavierStokesMaterial::_grad_w
const VariableGradient & _grad_w
Definition: NavierStokesMaterial.h:51