LCOV - code coverage report
Current view: top level - src/base - FlowModelSetup1Phase.C (source / functions) Hit Total Coverage
Test: idaholab/moose thermal_hydraulics: #30301 (3b550b) with base 2ad78d Lines: 239 243 98.4 %
Date: 2025-07-30 13:02:48 Functions: 7 7 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 "FlowModelSetup1Phase.h"
      11             : #include "MooseObjectAction.h"
      12             : 
      13             : InputParameters
      14          50 : FlowModelSetup1Phase::validParams()
      15             : {
      16          50 :   InputParameters params = FlowModelSetup::validParams();
      17             : 
      18         100 :   params.addRequiredParam<FunctionName>("p", "Initial pressure function");
      19         100 :   params.addRequiredParam<FunctionName>("T", "Initial temperature function");
      20         100 :   params.addRequiredParam<FunctionName>("vel", "Initial velocity function");
      21         100 :   params.addRequiredParam<FunctionName>("A", "Area function");
      22         100 :   params.addParam<FunctionName>("D_h", 0, "Hydraulic diameter function");
      23             : 
      24         100 :   params.addParam<Real>("scaling_rhoA", 1.0, "Scaling factor for rho*A");
      25         100 :   params.addParam<Real>("scaling_rhouA", 1.0, "Scaling factor for rho*u*A");
      26         100 :   params.addParam<Real>("scaling_rhoEA", 1.0, "Scaling factor for rho*E*A");
      27             : 
      28         100 :   params.addRequiredParam<UserObjectName>("fp_1phase", "Single-phase fluid properties object name");
      29             : 
      30          50 :   return params;
      31           0 : }
      32             : 
      33          50 : FlowModelSetup1Phase::FlowModelSetup1Phase(const InputParameters & params)
      34             :   : FlowModelSetup(params),
      35             : 
      36         100 :     _p_fn(getParam<FunctionName>("p")),
      37          50 :     _T_fn(getParam<FunctionName>("T")),
      38          50 :     _vel_fn(getParam<FunctionName>("vel")),
      39          50 :     _A_fn(getParam<FunctionName>("A")),
      40          50 :     _D_h_fn(getParam<FunctionName>("D_h")),
      41             : 
      42         100 :     _fp_1phase_name(getParam<UserObjectName>("fp_1phase")),
      43             : 
      44             :     _unity_name("unity"),
      45             :     _A_name("A"),
      46             :     _D_h_name("D_h"),
      47             :     _rhoA_name("rhoA"),
      48             :     _rhouA_name("rhouA"),
      49             :     _rhoEA_name("rhoEA"),
      50             :     _rho_name("rho"),
      51             :     _vel_name("vel"),
      52             :     _p_name("p"),
      53             :     _T_name("T"),
      54             :     _v_name("v"),
      55             :     _e_name("e"),
      56             :     _H_name("H"),
      57             :     _mu_name("mu"),
      58         150 :     _ad(getParam<bool>("ad"))
      59             : {
      60          50 : }
      61             : 
      62             : void
      63          50 : FlowModelSetup1Phase::addInitialConditions()
      64             : {
      65          50 :   const std::string class_name = "AddInitialConditionAction";
      66             : 
      67          50 :   addFunctionIC(_A_name, _A_fn);
      68          50 :   addFunctionIC(_p_name, _p_fn);
      69          50 :   addFunctionIC(_T_name, _T_fn);
      70          50 :   addFunctionIC(_vel_name, _vel_fn);
      71             : 
      72             :   // rho
      73             :   {
      74          50 :     InputParameters params = _this_action_factory.getValidParams(class_name);
      75          50 :     params.set<std::string>("type") = "RhoFromPressureTemperatureIC";
      76             : 
      77             :     std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
      78         100 :         _this_action_factory.create(class_name, _rho_name + "_ic", params));
      79             : 
      80          50 :     action->getObjectParams().set<VariableName>("variable") = _rho_name;
      81         100 :     action->getObjectParams().set<UserObjectName>("fp") = _fp_1phase_name;
      82         150 :     action->getObjectParams().set<std::vector<VariableName>>("p") = {_p_name};
      83         150 :     action->getObjectParams().set<std::vector<VariableName>>("T") = {_T_name};
      84             : 
      85         150 :     _this_action_warehouse.addActionBlock(action);
      86          50 :   }
      87             : 
      88             :   // rho*A
      89             :   {
      90          50 :     InputParameters params = _this_action_factory.getValidParams(class_name);
      91          50 :     params.set<std::string>("type") = "VariableProductIC";
      92             : 
      93             :     std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
      94         100 :         _this_action_factory.create(class_name, _rhoA_name + "_ic", params));
      95             : 
      96         100 :     action->getObjectParams().set<VariableName>("variable") = _rhoA_name;
      97         200 :     action->getObjectParams().set<std::vector<VariableName>>("values") = {_rho_name, _A_name};
      98             : 
      99         150 :     _this_action_warehouse.addActionBlock(action);
     100          50 :   }
     101             :   // rho*u*A
     102             :   {
     103          50 :     InputParameters params = _this_action_factory.getValidParams(class_name);
     104          50 :     params.set<std::string>("type") = "VariableProductIC";
     105             : 
     106             :     std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
     107         100 :         _this_action_factory.create(class_name, _rhouA_name + "_ic", params));
     108             : 
     109         100 :     action->getObjectParams().set<VariableName>("variable") = _rhouA_name;
     110         100 :     action->getObjectParams().set<std::vector<VariableName>>("values") = {
     111         300 :         _rho_name, _vel_name, _A_name};
     112             : 
     113         150 :     _this_action_warehouse.addActionBlock(action);
     114          50 :   }
     115             :   // rho*E*A
     116             :   {
     117          50 :     InputParameters params = _this_action_factory.getValidParams(class_name);
     118          50 :     params.set<std::string>("type") = "RhoEAFromPressureTemperatureVelocityIC";
     119             : 
     120             :     std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
     121         100 :         _this_action_factory.create(class_name, _rhoEA_name + "_ic", params));
     122             : 
     123          50 :     action->getObjectParams().set<VariableName>("variable") = _rhoEA_name;
     124         100 :     action->getObjectParams().set<UserObjectName>("fp") = _fp_1phase_name;
     125         150 :     action->getObjectParams().set<std::vector<VariableName>>("p") = {_p_name};
     126         150 :     action->getObjectParams().set<std::vector<VariableName>>("T") = {_T_name};
     127         150 :     action->getObjectParams().set<std::vector<VariableName>>("vel") = {_vel_name};
     128         150 :     action->getObjectParams().set<std::vector<VariableName>>("A") = {_A_name};
     129             : 
     130         150 :     _this_action_warehouse.addActionBlock(action);
     131          50 :   }
     132             : 
     133             :   // specific volume
     134             :   {
     135          50 :     InputParameters params = _this_action_factory.getValidParams(class_name);
     136          50 :     params.set<std::string>("type") = "SpecificVolumeIC";
     137             : 
     138             :     std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
     139         100 :         _this_action_factory.create(class_name, _v_name + "_ic", params));
     140             : 
     141         100 :     action->getObjectParams().set<VariableName>("variable") = _v_name;
     142         150 :     action->getObjectParams().set<std::vector<VariableName>>("rhoA") = {_rhoA_name};
     143         150 :     action->getObjectParams().set<std::vector<VariableName>>("A") = {_A_name};
     144             : 
     145         150 :     _this_action_warehouse.addActionBlock(action);
     146          50 :   }
     147             :   // specific internal energy
     148             :   {
     149          50 :     InputParameters params = _this_action_factory.getValidParams(class_name);
     150          50 :     params.set<std::string>("type") = "SpecificInternalEnergyIC";
     151             : 
     152             :     std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
     153         100 :         _this_action_factory.create(class_name, _e_name + "_ic", params));
     154             : 
     155         100 :     action->getObjectParams().set<VariableName>("variable") = _e_name;
     156         150 :     action->getObjectParams().set<std::vector<VariableName>>("rhoA") = {_rhoA_name};
     157         150 :     action->getObjectParams().set<std::vector<VariableName>>("rhouA") = {_rhouA_name};
     158         150 :     action->getObjectParams().set<std::vector<VariableName>>("rhoEA") = {_rhoEA_name};
     159             : 
     160         150 :     _this_action_warehouse.addActionBlock(action);
     161          50 :   }
     162             :   // total specific enthalpy
     163             :   {
     164          50 :     InputParameters params = _this_action_factory.getValidParams(class_name);
     165          50 :     params.set<std::string>("type") = "SpecificTotalEnthalpyIC";
     166             : 
     167             :     std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
     168         100 :         _this_action_factory.create(class_name, _H_name + "_ic", params));
     169             : 
     170         100 :     action->getObjectParams().set<VariableName>("variable") = _H_name;
     171         150 :     action->getObjectParams().set<std::vector<VariableName>>("p") = {_p_name};
     172         150 :     action->getObjectParams().set<std::vector<VariableName>>("rhoA") = {_rhoA_name};
     173         150 :     action->getObjectParams().set<std::vector<VariableName>>("rhoEA") = {_rhoEA_name};
     174         150 :     action->getObjectParams().set<std::vector<VariableName>>("A") = {_A_name};
     175             : 
     176         150 :     _this_action_warehouse.addActionBlock(action);
     177          50 :   }
     178          50 : }
     179             : 
     180             : void
     181          50 : FlowModelSetup1Phase::addSolutionVariables()
     182             : {
     183         200 :   std::vector<VariableName> var_names{_rhoA_name, _rhouA_name, _rhoEA_name};
     184         200 :   for (const VariableName & var_name : var_names)
     185             :   {
     186         300 :     const Real scaling_factor = getParam<Real>("scaling_" + var_name);
     187         150 :     addSolutionVariable(var_name, scaling_factor);
     188             :   }
     189          50 : }
     190             : 
     191             : void
     192          50 : FlowModelSetup1Phase::addNonConstantAuxVariables()
     193             : {
     194             :   // area
     195          50 :   addAuxVariable(_A_name);
     196             :   {
     197          50 :     const std::string class_name = "AddKernelAction";
     198          50 :     InputParameters params = _this_action_factory.getValidParams(class_name);
     199          50 :     params.set<std::string>("type") = "FunctionAux";
     200          50 :     params.set<std::string>("task") = "add_aux_kernel";
     201             : 
     202             :     std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
     203         100 :         _this_action_factory.create(class_name, _A_name + "_aux", params));
     204             : 
     205         100 :     action->getObjectParams().set<AuxVariableName>("variable") = _A_name;
     206          50 :     action->getObjectParams().set<FunctionName>("function") = _A_fn;
     207             : 
     208         150 :     _this_action_warehouse.addActionBlock(action);
     209          50 :   }
     210             : 
     211             :   // rho
     212          50 :   addAuxVariable(_rho_name);
     213             :   {
     214          50 :     const std::string class_name = "AddKernelAction";
     215          50 :     InputParameters params = _this_action_factory.getValidParams(class_name);
     216          50 :     params.set<std::string>("type") = "QuotientAux";
     217          50 :     params.set<std::string>("task") = "add_aux_kernel";
     218             : 
     219             :     std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
     220         100 :         _this_action_factory.create(class_name, _rho_name + "_aux", params));
     221             : 
     222         100 :     action->getObjectParams().set<AuxVariableName>("variable") = _rho_name;
     223         150 :     action->getObjectParams().set<std::vector<VariableName>>("numerator") = {_rhoA_name};
     224         150 :     action->getObjectParams().set<std::vector<VariableName>>("denominator") = {_A_name};
     225             : 
     226         150 :     _this_action_warehouse.addActionBlock(action);
     227          50 :   }
     228             : 
     229             :   // velocity
     230          50 :   addAuxVariable(_vel_name);
     231             :   {
     232          50 :     const std::string class_name = "AddKernelAction";
     233          50 :     InputParameters params = _this_action_factory.getValidParams(class_name);
     234          50 :     params.set<std::string>("type") = "QuotientAux";
     235          50 :     params.set<std::string>("task") = "add_aux_kernel";
     236             : 
     237             :     std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
     238         100 :         _this_action_factory.create(class_name, _vel_name + "_aux", params));
     239             : 
     240         100 :     action->getObjectParams().set<AuxVariableName>("variable") = _vel_name;
     241         150 :     action->getObjectParams().set<std::vector<VariableName>>("numerator") = {_rhouA_name};
     242         150 :     action->getObjectParams().set<std::vector<VariableName>>("denominator") = {_rhoA_name};
     243             : 
     244         150 :     _this_action_warehouse.addActionBlock(action);
     245          50 :   }
     246             : 
     247             :   // pressure
     248          50 :   addAuxVariable(_p_name);
     249             :   {
     250          50 :     const std::string class_name = "AddKernelAction";
     251          50 :     InputParameters params = _this_action_factory.getValidParams(class_name);
     252          50 :     params.set<std::string>("type") = "PressureAux";
     253          50 :     params.set<std::string>("task") = "add_aux_kernel";
     254             : 
     255             :     std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
     256         100 :         _this_action_factory.create(class_name, _p_name + "_aux", params));
     257             : 
     258         100 :     action->getObjectParams().set<AuxVariableName>("variable") = _p_name;
     259         150 :     action->getObjectParams().set<std::vector<VariableName>>("e") = {_e_name};
     260         150 :     action->getObjectParams().set<std::vector<VariableName>>("v") = {_v_name};
     261          50 :     action->getObjectParams().set<UserObjectName>("fp") = _fp_1phase_name;
     262             : 
     263         150 :     _this_action_warehouse.addActionBlock(action);
     264          50 :   }
     265             : 
     266             :   // temperature
     267          50 :   addAuxVariable(_T_name);
     268             :   {
     269          50 :     const std::string class_name = "AddKernelAction";
     270          50 :     InputParameters params = _this_action_factory.getValidParams(class_name);
     271          50 :     params.set<std::string>("type") = "TemperatureAux";
     272          50 :     params.set<std::string>("task") = "add_aux_kernel";
     273             : 
     274             :     std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
     275         100 :         _this_action_factory.create(class_name, _T_name + "_aux", params));
     276             : 
     277         100 :     action->getObjectParams().set<AuxVariableName>("variable") = _T_name;
     278         150 :     action->getObjectParams().set<std::vector<VariableName>>("e") = {_e_name};
     279         150 :     action->getObjectParams().set<std::vector<VariableName>>("v") = {_v_name};
     280          50 :     action->getObjectParams().set<UserObjectName>("fp") = _fp_1phase_name;
     281             : 
     282         150 :     _this_action_warehouse.addActionBlock(action);
     283          50 :   }
     284             : 
     285             :   // specific volume
     286          50 :   addAuxVariable(_v_name);
     287             :   {
     288          50 :     const std::string class_name = "AddKernelAction";
     289          50 :     InputParameters params = _this_action_factory.getValidParams(class_name);
     290          50 :     params.set<std::string>("type") = "THMSpecificVolumeAux";
     291          50 :     params.set<std::string>("task") = "add_aux_kernel";
     292             : 
     293             :     std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
     294         100 :         _this_action_factory.create(class_name, _v_name + "_aux", params));
     295             : 
     296         100 :     action->getObjectParams().set<AuxVariableName>("variable") = _v_name;
     297         150 :     action->getObjectParams().set<std::vector<VariableName>>("rhoA") = {_rhoA_name};
     298         150 :     action->getObjectParams().set<std::vector<VariableName>>("A") = {_A_name};
     299             : 
     300         150 :     _this_action_warehouse.addActionBlock(action);
     301          50 :   }
     302             : 
     303             :   // specific internal energy
     304          50 :   addAuxVariable(_e_name);
     305             :   {
     306          50 :     const std::string class_name = "AddKernelAction";
     307          50 :     InputParameters params = _this_action_factory.getValidParams(class_name);
     308          50 :     params.set<std::string>("type") = "THMSpecificInternalEnergyAux";
     309          50 :     params.set<std::string>("task") = "add_aux_kernel";
     310             : 
     311             :     std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
     312         100 :         _this_action_factory.create(class_name, _e_name + "_aux", params));
     313             : 
     314         100 :     action->getObjectParams().set<AuxVariableName>("variable") = _e_name;
     315         150 :     action->getObjectParams().set<std::vector<VariableName>>("rhoA") = {_rhoA_name};
     316         150 :     action->getObjectParams().set<std::vector<VariableName>>("rhouA") = {_rhouA_name};
     317         150 :     action->getObjectParams().set<std::vector<VariableName>>("rhoEA") = {_rhoEA_name};
     318             : 
     319         150 :     _this_action_warehouse.addActionBlock(action);
     320          50 :   }
     321             : 
     322             :   // specific total enthalpy
     323          50 :   addAuxVariable(_H_name);
     324             :   {
     325          50 :     const std::string class_name = "AddKernelAction";
     326          50 :     InputParameters params = _this_action_factory.getValidParams(class_name);
     327          50 :     params.set<std::string>("type") = "SpecificTotalEnthalpyAux";
     328          50 :     params.set<std::string>("task") = "add_aux_kernel";
     329             : 
     330             :     std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
     331         100 :         _this_action_factory.create(class_name, _H_name + "_aux", params));
     332             : 
     333         100 :     action->getObjectParams().set<AuxVariableName>("variable") = _H_name;
     334         150 :     action->getObjectParams().set<std::vector<VariableName>>("rhoA") = {_rhoA_name};
     335         150 :     action->getObjectParams().set<std::vector<VariableName>>("rhoEA") = {_rhoEA_name};
     336         150 :     action->getObjectParams().set<std::vector<VariableName>>("p") = {_p_name};
     337         150 :     action->getObjectParams().set<std::vector<VariableName>>("A") = {_A_name};
     338             : 
     339         150 :     _this_action_warehouse.addActionBlock(action);
     340          50 :   }
     341          50 : }
     342             : 
     343             : void
     344          50 : FlowModelSetup1Phase::addMaterials()
     345             : {
     346          50 :   FlowModelSetup::addMaterials();
     347             : 
     348          50 :   const std::string class_name = "AddMaterialAction";
     349             : 
     350             :   // unity
     351             :   {
     352          50 :     InputParameters params = _this_action_factory.getValidParams(class_name);
     353          50 :     params.set<std::string>("type") = "ConstantMaterial";
     354             : 
     355             :     std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
     356          50 :         _this_action_factory.create(class_name, "unity_material", params));
     357             : 
     358          50 :     action->getObjectParams().set<std::string>("property_name") = _unity_name;
     359          50 :     action->getObjectParams().set<Real>("value") = 1.0;
     360         100 :     action->getObjectParams().set<std::vector<VariableName>>("derivative_vars") = {
     361         300 :         _rhoA_name, _rhouA_name, _rhoEA_name};
     362             : 
     363         150 :     _this_action_warehouse.addActionBlock(action);
     364          50 :   }
     365             : 
     366             :   // fluid properties
     367             :   {
     368          50 :     InputParameters params = _this_action_factory.getValidParams(class_name);
     369          50 :     if (_ad)
     370           0 :       params.set<std::string>("type") = "ADFluidProperties3EqnMaterial";
     371             :     else
     372         100 :       params.set<std::string>("type") = "FluidProperties3EqnMaterial";
     373             : 
     374             :     std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
     375         100 :         _this_action_factory.create(class_name, "fluid_properties_material", params));
     376             : 
     377         150 :     action->getObjectParams().set<std::vector<VariableName>>("A") = {_A_name};
     378         150 :     action->getObjectParams().set<std::vector<VariableName>>("rhoA") = {_rhoA_name};
     379         150 :     action->getObjectParams().set<std::vector<VariableName>>("rhouA") = {_rhouA_name};
     380         150 :     action->getObjectParams().set<std::vector<VariableName>>("rhoEA") = {_rhoEA_name};
     381             : 
     382          50 :     action->getObjectParams().set<UserObjectName>("fp") = _fp_1phase_name;
     383             : 
     384         150 :     _this_action_warehouse.addActionBlock(action);
     385          50 :   }
     386             : 
     387             :   // dynamic viscosity
     388             :   {
     389          50 :     const std::string class_name = "AddMaterialAction";
     390             : 
     391          50 :     InputParameters params = _this_action_factory.getValidParams(class_name);
     392          50 :     if (_ad)
     393           0 :       params.set<std::string>("type") = "ADDynamicViscosityMaterial";
     394             :     else
     395         100 :       params.set<std::string>("type") = "DynamicViscosityMaterial";
     396             : 
     397             :     std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
     398          50 :         _this_action_factory.create(class_name, "mu_material", params));
     399             : 
     400          50 :     if (!_ad)
     401             :     {
     402         150 :       action->getObjectParams().set<std::vector<VariableName>>("arhoA") = {_rhoA_name};
     403         150 :       action->getObjectParams().set<std::vector<VariableName>>("arhouA") = {_rhouA_name};
     404         150 :       action->getObjectParams().set<std::vector<VariableName>>("arhoEA") = {_rhoEA_name};
     405             :     }
     406             : 
     407         100 :     action->getObjectParams().set<MaterialPropertyName>("mu") = {_mu_name};
     408         100 :     action->getObjectParams().set<MaterialPropertyName>("v") = {_v_name};
     409         100 :     action->getObjectParams().set<MaterialPropertyName>("e") = {_e_name};
     410          50 :     action->getObjectParams().set<UserObjectName>("fp_1phase") = _fp_1phase_name;
     411             : 
     412         150 :     _this_action_warehouse.addActionBlock(action);
     413          50 :   }
     414             : 
     415             :   // hydraulic diameter
     416             :   {
     417          50 :     InputParameters params = _this_action_factory.getValidParams(class_name);
     418          50 :     if (_ad)
     419           0 :       params.set<std::string>("type") = "ADGenericFunctionMaterial";
     420             :     else
     421         100 :       params.set<std::string>("type") = "GenericFunctionMaterial";
     422             : 
     423             :     std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
     424          50 :         _this_action_factory.create(class_name, "D_h_material", params));
     425             : 
     426         150 :     action->getObjectParams().set<std::vector<std::string>>("prop_names") = {_D_h_name};
     427         150 :     action->getObjectParams().set<std::vector<FunctionName>>("prop_values") = {_D_h_fn};
     428             : 
     429         150 :     _this_action_warehouse.addActionBlock(action);
     430          50 :   }
     431         100 : }
     432             : 
     433             : void
     434          50 : FlowModelSetup1Phase::addUserObjects()
     435             : {
     436          50 : }

Generated by: LCOV version 1.14