LCOV - code coverage report
Current view: top level - src/kernels - NSKernel.C (source / functions) Hit Total Coverage
Test: idaholab/moose navier_stokes: 9fc4b0 Lines: 46 49 93.9 %
Date: 2025-08-14 10:14:56 Functions: 4 4 100.0 %
Legend: Lines: hit not hit

          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             : // Navier-Stokes includes
      11             : #include "NS.h"
      12             : #include "NSKernel.h"
      13             : 
      14             : // FluidProperties includes
      15             : #include "IdealGasFluidProperties.h"
      16             : 
      17             : // MOOSE includes
      18             : #include "MooseMesh.h"
      19             : 
      20             : namespace nms = NS;
      21             : 
      22             : InputParameters
      23         328 : NSKernel::validParams()
      24             : {
      25         328 :   InputParameters params = Kernel::validParams();
      26         328 :   params.addClassDescription("This class couples together all the variables for the compressible "
      27             :                              "Navier-Stokes equations to allow them to be used in derived Kernel "
      28             :                              "classes.");
      29         328 :   params.addRequiredCoupledVar(nms::velocity_x, "x-velocity");
      30         328 :   params.addCoupledVar(nms::velocity_y, "y-velocity"); // only required in 2D and 3D
      31         328 :   params.addCoupledVar(nms::velocity_z, "z-velocity"); // only required in 3D
      32         328 :   params.addRequiredCoupledVar(nms::density, "density");
      33         328 :   params.addRequiredCoupledVar(nms::momentum_x, "x-momentum");
      34         328 :   params.addCoupledVar(nms::momentum_y, "y-momentum"); // only required in 2D and 3D
      35         328 :   params.addCoupledVar(nms::momentum_z, "z-momentum"); // only required in 3D
      36         328 :   params.addRequiredCoupledVar(nms::total_energy_density, "total energy density");
      37         656 :   params.addRequiredParam<UserObjectName>("fluid_properties",
      38             :                                           "The name of the user object for fluid properties");
      39         328 :   return params;
      40           0 : }
      41             : 
      42         176 : NSKernel::NSKernel(const InputParameters & parameters)
      43             :   : Kernel(parameters),
      44             :     // Coupled variables
      45         352 :     _u_vel(coupledValue(nms::velocity_x)),
      46         176 :     _v_vel(_mesh.dimension() >= 2 ? coupledValue(nms::velocity_y) : _zero),
      47         176 :     _w_vel(_mesh.dimension() == 3 ? coupledValue(nms::velocity_z) : _zero),
      48             : 
      49         176 :     _rho(coupledValue(nms::density)),
      50         176 :     _rho_u(coupledValue(nms::momentum_x)),
      51         176 :     _rho_v(_mesh.dimension() >= 2 ? coupledValue(nms::momentum_y) : _zero),
      52         176 :     _rho_w(_mesh.dimension() == 3 ? coupledValue(nms::momentum_z) : _zero),
      53         176 :     _rho_et(coupledValue(nms::total_energy_density)),
      54             : 
      55             :     // Gradients
      56         176 :     _grad_rho(coupledGradient(nms::density)),
      57         176 :     _grad_rho_u(coupledGradient(nms::momentum_x)),
      58         176 :     _grad_rho_v(_mesh.dimension() >= 2 ? coupledGradient(nms::momentum_y) : _grad_zero),
      59         176 :     _grad_rho_w(_mesh.dimension() == 3 ? coupledGradient(nms::momentum_z) : _grad_zero),
      60         176 :     _grad_rho_et(coupledGradient(nms::total_energy_density)),
      61             : 
      62             :     // Variable numberings
      63         176 :     _rho_var_number(coupled(nms::density)),
      64         176 :     _rhou_var_number(coupled(nms::momentum_x)),
      65         176 :     _rhov_var_number(_mesh.dimension() >= 2 ? coupled(nms::momentum_y) : libMesh::invalid_uint),
      66         176 :     _rhow_var_number(_mesh.dimension() == 3 ? coupled(nms::momentum_z) : libMesh::invalid_uint),
      67         176 :     _rho_et_var_number(coupled(nms::total_energy_density)),
      68             : 
      69             :     // Material properties
      70         352 :     _dynamic_viscosity(getMaterialProperty<Real>("dynamic_viscosity")),
      71         352 :     _viscous_stress_tensor(getMaterialProperty<RealTensorValue>("viscous_stress_tensor")),
      72             : 
      73             :     // FluidProperties UserObject
      74         352 :     _fp(getUserObject<IdealGasFluidProperties>("fluid_properties"))
      75             : {
      76         176 : }
      77             : 
      78             : bool
      79    93929472 : NSKernel::isNSVariable(unsigned var)
      80             : {
      81    93929472 :   if (var == _rho_var_number || var == _rhou_var_number || var == _rhov_var_number ||
      82    23482368 :       var == _rhow_var_number || var == _rho_et_var_number)
      83             :     return true;
      84             :   else
      85           0 :     return false;
      86             : }
      87             : 
      88             : unsigned
      89    83865600 : NSKernel::mapVarNumber(unsigned var)
      90             : {
      91             :   // Convert the Moose numbering to:
      92             :   // 0 for rho
      93             :   // 1 for rho*u
      94             :   // 2 for rho*v
      95             :   // 3 for rho*w
      96             :   // 4 for rho*e
      97             :   // regardless of the problem dimension, etc.
      98             :   unsigned mapped_var_number = 99;
      99             : 
     100    83865600 :   if (var == _rho_var_number)
     101             :     mapped_var_number = 0;
     102    63737856 :   else if (var == _rhou_var_number)
     103             :     mapped_var_number = 1;
     104    43610112 :   else if (var == _rhov_var_number)
     105             :     mapped_var_number = 2;
     106    23482368 :   else if (var == _rhow_var_number)
     107             :     mapped_var_number = 3;
     108    23482368 :   else if (var == _rho_et_var_number)
     109             :     mapped_var_number = 4;
     110             :   else
     111           0 :     mooseError("Invalid var!");
     112             : 
     113    83865600 :   return mapped_var_number;
     114             : }

Generated by: LCOV version 1.14