LCOV - code coverage report
Current view: top level - src/kernels - INSFEFluidKernelBase.C (source / functions) Hit Total Coverage
Test: idaholab/moose navier_stokes: 9fc4b0 Lines: 56 62 90.3 %
Date: 2025-08-14 10:14:56 Functions: 3 3 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             : #include "INSFEFluidKernelBase.h"
      11             : #include "MooseMesh.h"
      12             : #include "SystemBase.h"
      13             : 
      14             : InputParameters
      15         861 : INSFEFluidKernelBase::validParams()
      16             : {
      17         861 :   InputParameters params = Kernel::validParams();
      18             : 
      19             :   // Coupled variables
      20        1722 :   params.addRequiredCoupledVar("u", "velocity in x-direction");
      21        1722 :   params.addCoupledVar("v", "velocity in y-direction"); // required in 2D/3D
      22        1722 :   params.addCoupledVar("w", "velocity in z-direction"); // required in 3D
      23             : 
      24        1722 :   params.addRequiredCoupledVar("pressure", "pressure");
      25        1722 :   params.addRequiredCoupledVar("temperature", "temperature");
      26        1722 :   params.addCoupledVar("porosity", "porosity");
      27             : 
      28        1722 :   params.addParam<bool>("transient", true, "if it is a transient simulation.");
      29        1722 :   params.addParam<VectorValue<Real>>("gravity", "Gravity vector");
      30             : 
      31        1722 :   params.addRequiredParam<UserObjectName>("eos", "The name of equation of state object to use.");
      32             : 
      33         861 :   return params;
      34           0 : }
      35             : 
      36         462 : INSFEFluidKernelBase::INSFEFluidKernelBase(const InputParameters & parameters)
      37             :   : Kernel(parameters),
      38         924 :     _second_u(_var.secondSln()),
      39             :     // Coupled variables
      40         462 :     _u_var(_sys.getFieldVariable<Real>(_tid, parameters.get<std::vector<VariableName>>("u")[0])),
      41         462 :     _v_var(_sys.getFieldVariable<Real>(_tid, parameters.get<std::vector<VariableName>>("v")[0])),
      42         462 :     _w_var(_mesh.dimension() == 3 ? _sys.getFieldVariable<Real>(
      43           0 :                                         _tid, parameters.get<std::vector<VariableName>>("w")[0])
      44             :                                   : _u_var),
      45             : 
      46         462 :     _u_vel(coupledValue("u")),
      47         462 :     _v_vel(_mesh.dimension() >= 2 ? coupledValue("v") : _zero),
      48         462 :     _w_vel(_mesh.dimension() == 3 ? coupledValue("w") : _zero),
      49         462 :     _pressure(coupledValue("pressure")),
      50         462 :     _temperature(coupledValue("temperature")),
      51         924 :     _rho(getMaterialProperty<Real>("rho_fluid")),
      52             : 
      53         924 :     _has_porosity(isParamValid("porosity")),
      54         462 :     _porosity(_has_porosity ? coupledValue("porosity") : _zero),
      55             : 
      56         924 :     _bTransient(getParam<bool>("transient")),
      57         462 :     _u_vel_dot(_bTransient ? coupledDot("u") : _zero),
      58         462 :     _v_vel_dot(_bTransient && (_mesh.dimension() >= 2) ? coupledDot("v") : _zero),
      59         462 :     _w_vel_dot(_bTransient && (_mesh.dimension() == 3) ? coupledDot("w") : _zero),
      60             : 
      61             :     // Gradients
      62         462 :     _grad_u_vel(coupledGradient("u")),
      63         462 :     _grad_v_vel(_mesh.dimension() >= 2 ? coupledGradient("v") : _grad_zero),
      64         462 :     _grad_w_vel(_mesh.dimension() == 3 ? coupledGradient("w") : _grad_zero),
      65         462 :     _grad_pressure(coupledGradient("pressure")),
      66         462 :     _grad_temperature(coupledGradient("temperature")),
      67             : 
      68             :     // Variable numberings
      69         462 :     _u_vel_var_number(coupled("u")),
      70         462 :     _v_vel_var_number(_mesh.dimension() >= 2 ? coupled("v") : libMesh::invalid_uint),
      71         462 :     _w_vel_var_number(_mesh.dimension() == 3 ? coupled("w") : libMesh::invalid_uint),
      72         462 :     _pressure_var_number(coupled("pressure")),
      73         462 :     _temperature_var_number(coupled("temperature")),
      74             : 
      75             :     // Material properties
      76         924 :     _viscous_stress_tensor(getMaterialProperty<RealTensorValue>("viscous_stress_tensor")),
      77         924 :     _dynamic_viscosity(getMaterialProperty<Real>("dynamic_viscosity")),
      78         924 :     _turbulence_viscosity(getMaterialProperty<Real>("turbulence_viscosity")),
      79         924 :     _inertia_resistance_coeff(getMaterialProperty<RealTensorValue>("inertia_resistance_coeff")),
      80         924 :     _viscous_resistance_coeff(getMaterialProperty<RealTensorValue>("viscous_resistance_coeff")),
      81         462 :     _eos(getUserObject<SinglePhaseFluidProperties>("eos")),
      82         462 :     _vec_g(0., 0., 0.)
      83             : {
      84         924 :   if (isParamValid("gravity"))
      85         924 :     _vec_g = getParam<VectorValue<Real>>("gravity");
      86           0 :   else if (_mesh.dimension() == 2)
      87           0 :     _vec_g(1) = -9.8;
      88           0 :   else if (_mesh.dimension() == 3)
      89           0 :     _vec_g(2) = -9.8;
      90         462 : }
      91             : 
      92             : unsigned int
      93    53621760 : INSFEFluidKernelBase::mapVarNumber(unsigned int var) const
      94             : {
      95             :   // Convert the Moose numbering to:
      96             :   // 0 for pressure
      97             :   // 1 for u
      98             :   // 2 for v
      99             :   // 3 for w
     100             :   // 4 for temperature
     101             :   // regardless of the problem dimension, etc.
     102             :   unsigned mapped_var_number = 99;
     103             : 
     104    53621760 :   if (var == _pressure_var_number)
     105             :     mapped_var_number = 0;
     106    38261760 :   else if (var == _u_vel_var_number)
     107             :     mapped_var_number = 1;
     108    22901760 :   else if (var == _v_vel_var_number)
     109             :     mapped_var_number = 2;
     110     7541760 :   else if (var == _w_vel_var_number)
     111             :     mapped_var_number = 3;
     112     7541760 :   else if (var == _temperature_var_number)
     113             :     mapped_var_number = 4;
     114             :   else
     115             :     mapped_var_number = 99;
     116             : 
     117    53621760 :   return mapped_var_number;
     118             : }

Generated by: LCOV version 1.14