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 "Pump1Phase.h" 11 : #include "FlowModelSinglePhase.h" 12 : #include "SinglePhaseFluidProperties.h" 13 : #include "Function.h" 14 : #include "Numerics.h" 15 : 16 : registerMooseObject("ThermalHydraulicsApp", Pump1Phase); 17 : 18 : InputParameters 19 134 : Pump1Phase::validParams() 20 : { 21 134 : InputParameters params = VolumeJunction1Phase::validParams(); 22 : 23 268 : params.addRequiredParam<Real>("head", "Pump head [m]"); 24 268 : params.makeParamRequired<Real>("A_ref"); 25 : 26 268 : params.declareControllable("head"); 27 : 28 134 : params.addClassDescription("Pump between two 1-phase flow channels that has a non-zero volume"); 29 : 30 134 : return params; 31 0 : } 32 : 33 67 : Pump1Phase::Pump1Phase(const InputParameters & params) 34 134 : : VolumeJunction1Phase(params), _head(getParam<Real>("head")) 35 : { 36 67 : } 37 : 38 : void 39 67 : Pump1Phase::buildVolumeJunctionUserObject() 40 : { 41 67 : ExecFlagEnum execute_on(MooseUtils::getDefaultExecFlagEnum()); 42 335 : execute_on = {EXEC_INITIAL, EXEC_LINEAR, EXEC_NONLINEAR}; 43 : 44 : { 45 67 : const std::string class_name = "ADPump1PhaseUserObject"; 46 67 : InputParameters params = _factory.getValidParams(class_name); 47 67 : params.set<bool>("use_scalar_variables") = false; 48 67 : params.set<subdomain_id_type>("junction_subdomain_id") = _junction_subdomain_id; 49 67 : params.set<std::vector<BoundaryName>>("boundary") = _boundary_names; 50 134 : params.set<std::vector<Real>>("normals") = _normals; 51 67 : params.set<std::vector<processor_id_type>>("processor_ids") = getConnectedProcessorIDs(); 52 67 : params.set<std::vector<UserObjectName>>("numerical_flux_names") = _numerical_flux_names; 53 67 : params.set<Real>("volume") = _volume; 54 201 : params.set<std::vector<VariableName>>("A") = {FlowModel::AREA}; 55 201 : params.set<std::vector<VariableName>>("rhoA") = {FlowModelSinglePhase::RHOA}; 56 201 : params.set<std::vector<VariableName>>("rhouA") = {FlowModelSinglePhase::RHOUA}; 57 201 : params.set<std::vector<VariableName>>("rhoEA") = {FlowModelSinglePhase::RHOEA}; 58 201 : params.set<std::vector<VariableName>>("rhoV") = {_rhoV_var_name}; 59 201 : params.set<std::vector<VariableName>>("rhouV") = {_rhouV_var_name}; 60 201 : params.set<std::vector<VariableName>>("rhovV") = {_rhovV_var_name}; 61 201 : params.set<std::vector<VariableName>>("rhowV") = {_rhowV_var_name}; 62 201 : params.set<std::vector<VariableName>>("rhoEV") = {_rhoEV_var_name}; 63 67 : params.set<Real>("head") = _head; 64 67 : params.set<Real>("gravity_magnitude") = THM::gravity_const; 65 134 : params.set<Real>("A_ref") = getParam<Real>("A_ref"); 66 134 : params.set<Real>("K") = getParam<Real>("K"); 67 67 : params.set<UserObjectName>("fp") = _fp_name; 68 134 : params.set<bool>("apply_velocity_scaling") = getParam<bool>("apply_velocity_scaling"); 69 67 : params.set<ExecFlagEnum>("execute_on") = execute_on; 70 67 : getTHMProblem().addUserObject(class_name, _junction_uo_name, params); 71 67 : connectObject(params, _junction_uo_name, "head"); 72 67 : } 73 134 : }