www.mooseframework.org
INSChorinPressurePoisson.C
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 
11 #include "MooseMesh.h"
12 
14 
15 template <>
16 InputParameters
18 {
19  InputParameters params = validParams<Kernel>();
20 
21  params.addClassDescription("This class computes the pressure Poisson solve which is part of the "
22  "'split' scheme used for solving the incompressible Navier-Stokes "
23  "equations.");
24  // Coupled variables
25  params.addRequiredCoupledVar("u_star", "star x-velocity");
26  params.addCoupledVar("v_star", "star y-velocity"); // only required in 2D and 3D
27  params.addCoupledVar("w_star", "star z-velocity"); // only required in 3D
28 
29  // Optional parameters
30  params.addParam<MaterialPropertyName>("rho_name", "rho", "density_name");
31 
32  return params;
33 }
34 
35 INSChorinPressurePoisson::INSChorinPressurePoisson(const InputParameters & parameters)
36  : Kernel(parameters),
37 
38  // Gradients
39  _grad_u_star(coupledGradient("u_star")),
40  _grad_v_star(_mesh.dimension() >= 2 ? coupledGradient("v_star") : _grad_zero),
41  _grad_w_star(_mesh.dimension() == 3 ? coupledGradient("w_star") : _grad_zero),
42 
43  // Variable numberings
44  _u_vel_star_var_number(coupled("u_star")),
45  _v_vel_star_var_number(_mesh.dimension() >= 2 ? coupled("v_star") : libMesh::invalid_uint),
46  _w_vel_star_var_number(_mesh.dimension() == 3 ? coupled("w_star") : libMesh::invalid_uint),
47 
48  // Material properties
49  _rho(getMaterialProperty<Real>("rho_name"))
50 {
51 }
52 
53 Real
55 {
56  // Laplacian part
57  Real laplacian_part = _grad_u[_qp] * _grad_test[_i][_qp];
58 
59  // Divergence part, don't forget to *divide* by _dt
60  Real div_part = (_rho[_qp] / _dt) *
61  (_grad_u_star[_qp](0) + _grad_v_star[_qp](1) + _grad_w_star[_qp](2)) *
62  _test[_i][_qp];
63 
64  // Return the result
65  return laplacian_part + div_part;
66 }
67 
68 Real
70 {
71  return _grad_phi[_j][_qp] * _grad_test[_i][_qp];
72 }
73 
74 Real
76 {
77  if (jvar == _u_vel_star_var_number)
78  return (_rho[_qp] / _dt) * _grad_phi[_j][_qp](0) * _test[_i][_qp];
79 
80  else if (jvar == _v_vel_star_var_number)
81  return (_rho[_qp] / _dt) * _grad_phi[_j][_qp](1) * _test[_i][_qp];
82 
83  else if (jvar == _w_vel_star_var_number)
84  return (_rho[_qp] / _dt) * _grad_phi[_j][_qp](2) * _test[_i][_qp];
85 
86  else
87  return 0;
88 }
INSChorinPressurePoisson::_grad_w_star
const VariableGradient & _grad_w_star
Definition: INSChorinPressurePoisson.h:40
INSChorinPressurePoisson::computeQpJacobian
virtual Real computeQpJacobian()
Definition: INSChorinPressurePoisson.C:69
INSChorinPressurePoisson::_grad_u_star
const VariableGradient & _grad_u_star
Definition: INSChorinPressurePoisson.h:38
INSChorinPressurePoisson
This class computes the pressure Poisson solve which is part of the "split" scheme used for solving t...
Definition: INSChorinPressurePoisson.h:25
libMesh
Definition: RANFSNormalMechanicalContact.h:24
registerMooseObject
registerMooseObject("NavierStokesApp", INSChorinPressurePoisson)
INSChorinPressurePoisson::INSChorinPressurePoisson
INSChorinPressurePoisson(const InputParameters &parameters)
Definition: INSChorinPressurePoisson.C:35
INSChorinPressurePoisson::_rho
const MaterialProperty< Real > & _rho
Definition: INSChorinPressurePoisson.h:48
INSChorinPressurePoisson.h
INSChorinPressurePoisson::computeQpOffDiagJacobian
virtual Real computeQpOffDiagJacobian(unsigned jvar)
Definition: INSChorinPressurePoisson.C:75
INSChorinPressurePoisson::_v_vel_star_var_number
unsigned _v_vel_star_var_number
Definition: INSChorinPressurePoisson.h:44
INSChorinPressurePoisson::_w_vel_star_var_number
unsigned _w_vel_star_var_number
Definition: INSChorinPressurePoisson.h:45
INSChorinPressurePoisson::_grad_v_star
const VariableGradient & _grad_v_star
Definition: INSChorinPressurePoisson.h:39
validParams< INSChorinPressurePoisson >
InputParameters validParams< INSChorinPressurePoisson >()
Definition: INSChorinPressurePoisson.C:17
INSChorinPressurePoisson::computeQpResidual
virtual Real computeQpResidual()
Definition: INSChorinPressurePoisson.C:54
INSChorinPressurePoisson::_u_vel_star_var_number
unsigned _u_vel_star_var_number
Definition: INSChorinPressurePoisson.h:43