www.mooseframework.org
INSPressurePoisson.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 
10 #include "INSPressurePoisson.h"
11 #include "MooseMesh.h"
12 
13 registerMooseObject("NavierStokesApp", INSPressurePoisson);
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("a1", "x-acceleration");
26  params.addCoupledVar("a2", "y-acceleration"); // only required in 2D and 3D
27  params.addCoupledVar("a3", "z-acceleration"); // only required in 3D
28 
29  // Optional parameters
30  params.addParam<MaterialPropertyName>("rho_name", "rho", "density_name");
31 
32  return params;
33 }
34 
35 INSPressurePoisson::INSPressurePoisson(const InputParameters & parameters)
36  : Kernel(parameters),
37 
38  // Gradients
39  _grad_a1(coupledGradient("a1")),
40  _grad_a2(_mesh.dimension() >= 2 ? coupledGradient("a2") : _grad_zero),
41  _grad_a3(_mesh.dimension() == 3 ? coupledGradient("a3") : _grad_zero),
42 
43  // Variable numberings
44  _a1_var_number(coupled("a1")),
45  _a2_var_number(_mesh.dimension() >= 2 ? coupled("a2") : libMesh::invalid_uint),
46  _a3_var_number(_mesh.dimension() == 3 ? coupled("a3") : 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
60  Real div_part =
61  _rho[_qp] * (_grad_a1[_qp](0) + _grad_a2[_qp](1) + _grad_a3[_qp](2)) * _test[_i][_qp];
62 
63  // Return the result
64  return laplacian_part + div_part;
65 }
66 
67 Real
69 {
70  return _grad_phi[_j][_qp] * _grad_test[_i][_qp];
71 }
72 
73 Real
75 {
76  if (jvar == _a1_var_number)
77  return _rho[_qp] * _grad_phi[_j][_qp](0) * _test[_i][_qp];
78 
79  else if (jvar == _a2_var_number)
80  return _rho[_qp] * _grad_phi[_j][_qp](1) * _test[_i][_qp];
81 
82  else if (jvar == _a3_var_number)
83  return _rho[_qp] * _grad_phi[_j][_qp](2) * _test[_i][_qp];
84 
85  else
86  return 0;
87 }
INSPressurePoisson::computeQpResidual
virtual Real computeQpResidual()
Definition: INSPressurePoisson.C:54
INSPressurePoisson::computeQpOffDiagJacobian
virtual Real computeQpOffDiagJacobian(unsigned jvar)
Definition: INSPressurePoisson.C:74
INSPressurePoisson::INSPressurePoisson
INSPressurePoisson(const InputParameters &parameters)
Definition: INSPressurePoisson.C:35
INSPressurePoisson::computeQpJacobian
virtual Real computeQpJacobian()
Definition: INSPressurePoisson.C:68
INSPressurePoisson::_grad_a2
const VariableGradient & _grad_a2
Definition: INSPressurePoisson.h:41
INSPressurePoisson.h
libMesh
Definition: RANFSNormalMechanicalContact.h:24
validParams< INSPressurePoisson >
InputParameters validParams< INSPressurePoisson >()
Definition: INSPressurePoisson.C:17
INSPressurePoisson::_a2_var_number
unsigned _a2_var_number
Definition: INSPressurePoisson.h:46
INSPressurePoisson
This class computes the pressure Poisson solve which is part of the "split" scheme used for solving t...
Definition: INSPressurePoisson.h:27
INSPressurePoisson::_grad_a3
const VariableGradient & _grad_a3
Definition: INSPressurePoisson.h:42
INSPressurePoisson::_rho
const MaterialProperty< Real > & _rho
Definition: INSPressurePoisson.h:50
INSPressurePoisson::_a3_var_number
unsigned _a3_var_number
Definition: INSPressurePoisson.h:47
registerMooseObject
registerMooseObject("NavierStokesApp", INSPressurePoisson)
INSPressurePoisson::_grad_a1
const VariableGradient & _grad_a1
Definition: INSPressurePoisson.h:40
INSPressurePoisson::_a1_var_number
unsigned _a1_var_number
Definition: INSPressurePoisson.h:45