LCOV - code coverage report
Current view: top level - src/bcs - NSEnergyInviscidBC.C (source / functions) Hit Total Coverage
Test: idaholab/moose navier_stokes: 9fc4b0 Lines: 26 36 72.2 %
Date: 2025-08-14 10:14:56 Functions: 5 7 71.4 %
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 "NSEnergyInviscidBC.h"
      12             : #include "NS.h"
      13             : 
      14             : // FluidProperties includes
      15             : #include "IdealGasFluidProperties.h"
      16             : 
      17             : InputParameters
      18          41 : NSEnergyInviscidBC::validParams()
      19             : {
      20          41 :   InputParameters params = NSIntegratedBC::validParams();
      21          41 :   params.addClassDescription("This class corresponds to the inviscid part of the 'natural' "
      22             :                              "boundary condition for the energy equation.");
      23          41 :   params.addRequiredCoupledVar(NS::temperature, "temperature");
      24          41 :   return params;
      25           0 : }
      26             : 
      27          22 : NSEnergyInviscidBC::NSEnergyInviscidBC(const InputParameters & parameters)
      28             :   : NSIntegratedBC(parameters),
      29          22 :     _temperature(coupledValue(NS::temperature)),
      30             :     // Object for computing deriviatives of pressure
      31          22 :     _pressure_derivs(*this)
      32             : {
      33          22 : }
      34             : 
      35             : Real
      36      114240 : NSEnergyInviscidBC::qpResidualHelper(Real pressure, Real un)
      37             : {
      38      114240 :   return (_rho_et[_qp] + pressure) * un * _test[_i][_qp];
      39             : }
      40             : 
      41             : Real
      42           0 : NSEnergyInviscidBC::qpResidualHelper(Real rho, RealVectorValue u, Real /*pressure*/)
      43             : {
      44             :   // return (rho*(cv*_temperature[_qp] + 0.5*u.norm_sq()) + pressure) * (u*_normals[_qp]) *
      45             :   // _test[_i][_qp];
      46             :   // We can also expand pressure in terms of rho... does this make a difference?
      47             :   // Then we don't use the input pressure value.
      48           0 :   return rho * (_fp.gamma() * _fp.cv() * _temperature[_qp] + 0.5 * u.norm_sq()) *
      49           0 :          (u * _normals[_qp]) * _test[_i][_qp];
      50             : }
      51             : 
      52             : // (U4+p) * d(u.n)/dX
      53             : Real
      54      279552 : NSEnergyInviscidBC::qpJacobianTermA(unsigned var_number, Real pressure)
      55             : {
      56             :   Real result = 0.0;
      57             : 
      58      279552 :   switch (var_number)
      59             :   {
      60       69888 :     case 0: // density
      61             :     {
      62             :       // Velocity vector object
      63       69888 :       RealVectorValue vel(_u_vel[_qp], _v_vel[_qp], _w_vel[_qp]);
      64             : 
      65       69888 :       result = -(vel * _normals[_qp]);
      66             :       break;
      67             :     }
      68             : 
      69      139776 :     case 1:
      70             :     case 2:
      71             :     case 3: // momentums
      72      139776 :       result = _normals[_qp](var_number - 1);
      73      139776 :       break;
      74             : 
      75             :     case 4: // energy
      76             :       result = 0.;
      77             :       break;
      78             : 
      79           0 :     default:
      80           0 :       mooseError("Shouldn't get here!");
      81             :       break;
      82             :   }
      83             : 
      84             :   // Notice the division by _rho[_qp] here.  This comes from taking the
      85             :   // derivative wrt to either density or momentum.
      86      279552 :   return (_rho_et[_qp] + pressure) / _rho[_qp] * result * _phi[_j][_qp] * _test[_i][_qp];
      87             : }
      88             : 
      89             : // d(U4)/dX * (u.n)
      90             : Real
      91      279552 : NSEnergyInviscidBC::qpJacobianTermB(unsigned var_number, Real un)
      92             : {
      93             :   Real result = 0.0;
      94      279552 :   switch (var_number)
      95             :   {
      96             :     case 0: // density
      97             :     case 1:
      98             :     case 2:
      99             :     case 3: // momentums
     100             :     {
     101             :       result = 0.;
     102             :       break;
     103             :     }
     104             : 
     105       69888 :     case 4: // energy
     106             :     {
     107       69888 :       result = _phi[_j][_qp] * un * _test[_i][_qp];
     108       69888 :       break;
     109             :     }
     110             : 
     111           0 :     default:
     112           0 :       mooseError("Shouldn't get here!");
     113             :       break;
     114             :   }
     115             : 
     116      279552 :   return result;
     117             : }
     118             : 
     119             : // d(p)/dX * (u.n)
     120             : Real
     121           0 : NSEnergyInviscidBC::qpJacobianTermC(unsigned var_number, Real un)
     122             : {
     123           0 :   return _pressure_derivs.get_grad(var_number) * _phi[_j][_qp] * un * _test[_i][_qp];
     124             : }

Generated by: LCOV version 1.14