LCOV - code coverage report
Current view: top level - src/materials - PorousConservedVarMaterial.C (source / functions) Hit Total Coverage
Test: idaholab/moose navier_stokes: #32971 (54bef8) with base c6cf66 Lines: 106 107 99.1 %
Date: 2026-05-29 20:37:52 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             : // Navier-Stokes includes
      11             : #include "PorousConservedVarMaterial.h"
      12             : #include "NS.h"
      13             : #include "NavierStokesMethods.h"
      14             : 
      15             : // FluidProperties includes
      16             : #include "SinglePhaseFluidProperties.h"
      17             : 
      18             : registerMooseObject("NavierStokesApp", PorousConservedVarMaterial);
      19             : 
      20             : InputParameters
      21         275 : PorousConservedVarMaterial::validParams()
      22             : {
      23         275 :   auto params = Material::validParams();
      24         275 :   params.addRequiredParam<UserObjectName>(NS::fluid, "Fluid properties userobject");
      25         275 :   params.addRequiredCoupledVar(NS::density, "density");
      26         275 :   params.addRequiredCoupledVar(NS::total_energy_density, "total fluid energy");
      27         275 :   params.addRequiredCoupledVar(NS::superficial_momentum_x, "The x-momentum times the porosity");
      28         275 :   params.addCoupledVar(NS::superficial_momentum_y, "The y-momentum times the porosity");
      29         275 :   params.addCoupledVar(NS::superficial_momentum_z, "The z-momentum times the porosity");
      30         275 :   params.addClassDescription("Provides access to variables for a conserved variable set "
      31             :                              "of density, total fluid energy, and momentum");
      32         275 :   params.addRequiredParam<MaterialPropertyName>(NS::porosity, "the porosity");
      33         275 :   return params;
      34           0 : }
      35             : 
      36         207 : PorousConservedVarMaterial::PorousConservedVarMaterial(const InputParameters & params)
      37             :   : Material(params),
      38         414 :     _fluid(UserObjectInterface::getUserObject<SinglePhaseFluidProperties>(NS::fluid)),
      39         207 :     _var_rho(adCoupledValue(NS::density)),
      40         207 :     _var_grad_rho(adCoupledGradient(NS::density)),
      41         207 :     _var_rho_ud(adCoupledValue(NS::superficial_momentum_x)),
      42         207 :     _var_rho_vd(isCoupled(NS::superficial_momentum_y) ? adCoupledValue(NS::superficial_momentum_y)
      43             :                                                       : _ad_zero),
      44         207 :     _var_rho_wd(isCoupled(NS::superficial_momentum_z) ? adCoupledValue(NS::superficial_momentum_z)
      45             :                                                       : _ad_zero),
      46         207 :     _var_grad_rho_ud(adCoupledGradient(NS::superficial_momentum_x)),
      47         207 :     _var_grad_rho_vd(isCoupled(NS::superficial_momentum_y)
      48         207 :                          ? adCoupledGradient(NS::superficial_momentum_y)
      49             :                          : _ad_grad_zero),
      50         207 :     _var_grad_rho_wd(isCoupled(NS::superficial_momentum_z)
      51         207 :                          ? adCoupledGradient(NS::superficial_momentum_z)
      52             :                          : _ad_grad_zero),
      53         207 :     _var_total_energy_density(adCoupledValue(NS::total_energy_density)),
      54         207 :     _var_grad_rho_et(adCoupledGradient(NS::total_energy_density)),
      55         207 :     _epsilon(getMaterialProperty<Real>(NS::porosity)),
      56         207 :     _rho(declareADProperty<Real>(NS::density)),
      57         207 :     _superficial_rho(declareADProperty<Real>(NS::superficial_density)),
      58         207 :     _mass_flux(declareADProperty<RealVectorValue>(NS::mass_flux)),
      59         207 :     _momentum(declareADProperty<RealVectorValue>(NS::momentum)),
      60         207 :     _total_energy_density(declareADProperty<Real>(NS::total_energy_density)),
      61         207 :     _velocity(declareADProperty<RealVectorValue>(NS::velocity)),
      62         207 :     _speed(declareADProperty<Real>(NS::speed)),
      63         207 :     _superficial_velocity(declareADProperty<RealVectorValue>(NS::superficial_velocity)),
      64         207 :     _sup_vel_x(declareADProperty<Real>(NS::superficial_velocity_x)),
      65         207 :     _sup_vel_y(declareADProperty<Real>(NS::superficial_velocity_y)),
      66         207 :     _sup_vel_z(declareADProperty<Real>(NS::superficial_velocity_z)),
      67         207 :     _grad_sup_vel_x(declareADProperty<RealVectorValue>(NS::grad(NS::superficial_velocity_x))),
      68         207 :     _grad_sup_vel_y(declareADProperty<RealVectorValue>(NS::grad(NS::superficial_velocity_y))),
      69         207 :     _grad_sup_vel_z(declareADProperty<RealVectorValue>(NS::grad(NS::superficial_velocity_z))),
      70         207 :     _sup_mom_x(declareADProperty<Real>(NS::superficial_momentum_x)),
      71         207 :     _sup_mom_y(declareADProperty<Real>(NS::superficial_momentum_y)),
      72         207 :     _sup_mom_z(declareADProperty<Real>(NS::superficial_momentum_z)),
      73         207 :     _vel_x(declareADProperty<Real>(NS::velocity_x)),
      74         207 :     _vel_y(declareADProperty<Real>(NS::velocity_y)),
      75         207 :     _vel_z(declareADProperty<Real>(NS::velocity_z)),
      76         207 :     _rhou(declareADProperty<Real>(NS::momentum_x)),
      77         207 :     _rhov(declareADProperty<Real>(NS::momentum_y)),
      78         207 :     _rhow(declareADProperty<Real>(NS::momentum_z)),
      79         207 :     _v(declareADProperty<Real>(NS::v)),
      80         207 :     _specific_internal_energy(declareADProperty<Real>(NS::specific_internal_energy)),
      81         207 :     _pressure(declareADProperty<Real>(NS::pressure)),
      82         207 :     _grad_pressure(declareADProperty<RealVectorValue>(NS::grad(NS::pressure))),
      83         207 :     _specific_total_enthalpy(declareADProperty<Real>(NS::specific_total_enthalpy)),
      84         207 :     _rho_ht(declareADProperty<Real>(NS::total_enthalpy_density)),
      85         207 :     _superficial_rho_et(declareADProperty<Real>(NS::superficial_total_energy_density)),
      86         207 :     _superficial_rho_ht(declareADProperty<Real>(NS::superficial_total_enthalpy_density)),
      87         207 :     _T_fluid(declareADProperty<Real>(NS::T_fluid)),
      88         414 :     _grad_T_fluid(declareADProperty<RealVectorValue>(NS::grad(NS::T_fluid)))
      89             : {
      90         207 : }
      91             : 
      92             : void
      93      183032 : PorousConservedVarMaterial::computeQpProperties()
      94             : {
      95      183032 :   _rho[_qp] = _var_rho[_qp];
      96      366064 :   _superficial_rho[_qp] = _rho[_qp] * _epsilon[_qp];
      97      183032 :   _mass_flux[_qp] = {_var_rho_ud[_qp], _var_rho_vd[_qp], _var_rho_wd[_qp]};
      98      183032 :   _sup_mom_x[_qp] = _mass_flux[_qp](0);
      99      183032 :   _sup_mom_y[_qp] = _mass_flux[_qp](1);
     100      183032 :   _sup_mom_z[_qp] = _mass_flux[_qp](2);
     101      366064 :   _momentum[_qp] = _mass_flux[_qp] / _epsilon[_qp];
     102      183032 :   _total_energy_density[_qp] = _var_total_energy_density[_qp];
     103      183032 :   _superficial_rho_et[_qp] = _epsilon[_qp] * _total_energy_density[_qp];
     104             : 
     105      366064 :   _superficial_velocity[_qp] = _mass_flux[_qp] / _rho[_qp];
     106      183032 :   _sup_vel_x[_qp] = _superficial_velocity[_qp](0);
     107      183032 :   _sup_vel_y[_qp] = _superficial_velocity[_qp](1);
     108      183032 :   _sup_vel_z[_qp] = _superficial_velocity[_qp](2);
     109      366064 :   _grad_sup_vel_x[_qp] = _var_grad_rho_ud[_qp] / _rho[_qp] -
     110      366064 :                          _var_rho_ud[_qp] / (_rho[_qp] * _rho[_qp]) * _var_grad_rho[_qp];
     111      366064 :   _grad_sup_vel_y[_qp] = _var_grad_rho_vd[_qp] / _rho[_qp] -
     112      366064 :                          _var_rho_vd[_qp] / (_rho[_qp] * _rho[_qp]) * _var_grad_rho[_qp];
     113      366064 :   _grad_sup_vel_z[_qp] = _var_grad_rho_wd[_qp] / _rho[_qp] -
     114      366064 :                          _var_rho_wd[_qp] / (_rho[_qp] * _rho[_qp]) * _var_grad_rho[_qp];
     115             : 
     116      366064 :   _velocity[_qp] = _superficial_velocity[_qp] / _epsilon[_qp];
     117      183032 :   _speed[_qp] = NS::computeSpeed<ADReal>(_velocity[_qp]);
     118      183032 :   _vel_x[_qp] = _velocity[_qp](0);
     119      183032 :   _vel_y[_qp] = _velocity[_qp](1);
     120      183032 :   _vel_z[_qp] = _velocity[_qp](2);
     121      183032 :   const auto grad_vel_x = _grad_sup_vel_x[_qp] / _epsilon[_qp];
     122      183032 :   const auto grad_vel_y = _grad_sup_vel_y[_qp] / _epsilon[_qp];
     123      183032 :   const auto grad_vel_z = _grad_sup_vel_z[_qp] / _epsilon[_qp];
     124      366064 :   _rhou[_qp] = _vel_x[_qp] * _rho[_qp];
     125      366064 :   _rhov[_qp] = _vel_y[_qp] * _rho[_qp];
     126      366064 :   _rhow[_qp] = _vel_z[_qp] * _rho[_qp];
     127             : 
     128      366064 :   _v[_qp] = 1 / _rho[_qp];
     129      366064 :   const auto grad_v = (-1. / (_rho[_qp] * _rho[_qp])) * _var_grad_rho[_qp];
     130             : 
     131      183032 :   _specific_internal_energy[_qp] =
     132      549096 :       _total_energy_density[_qp] / _rho[_qp] - (_velocity[_qp] * _velocity[_qp]) / 2;
     133             :   const auto grad_e =
     134      366064 :       _var_grad_rho_et[_qp] / _rho[_qp] -
     135      366064 :       _total_energy_density[_qp] / (_rho[_qp] * _rho[_qp]) * _var_grad_rho[_qp] -
     136      366064 :       (_vel_x[_qp] * grad_vel_x + _vel_y[_qp] * grad_vel_y + _vel_z[_qp] * grad_vel_z);
     137             : 
     138             :   ADReal dp_dv, dp_de;
     139      183032 :   _fluid.p_from_v_e(_v[_qp], _specific_internal_energy[_qp], _pressure[_qp], dp_dv, dp_de);
     140      366064 :   _grad_pressure[_qp] = dp_dv * grad_v + dp_de * grad_e;
     141             : 
     142      366064 :   _specific_total_enthalpy[_qp] = (_total_energy_density[_qp] + _pressure[_qp]) / _rho[_qp];
     143      366064 :   _rho_ht[_qp] = _specific_total_enthalpy[_qp] * _rho[_qp];
     144      366064 :   _superficial_rho_ht[_qp] = _rho_ht[_qp] * _epsilon[_qp];
     145             : 
     146             :   ADReal dT_dv, dT_de;
     147      183032 :   _fluid.T_from_v_e(_v[_qp], _specific_internal_energy[_qp], _T_fluid[_qp], dT_dv, dT_de);
     148      366064 :   _grad_T_fluid[_qp] = dT_dv * grad_v + dT_de * grad_e;
     149      183032 : }

Generated by: LCOV version 1.14