LCOV - code coverage report
Current view: top level - src/base - FlowModelSinglePhase.C (source / functions) Hit Total Coverage
Test: idaholab/moose thermal_hydraulics: #30301 (3b550b) with base 2ad78d Lines: 122 123 99.2 %
Date: 2025-07-30 13:02:48 Functions: 14 14 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 "FlowModelSinglePhase.h"
      11             : #include "FlowChannelBase.h"
      12             : #include "THMNames.h"
      13             : 
      14             : const std::string FlowModelSinglePhase::DENSITY = THM::DENSITY;
      15             : const std::string FlowModelSinglePhase::FRICTION_FACTOR_DARCY = THM::FRICTION_FACTOR_DARCY;
      16             : const std::string FlowModelSinglePhase::DYNAMIC_VISCOSITY = THM::DYNAMIC_VISCOSITY;
      17             : const std::string FlowModelSinglePhase::HEAT_TRANSFER_COEFFICIENT_WALL =
      18             :     THM::HEAT_TRANSFER_COEFFICIENT_WALL;
      19             : const std::string FlowModelSinglePhase::HYDRAULIC_DIAMETER = THM::HYDRAULIC_DIAMETER;
      20             : const std::string FlowModelSinglePhase::PRESSURE = THM::PRESSURE;
      21             : const std::string FlowModelSinglePhase::RHOA = THM::RHOA;
      22             : const std::string FlowModelSinglePhase::RHOEA = THM::RHOEA;
      23             : const std::string FlowModelSinglePhase::RHOUA = THM::RHOUA;
      24             : const std::string FlowModelSinglePhase::SOUND_SPEED = THM::SOUND_SPEED;
      25             : const std::string FlowModelSinglePhase::SPECIFIC_HEAT_CONSTANT_PRESSURE =
      26             :     THM::SPECIFIC_HEAT_CONSTANT_PRESSURE;
      27             : const std::string FlowModelSinglePhase::SPECIFIC_HEAT_CONSTANT_VOLUME =
      28             :     THM::SPECIFIC_HEAT_CONSTANT_VOLUME;
      29             : const std::string FlowModelSinglePhase::SPECIFIC_INTERNAL_ENERGY = THM::SPECIFIC_INTERNAL_ENERGY;
      30             : const std::string FlowModelSinglePhase::SPECIFIC_TOTAL_ENTHALPY = THM::SPECIFIC_TOTAL_ENTHALPY;
      31             : const std::string FlowModelSinglePhase::SPECIFIC_VOLUME = THM::SPECIFIC_VOLUME;
      32             : const std::string FlowModelSinglePhase::TEMPERATURE = THM::TEMPERATURE;
      33             : const std::string FlowModelSinglePhase::THERMAL_CONDUCTIVITY = THM::THERMAL_CONDUCTIVITY;
      34             : const std::string FlowModelSinglePhase::VELOCITY = THM::VELOCITY;
      35             : const std::string FlowModelSinglePhase::VELOCITY_X = THM::VELOCITY_X;
      36             : const std::string FlowModelSinglePhase::VELOCITY_Y = THM::VELOCITY_Y;
      37             : const std::string FlowModelSinglePhase::VELOCITY_Z = THM::VELOCITY_Z;
      38             : const std::string FlowModelSinglePhase::REYNOLDS_NUMBER = THM::REYNOLDS_NUMBER;
      39             : 
      40             : InputParameters
      41        8282 : FlowModelSinglePhase::validParams()
      42             : {
      43        8282 :   InputParameters params = FlowModel1PhaseBase::validParams();
      44             : 
      45       16564 :   MooseEnum wave_speed_formulation("einfeldt davis", "einfeldt");
      46       16564 :   params.addParam<MooseEnum>(
      47             :       "wave_speed_formulation", wave_speed_formulation, "Method for computing wave speeds");
      48             : 
      49       16564 :   params.addRequiredParam<std::vector<Real>>(
      50             :       "scaling_factor_1phase",
      51             :       "Scaling factors for each single phase variable (rhoA, rhouA, rhoEA)");
      52             : 
      53        8282 :   return params;
      54        8282 : }
      55             : 
      56             : registerMooseObject("ThermalHydraulicsApp", FlowModelSinglePhase);
      57             : 
      58        4141 : FlowModelSinglePhase::FlowModelSinglePhase(const InputParameters & params)
      59             :   : FlowModel1PhaseBase(params),
      60        8282 :     _scaling_factors(getParam<std::vector<Real>>("scaling_factor_1phase"))
      61             : {
      62        4141 : }
      63             : 
      64             : Real
      65        4029 : FlowModelSinglePhase::getScalingFactorRhoA() const
      66             : {
      67        4029 :   return _scaling_factors[0];
      68             : }
      69             : 
      70             : Real
      71        4029 : FlowModelSinglePhase::getScalingFactorRhoUA() const
      72             : {
      73        4029 :   return _scaling_factors[1];
      74             : }
      75             : 
      76             : Real
      77        4029 : FlowModelSinglePhase::getScalingFactorRhoEA() const
      78             : {
      79        4029 :   return _scaling_factors[2];
      80             : }
      81             : 
      82             : std::vector<VariableName>
      83        8058 : FlowModelSinglePhase::solutionVariableNames() const
      84             : {
      85       32232 :   return {RHOA, RHOUA, RHOEA};
      86           0 : }
      87             : 
      88             : void
      89        3967 : FlowModelSinglePhase::addRhoEAIC()
      90             : {
      91        3967 :   const std::string class_name = "RhoEAFromPressureTemperatureFunctionVelocityIC";
      92        3967 :   InputParameters params = _factory.getValidParams(class_name);
      93        7934 :   params.set<VariableName>("variable") = RHOEA;
      94        7934 :   params.set<std::vector<SubdomainName>>("block") = _flow_channel.getSubdomainNames();
      95       11901 :   params.set<std::vector<VariableName>>("p") = {PRESSURE};
      96       11901 :   params.set<std::vector<VariableName>>("T") = {TEMPERATURE};
      97        7934 :   params.set<FunctionName>("vel") = getVariableFn("initial_vel");
      98       11901 :   params.set<std::vector<VariableName>>("A") = {FlowModel::AREA};
      99        3967 :   params.set<UserObjectName>("fp") = _fp_name;
     100        7934 :   _sim.addSimInitialCondition(class_name, genName(_comp_name, "rhoEA_ic"), params);
     101        7934 : }
     102             : 
     103             : void
     104        3967 : FlowModelSinglePhase::addDensityIC()
     105             : {
     106        3967 :   const std::string class_name = "RhoFromPressureTemperatureIC";
     107        3967 :   InputParameters params = _factory.getValidParams(class_name);
     108        7934 :   params.set<VariableName>("variable") = DENSITY;
     109        7934 :   params.set<std::vector<SubdomainName>>("block") = _flow_channel.getSubdomainNames();
     110       11901 :   params.set<std::vector<VariableName>>("p") = {PRESSURE};
     111       11901 :   params.set<std::vector<VariableName>>("T") = {TEMPERATURE};
     112        3967 :   params.set<UserObjectName>("fp") = _fp_name;
     113        7934 :   _sim.addSimInitialCondition(class_name, genName(_comp_name, "rho_ic"), params);
     114        7934 : }
     115             : 
     116             : void
     117        4029 : FlowModelSinglePhase::addPressureAux()
     118             : {
     119        4029 :   const std::string class_name = "PressureAux";
     120        4029 :   InputParameters params = _factory.getValidParams(class_name);
     121        8058 :   params.set<AuxVariableName>("variable") = PRESSURE;
     122        8058 :   params.set<std::vector<SubdomainName>>("block") = _flow_channel.getSubdomainNames();
     123       12087 :   params.set<std::vector<VariableName>>("e") = {SPECIFIC_INTERNAL_ENERGY};
     124       12087 :   params.set<std::vector<VariableName>>("v") = {SPECIFIC_VOLUME};
     125        4029 :   params.set<UserObjectName>("fp") = _fp_name;
     126        8058 :   _sim.addAuxKernel(class_name, genName(_comp_name, "pressure_uv_auxkernel"), params);
     127        8058 : }
     128             : 
     129             : void
     130        4029 : FlowModelSinglePhase::addTemperatureAux()
     131             : {
     132        4029 :   const std::string class_name = "TemperatureAux";
     133        4029 :   InputParameters params = _factory.getValidParams(class_name);
     134        8058 :   params.set<AuxVariableName>("variable") = TEMPERATURE;
     135        8058 :   params.set<std::vector<SubdomainName>>("block") = _flow_channel.getSubdomainNames();
     136       12087 :   params.set<std::vector<VariableName>>("e") = {SPECIFIC_INTERNAL_ENERGY};
     137       12087 :   params.set<std::vector<VariableName>>("v") = {SPECIFIC_VOLUME};
     138        4029 :   params.set<UserObjectName>("fp") = _fp_name;
     139        8058 :   _sim.addAuxKernel(class_name, genName(_comp_name, "T_auxkernel"), params);
     140        8058 : }
     141             : 
     142             : void
     143        4029 : FlowModelSinglePhase::addFluidPropertiesMaterials()
     144             : {
     145             :   {
     146        4029 :     const std::string class_name = "ADFluidProperties3EqnMaterial";
     147        4029 :     InputParameters params = _factory.getValidParams(class_name);
     148        4029 :     params.set<std::vector<SubdomainName>>("block") = _flow_channel.getSubdomainNames();
     149        8058 :     params.set<UserObjectName>("fp") = _fp_name;
     150       12087 :     params.set<std::vector<VariableName>>("rhoA") = {RHOA};
     151       12087 :     params.set<std::vector<VariableName>>("rhouA") = {RHOUA};
     152       12087 :     params.set<std::vector<VariableName>>("rhoEA") = {RHOEA};
     153       12087 :     params.set<std::vector<VariableName>>("A") = {FlowModel::AREA};
     154        8058 :     _sim.addMaterial(class_name, genName(_comp_name, "fp_mat"), params);
     155        4029 :   }
     156             :   {
     157        4029 :     const std::string class_name = "ADDynamicViscosityMaterial";
     158        4029 :     InputParameters params = _factory.getValidParams(class_name);
     159        4029 :     params.set<std::vector<SubdomainName>>("block") = _flow_channel.getSubdomainNames();
     160        8058 :     params.set<UserObjectName>("fp_1phase") = _fp_name;
     161        8058 :     params.set<MaterialPropertyName>("mu") = {DYNAMIC_VISCOSITY};
     162        8058 :     params.set<MaterialPropertyName>("v") = {SPECIFIC_VOLUME};
     163        8058 :     params.set<MaterialPropertyName>("e") = {SPECIFIC_INTERNAL_ENERGY};
     164        8058 :     _sim.addMaterial(class_name, genName(_comp_name, "mu_mat"), params);
     165        4029 :   }
     166        4029 : }
     167             : 
     168             : void
     169        4029 : FlowModelSinglePhase::addNumericalFluxUserObject()
     170             : {
     171        4029 :   const std::string class_name = "ADNumericalFlux3EqnHLLC";
     172        4029 :   InputParameters params = _factory.getValidParams(class_name);
     173        8058 :   params.applySpecificParameters(parameters(), {"wave_speed_formulation"});
     174        4029 :   params.set<UserObjectName>("fluid_properties") = _fp_name;
     175        8058 :   params.set<MooseEnum>("emit_on_nan") = "none";
     176       20145 :   params.set<ExecFlagEnum>("execute_on") = {EXEC_INITIAL, EXEC_LINEAR, EXEC_NONLINEAR};
     177        4029 :   _sim.addUserObject(class_name, _numerical_flux_name, params);
     178       20145 : }
     179             : 
     180             : void
     181        4029 : FlowModelSinglePhase::addSlopeReconstructionMaterial()
     182             : {
     183        4029 :   const std::string class_name = "ADRDG3EqnMaterial";
     184        4029 :   InputParameters params = _factory.getValidParams(class_name);
     185        4029 :   params.set<std::vector<SubdomainName>>("block") = _flow_channel.getSubdomainNames();
     186        8058 :   params.set<MooseEnum>("scheme") = _rdg_slope_reconstruction;
     187       12087 :   params.set<std::vector<VariableName>>("A_elem") = {AREA};
     188       12087 :   params.set<std::vector<VariableName>>("A_linear") = {AREA_LINEAR};
     189       12087 :   params.set<std::vector<VariableName>>("rhoA") = {RHOA};
     190       12087 :   params.set<std::vector<VariableName>>("rhouA") = {RHOUA};
     191       12087 :   params.set<std::vector<VariableName>>("rhoEA") = {RHOEA};
     192        8058 :   params.set<MaterialPropertyName>("direction") = DIRECTION;
     193        4029 :   params.set<UserObjectName>("fluid_properties") = _fp_name;
     194        4029 :   params.set<bool>("implicit") = _sim.getImplicitTimeIntegrationFlag();
     195        8058 :   _sim.addMaterial(class_name, genName(_comp_name, "rdg_3egn_mat"), params);
     196        8058 : }
     197             : 
     198             : void
     199        4029 : FlowModelSinglePhase::addRDGAdvectionDGKernels()
     200             : {
     201             :   // mass
     202        4029 :   const std::string class_name = "ADNumericalFlux3EqnDGKernel";
     203        4029 :   InputParameters params = _factory.getValidParams(class_name);
     204        8058 :   params.set<NonlinearVariableName>("variable") = RHOA;
     205        8058 :   params.set<std::vector<SubdomainName>>("block") = _flow_channel.getSubdomainNames();
     206       12087 :   params.set<std::vector<VariableName>>("A_linear") = {AREA_LINEAR};
     207       12087 :   params.set<std::vector<VariableName>>("rhoA") = {RHOA};
     208       12087 :   params.set<std::vector<VariableName>>("rhouA") = {RHOUA};
     209       12087 :   params.set<std::vector<VariableName>>("rhoEA") = {RHOEA};
     210        4029 :   params.set<UserObjectName>("numerical_flux") = _numerical_flux_name;
     211        4029 :   params.set<bool>("implicit") = _sim.getImplicitTimeIntegrationFlag();
     212        8058 :   _sim.addDGKernel(class_name, genName(_comp_name, "mass_advection"), params);
     213             : 
     214             :   // momentum
     215        8058 :   params.set<NonlinearVariableName>("variable") = RHOUA;
     216        8058 :   _sim.addDGKernel(class_name, genName(_comp_name, "momentum_advection"), params);
     217             : 
     218             :   // energy
     219        8058 :   params.set<NonlinearVariableName>("variable") = RHOEA;
     220        8058 :   _sim.addDGKernel(class_name, genName(_comp_name, "energy_advection"), params);
     221        8058 : }

Generated by: LCOV version 1.14