LCOV - code coverage report
Current view: top level - src/bcs - NSIntegratedBC.C (source / functions) Hit Total Coverage
Test: idaholab/moose navier_stokes: 9fc4b0 Lines: 47 50 94.0 %
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 "NSIntegratedBC.h"
      13             : 
      14             : // FluidProperties includes
      15             : #include "IdealGasFluidProperties.h"
      16             : 
      17             : // MOOSE includes
      18             : #include "MooseMesh.h"
      19             : 
      20             : InputParameters
      21         492 : NSIntegratedBC::validParams()
      22             : {
      23         492 :   InputParameters params = IntegratedBC::validParams();
      24             : 
      25         492 :   params.addClassDescription("This class couples together all the variables for the compressible "
      26             :                              "Navier-Stokes equations to allow them to be used in derived "
      27             :                              "IntegratedBC classes.");
      28             : 
      29         492 :   params.addRequiredCoupledVar(NS::velocity_x, "x-velocity");
      30         492 :   params.addCoupledVar(NS::velocity_y, "y-velocity"); // only required in >= 2D
      31         492 :   params.addCoupledVar(NS::velocity_z, "z-velocity"); // only required in 3D
      32             : 
      33         492 :   params.addRequiredCoupledVar(NS::density, "density");
      34         492 :   params.addRequiredCoupledVar(NS::momentum_x, "x-momentum");
      35         492 :   params.addCoupledVar(NS::momentum_y, "y-momentum"); // only required in >= 2D
      36         492 :   params.addCoupledVar(NS::momentum_z, "z-momentum"); // only required in 3D
      37         492 :   params.addRequiredCoupledVar(NS::total_energy_density, "total energy");
      38         984 :   params.addRequiredParam<UserObjectName>("fluid_properties",
      39             :                                           "The name of the user object for fluid properties");
      40         984 :   params.addParam<Real>("specified_pressure", 0.0, "The specified pressure for this boundary");
      41             : 
      42         492 :   return params;
      43           0 : }
      44             : 
      45         264 : NSIntegratedBC::NSIntegratedBC(const InputParameters & parameters)
      46             :   : IntegratedBC(parameters),
      47         528 :     _u_vel(coupledValue(NS::velocity_x)),
      48         264 :     _v_vel(_mesh.dimension() >= 2 ? coupledValue(NS::velocity_y) : _zero),
      49         264 :     _w_vel(_mesh.dimension() == 3 ? coupledValue(NS::velocity_z) : _zero),
      50             : 
      51         264 :     _rho(coupledValue(NS::density)),
      52         264 :     _rho_u(coupledValue(NS::momentum_x)),
      53         264 :     _rho_v(_mesh.dimension() >= 2 ? coupledValue(NS::momentum_y) : _zero),
      54         264 :     _rho_w(_mesh.dimension() == 3 ? coupledValue(NS::momentum_z) : _zero),
      55         264 :     _rho_et(coupledValue(NS::total_energy_density)),
      56             : 
      57         264 :     _grad_rho(coupledGradient(NS::density)),
      58         264 :     _grad_rho_u(coupledGradient(NS::momentum_x)),
      59         264 :     _grad_rho_v(_mesh.dimension() >= 2 ? coupledGradient(NS::momentum_y) : _grad_zero),
      60         264 :     _grad_rho_w(_mesh.dimension() == 3 ? coupledGradient(NS::momentum_z) : _grad_zero),
      61         264 :     _grad_rho_et(coupledGradient(NS::total_energy_density)),
      62             : 
      63             :     // Variable numberings
      64         264 :     _rho_var_number(coupled(NS::density)),
      65         264 :     _rhou_var_number(coupled(NS::momentum_x)),
      66         264 :     _rhov_var_number(_mesh.dimension() >= 2 ? coupled(NS::momentum_y) : libMesh::invalid_uint),
      67         264 :     _rhow_var_number(_mesh.dimension() == 3 ? coupled(NS::momentum_z) : libMesh::invalid_uint),
      68         264 :     _rho_et_var_number(coupled(NS::total_energy_density)),
      69             : 
      70         528 :     _dynamic_viscosity(getMaterialProperty<Real>("dynamic_viscosity")),
      71         528 :     _viscous_stress_tensor(getMaterialProperty<RealTensorValue>("viscous_stress_tensor")),
      72             : 
      73             :     // FluidProperties UserObject
      74         528 :     _fp(getUserObject<IdealGasFluidProperties>("fluid_properties"))
      75             : {
      76         264 : }
      77             : 
      78             : bool
      79     3354624 : NSIntegratedBC::isNSVariable(unsigned var)
      80             : {
      81     3354624 :   if (var == _rho_var_number || var == _rhou_var_number || var == _rhov_var_number ||
      82     1048320 :       var == _rhow_var_number || var == _rho_et_var_number)
      83             :     return true;
      84             :   else
      85           0 :     return false;
      86             : }
      87             : 
      88             : unsigned
      89     3354624 : NSIntegratedBC::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 int mapped_var_number;
      99             : 
     100     3354624 :   if (var == _rho_var_number)
     101             :     mapped_var_number = 0;
     102     2306304 :   else if (var == _rhou_var_number)
     103             :     mapped_var_number = 1;
     104     1677312 :   else if (var == _rhov_var_number)
     105             :     mapped_var_number = 2;
     106     1048320 :   else if (var == _rhow_var_number)
     107             :     mapped_var_number = 3;
     108     1048320 :   else if (var == _rho_et_var_number)
     109             :     mapped_var_number = 4;
     110             :   else
     111           0 :     mooseError("Invalid var!");
     112             : 
     113     3354624 :   return mapped_var_number;
     114             : }

Generated by: LCOV version 1.14