https://mooseframework.inl.gov
Loading...
Searching...
No Matches
SubChannelAddInitialConditionsAction.C
Go to the documentation of this file.
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
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
18registerMooseAction("SubChannelApp", SubChannelAddInitialConditionsAction, "sch:add_default_ic");
19
22{
25 "Adds the default initial conditions for subchannel geometry variables");
26 return params;
27}
28
34
35void
37{
38 const auto * const quad_mesh = dynamic_cast<const QuadSubChannelMesh *>(_mesh.get());
39 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 if (is_quad)
45 {
46 subchannel_mesh = quad_mesh;
47 addInitialCondition("SCMQuadFlowAreaIC", "subchannel_S_IC", SubChannelApp::SURFACE_AREA);
49 "SCMQuadWettedPerimIC", "subchannel_w_perim_IC", SubChannelApp::WETTED_PERIMETER);
50 }
51 else if (is_tri)
52 {
53 subchannel_mesh = tri_mesh;
54 addInitialCondition("SCMTriFlowAreaIC", "subchannel_S_IC", SubChannelApp::SURFACE_AREA);
56 "SCMTriWettedPerimIC", "subchannel_w_perim_IC", SubChannelApp::WETTED_PERIMETER);
57 }
58 else
59 return;
60
62 {
63 auto params = _factory.getValidParams("ConstantIC");
64 params.set<VariableName>("variable") = SubChannelApp::PIN_DIAMETER;
65 params.set<Real>("value") = subchannel_mesh->getPinDiameter();
66 _problem->addInitialCondition("ConstantIC", "subchannel_Dpin_IC", params);
67 }
68}
69
70void
72 const std::string & name,
73 const VariableName & var_name)
74{
75 if (hasInitialCondition(var_name))
76 return;
77
78 auto params = _factory.getValidParams(type);
79 params.set<VariableName>("variable") = var_name;
80 _problem->addInitialCondition(type, name, params);
81}
82
83bool
85{
86 return _problem->getInitialConditionWarehouse().hasObjectsForVariable(var_name, /*tid=*/0);
87}
const std::string name
Definition Setup.h:21
registerMooseAction("SubChannelApp", SubChannelAddInitialConditionsAction, "sch:add_default_ic")
std::shared_ptr< MooseMesh > & _mesh
static InputParameters validParams()
std::shared_ptr< FEProblemBase > & _problem
InputParameters getValidParams(const std::string &name) const
void addClassDescription(const std::string &doc_string)
T & set(const std::string &name, bool quiet_mode=false)
const std::string & type() const
const std::string & name() const
Factory & _factory
Creates the mesh of subchannels in a quadrilateral lattice.
Action that adds default SubChannel geometry initial conditions.
void addInitialCondition(const std::string &type, const std::string &name, const VariableName &var_name)
Add an initial condition unless another IC already targets the variable.
bool hasInitialCondition(const VariableName &var_name) const
Return whether any user-provided IC targets the variable.
SubChannelAddInitialConditionsAction(const InputParameters &parameters)
static const std::string WETTED_PERIMETER
static const std::string SURFACE_AREA
static const std::string PIN_DIAMETER
Base class for subchannel meshes.
bool pinMeshExist() const
Return if Pin Mesh exists or not.
virtual const Real & getPinDiameter() const
Return undeformed Pin diameter.
Mesh class for triangular, edge and corner subchannels for hexagonal lattice fuel assemblies.