LCOV - code coverage report
Current view: top level - src/actions - SubChannelAddInitialConditionsAction.C (source / functions) Hit Total Coverage
Test: idaholab/moose subchannel: #32971 (54bef8) with base c6cf66 Lines: 32 33 97.0 %
Date: 2026-05-29 20:40:47 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 "SubChannelAddInitialConditionsAction.h"
      11             : #include "ActionFactory.h"
      12             : #include "FEProblemBase.h"
      13             : #include "QuadSubChannelMesh.h"
      14             : #include "SubChannelApp.h"
      15             : #include "SubChannelMesh.h"
      16             : #include "TriSubChannelMesh.h"
      17             : 
      18             : registerMooseAction("SubChannelApp", SubChannelAddInitialConditionsAction, "sch:add_default_ic");
      19             : 
      20             : InputParameters
      21         297 : SubChannelAddInitialConditionsAction::validParams()
      22             : {
      23         297 :   InputParameters params = Action::validParams();
      24         297 :   params.addClassDescription(
      25             :       "Adds the default initial conditions for subchannel geometry variables");
      26         297 :   return params;
      27           0 : }
      28             : 
      29         297 : SubChannelAddInitialConditionsAction::SubChannelAddInitialConditionsAction(
      30         297 :     const InputParameters & parameters)
      31         297 :   : Action(parameters)
      32             : {
      33         297 : }
      34             : 
      35             : void
      36         297 : SubChannelAddInitialConditionsAction::act()
      37             : {
      38         297 :   const auto * const quad_mesh = dynamic_cast<const QuadSubChannelMesh *>(_mesh.get());
      39         297 :   const auto * const tri_mesh = dynamic_cast<const TriSubChannelMesh *>(_mesh.get());
      40             :   const bool is_quad = quad_mesh != nullptr;
      41             :   const bool is_tri = tri_mesh != nullptr;
      42             :   const SubChannelMesh * subchannel_mesh = nullptr;
      43             : 
      44         297 :   if (is_quad)
      45             :   {
      46             :     subchannel_mesh = quad_mesh;
      47         292 :     addInitialCondition("SCMQuadFlowAreaIC", "subchannel_S_IC", SubChannelApp::SURFACE_AREA);
      48         292 :     addInitialCondition(
      49             :         "SCMQuadWettedPerimIC", "subchannel_w_perim_IC", SubChannelApp::WETTED_PERIMETER);
      50             :   }
      51         151 :   else if (is_tri)
      52             :   {
      53             :     subchannel_mesh = tri_mesh;
      54         302 :     addInitialCondition("SCMTriFlowAreaIC", "subchannel_S_IC", SubChannelApp::SURFACE_AREA);
      55         302 :     addInitialCondition(
      56             :         "SCMTriWettedPerimIC", "subchannel_w_perim_IC", SubChannelApp::WETTED_PERIMETER);
      57             :   }
      58             :   else
      59             :     return;
      60             : 
      61         623 :   if (subchannel_mesh->pinMeshExist() && !hasInitialCondition(SubChannelApp::PIN_DIAMETER))
      62             :   {
      63         298 :     auto params = _factory.getValidParams("ConstantIC");
      64         298 :     params.set<VariableName>("variable") = SubChannelApp::PIN_DIAMETER;
      65         149 :     params.set<Real>("value") = subchannel_mesh->getPinDiameter();
      66         298 :     _problem->addInitialCondition("ConstantIC", "subchannel_Dpin_IC", params);
      67         149 :   }
      68             : }
      69             : 
      70             : void
      71         594 : SubChannelAddInitialConditionsAction::addInitialCondition(const std::string & type,
      72             :                                                           const std::string & name,
      73             :                                                           const VariableName & var_name)
      74             : {
      75         594 :   if (hasInitialCondition(var_name))
      76          18 :     return;
      77             : 
      78         576 :   auto params = _factory.getValidParams(type);
      79         576 :   params.set<VariableName>("variable") = var_name;
      80         576 :   _problem->addInitialCondition(type, name, params);
      81         576 : }
      82             : 
      83             : bool
      84         757 : SubChannelAddInitialConditionsAction::hasInitialCondition(const VariableName & var_name) const
      85             : {
      86         757 :   return _problem->getInitialConditionWarehouse().hasObjectsForVariable(var_name, /*tid=*/0);
      87             : }

Generated by: LCOV version 1.14