LCOV - code coverage report
Current view: top level - src/components - SimpleTurbine1Phase.C (source / functions) Hit Total Coverage
Test: idaholab/moose thermal_hydraulics: #30301 (3b550b) with base 2ad78d Lines: 65 66 98.5 %
Date: 2025-07-30 13:02:48 Functions: 5 5 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 "SimpleTurbine1Phase.h"
      11             : #include "FlowModelSinglePhase.h"
      12             : 
      13             : registerMooseObject("ThermalHydraulicsApp", SimpleTurbine1Phase);
      14             : 
      15             : InputParameters
      16         134 : SimpleTurbine1Phase::validParams()
      17             : {
      18         134 :   InputParameters params = JunctionParallelChannels1Phase::validParams();
      19             : 
      20         268 :   params.addRequiredParam<Real>("power", "Turbine power [W]");
      21         268 :   params.addRequiredParam<bool>("on", "Flag determining if turbine is operating or not [-]");
      22             : 
      23         268 :   params.declareControllable("power on");
      24             : 
      25         134 :   params.addClassDescription(
      26             :       "Simple turbine model that extracts prescribed power from the working fluid");
      27             : 
      28         134 :   return params;
      29           0 : }
      30             : 
      31          67 : SimpleTurbine1Phase::SimpleTurbine1Phase(const InputParameters & params)
      32             :   : JunctionParallelChannels1Phase(params),
      33          67 :     _on(getParam<bool>("on")),
      34         134 :     _power(getParam<Real>("power")),
      35         134 :     _W_dot_var_name(junctionVariableName("W_dot"))
      36             : {
      37          67 : }
      38             : 
      39             : void
      40          67 : SimpleTurbine1Phase::addVariables()
      41             : {
      42          67 :   JunctionParallelChannels1Phase::addVariables();
      43             : 
      44          67 :   addJunctionVariable(false, _W_dot_var_name);
      45          67 : }
      46             : 
      47             : void
      48          67 : SimpleTurbine1Phase::buildVolumeJunctionUserObject()
      49             : {
      50          67 :   ExecFlagEnum execute_on(MooseUtils::getDefaultExecFlagEnum());
      51         335 :   execute_on = {EXEC_INITIAL, EXEC_LINEAR, EXEC_NONLINEAR};
      52             : 
      53             :   {
      54          67 :     const std::string class_name = "ADSimpleTurbine1PhaseUserObject";
      55          67 :     InputParameters params = _factory.getValidParams(class_name);
      56          67 :     params.set<bool>("use_scalar_variables") = false;
      57          67 :     params.set<subdomain_id_type>("junction_subdomain_id") = _junction_subdomain_id;
      58          67 :     params.set<std::vector<BoundaryName>>("boundary") = _boundary_names;
      59         134 :     params.set<std::vector<Real>>("normals") = _normals;
      60          67 :     params.set<std::vector<processor_id_type>>("processor_ids") = getConnectedProcessorIDs();
      61          67 :     params.set<std::vector<UserObjectName>>("numerical_flux_names") = _numerical_flux_names;
      62          67 :     params.set<Real>("volume") = _volume;
      63         134 :     params.set<std::string>("component_name") = name();
      64         201 :     params.set<std::vector<VariableName>>("A") = {FlowModel::AREA};
      65         201 :     params.set<std::vector<VariableName>>("rhoA") = {FlowModelSinglePhase::RHOA};
      66         201 :     params.set<std::vector<VariableName>>("rhouA") = {FlowModelSinglePhase::RHOUA};
      67         201 :     params.set<std::vector<VariableName>>("rhoEA") = {FlowModelSinglePhase::RHOEA};
      68         201 :     params.set<std::vector<VariableName>>("rhoV") = {_rhoV_var_name};
      69         201 :     params.set<std::vector<VariableName>>("rhouV") = {_rhouV_var_name};
      70         201 :     params.set<std::vector<VariableName>>("rhovV") = {_rhovV_var_name};
      71         201 :     params.set<std::vector<VariableName>>("rhowV") = {_rhowV_var_name};
      72         201 :     params.set<std::vector<VariableName>>("rhoEV") = {_rhoEV_var_name};
      73          67 :     params.set<RealVectorValue>("dir_c0") = _directions[0];
      74          67 :     params.set<Real>("K") = _K;
      75          67 :     params.set<Real>("A_ref") = _A_ref;
      76          67 :     params.set<bool>("on") = _on;
      77          67 :     params.set<Real>("W_dot") = _power;
      78          67 :     params.set<UserObjectName>("fp") = _fp_name;
      79          67 :     params.set<ExecFlagEnum>("execute_on") = execute_on;
      80          67 :     getTHMProblem().addUserObject(class_name, _junction_uo_name, params);
      81         134 :     connectObject(params, _junction_uo_name, "power", "W_dot");
      82          67 :     connectObject(params, _junction_uo_name, "on");
      83          67 :     connectObject(params, _junction_uo_name, "K");
      84          67 :   }
      85         134 : }
      86             : 
      87             : void
      88          67 : SimpleTurbine1Phase::addMooseObjects()
      89             : {
      90          67 :   JunctionParallelChannels1Phase::addMooseObjects();
      91             : 
      92             :   {
      93         134 :     const std::string nm = genName(name(), "W_dot_aux");
      94          67 :     const std::string class_name = "SimpleTurbinePowerFieldAux";
      95          67 :     InputParameters params = _factory.getValidParams(class_name);
      96         134 :     params.set<AuxVariableName>("variable") = _W_dot_var_name;
      97          67 :     params.set<Real>("value") = _power;
      98          67 :     params.set<bool>("on") = _on;
      99          67 :     params.set<std::vector<SubdomainName>>("block") = getSubdomainNames();
     100          67 :     getTHMProblem().addAuxKernel(class_name, nm, params);
     101         134 :     connectObject(params, nm, "power", "value");
     102          67 :     connectObject(params, nm, "on");
     103          67 :   }
     104          67 : }

Generated by: LCOV version 1.14