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