- connectionsJunction connections
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:Junction connections
- positionSpatial position of the center of the junction [m]
C++ Type:libMesh::Point
Controllable:No
Description:Spatial position of the center of the junction [m]
- volumeVolume of the junction [m^3]
C++ Type:double
Controllable:No
Description:Volume of the junction [m^3]
VolumeJunction1Phase
This is a flow junction that has a volume and can connect 2 or more FlowChannel1Phase components in any orientation.
Usage
The parameter "connections" specifies ends of flow channel components to connect.
Several quantities in the form loss source terms given by Eq. (1) and Eq. (2) are taken from the first connection in "connections", so using different connections in the first entry gives different results.
The parameter "A_ref" is the reference cross-sectional area used in Eq. (1) and Eq. (2). If it is not provided, the cross-sectional area of the first connection in "connections" is used.
A form loss coefficient may be specified using the parameter "K".
Initial conditions are specified with the following parameters:
"initial_T": temperature
"initial_p": pressure
"initial_vel_x": x-velocity
"initial_vel_y": y-velocity
"initial_vel_z": z-velocity
Input Parameters
- A_refReference area [m^2]
C++ Type:double
Controllable:No
Description:Reference area [m^2]
- K0Form loss factor [-]
Default:0
C++ Type:double
Controllable:No
Description:Form loss factor [-]
- initial_TInitial temperature [K]
C++ Type:FunctionName
Controllable:No
Description:Initial temperature [K]
- initial_pInitial pressure [Pa]
C++ Type:FunctionName
Controllable:No
Description:Initial pressure [Pa]
- initial_vel_xInitial velocity in x-direction [m/s]
C++ Type:FunctionName
Controllable:No
Description:Initial velocity in x-direction [m/s]
- initial_vel_yInitial velocity in y-direction [m/s]
C++ Type:FunctionName
Controllable:No
Description:Initial velocity in y-direction [m/s]
- initial_vel_zInitial velocity in z-direction [m/s]
C++ Type:FunctionName
Controllable:No
Description:Initial velocity in z-direction [m/s]
- scaling_factor_rhoEV1Scaling factor for rho*E*V [-]
Default:1
C++ Type:double
Controllable:No
Description:Scaling factor for rho*E*V [-]
- scaling_factor_rhoV1Scaling factor for rho*V [-]
Default:1
C++ Type:double
Controllable:No
Description:Scaling factor for rho*V [-]
- scaling_factor_rhouV1Scaling factor for rho*u*V [-]
Default:1
C++ Type:double
Controllable:No
Description:Scaling factor for rho*u*V [-]
- scaling_factor_rhovV1Scaling factor for rho*v*V [-]
Default:1
C++ Type:double
Controllable:No
Description:Scaling factor for rho*v*V [-]
- scaling_factor_rhowV1Scaling factor for rho*w*V [-]
Default:1
C++ Type:double
Controllable:No
Description:Scaling factor for rho*w*V [-]
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:No
Description:Set the enabled status of the MooseObject.
Advanced Parameters
Formulation
See Berry et al. (2016) for a description of this junction formulation.
Form Losses
Complex multidimensional interactions inside the junction cannot be practically modeled mechanistically but are instead approximated using a form loss factor , which gives rise to source terms on the momentum and energy equations:
(1)(2)where
is the stagnation pressure of the first flow channel (see Usage),
is the static pressure of the first flow channel,
is the reference cross-sectional area, and
is the velocity in the first connected flow channel.
Input Files
- (modules/thermal_hydraulics/test/tests/base/simulation/err.no_smp.i)
- (modules/thermal_hydraulics/test/tests/components/pump_1phase/pump_loop.i)
- (modules/thermal_hydraulics/test/tests/components/gate_valve_1phase/gate_valve_1phase.i)
- (modules/thermal_hydraulics/test/tests/components/volume_junction_1phase/phy.form_loss.i)
- (modules/thermal_hydraulics/test/tests/misc/initial_from_file/volume_junction/test.i)
- (modules/thermal_hydraulics/test/tests/misc/restart_1phase/test.i)
- (modules/thermal_hydraulics/test/tests/misc/adapt/multiple_blocks.i)
- (modules/thermal_hydraulics/tutorials/single_phase_flow/04_loop.i)
- (modules/thermal_hydraulics/test/tests/components/volume_junction_1phase/phy.shower.i)
- (modules/thermal_hydraulics/test/tests/postprocessors/flow_junction_flux_1phase/flow_junction_flux_1phase.i)
- (modules/thermal_hydraulics/test/tests/components/volume_junction_1phase/err.missing_ics.i)
- (modules/thermal_hydraulics/test/tests/components/volume_junction_1phase/phy.unequal_area.i)
- (modules/thermal_hydraulics/tutorials/single_phase_flow/06_custom_closures.i)
- (modules/thermal_hydraulics/test/tests/components/volume_junction_1phase/equal_area_with_junction.i)
- (modules/thermal_hydraulics/tutorials/single_phase_flow/05_secondary_side.i)
- (modules/thermal_hydraulics/test/tests/misc/uniform_refine/test.i)
- (modules/thermal_hydraulics/test/tests/components/volume_junction_1phase/phy.deadend.i)
- (modules/thermal_hydraulics/test/tests/components/volume_junction_1phase/t_junction_1phase.i)
- (modules/thermal_hydraulics/test/tests/components/volume_junction_1phase/junction_with_calorifically_imperfect_gas.i)
- (modules/thermal_hydraulics/test/tests/misc/displaced_components/displaced_components.i)
- (modules/thermal_hydraulics/tutorials/single_phase_flow/03_upper_loop.i)
- (modules/thermal_hydraulics/test/tests/output/vector_velocity/test.i)
- (modules/thermal_hydraulics/test/tests/misc/mesh_only/test.i)
- (modules/thermal_hydraulics/test/tests/misc/coupling_mD_flow/thm_non_overlapping.i)
- (modules/thermal_hydraulics/test/tests/misc/initial_from_file/volume_junction/steady_state.i)
Child Objects
- (modules/thermal_hydraulics/include/components/Pump1Phase.h)
- (modules/thermal_hydraulics/include/components/JunctionParallelChannels1Phase.h)
- (modules/thermal_hydraulics/include/components/ShaftConnectedTurbine1Phase.h)
- (modules/thermal_hydraulics/include/components/ShaftConnectedPump1Phase.h)
- (modules/thermal_hydraulics/include/components/ShaftConnectedCompressor1Phase.h)
References
- R. A. Berry, L. Zou, H. Zhao, H. Zhang, J. W. Peterson, R. C. Martineau, S. Y. Kadioglu, and D. Andrs.
RELAP-7 theory manual.
Technical Report INL/EXT-14-31366, Idaho National Laboratory, 2016.[BibTeX]
@techreport{relap7theory, author = "Berry, R. A. and Zou, L. and Zhao, H. and Zhang, H. and Peterson, J. W. and Martineau, R. C. and Kadioglu, S. Y. and Andrs, D.", title = "{RELAP-7} Theory Manual", institution = "Idaho National Laboratory", number = "INL/EXT-14-31366", year = "2016" }
connections
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:Junction connections
connections
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:Junction connections
A_ref
C++ Type:double
Controllable:No
Description:Reference area [m^2]
connections
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:Junction connections
K
Default:0
C++ Type:double
Controllable:No
Description:Form loss factor [-]
initial_T
C++ Type:FunctionName
Controllable:No
Description:Initial temperature [K]
initial_p
C++ Type:FunctionName
Controllable:No
Description:Initial pressure [Pa]
initial_vel_x
C++ Type:FunctionName
Controllable:No
Description:Initial velocity in x-direction [m/s]
initial_vel_y
C++ Type:FunctionName
Controllable:No
Description:Initial velocity in y-direction [m/s]
initial_vel_z
C++ Type:FunctionName
Controllable:No
Description:Initial velocity in z-direction [m/s]
(modules/thermal_hydraulics/test/tests/base/simulation/err.no_smp.i)
[GlobalParams]
gravity_vector = '0 0 9.81'
initial_p = 1e5
initial_T = 300
initial_vel = 0
initial_vel_x = 0
initial_vel_y = 0
initial_vel_z = 0
fp = water
closures = simple_closures
f = 0
[]
[Modules/FluidProperties]
[water]
type = StiffenedGasFluidProperties
gamma = 2.35
cv = 1816.0
q = -1.167e6
p_inf = 1.0e9
q_prime = 0
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[Components]
[inlet]
type = InletMassFlowRateTemperature1Phase
input = 'pipe1:in'
m_dot = 1
T = 300
[]
[pipe1]
type = FlowChannel1Phase
position = '0 0 0'
orientation = '1 0 0'
length = '1'
A = 1
D_h = 1
n_elems = 2
[]
[jct1]
type = VolumeJunction1Phase
position = '1 0 0'
volume = 1e-3
connections = 'pipe1:out pipe2:in'
[]
[pipe2]
type = FlowChannel1Phase
position = '1 0 0'
orientation = '1 0 0'
length = '1'
A = 1
D_h = 1
n_elems = 2
[]
[outlet]
type = Outlet1Phase
input = 'pipe2:out'
p = 101325
[]
[]
[Executioner]
type = Transient
dt = 0.01
num_steps = 2
[]
(modules/thermal_hydraulics/test/tests/components/pump_1phase/pump_loop.i)
[GlobalParams]
initial_T = 300
initial_p = 1e5
initial_vel = 0
initial_vel_x = 0
initial_vel_y = 0
initial_vel_z = 0
scaling_factor_1phase = '1 1 1'
scaling_factor_rhoV = 1
scaling_factor_rhouV = 1
scaling_factor_rhovV = 1
scaling_factor_rhowV = 1
scaling_factor_rhoEV = 1
closures = simple_closures
[]
[Modules/FluidProperties]
[fp]
type = StiffenedGasFluidProperties
gamma = 2.35
q = -1167e3
q_prime = 0
p_inf = 1.e9
cv = 1816
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[Components]
[pipe1a]
type = FlowChannel1Phase
fp = fp
position = '0 0 0'
orientation = '1 0 0'
A = 0.785398163e-4 #1.0 cm (0.01 m) in diameter, A = 1/4 * PI * d^2
D_h = 0.01
f = 0.01
length = 0.5
n_elems = 2
[]
[pipe1b]
type = FlowChannel1Phase
fp = fp
position = '0.5 0 0'
orientation = '1 0 0'
A = 0.785398163e-4 #1.0 cm (0.01 m) in diameter, A = 1/4 * PI * d^2
D_h = 0.01
f = 0.01
length = 0.5
n_elems = 2
[]
[pipe2]
type = FlowChannel1Phase
fp = fp
position = '1 0 0'
orientation = '0 1 0'
A = 0.785398163e-4 #1.0 cm (0.01 m) in diameter, A = 1/4 * PI * d^2
D_h = 0.01
f = 0.01
length = 1
n_elems = 3
[]
[pipe3]
type = FlowChannel1Phase
fp = fp
position = '1 1 0'
orientation = '-1 0 0'
A = 0.785398163e-4 #1.0 cm (0.01 m) in diameter, A = 1/4 * PI * d^2
D_h = 0.01
f = 0.01
length = 1
n_elems = 3
[]
[pipe4]
type = FlowChannel1Phase
fp = fp
position = '0 1 0'
orientation = '0 -1 0'
A = 0.785398163e-4 #1.0 cm (0.01 m) in diameter, A = 1/4 * PI * d^2
D_h = 0.01
f = 0.01
length = 1
n_elems = 3
[]
[pipe5]
type = FlowChannel1Phase
fp = fp
position = '1 1 0'
orientation = '0 1 0'
A = 0.785398163e-4 #1.0 cm (0.01 m) in diameter, A = 1/4 * PI * d^2
D_h = 0.01
f = 0.01
length = 0.5
n_elems = 3
[]
[pump]
type = Pump1Phase
connections = 'pipe1a:out pipe1b:in'
head = 1.0
position = '0.5 0 0'
volume = 0.785398163e-3
A_ref = 0.785398163e-4
[]
[junction1]
type = VolumeJunction1Phase
connections = 'pipe1b:out pipe2:in'
volume = 0.785398163e-3
position = '1 0 0'
[]
[junction2]
type = VolumeJunction1Phase
connections = 'pipe2:out pipe3:in pipe5:in'
volume = 0.785398163e-3
position = '1 1 0'
[]
[junction3]
type = VolumeJunction1Phase
connections = 'pipe3:out pipe4:in'
volume = 0.785398163e-3
position = '0 1 0'
[]
[junction4]
type = VolumeJunction1Phase
connections = 'pipe4:out pipe1a:in'
volume = 0.785398163e-3
position = '0 0 0'
[]
[outlet]
type = InletStagnationPressureTemperature1Phase
input = 'pipe5:out'
p0 = 1.e5
T0 = 300
[]
[]
[Preconditioning]
[SMP_PJFNK]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
scheme = 'bdf2'
start_time = 0
num_steps = 10
dt = 1
abort_on_solve_fail = true
solve_type = 'PJFNK'
line_search = 'basic'
nl_rel_tol = 1e-6
nl_abs_tol = 1e-7
nl_max_its = 10
l_tol = 1e-3
l_max_its = 100
[Quadrature]
type = gauss
order = second
[]
[]
[Outputs]
[out]
type = Exodus
show = 'rhouA p'
execute_on = 'initial final'
[]
[]
(modules/thermal_hydraulics/test/tests/components/gate_valve_1phase/gate_valve_1phase.i)
# This input file is used to test the gate valve component.
# This problem consists of a T junction of 3 pipes. The inlet pipe is one of the
# 2 pipes of the "top" of the T. The other 2 pipes each have a gate valve.
# Initially, one of the 2 outlet pipes has an open valve and the other has a
# closed valve. Later in the transient, the valves gradually open/close to switch
# the outlet flow direction.
p = 1.0e5
T = 300.0
rho = 1.161430436 # @ 1e5 Pa, 300 K
D = 0.1
A = ${fparse pi * D^2 / 4.0}
V_junction = ${fparse pi * D^3 / 4.0}
vel_in = 2.0
m_dot = ${fparse rho * vel_in * A}
t_begin = 0.3
delta_t_open = 0.1
[GlobalParams]
gravity_vector = '0 0 0'
closures = simple_closures
fp = fp
f = 0.0
initial_T = ${T}
initial_p = ${p}
initial_vel = 0
[]
[Modules/FluidProperties]
[fp]
type = IdealGasFluidProperties
gamma = 1.4
molar_mass = 0.02897
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[Functions]
[pipe3_open_fn]
type = TimeRampFunction
initial_value = 1
final_value = 0
initial_time = ${t_begin}
ramp_duration = ${delta_t_open}
[]
[pipe2_open_fn]
type = ParsedFunction
value = '1 - pipe3_phi'
vars = 'pipe3_phi'
vals = 'pipe3_open_fn'
[]
[]
[Components]
[inlet]
type = InletMassFlowRateTemperature1Phase
input = 'pipe1:in'
m_dot = ${m_dot}
T = ${T}
[]
[pipe1]
type = FlowChannel1Phase
position = '0 0 0'
orientation = '1 0 0'
length = 1.0
n_elems = 50
A = ${A}
[]
[volume_junction]
type = VolumeJunction1Phase
position = '1 0 0'
connections = 'pipe1:out pipe2A:in pipe3A:in'
volume = ${V_junction}
initial_vel_x = 0
initial_vel_y = 0
initial_vel_z = 0
[]
[pipe2A]
type = FlowChannel1Phase
position = '1 0 0'
orientation = '0 1 0'
length = 0.5
n_elems = 25
A = ${A}
[]
[pipe2_valve]
type = GateValve1Phase
connections = 'pipe2A:out pipe2B:in'
open_area_fraction = 0 # (controlled via 'pipe2_valve_control')
[]
[pipe2B]
type = FlowChannel1Phase
position = '1 0.5 0'
orientation = '0 1 0'
length = 0.5
n_elems = 25
A = ${A}
[]
[pipe2_outlet]
type = Outlet1Phase
input = 'pipe2B:out'
p = ${p}
[]
[pipe3A]
type = FlowChannel1Phase
position = '1 0 0'
orientation = '1 0 0'
length = 0.5
n_elems = 25
A = ${A}
[]
[pipe3_valve]
type = GateValve1Phase
connections = 'pipe3A:out pipe3B:in'
open_area_fraction = 0 # (controlled via 'pipe3_valve_control')
[]
[pipe3B]
type = FlowChannel1Phase
position = '1.5 0 0'
orientation = '1 0 0'
length = 0.5
n_elems = 25
A = ${A}
[]
[pipe3_outlet]
type = Outlet1Phase
input = 'pipe3B:out'
p = ${p}
[]
[]
[ControlLogic]
[pipe2_valve_control]
type = TimeFunctionComponentControl
component = pipe2_valve
parameter = open_area_fraction
function = pipe2_open_fn
[]
[pipe3_valve_control]
type = TimeFunctionComponentControl
component = pipe3_valve
parameter = open_area_fraction
function = pipe3_open_fn
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
scheme = bdf2
solve_type = PJFNK
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
nl_max_its = 20
l_tol = 1e-4
start_time = 0.0
end_time = 1.0
dt = 0.01
abort_on_solve_fail = true
[]
[Outputs]
exodus = true
show = 'p T vel'
velocity_as_vector = false
print_linear_residuals = false
[console]
type = Console
max_rows = 1
[]
[]
(modules/thermal_hydraulics/test/tests/components/volume_junction_1phase/phy.form_loss.i)
# This test measures the pressure drop across the volume junction with K=1.
A = 0.1
[GlobalParams]
gravity_vector = '0 0 0'
scaling_factor_1phase = '1 1 1e-5'
scaling_factor_rhoV = 1
scaling_factor_rhouV = 1
scaling_factor_rhovV = 1
scaling_factor_rhowV = 1
scaling_factor_rhoEV = 1e-5
initial_T = 300
initial_p = 1e5
initial_vel = 1
n_elems = 20
length = 1
f = 0
fp = fp
closures = simple_closures
[]
[Modules/FluidProperties]
[fp]
type = StiffenedGasFluidProperties
gamma = 1.4
cv = 725
q = 0
q_prime = 0
p_inf = 0
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[Components]
[pipe1]
type = FlowChannel1Phase
position = '0 0 0'
orientation = '1 0 0'
A = ${A}
[]
[pipe2]
type = FlowChannel1Phase
position = '1 0 0'
orientation = '1 0 0'
A = ${A}
initial_p = 1e5
[]
[junction]
type = VolumeJunction1Phase
connections = 'pipe1:out pipe2:in'
position = '1 0 0'
volume = 0.005
initial_p = 1e5
initial_vel_x = 1
initial_vel_y = 0
initial_vel_z = 0
[]
[pipe1_in]
type = InletVelocityTemperature1Phase
input = 'pipe1:in'
vel = 1
T = 300
[]
[pipe2_out]
type = Outlet1Phase
input = 'pipe2:out'
p = 1e5
[]
[]
[Postprocessors]
[pJ_in]
type = SideAverageValue
variable = p
boundary = pipe1:out
[]
[pJ_out]
type = SideAverageValue
variable = p
boundary = pipe2:in
[]
[dpJ]
type = DifferencePostprocessor
value1 = pJ_in
value2 = pJ_out
[]
[]
[Preconditioning]
[pc]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
scheme = 'bdf2'
start_time = 0
end_time = 20
dt = 0.5
abort_on_solve_fail = true
solve_type = 'NEWTON'
nl_rel_tol = 0
nl_abs_tol = 1e-8
nl_max_its = 15
l_tol = 1e-3
l_max_its = 10
[]
[Outputs]
csv = true
execute_on = 'final'
show = 'dpJ'
[]
(modules/thermal_hydraulics/test/tests/misc/initial_from_file/volume_junction/test.i)
# Test that the initial conditions read from the exodus file are correct
[GlobalParams]
scaling_factor_1phase = '1. 1.e-2 1.e-4'
closures = simple_closures
initial_from_file = 'steady_state_out.e'
[]
[Modules/FluidProperties]
[fp]
type = StiffenedGasFluidProperties
gamma = 2.35
cv = 1816.0
q = -1.167e6
p_inf = 1.0e9
q_prime = 0
k = 0.5
mu = 281.8e-6
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[Components]
[pipe1]
type = FlowChannel1Phase
fp = fp
# geometry
position = '0 0 0'
orientation = '1 0 0'
length = 1
n_elems = 3
A = 1.907720E-04
D_h = 1.698566E-02
f = 0.1
[]
[junction]
type = VolumeJunction1Phase
connections = 'pipe1:out pipe2:in'
volume = 1
position = '1 0 0'
scaling_factor_rhoV = 1
scaling_factor_rhouV = 1
scaling_factor_rhovV = 1
scaling_factor_rhowV = 1
scaling_factor_rhoEV = 1e-4
[]
[pipe2]
type = FlowChannel1Phase
fp = fp
# geometry
position = '1 0 0'
orientation = '1 0 0'
length = 1
n_elems = 3
A = 1.907720E-04
D_h = 1.698566E-02
f = 0.1
[]
[inlet]
type = InletMassFlowRateTemperature1Phase
input = 'pipe1:in'
m_dot = 0.1
T = 500
[]
[outlet]
type = Outlet1Phase
input = 'pipe2:out'
p = 6e6
[]
[]
[Preconditioning]
[pc]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
scheme = 'bdf2'
start_time = 0
dt = 1
num_steps = 1
abort_on_solve_fail = true
solve_type = 'NEWTON'
line_search = 'basic'
nl_rel_tol = 1e-7
nl_abs_tol = 1e-8
nl_max_its = 10
l_tol = 1e-3
l_max_its = 100
[]
[Outputs]
exodus = true
execute_on = 'initial'
velocity_as_vector = false
[]
(modules/thermal_hydraulics/test/tests/misc/restart_1phase/test.i)
[GlobalParams]
gravity_vector = '0 0 0'
closures = simple_closures
[]
[Modules/FluidProperties]
[eos]
type = StiffenedGasFluidProperties
gamma = 2.35
q = -1167e3
q_prime = 0
p_inf = 1.e9
cv = 1816
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[HeatStructureMaterials]
[mat1]
type = SolidMaterialProperties
k = 16
cp = 356.
rho = 6.551400E+03
[]
[]
[Functions]
[Ts_init]
type = ParsedFunction
value = '2*sin(x*pi)+507'
[]
[]
[Components]
[pipe1]
type = FlowChannel1Phase
fp = eos
# geometry
position = '0 0 0'
orientation = '1 0 0'
length = 1
n_elems = 5
A = 1.907720E-04
D_h = 1.698566E-02
f = 0.1
[]
[jct1]
type = VolumeJunction1Phase
connections = 'pipe1:out pipe2:in'
position = '1 0 0'
volume = 1e-5
[]
[pipe2]
type = FlowChannel1Phase
fp = eos
# geometry
position = '1 0 0'
orientation = '1 0 0'
length = 1
n_elems = 5
A = 1.907720E-04
D_h = 1.698566E-02
f = 0.1
[]
[jct2]
type = VolumeJunction1Phase
connections = 'pipe2:out pipe3:in'
position = '2 0 0'
volume = 1e-5
[]
[pipe3]
type = FlowChannel1Phase
fp = eos
# geometry
position = '2 0 0'
orientation = '1 0 0'
length = 1
n_elems = 5
A = 1.907720E-04
D_h = 1.698566E-02
f = 0.1
[]
[hs]
type = HeatStructureCylindrical
position = '1 0.01 0'
orientation = '1 0 0'
length = 1
n_elems = 5
names = '0'
n_part_elems = 1
materials = 'mat1'
widths = 0.1
initial_T = Ts_init
[]
[temp_outside]
type = HSBoundarySpecifiedTemperature
hs = hs
boundary = hs:outer
T = Ts_init
[]
[inlet]
type = InletVelocityTemperature1Phase
input = 'pipe1:in'
T = 507
vel = 1
[]
[outlet]
type = Outlet1Phase
input = 'pipe3:out'
p = 6e6
[]
[hx3ext]
type = HeatTransferFromExternalAppTemperature1Phase
flow_channel = pipe3
P_hf = 0.0449254
Hw = 100000
[]
[]
[Preconditioning]
[SMP_PJFNK]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
scheme = 'bdf2'
dt = 0.01
num_steps = 5
abort_on_solve_fail = true
solve_type = 'newton'
line_search = 'basic'
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
nl_max_its = 10
l_tol = 1e-3
l_max_its = 100
automatic_scaling = true
petsc_options_iname = '-pc_type'
petsc_options_value = ' lu'
[]
[Outputs]
exodus = true
velocity_as_vector = false
[]
(modules/thermal_hydraulics/test/tests/misc/adapt/multiple_blocks.i)
[GlobalParams]
gravity_vector = '0 0 0'
initial_p = 1e5
initial_T = 300
initial_vel = 0
closures = simple_closures
[]
[Modules/FluidProperties]
[eos]
type = StiffenedGasFluidProperties
gamma = 2.35
q = -1167e3
q_prime = 0
p_inf = 1.e9
cv = 1816
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[Components]
[pipe1]
type = FlowChannel1Phase
fp = eos
position = '0 0 0'
orientation = '1 0 0'
length = 1
n_elems = 10
A = 1
f = 0
[]
[pipe2]
type = FlowChannel1Phase
fp = eos
position = '1 0 0'
orientation = '1 0 0'
length = 1
n_elems = 10
A = 1
f = 0
[]
[junction]
type = VolumeJunction1Phase
connections = 'pipe1:out pipe2:in'
volume = 1e-5
position = '1 0 0'
initial_vel_x = 0
initial_vel_y = 0
initial_vel_z = 0
[]
[inlet]
type = InletStagnationPressureTemperature1Phase
input = 'pipe1:in'
# (p0, T0) for p = 1e5, T = 300, vel = 1
p0 = 1.0049827846e+05
T0 = 300.0000099
[]
[outlet]
type = Outlet1Phase
input = 'pipe2:out'
p = 1e5
[]
[]
[Preconditioning]
[prec]
type = SMP
full = true
petsc_options = '-pc_factor_shift_nonzero'
petsc_options_iname = '-mat_fd_coloring_err'
petsc_options_value = '1.e-10'
[]
[]
[Executioner]
type = Transient
start_time = 0
dt = 1e-4
num_steps = 5
abort_on_solve_fail = true
solve_type = 'PJFNK'
nl_rel_tol = 0
nl_abs_tol = 1e-5
nl_max_its = 10
l_tol = 1e-3
l_max_its = 10
[Adaptivity]
initial_adaptivity = 0
refine_fraction = 0.60
coarsen_fraction = 0.10
max_h_level = 3
[]
automatic_scaling = true
[]
[Outputs]
exodus = true
[]
(modules/thermal_hydraulics/tutorials/single_phase_flow/04_loop.i)
T_in = 300. # K
m_dot_in = 1e-4 # kg/s
press = 1e5 # Pa
# core parameters
core_length = 1. # m
core_n_elems = 10
core_dia = ${units 2. cm -> m}
core_pitch = ${units 8.7 cm -> m}
# pipe parameters
pipe_dia = ${units 10. cm -> m}
tot_power = 100 # W
[GlobalParams]
initial_p = ${press}
initial_vel = 0
initial_T = ${T_in}
initial_vel_x = 0
initial_vel_y = 0
initial_vel_z = 0
rdg_slope_reconstruction = full
closures = simple_closures
fp = he
f = 0.4
[]
[Modules/FluidProperties]
[he]
type = IdealGasFluidProperties
molar_mass = 4e-3
gamma = 1.67
k = 0.2556
mu = 3.22639e-5
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[HeatStructureMaterials]
[steel]
type = SolidMaterialProperties
rho = 8050
k = 45
cp = 466
[]
[]
[Components]
[total_power]
type = TotalPower
power = ${tot_power}
[]
[core_chan]
type = FlowChannel1Phase
position = '0 0 0'
orientation = '0 0 1'
length = ${core_length}
n_elems = ${core_n_elems}
A = ${fparse core_pitch * core_pitch - pi * core_dia * core_dia / 4.}
D_h = ${core_dia}
f = 1.6
[]
[core_hs]
type = HeatStructureCylindrical
position = '0 0 0'
orientation = '0 0 1'
length = ${core_length}
n_elems = ${core_n_elems}
names = 'block'
widths = '${fparse core_dia / 2.}'
materials = 'steel'
n_part_elems = 3
[]
[core_heating]
type = HeatSourceFromTotalPower
hs = core_hs
regions = block
power = total_power
[]
[core_ht]
type = HeatTransferFromHeatStructure1Phase
flow_channel = core_chan
hs = core_hs
hs_side = outer
P_hf = ${fparse pi * core_dia}
Hw = 1.36
[]
[jct1]
type = JunctionParallelChannels1Phase
position = '0 0 1'
connections = 'core_chan:out up_pipe:in'
volume = 1e-3
[]
[up_pipe]
type = FlowChannel1Phase
position = '0 0 1'
orientation = '0 0 1'
length = 1
n_elems = 10
A = ${fparse pi * pipe_dia * pipe_dia / 4.}
D_h = ${pipe_dia}
[]
[jct2]
type = VolumeJunction1Phase
position = '0 0 2'
connections = 'up_pipe:out top_pipe:in'
volume = 1e-3
[]
[top_pipe]
type = FlowChannel1Phase
position = '0 0 2'
orientation = '1 0 0'
length = 1
n_elems = 10
A = ${fparse pi * pipe_dia * pipe_dia / 4.}
D_h = ${pipe_dia}
[]
[jct3]
type = VolumeJunction1Phase
position = '1 0 2'
connections = 'top_pipe:out cooling_pipe:in'
volume = 1e-3
[]
[cooling_pipe]
type = FlowChannel1Phase
position = '1 0 2'
orientation = '0 0 -1'
length = 1
n_elems = 10
A = ${fparse pi * pipe_dia * pipe_dia / 4.}
D_h = ${pipe_dia}
[]
[cold_wall]
type = HeatTransferFromSpecifiedTemperature1Phase
flow_channel = cooling_pipe
T_wall = 300
Hw = 0.97
[]
[jct4]
type = VolumeJunction1Phase
position = '1 0 1'
connections = 'cooling_pipe:out down_pipe:in'
volume = 1e-3
[]
[down_pipe]
type = FlowChannel1Phase
position = '1 0 1'
orientation = '0 0 -1'
length = 1
n_elems = 10
A = ${fparse pi * pipe_dia * pipe_dia / 4.}
D_h = ${pipe_dia}
[]
[jct5]
type = VolumeJunction1Phase
position = '1 0 0'
connections = 'down_pipe:out bottom_b:in'
volume = 1e-3
[]
[bottom_b]
type = FlowChannel1Phase
position = '1 0 0'
orientation = '-1 0 0'
length = 0.5
n_elems = 5
A = ${fparse pi * pipe_dia * pipe_dia / 4.}
D_h = ${pipe_dia}
[]
[pump]
type = Pump1Phase
position = '0.5 0 0'
connections = 'bottom_b:out bottom_a:in'
volume = 1e-3
A_ref = ${fparse pi * pipe_dia * pipe_dia / 4.}
head = 0
[]
[bottom_a]
type = FlowChannel1Phase
position = '0.5 0 0'
orientation = '-1 0 0'
length = 0.5
n_elems = 5
A = ${fparse pi * pipe_dia * pipe_dia / 4.}
D_h = ${pipe_dia}
[]
[jct6]
type = VolumeJunction1Phase
position = '0 0 0'
connections = 'bottom_a:out core_chan:in'
volume = 1e-3
[]
[]
[ControlLogic]
[set_point]
type = GetFunctionValueControl
function = ${m_dot_in}
[]
[pid]
type = PIDControl
initial_value = 0
set_point = set_point:value
input = m_dot_pump
K_p = 250
K_i = 0.5
K_d = 0
[]
[set_pump_head]
type = SetComponentRealValueControl
component = pump
parameter = head
value = pid:output
[]
[]
[Postprocessors]
[m_dot_pump]
type = ADFlowJunctionFlux1Phase
boundary = core_chan:in
connection_index = 1
equation = mass
junction = jct6
[]
[core_T_out]
type = SideAverageValue
boundary = core_chan:out
variable = T
[]
[hx_pri_T_out]
type = SideAverageValue
boundary = cooling_pipe:out
variable = T
[]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 1000
dt = 10
line_search = basic
solve_type = NEWTON
nl_rel_tol = 1e-5
nl_abs_tol = 1e-5
nl_max_its = 5
[]
[Outputs]
exodus = true
[console]
type = Console
max_rows = 1
outlier_variable_norms = false
[]
print_linear_residuals = false
[]
(modules/thermal_hydraulics/test/tests/components/volume_junction_1phase/phy.shower.i)
# This problem models a "shower": water from two pipes, one hot and one cold,
# mixes together to produce a temperature between the two.
[GlobalParams]
gravity_vector = '0 0 0'
initial_T = 300
initial_p = 1e5
initial_vel = 0
initial_vel_x = 0
initial_vel_y = 0
initial_vel_z = 0
# global parameters for pipes
fp = eos
orientation = '1 0 0'
length = 1
n_elems = 20
f = 0
scaling_factor_1phase = '1 1 1e-6'
closures = simple_closures
[]
[Modules/FluidProperties]
[eos]
type = StiffenedGasFluidProperties
gamma = 2.35
cv = 1816.0
q = -1.167e6
p_inf = 1.0e9
q_prime = 0
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[Components]
[inlet_hot]
type = InletDensityVelocity1Phase
input = 'pipe_hot:in'
# rho @ (p = 1e5, T = 310 K)
rho = 1315.9279785683
vel = 1
[]
[inlet_cold]
type = InletDensityVelocity1Phase
input = 'pipe_cold:in'
# rho @ (p = 1e5, T = 280 K)
rho = 1456.9202619863
vel = 1
[]
[outlet]
type = Outlet1Phase
input = 'pipe_warm:out'
p = 1e5
[]
[pipe_hot]
type = FlowChannel1Phase
position = '0 1 0'
A = 1
[]
[pipe_cold]
type = FlowChannel1Phase
position = '0 0 0'
A = 1
[]
[pipe_warm]
type = FlowChannel1Phase
position = '1 0.5 0'
A = 2
[]
[junction]
type = VolumeJunction1Phase
connections = 'pipe_cold:out pipe_hot:out pipe_warm:in'
position = '1 0.5 0'
volume = 1e-8
[]
[]
[Preconditioning]
[pc]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
scheme = 'bdf2'
solve_type = 'NEWTON'
line_search = 'basic'
nl_rel_tol = 1e-8
nl_abs_tol = 1e-5
nl_max_its = 10
l_tol = 1e-2
l_max_its = 10
start_time = 0
end_time = 5
dt = 0.05
# abort_on_solve_fail = true
[]
[Postprocessors]
# These post-processors are used to test that the energy flux on
# the warm side of the junction is equal to the sum of the energy
# fluxes of the hot and cold inlets to the junction.
[energy_flux_hot]
type = EnergyFluxIntegral
boundary = pipe_hot:out
arhouA = rhouA
H = H
[]
[energy_flux_cold]
type = EnergyFluxIntegral
boundary = pipe_cold:out
arhouA = rhouA
H = H
[]
[energy_flux_warm]
type = EnergyFluxIntegral
boundary = pipe_warm:in
arhouA = rhouA
H = H
[]
[energy_flux_inlet_sum]
type = SumPostprocessor
values = 'energy_flux_hot energy_flux_cold'
[]
[test_rel_err]
type = RelativeDifferencePostprocessor
value1 = energy_flux_warm
value2 = energy_flux_inlet_sum
[]
[]
[Outputs]
[out]
type = CSV
show = test_rel_err
sync_only = true
sync_times = '3 4 5'
[]
[console]
type = Console
max_rows = 1
[]
print_linear_residuals = false
[]
(modules/thermal_hydraulics/test/tests/postprocessors/flow_junction_flux_1phase/flow_junction_flux_1phase.i)
# This input file tests mass conservation at steady-state by looking at the
# net mass flux into the domain.
T_in = 523.0
m_dot = 100
p_out = 7e6
[GlobalParams]
initial_p = ${p_out}
initial_vel = 1
initial_T = ${T_in}
gravity_vector = '0 0 0'
closures = simple_closures
n_elems = 3
f = 0
scaling_factor_1phase = '1 1 1e-5'
[]
[Modules/FluidProperties]
[fp]
type = IdealGasFluidProperties
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[Components]
[inlet_bc]
type = InletMassFlowRateTemperature1Phase
input = 'inlet:in'
m_dot = ${m_dot}
T = ${T_in}
[]
[inlet]
type = FlowChannel1Phase
fp = fp
position = '0 0 11'
orientation = '0 0 -1'
length = 1
A = 3
[]
[inlet_plenum]
type = VolumeJunction1Phase
position = '0 0 10'
initial_vel_x = 0
initial_vel_y = 0
initial_vel_z = 1
connections = 'inlet:out channel1:in channel2:in'
volume = 1
scaling_factor_rhoEV = '1e-5'
[]
[channel1]
type = FlowChannel1Phase
fp = fp
position = '0 0 10'
orientation = '0 0 -1'
length = 10
A = 4
D_h = 1
[]
[K_bypass]
type = FormLossFromFunction1Phase
K_prime = 500
flow_channel = channel1
[]
[channel2]
type = FlowChannel1Phase
fp = fp
position = '0 0 10'
orientation = '0 0 -1'
length = 10
A = 1
D_h = 1
[]
[outlet_plenum]
type = VolumeJunction1Phase
position = '0 0 0'
initial_vel_x = 1
initial_vel_y = 0
initial_vel_z = 1
connections = 'channel1:out channel2:out outlet:in'
volume = 1
scaling_factor_rhoEV = '1e-5'
[]
[outlet]
type = FlowChannel1Phase
fp = fp
position = '0 0 0'
orientation = '0 0 -1'
length = 1
A = 1
[]
[outlet_bc]
type = Outlet1Phase
p = ${p_out}
input = 'outlet:out'
[]
[]
[Postprocessors]
[inlet_in_m_dot]
type = ADFlowBoundaryFlux1Phase
boundary = 'inlet_bc'
equation = mass
[]
[inlet_out_m_dot]
type = ADFlowJunctionFlux1Phase
boundary = 'inlet:out'
connection_index = 0
junction = inlet_plenum
equation = mass
[]
[channel1_in_m_dot]
type = ADFlowJunctionFlux1Phase
boundary = 'channel1:in'
connection_index = 1
junction = inlet_plenum
equation = mass
[]
[channel1_out_m_dot]
type = ADFlowJunctionFlux1Phase
boundary = 'channel1:out'
connection_index = 0
junction = outlet_plenum
equation = mass
[]
[channel2_in_m_dot]
type = ADFlowJunctionFlux1Phase
boundary = 'channel2:in'
connection_index = 2
junction = inlet_plenum
equation = mass
[]
[channel2_out_m_dot]
type = ADFlowJunctionFlux1Phase
boundary = 'channel2:out'
connection_index = 1
junction = outlet_plenum
equation = mass
[]
[outlet_in_m_dot]
type = ADFlowJunctionFlux1Phase
boundary = 'outlet:in'
connection_index = 2
junction = outlet_plenum
equation = mass
[]
[outlet_out_m_dot]
type = ADFlowBoundaryFlux1Phase
boundary = 'outlet_bc'
equation = mass
[]
[net_mass_flow_rate_domain]
type = LinearCombinationPostprocessor
pp_names = 'inlet_in_m_dot outlet_out_m_dot'
pp_coefs = '1 -1'
[]
[net_mass_flow_rate_volume_junction]
type = LinearCombinationPostprocessor
pp_names = 'inlet_out_m_dot channel1_in_m_dot channel2_in_m_dot'
pp_coefs = '1 -1 -1'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
scheme = bdf2
start_time = 0
end_time = 10000
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.01
optimal_iterations = 8
iteration_window = 2
[]
timestep_tolerance = 1e-6
abort_on_solve_fail = true
line_search = none
nl_rel_tol = 1e-8
nl_abs_tol = 2e-8
nl_max_its = 25
l_tol = 1e-3
l_max_its = 5
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-pc_type'
petsc_options_value = ' lu '
[]
[Outputs]
[out]
type = CSV
execute_on = 'FINAL'
show = 'net_mass_flow_rate_domain net_mass_flow_rate_volume_junction'
[]
[]
(modules/thermal_hydraulics/test/tests/components/volume_junction_1phase/err.missing_ics.i)
[GlobalParams]
gravity_vector = '0 0 0'
A = 1e-4
f = 0
fp = fp
closures = simple_closures
[]
[Modules/FluidProperties]
[fp]
type = StiffenedGasFluidProperties
gamma = 1.4
cv = 725
p_inf = 0
q = 0
q_prime = 0
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[Components]
[inlet]
type = InletStagnationPressureTemperature1Phase
input = 'pipe1:in'
# Stagnation property with p = 1e5 Pa, T = 250 K, vel = 1 m/s
p0 = 100000.68965687
T0 = 250.00049261084
[]
[pipe1]
type = FlowChannel1Phase
position = '0 0 0'
orientation = '1 0 0'
length = 1
n_elems = 2
initial_p = 1e5
initial_T = 250
initial_vel = 0
[]
[junction]
type = VolumeJunction1Phase
connections = 'pipe1:out pipe2:in'
position = '1.02 0 0'
volume = 0.1
[]
[pipe2]
type = FlowChannel1Phase
position = '1.04 0 0'
orientation = '1 0 0'
length = 0.96
n_elems = 2
initial_p = 1e5
initial_T = 250
initial_vel = 0
[]
[outlet]
type = Outlet1Phase
input = 'pipe2:out'
p = 1e5
[]
[]
[Executioner]
type = Transient
abort_on_solve_fail = true
[]
(modules/thermal_hydraulics/test/tests/components/volume_junction_1phase/phy.unequal_area.i)
# Junction between 2 pipes where the second has half the area of the first.
# The momentum density of the second should be twice that of the first.
[GlobalParams]
gravity_vector = '0 0 0'
initial_T = 250
initial_p = 1e5
initial_vel = 1
initial_vel_x = 1
initial_vel_y = 0
initial_vel_z = 0
f = 0
fp = eos
scaling_factor_1phase = '1 1 1e-5'
closures = simple_closures
[]
[Modules/FluidProperties]
[eos]
type = StiffenedGasFluidProperties
gamma = 1.4
cv = 725
p_inf = 0
q = 0
q_prime = 0
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[Components]
[inlet]
type = InletDensityVelocity1Phase
input = 'pipe1:in'
rho = 1.37931034483
vel = 1
[]
[pipe1]
type = FlowChannel1Phase
position = '0 0 0'
orientation = '1 0 0'
length = 1
A = 1
n_elems = 20
[]
[junction]
type = VolumeJunction1Phase
connections = 'pipe1:out pipe2:in'
position = '1 0 0'
volume = 1e-8
[]
[pipe2]
type = FlowChannel1Phase
position = '1 0 0'
orientation = '1 0 0'
length = 1
A = 0.5
n_elems = 20
[]
[outlet]
type = Outlet1Phase
input = 'pipe2:out'
p = 1e5
[]
[]
[Preconditioning]
[pc]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
scheme = 'bdf2'
solve_type = 'NEWTON'
line_search = 'basic'
nl_rel_tol = 0
nl_abs_tol = 1e-6
nl_max_its = 10
l_tol = 1e-10
l_max_its = 10
start_time = 0
end_time = 3
dt = 0.1
abort_on_solve_fail = true
[]
[Postprocessors]
# These post-processors are used to test that the outlet side of the junction,
# which has half the area of the inlet side, has twice the momentum density
# that the inlet side does.
[rhouA_pipe1]
type = SideAverageValue
variable = rhouA
boundary = pipe1:out
[]
[rhouA_pipe2]
type = SideAverageValue
variable = rhouA
boundary = pipe2:out
[]
[test_rel_err]
type = RelativeDifferencePostprocessor
value1 = rhouA_pipe1
value2 = rhouA_pipe2
[]
[]
[Outputs]
[out]
type = CSV
show = test_rel_err
execute_on = 'final'
[]
[]
(modules/thermal_hydraulics/tutorials/single_phase_flow/06_custom_closures.i)
T_in = 300. # K
m_dot_in = 1e-4 # kg/s
press = 1e5 # Pa
# core parameters
core_length = 1. # m
core_n_elems = 10
core_dia = ${units 2. cm -> m}
core_pitch = ${units 8.7 cm -> m}
# pipe parameters
pipe_dia = ${units 10. cm -> m}
tot_power = 100 # W
# heat exchanger parameters
hx_dia_inner = ${units 10. cm -> m}
hx_wall_thickness = ${units 5. mm -> m}
hx_dia_outer = ${units 50. cm -> m}
hx_radius_wall = ${fparse hx_dia_inner / 2. + hx_wall_thickness}
hx_length = 1 # m
hx_n_elems = 10
m_dot_sec_in = 1 # kg/s
flow_blocks = 'core_chan up_pipe top_pipe hx/pri hx/sec down_pipe bottom_b bottom_a'
ht_blocks = 'core_chan hx/pri hx/sec'
[GlobalParams]
initial_p = ${press}
initial_vel = 0
initial_T = ${T_in}
initial_vel_x = 0
initial_vel_y = 0
initial_vel_z = 0
rdg_slope_reconstruction = full
closures = no_closures
fp = he
[]
[Functions]
[m_dot_sec_fn]
type = PiecewiseLinear
xy_data = '
0 0
100 ${m_dot_sec_in}'
[]
[]
[Materials]
[f_mat]
type = ADWallFrictionChurchillMaterial
block = ${flow_blocks}
D_h = D_h
f_D = f_D
mu = mu
rho = rho
vel = vel
[]
[Hw_mat]
type = ADWallHeatTransferCoefficient3EqnDittusBoelterMaterial
block = ${ht_blocks}
D_h = D_h
rho = rho
vel = vel
T = T
T_wall = T_wall
cp = cp
mu = mu
k = k
[]
[]
[Modules/FluidProperties]
[he]
type = IdealGasFluidProperties
molar_mass = 4e-3
gamma = 1.67
k = 0.2556
mu = 3.22639e-5
[]
[water]
type = StiffenedGasFluidProperties
gamma = 2.35
cv = 1816.0
q = -1.167e6
p_inf = 1.0e9
q_prime = 0
[]
[]
[Closures]
[no_closures]
type = Closures1PhaseNone
[]
[]
[HeatStructureMaterials]
[steel]
type = SolidMaterialProperties
rho = 8050
k = 45
cp = 466
[]
[]
[Components]
[total_power]
type = TotalPower
power = ${tot_power}
[]
[core_chan]
type = FlowChannel1Phase
position = '0 0 0'
orientation = '0 0 1'
length = ${core_length}
n_elems = ${core_n_elems}
A = ${fparse core_pitch * core_pitch - pi * core_dia * core_dia / 4.}
D_h = ${core_dia}
[]
[core_hs]
type = HeatStructureCylindrical
position = '0 0 0'
orientation = '0 0 1'
length = ${core_length}
n_elems = ${core_n_elems}
names = 'block'
widths = '${fparse core_dia / 2.}'
materials = 'steel'
n_part_elems = 3
[]
[core_heating]
type = HeatSourceFromTotalPower
hs = core_hs
regions = block
power = total_power
[]
[core_ht]
type = HeatTransferFromHeatStructure1Phase
flow_channel = core_chan
hs = core_hs
hs_side = outer
P_hf = ${fparse pi * core_dia}
[]
[jct1]
type = JunctionParallelChannels1Phase
position = '0 0 1'
connections = 'core_chan:out up_pipe:in'
volume = 1e-3
[]
[up_pipe]
type = FlowChannel1Phase
position = '0 0 1'
orientation = '0 0 1'
length = 1
n_elems = 10
A = ${fparse pi * pipe_dia * pipe_dia / 4.}
D_h = ${pipe_dia}
[]
[jct2]
type = VolumeJunction1Phase
position = '0 0 2'
connections = 'up_pipe:out top_pipe:in'
volume = 1e-3
[]
[top_pipe]
type = FlowChannel1Phase
position = '0 0 2'
orientation = '1 0 0'
length = 1
n_elems = 10
A = ${fparse pi * pipe_dia * pipe_dia / 4.}
D_h = ${pipe_dia}
[]
[jct3]
type = VolumeJunction1Phase
position = '1 0 2'
connections = 'top_pipe:out hx/pri:in'
volume = 1e-3
[]
[hx]
[pri]
type = FlowChannel1Phase
position = '1 0 2'
orientation = '0 0 -1'
length = ${hx_length}
n_elems = ${hx_n_elems}
A = ${fparse pi * hx_dia_inner * hx_dia_inner / 4.}
D_h = ${hx_dia_inner}
[]
[ht_pri]
type = HeatTransferFromHeatStructure1Phase
hs = hx/wall
hs_side = inner
flow_channel = hx/pri
[]
[wall]
type = HeatStructureCylindrical
position = '1 0 2'
orientation = '0 0 -1'
length = ${hx_length}
n_elems = ${hx_n_elems}
widths = '${hx_wall_thickness}'
n_part_elems = '3'
materials = 'steel'
names = '0'
inner_radius = ${fparse hx_dia_inner / 2.}
[]
[ht_sec]
type = HeatTransferFromHeatStructure1Phase
hs = hx/wall
hs_side = outer
flow_channel = hx/sec
P_hf = ${fparse 2 * pi * hx_radius_wall}
[]
[sec]
type = FlowChannel1Phase
position = '${fparse 1 + hx_wall_thickness} 0 2'
orientation = '0 0 -1'
length = ${hx_length}
n_elems = ${hx_n_elems}
A = ${fparse pi * (hx_dia_outer * hx_dia_outer / 4. - hx_radius_wall * hx_radius_wall)}
D_h = ${fparse hx_dia_outer - (2 * hx_radius_wall)}
fp = water
[]
[]
[jct4]
type = VolumeJunction1Phase
position = '1 0 1'
connections = 'hx/pri:out down_pipe:in'
volume = 1e-3
[]
[down_pipe]
type = FlowChannel1Phase
position = '1 0 1'
orientation = '0 0 -1'
length = 1
n_elems = 10
A = ${fparse pi * pipe_dia * pipe_dia / 4.}
D_h = ${pipe_dia}
[]
[jct5]
type = VolumeJunction1Phase
position = '1 0 0'
connections = 'down_pipe:out bottom_b:in'
volume = 1e-3
[]
[bottom_b]
type = FlowChannel1Phase
position = '1 0 0'
orientation = '-1 0 0'
length = 0.5
n_elems = 5
A = ${fparse pi * pipe_dia * pipe_dia / 4.}
D_h = ${pipe_dia}
[]
[pump]
type = Pump1Phase
position = '0.5 0 0'
connections = 'bottom_b:out bottom_a:in'
volume = 1e-3
A_ref = ${fparse pi * pipe_dia * pipe_dia / 4.}
head = 0
[]
[bottom_a]
type = FlowChannel1Phase
position = '0.5 0 0'
orientation = '-1 0 0'
length = 0.5
n_elems = 5
A = ${fparse pi * pipe_dia * pipe_dia / 4.}
D_h = ${pipe_dia}
[]
[jct6]
type = VolumeJunction1Phase
position = '0 0 0'
connections = 'bottom_a:out core_chan:in'
volume = 1e-3
[]
[inlet_sec]
type = InletMassFlowRateTemperature1Phase
input = 'hx/sec:out'
m_dot = 0
T = 300
[]
[outlet_sec]
type = Outlet1Phase
input = 'hx/sec:in'
p = ${press}
[]
[]
[ControlLogic]
[set_point]
type = GetFunctionValueControl
function = ${m_dot_in}
[]
[pid]
type = PIDControl
initial_value = 0
set_point = set_point:value
input = m_dot_pump
K_p = 250
K_i = 0.5
K_d = 0
[]
[set_pump_head]
type = SetComponentRealValueControl
component = pump
parameter = head
value = pid:output
[]
[m_dot_sec_inlet_ctrl]
type = GetFunctionValueControl
function = m_dot_sec_fn
[]
[set_m_dot_sec_ctrl]
type = SetComponentRealValueControl
component = inlet_sec
parameter = m_dot
value = m_dot_sec_inlet_ctrl:value
[]
[]
[Postprocessors]
[m_dot_pump]
type = ADFlowJunctionFlux1Phase
boundary = core_chan:in
connection_index = 1
equation = mass
junction = jct6
[]
[core_T_out]
type = SideAverageValue
boundary = core_chan:out
variable = T
[]
[hx_pri_T_out]
type = SideAverageValue
boundary = hx/pri:out
variable = T
[]
[hx_sec_T_in]
type = SideAverageValue
boundary = inlet_sec
variable = T
[]
[hx_sec_T_out]
type = SideAverageValue
boundary = outlet_sec
variable = T
[]
[]
[Executioner]
type = Transient
start_time = 0
[TimeStepper]
type = SolutionTimeAdaptiveDT
dt = 1
[]
dtmax = 100
end_time = 50000
line_search = basic
solve_type = NEWTON
nl_rel_tol = 1e-5
nl_abs_tol = 1e-5
nl_max_its = 5
[]
[Outputs]
exodus = true
[console]
type = Console
max_rows = 1
outlier_variable_norms = false
[]
print_linear_residuals = false
[]
(modules/thermal_hydraulics/test/tests/components/volume_junction_1phase/equal_area_with_junction.i)
# Tests a junction between 2 flow channels of equal area and orientation. A
# sinusoidal density shape is advected to the right and should not be affected
# by the junction; the solution should be identical to the equivalent
# no-junction solution.
[GlobalParams]
gravity_vector = '0 0 0'
initial_p = 1e5
initial_vel = 1
A = 25
f = 0
fp = fp
scaling_factor_1phase = '0.04 0.04 0.04e-5'
closures = simple_closures
[]
[Modules/FluidProperties]
[fp]
type = StiffenedGasFluidProperties
gamma = 1.4
cv = 725
p_inf = 0
q = 0
q_prime = 0
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[Functions]
[T0]
type = CosineHumpFunction
axis = x
hump_center_position = 1
hump_width = 0.5
hump_begin_value = 250
hump_center_value = 300
[]
[]
[Components]
[inlet]
type = InletStagnationPressureTemperature1Phase
input = 'pipe1:in'
# Stagnation property with p = 1e5 Pa, T = 250 K, vel = 1 m/s
p0 = 100000.68965687
T0 = 250.00049261084
[]
[pipe1]
type = FlowChannel1Phase
position = '0 0 0'
orientation = '1 0 0'
length = 1
initial_T = T0
n_elems = 25
[]
[junction]
type = VolumeJunction1Phase
connections = 'pipe1:out pipe2:in'
# NOTE: volume parameters are added via command-line arguments by tests file.
position = '1.02 0 0'
initial_T = T0
initial_vel_x = 1
initial_vel_y = 0
initial_vel_z = 0
scaling_factor_rhoV = 1
scaling_factor_rhouV = 1
scaling_factor_rhovV = 1
scaling_factor_rhowV = 1
scaling_factor_rhoEV = 1e-5
[]
[pipe2]
type = FlowChannel1Phase
position = '1.04 0 0'
orientation = '1 0 0'
length = 0.96
initial_T = T0
n_elems = 24
[]
[outlet]
type = Outlet1Phase
input = 'pipe2:out'
p = 1e5
[]
[]
[Preconditioning]
[pc]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
scheme = 'bdf2'
start_time = 0
dt = 0.01
num_steps = 5
abort_on_solve_fail = true
solve_type = 'PJFNK'
line_search = 'basic'
nl_rel_tol = 0
nl_abs_tol = 1e-6
nl_max_its = 10
l_tol = 1e-3
l_max_its = 10
[Quadrature]
type = GAUSS
order = SECOND
[]
[]
[Postprocessors]
[junction_rho]
type = ScalarVariable
variable = junction:rhoV
execute_on = 'initial timestep_end'
[]
[junction_rhou]
type = ScalarVariable
variable = junction:rhouV
execute_on = 'initial timestep_end'
[]
[junction_rhoE]
type = ScalarVariable
variable = junction:rhoEV
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
[out]
type = CSV
execute_scalars_on = 'none'
execute_on = 'initial timestep_end'
[]
[]
(modules/thermal_hydraulics/tutorials/single_phase_flow/05_secondary_side.i)
T_in = 300. # K
m_dot_in = 1e-4 # kg/s
press = 1e5 # Pa
# core parameters
core_length = 1. # m
core_n_elems = 10
core_dia = ${units 2. cm -> m}
core_pitch = ${units 8.7 cm -> m}
# pipe parameters
pipe_dia = ${units 10. cm -> m}
tot_power = 100 # W
# heat exchanger parameters
hx_dia_inner = ${units 10. cm -> m}
hx_wall_thickness = ${units 5. mm -> m}
hx_dia_outer = ${units 50. cm -> m}
hx_radius_wall = ${fparse hx_dia_inner / 2. + hx_wall_thickness}
hx_length = 1 # m
hx_n_elems = 10
m_dot_sec_in = 1 # kg/s
[GlobalParams]
initial_p = ${press}
initial_vel = 0
initial_T = ${T_in}
initial_vel_x = 0
initial_vel_y = 0
initial_vel_z = 0
rdg_slope_reconstruction = full
closures = simple_closures
fp = he
f = 0.4
[]
[Functions]
[m_dot_sec_fn]
type = PiecewiseLinear
xy_data = '
0 0
100 ${m_dot_sec_in}'
[]
[]
[Modules/FluidProperties]
[he]
type = IdealGasFluidProperties
molar_mass = 4e-3
gamma = 1.67
k = 0.2556
mu = 3.22639e-5
[]
[water]
type = StiffenedGasFluidProperties
gamma = 2.35
cv = 1816.0
q = -1.167e6
p_inf = 1.0e9
q_prime = 0
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[HeatStructureMaterials]
[steel]
type = SolidMaterialProperties
rho = 8050
k = 45
cp = 466
[]
[]
[Components]
[total_power]
type = TotalPower
power = ${tot_power}
[]
[core_chan]
type = FlowChannel1Phase
position = '0 0 0'
orientation = '0 0 1'
length = ${core_length}
n_elems = ${core_n_elems}
A = ${fparse core_pitch * core_pitch - pi * core_dia * core_dia / 4.}
D_h = ${core_dia}
f = 1.6
[]
[core_hs]
type = HeatStructureCylindrical
position = '0 0 0'
orientation = '0 0 1'
length = ${core_length}
n_elems = ${core_n_elems}
names = 'block'
widths = '${fparse core_dia / 2.}'
materials = 'steel'
n_part_elems = 3
[]
[core_heating]
type = HeatSourceFromTotalPower
hs = core_hs
regions = block
power = total_power
[]
[core_ht]
type = HeatTransferFromHeatStructure1Phase
flow_channel = core_chan
hs = core_hs
hs_side = outer
P_hf = ${fparse pi * core_dia}
Hw = 1.36
[]
[jct1]
type = JunctionParallelChannels1Phase
position = '0 0 1'
connections = 'core_chan:out up_pipe:in'
volume = 1e-3
[]
[up_pipe]
type = FlowChannel1Phase
position = '0 0 1'
orientation = '0 0 1'
length = 1
n_elems = 10
A = ${fparse pi * pipe_dia * pipe_dia / 4.}
D_h = ${pipe_dia}
[]
[jct2]
type = VolumeJunction1Phase
position = '0 0 2'
connections = 'up_pipe:out top_pipe:in'
volume = 1e-3
[]
[top_pipe]
type = FlowChannel1Phase
position = '0 0 2'
orientation = '1 0 0'
length = 1
n_elems = 10
A = ${fparse pi * pipe_dia * pipe_dia / 4.}
D_h = ${pipe_dia}
[]
[jct3]
type = VolumeJunction1Phase
position = '1 0 2'
connections = 'top_pipe:out hx/pri:in'
volume = 1e-3
[]
[hx]
[pri]
type = FlowChannel1Phase
position = '1 0 2'
orientation = '0 0 -1'
length = ${hx_length}
n_elems = ${hx_n_elems}
A = ${fparse pi * hx_dia_inner * hx_dia_inner / 4.}
D_h = ${hx_dia_inner}
[]
[ht_pri]
type = HeatTransferFromHeatStructure1Phase
hs = hx/wall
hs_side = inner
flow_channel = hx/pri
Hw = 0.97
[]
[wall]
type = HeatStructureCylindrical
position = '1 0 2'
orientation = '0 0 -1'
length = ${hx_length}
n_elems = ${hx_n_elems}
widths = '${hx_wall_thickness}'
n_part_elems = '3'
materials = 'steel'
names = '0'
inner_radius = ${fparse hx_dia_inner / 2.}
[]
[ht_sec]
type = HeatTransferFromHeatStructure1Phase
hs = hx/wall
hs_side = outer
flow_channel = hx/sec
P_hf = ${fparse 2 * pi * hx_radius_wall}
Hw = 36
[]
[sec]
type = FlowChannel1Phase
position = '${fparse 1 + hx_wall_thickness} 0 2'
orientation = '0 0 -1'
length = ${hx_length}
n_elems = ${hx_n_elems}
A = ${fparse pi * (hx_dia_outer * hx_dia_outer / 4. - hx_radius_wall * hx_radius_wall)}
D_h = ${fparse hx_dia_outer - (2 * hx_radius_wall)}
fp = water
f = 0.075
[]
[]
[jct4]
type = VolumeJunction1Phase
position = '1 0 1'
connections = 'hx/pri:out down_pipe:in'
volume = 1e-3
[]
[down_pipe]
type = FlowChannel1Phase
position = '1 0 1'
orientation = '0 0 -1'
length = 1
n_elems = 10
A = ${fparse pi * pipe_dia * pipe_dia / 4.}
D_h = ${pipe_dia}
[]
[jct5]
type = VolumeJunction1Phase
position = '1 0 0'
connections = 'down_pipe:out bottom_b:in'
volume = 1e-3
[]
[bottom_b]
type = FlowChannel1Phase
position = '1 0 0'
orientation = '-1 0 0'
length = 0.5
n_elems = 5
A = ${fparse pi * pipe_dia * pipe_dia / 4.}
D_h = ${pipe_dia}
[]
[pump]
type = Pump1Phase
position = '0.5 0 0'
connections = 'bottom_b:out bottom_a:in'
volume = 1e-3
A_ref = ${fparse pi * pipe_dia * pipe_dia / 4.}
head = 0
[]
[bottom_a]
type = FlowChannel1Phase
position = '0.5 0 0'
orientation = '-1 0 0'
length = 0.5
n_elems = 5
A = ${fparse pi * pipe_dia * pipe_dia / 4.}
D_h = ${pipe_dia}
[]
[jct6]
type = VolumeJunction1Phase
position = '0 0 0'
connections = 'bottom_a:out core_chan:in'
volume = 1e-3
[]
[inlet_sec]
type = InletMassFlowRateTemperature1Phase
input = 'hx/sec:out'
m_dot = 0
T = 300
[]
[outlet_sec]
type = Outlet1Phase
input = 'hx/sec:in'
p = ${press}
[]
[]
[ControlLogic]
[set_point]
type = GetFunctionValueControl
function = ${m_dot_in}
[]
[pid]
type = PIDControl
initial_value = 0
set_point = set_point:value
input = m_dot_pump
K_p = 250
K_i = 0.5
K_d = 0
[]
[set_pump_head]
type = SetComponentRealValueControl
component = pump
parameter = head
value = pid:output
[]
[m_dot_sec_inlet_ctrl]
type = GetFunctionValueControl
function = m_dot_sec_fn
[]
[set_m_dot_sec_ctrl]
type = SetComponentRealValueControl
component = inlet_sec
parameter = m_dot
value = m_dot_sec_inlet_ctrl:value
[]
[]
[Postprocessors]
[m_dot_pump]
type = ADFlowJunctionFlux1Phase
boundary = core_chan:in
connection_index = 1
equation = mass
junction = jct6
[]
[core_T_out]
type = SideAverageValue
boundary = core_chan:out
variable = T
[]
[hx_pri_T_out]
type = SideAverageValue
boundary = hx/pri:out
variable = T
[]
[hx_sec_T_in]
type = SideAverageValue
boundary = inlet_sec
variable = T
[]
[hx_sec_T_out]
type = SideAverageValue
boundary = outlet_sec
variable = T
[]
[]
[Executioner]
type = Transient
start_time = 0
[TimeStepper]
type = SolutionTimeAdaptiveDT
dt = 1
[]
dtmax = 100
end_time = 50000
line_search = basic
solve_type = NEWTON
nl_rel_tol = 1e-5
nl_abs_tol = 1e-5
nl_max_its = 5
[]
[Outputs]
exodus = true
[console]
type = Console
max_rows = 1
outlier_variable_norms = false
[]
print_linear_residuals = false
[]
(modules/thermal_hydraulics/test/tests/misc/uniform_refine/test.i)
[GlobalParams]
gravity_vector = '0 0 0'
initial_p = 1e5
initial_T = 300
initial_vel = 0
closures = simple_closures
rdg_slope_reconstruction = FULL
f = 0
fp = eos
[]
[Modules/FluidProperties]
[eos]
type = StiffenedGasFluidProperties
gamma = 2.35
q = -1167e3
q_prime = 0
p_inf = 1.e9
cv = 1816
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[HeatStructureMaterials]
[mat1]
type = SolidMaterialProperties
rho = 10
cp = 1
k = 1
[]
[]
[Components]
[pipe1]
type = FlowChannel1Phase
position = '0 0 0'
orientation = '1 0 0'
length = 1
n_elems = 2
A = 1
[]
[pipe2]
type = FlowChannel1Phase
position = '1 0 0'
orientation = '1 0 0'
length = 1
n_elems = 3
A = 1
[]
[junction]
type = VolumeJunction1Phase
connections = 'pipe1:out pipe2:in'
volume = 1e-5
position = '1 0 0'
initial_vel_x = 0
initial_vel_y = 0
initial_vel_z = 0
[]
[inlet]
type = SolidWall1Phase
input = 'pipe1:in'
[]
[outlet]
type = SolidWall1Phase
input = 'pipe2:out'
[]
[hs]
type = HeatStructureCylindrical
position = '0 1 0'
orientation = '1 0 0'
length = '1'
n_elems = '2'
names = '0'
widths = 0.5
n_part_elems = '1'
materials = 'mat1'
[]
[]
[Preconditioning]
[pc]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
start_time = 0
dt = 1e-4
num_steps = 1
abort_on_solve_fail = true
solve_type = 'NEWTON'
nl_rel_tol = 1e-5
nl_abs_tol = 1e-7
nl_max_its = 10
l_tol = 1e-3
l_max_its = 10
automatic_scaling = true
[]
[Outputs]
exodus = true
show = 'A'
[]
[Debug]
show_actions = true
[]
(modules/thermal_hydraulics/test/tests/components/volume_junction_1phase/phy.deadend.i)
# Junction between 3 pipes, 1 of which goes to a dead-end. In the steady-state,
# no flow should go into the dead-end pipe.
[GlobalParams]
gravity_vector = '0 0 0'
scaling_factor_1phase = '1 1 1e-5'
initial_T = 250
initial_p = 1e5
initial_vel_x = 1
initial_vel_y = 0
initial_vel_z = 0
closures = simple_closures
[]
[AuxVariables]
[p0]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[p0_kernel]
type = StagnationPressureAux
variable = p0
fp = eos
e = e
v = v
vel = vel
[]
[]
[Modules/FluidProperties]
[eos]
type = StiffenedGasFluidProperties
gamma = 1.4
cv = 725
q = 0
q_prime = 0
p_inf = 0
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[Functions]
[T0]
type = ParsedFunction
value = 'if (x < 1, 300 + 50 * sin(2*pi*x + 1.5*pi), 250)'
[]
[]
[Components]
[inlet]
type = InletDensityVelocity1Phase
input = 'inlet_pipe:in'
rho = 1.37931034483
vel = 1
[]
[inlet_pipe]
type = FlowChannel1Phase
fp = eos
position = '0 0 0'
orientation = '1 0 0'
length = 1
A = 1
f = 0
initial_T = T0
initial_p = 1e5
initial_vel = 1
n_elems = 20
[]
[junction1]
type = VolumeJunction1Phase
connections = 'inlet_pipe:out deadend_pipe:in outlet_pipe:in'
position = '1 0 0'
volume = 1e-8
[]
[outlet_pipe]
type = FlowChannel1Phase
fp = eos
position = '1 0 0'
orientation = '1 0 0'
length = 1
A = 1
f = 0
initial_T = 250
initial_p = 1e5
initial_vel = 1
n_elems = 20
[]
[outlet]
type = Outlet1Phase
input = 'outlet_pipe:out'
p = 1e5
[]
[deadend_pipe]
type = FlowChannel1Phase
fp = eos
position = '1 0 0'
orientation = '0 1 0'
length = 1
A = 1
f = 0
initial_T = 250
initial_p = 1e5
initial_vel = 0
n_elems = 20
[]
[deadend]
type = SolidWall1Phase
input = 'deadend_pipe:out'
[]
[]
[Preconditioning]
[pc]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
scheme = 'bdf2'
solve_type = 'NEWTON'
line_search = 'basic'
nl_rel_tol = 0
nl_abs_tol = 1e-6
nl_max_its = 10
l_tol = 1e-6
l_max_its = 10
start_time = 0
end_time = 5
dt = 0.1
abort_on_solve_fail = true
[]
[Postprocessors]
# These post-processors are used for testing that the stagnation pressure in
# the dead-end pipe is equal to the inlet stagnation pressure.
[p0_inlet]
type = SideAverageValue
variable = p0
boundary = inlet_pipe:in
[]
[p0_deadend]
type = SideAverageValue
variable = p0
boundary = deadend_pipe:out
[]
[test_rel_err]
type = RelativeDifferencePostprocessor
value1 = p0_deadend
value2 = p0_inlet
[]
[]
[Outputs]
[out]
type = CSV
show = test_rel_err
sync_only = true
sync_times = '1 2 3 4 5'
[]
velocity_as_vector = false
[]
(modules/thermal_hydraulics/test/tests/components/volume_junction_1phase/t_junction_1phase.i)
# Junction between 3 pipes, 1 of which goes to a dead-end. All ends are walls,
# and 1 of the pipes is pressurized higher than the others.
A_big = 1
A_small = 0.5
[GlobalParams]
gravity_vector = '0 0 0'
scaling_factor_1phase = '1 1 1e-5'
scaling_factor_rhoV = 1
scaling_factor_rhouV = 1
scaling_factor_rhovV = 1
scaling_factor_rhowV = 1
scaling_factor_rhoEV = 1e-5
initial_T = 300
initial_vel = 0
n_elems = 20
length = 1
f = 0
fp = fp
rdg_slope_reconstruction = minmod
closures = simple_closures
[]
[Modules/FluidProperties]
[fp]
type = StiffenedGasFluidProperties
gamma = 1.4
cv = 725
q = 0
q_prime = 0
p_inf = 0
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[Components]
[pipe1]
type = FlowChannel1Phase
position = '0 0 0'
orientation = '1 0 0'
A = ${A_big}
# This pipe is pressurized higher than the others.
initial_p = 1.05e5
[]
[pipe2]
type = FlowChannel1Phase
position = '1 0 0'
orientation = '1 0 0'
A = ${A_big}
initial_p = 1e5
[]
[pipe3]
type = FlowChannel1Phase
position = '1 0 0'
orientation = '0 1 0'
# This pipe is smaller than the others.
A = ${A_small}
initial_p = 1e5
[]
[junction]
type = VolumeJunction1Phase
connections = 'pipe1:out pipe2:in pipe3:in'
position = '1 0 0'
volume = 0.37
initial_p = 1e5
initial_vel_x = 0
initial_vel_y = 0
initial_vel_z = 0
[]
[pipe1_wall]
type = SolidWall1Phase
input = 'pipe1:in'
[]
[pipe2_wall]
type = SolidWall1Phase
input = 'pipe2:out'
[]
[pipe3_wall]
type = SolidWall1Phase
input = 'pipe3:out'
[]
[]
[Preconditioning]
[pc]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
scheme = 'bdf2'
start_time = 0
end_time = 5
dt = 0.05
num_steps = 5
abort_on_solve_fail = true
solve_type = 'PJFNK'
nl_rel_tol = 0
nl_abs_tol = 1e-6
nl_max_its = 10
l_tol = 1e-3
l_max_its = 10
[Quadrature]
type = GAUSS
order = SECOND
[]
[]
[Postprocessors]
# mass conservation
[mass_pipes]
type = ElementIntegralVariablePostprocessor
variable = rhoA
block = 'pipe1 pipe2 pipe3'
execute_on = 'initial timestep_end'
[]
[mass_junction]
type = ScalarVariable
variable = junction:rhoV
execute_on = 'initial timestep_end'
[]
[mass_tot]
type = SumPostprocessor
values = 'mass_pipes mass_junction'
execute_on = 'initial timestep_end'
[]
[mass_tot_change]
type = ChangeOverTimePostprocessor
change_with_respect_to_initial = true
postprocessor = mass_tot
compute_relative_change = true
execute_on = 'initial timestep_end'
[]
# energy conservation
[E_pipes]
type = ElementIntegralVariablePostprocessor
variable = rhoEA
block = 'pipe1 pipe2 pipe3'
execute_on = 'initial timestep_end'
[]
[E_junction]
type = ScalarVariable
variable = junction:rhoEV
execute_on = 'initial timestep_end'
[]
[E_tot]
type = SumPostprocessor
values = 'E_pipes E_junction'
execute_on = 'initial timestep_end'
[]
[E_tot_change]
type = ChangeOverTimePostprocessor
change_with_respect_to_initial = true
postprocessor = E_tot
compute_relative_change = true
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
[out]
type = CSV
show = 'mass_tot_change E_tot_change'
[]
[]
(modules/thermal_hydraulics/test/tests/components/volume_junction_1phase/junction_with_calorifically_imperfect_gas.i)
# This input file tests compatibility of VolumeJunction1Phase and CaloricallyImperfectGas.
T_in = 523.0
vel = -1
p_out = 7e6
[GlobalParams]
initial_p = ${p_out}
initial_vel = ${vel}
initial_T = ${T_in}
gravity_vector = '0 0 0'
closures = simple_closures
n_elems = 3
f = 0
scaling_factor_1phase = '1 1 1e-5'
[]
[Functions]
[e_fn]
type = PiecewiseLinear
x = '100 280 300 350 400 450 500 550 600 700 800 900 1000 1200 1400 1600 1800 2000 2200 2400 2600 2800 3000 5000'
y = '783.9 2742.3 2958.6 3489.2 4012.7 4533.3 5053.8 5574 6095.1 7140.2 8192.9 9256.3 10333.6 12543.9 14836.6 17216.3 19688.4 22273.7 25018.3 28042.3 31544.2 35818.1 41256.5 100756.5'
scale_factor = 1e3
[]
[mu_fn]
type = PiecewiseLinear
x = '100 280 300 350 400 450 500 550 600 700 800 900 1000 1200 1400 1600 1800 2000 2200 2400 2600 2800 3000 5000'
y = '85.42 85.42 89.53 99.44 108.9 117.98 126.73 135.2 143.43 159.25 174.36 188.9 202.96 229.88 255.5 280.05 303.67 326.45 344.97 366.49 387.87 409.48 431.86 431.86'
scale_factor = 1e-7
[]
[k_fn]
type = PiecewiseLinear
x = '100 280 300 350 400 450 500 550 600 700 800 900 1000 1200 1400 1600 1800 2000 2200 2400 2600 2800 3000 5000'
y = '186.82 186.82 194.11 212.69 231.55 250.38 268.95 287.19 305.11 340.24 374.92 409.66 444.75 511.13 583.42 656.44 733.32 826.53 961.15 1180.38 1546.31 2135.49 3028.08 3028.08'
scale_factor = 1e-3
[]
[]
[Modules/FluidProperties]
[fp]
type = CaloricallyImperfectGas
molar_mass = 0.002
e = e_fn
k = k_fn
mu = mu_fn
min_temperature = 100
max_temperature = 5000
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[Components]
[inlet_bc]
type = InletVelocityTemperature1Phase
input = 'inlet:in'
vel = ${vel}
T = ${T_in}
[]
[inlet]
type = FlowChannel1Phase
fp = fp
position = '0 0 11'
orientation = '0 0 -1'
length = 1
A = 5
[]
[inlet_plenum]
type = VolumeJunction1Phase
position = '0 0 10'
initial_vel_x = 0
initial_vel_y = 0
initial_vel_z = ${vel}
connections = 'inlet:out channel1:in channel2:in'
volume = 1
scaling_factor_rhoEV = '1e-5'
[]
[channel1]
type = FlowChannel1Phase
fp = fp
position = '0 0 10'
orientation = '0 0 -1'
length = 10
A = 4
D_h = 1
[]
[channel2]
type = FlowChannel1Phase
fp = fp
position = '0 0 10'
orientation = '0 0 -1'
length = 10
A = 1
D_h = 1
[]
[outlet_plenum]
type = VolumeJunction1Phase
position = '0 0 0'
initial_vel_x = 0
initial_vel_y = 0
initial_vel_z = ${vel}
connections = 'channel1:out channel2:out outlet:in'
volume = 1
scaling_factor_rhoEV = '1e-5'
[]
[outlet]
type = FlowChannel1Phase
fp = fp
position = '0 0 0'
orientation = '0 0 -1'
length = 1
A = 5
[]
[outlet_bc]
type = Outlet1Phase
p = ${p_out}
input = 'outlet:out'
[]
[]
[Postprocessors]
[inlet_in_m_dot]
type = ADFlowBoundaryFlux1Phase
boundary = 'inlet_bc'
equation = mass
[]
[inlet_out_m_dot]
type = ADFlowJunctionFlux1Phase
boundary = 'inlet:out'
connection_index = 0
junction = inlet_plenum
equation = mass
[]
[channel1_in_m_dot]
type = ADFlowJunctionFlux1Phase
boundary = 'channel1:in'
connection_index = 1
junction = inlet_plenum
equation = mass
[]
[channel1_out_m_dot]
type = ADFlowJunctionFlux1Phase
boundary = 'channel1:out'
connection_index = 0
junction = outlet_plenum
equation = mass
[]
[channel2_in_m_dot]
type = ADFlowJunctionFlux1Phase
boundary = 'channel2:in'
connection_index = 2
junction = inlet_plenum
equation = mass
[]
[channel2_out_m_dot]
type = ADFlowJunctionFlux1Phase
boundary = 'channel2:out'
connection_index = 1
junction = outlet_plenum
equation = mass
[]
[outlet_in_m_dot]
type = ADFlowJunctionFlux1Phase
boundary = 'outlet:in'
connection_index = 2
junction = outlet_plenum
equation = mass
[]
[outlet_out_m_dot]
type = ADFlowBoundaryFlux1Phase
boundary = 'outlet_bc'
equation = mass
[]
[net_mass_flow_rate_domain]
type = LinearCombinationPostprocessor
pp_names = 'inlet_in_m_dot outlet_out_m_dot'
pp_coefs = '1 -1'
[]
[net_mass_flow_rate_volume_junction]
type = LinearCombinationPostprocessor
pp_names = 'inlet_out_m_dot channel1_in_m_dot channel2_in_m_dot'
pp_coefs = '1 -1 -1'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
scheme = bdf2
start_time = 0
end_time = 10
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.01
optimal_iterations = 8
iteration_window = 2
[]
timestep_tolerance = 1e-6
abort_on_solve_fail = true
line_search = none
nl_rel_tol = 1e-8
nl_abs_tol = 2e-8
nl_max_its = 25
l_tol = 1e-3
l_max_its = 5
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-pc_type'
petsc_options_value = ' lu '
[]
[Outputs]
[out]
type = CSV
execute_on = 'FINAL'
show = 'net_mass_flow_rate_domain net_mass_flow_rate_volume_junction'
[]
[]
(modules/thermal_hydraulics/test/tests/misc/displaced_components/displaced_components.i)
[GlobalParams]
initial_T = 300
initial_p = 1e5
initial_vel = 0
initial_vel_x = 0
initial_vel_y = 0
initial_vel_z = 0
gravity_vector = '0 0 0'
scaling_factor_1phase = '1.e0 1.e-4 1.e-6'
closures = simple_closures
[]
[Modules/FluidProperties]
[eos]
type = StiffenedGasFluidProperties
gamma = 2.35
q = -1167e3
q_prime = 0
p_inf = 1.e9
cv = 1816
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[Components]
[pipe1]
type = FlowChannel1Phase
fp = eos
position = '0 0 0'
orientation = '1 0 0'
A = 1.
D_h = 1.12837916709551
f = 0
length = 1
n_elems = 10
[]
[pipe2]
type = FlowChannel1Phase
fp = eos
position = '0 0 0'
orientation = '0 1 0'
A = 1.
D_h = 1.12837916709551
f = 0
length = 1
n_elems = 10
[]
[pipe3]
type = FlowChannel1Phase
fp = eos
position = '0 0 0'
orientation = '0 0 1'
A = 1.
D_h = 1.12837916709551
f = 0
length = 1
n_elems = 10
[]
[junction]
type = VolumeJunction1Phase
connections = 'pipe1:in pipe2:in pipe3:in'
position = '0 0 0'
volume = 1e-5
[]
[in1]
type = SolidWall1Phase
input = 'pipe1:out'
[]
[in2]
type = SolidWall1Phase
input = 'pipe2:out'
[]
[in3]
type = SolidWall1Phase
input = 'pipe3:out'
[]
[]
[Preconditioning]
[SMP_PJFNK]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
scheme = 'bdf2'
start_time = 0
dt = 1e-5
num_steps = 1
abort_on_solve_fail = true
solve_type = 'PJFNK'
nl_rel_tol = 1e-5
nl_abs_tol = 1e-6
nl_max_its = 10
l_tol = 1e-3
l_max_its = 100
[]
[Outputs]
exodus = true
show = 'A'
[]
(modules/thermal_hydraulics/tutorials/single_phase_flow/03_upper_loop.i)
T_in = 300. # K
m_dot_in = 1e-4 # kg/s
press = 1e5 # Pa
# core parameters
core_length = 1. # m
core_n_elems = 10
core_dia = ${units 2. cm -> m}
core_pitch = ${units 8.7 cm -> m}
# pipe parameters
pipe_dia = ${units 10. cm -> m}
tot_power = 100 # W
[GlobalParams]
initial_p = ${press}
initial_vel = 0
initial_T = ${T_in}
initial_vel_x = 0
initial_vel_y = 0
initial_vel_z = 0
rdg_slope_reconstruction = full
closures = simple_closures
fp = he
f = 0.4
[]
[Modules/FluidProperties]
[he]
type = IdealGasFluidProperties
molar_mass = 4e-3
gamma = 1.67
k = 0.2556
mu = 3.22639e-5
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[HeatStructureMaterials]
[steel]
type = SolidMaterialProperties
rho = 8050
k = 45
cp = 466
[]
[]
[Components]
[total_power]
type = TotalPower
power = ${tot_power}
[]
[inlet]
type = InletMassFlowRateTemperature1Phase
input = 'core_chan:in'
m_dot = ${m_dot_in}
T = ${T_in}
[]
[core_chan]
type = FlowChannel1Phase
position = '0 0 0'
orientation = '0 0 1'
length = ${core_length}
n_elems = ${core_n_elems}
A = ${fparse core_pitch * core_pitch - pi * core_dia * core_dia / 4.}
D_h = ${core_dia}
f = 1.6
[]
[core_hs]
type = HeatStructureCylindrical
position = '0 0 0'
orientation = '0 0 1'
length = ${core_length}
n_elems = ${core_n_elems}
names = 'block'
widths = '${fparse core_dia / 2.}'
materials = 'steel'
n_part_elems = 3
[]
[core_heating]
type = HeatSourceFromTotalPower
hs = core_hs
regions = block
power = total_power
[]
[core_ht]
type = HeatTransferFromHeatStructure1Phase
flow_channel = core_chan
hs = core_hs
hs_side = outer
P_hf = ${fparse pi * core_dia}
Hw = 1.36
[]
[jct1]
type = JunctionParallelChannels1Phase
position = '0 0 1'
connections = 'core_chan:out up_pipe:in'
volume = 1e-3
[]
[up_pipe]
type = FlowChannel1Phase
position = '0 0 1'
orientation = '0 0 1'
length = 1
n_elems = 10
A = ${fparse pi * pipe_dia * pipe_dia / 4.}
D_h = ${pipe_dia}
[]
[jct2]
type = VolumeJunction1Phase
position = '0 0 2'
connections = 'up_pipe:out top_pipe:in'
volume = 1e-3
[]
[top_pipe]
type = FlowChannel1Phase
position = '0 0 2'
orientation = '1 0 0'
length = 1
n_elems = 10
A = ${fparse pi * pipe_dia * pipe_dia / 4.}
D_h = ${pipe_dia}
[]
[jct3]
type = VolumeJunction1Phase
position = '1 0 2'
connections = 'top_pipe:out cooling_pipe:in'
volume = 1e-3
[]
[cooling_pipe]
type = FlowChannel1Phase
position = '1 0 2'
orientation = '0 0 -1'
length = 1
n_elems = 10
A = ${fparse pi * pipe_dia * pipe_dia / 4.}
D_h = ${pipe_dia}
[]
[cold_wall]
type = HeatTransferFromSpecifiedTemperature1Phase
flow_channel = cooling_pipe
T_wall = 300
Hw = 0.97
[]
[jct4]
type = VolumeJunction1Phase
position = '1 0 1'
connections = 'cooling_pipe:out down_pipe:in'
volume = 1e-3
[]
[down_pipe]
type = FlowChannel1Phase
position = '1 0 1'
orientation = '0 0 -1'
length = 1
n_elems = 10
A = ${fparse pi * pipe_dia * pipe_dia / 4.}
D_h = ${pipe_dia}
[]
[outlet]
type = Outlet1Phase
input = 'down_pipe:out'
p = ${press}
[]
[]
[Postprocessors]
[core_T_out]
type = SideAverageValue
boundary = core_chan:out
variable = T
[]
[hx_pri_T_out]
type = SideAverageValue
boundary = cooling_pipe:out
variable = T
[]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 1000
dt = 10
line_search = basic
solve_type = NEWTON
nl_rel_tol = 1e-5
nl_abs_tol = 1e-5
nl_max_its = 5
[]
[Outputs]
exodus = true
[console]
type = Console
max_rows = 1
outlier_variable_norms = false
[]
print_linear_residuals = false
[]
(modules/thermal_hydraulics/test/tests/output/vector_velocity/test.i)
[GlobalParams]
initial_vel = 0
initial_vel_x = 0
initial_vel_y = 0
initial_vel_z = 0
initial_p = 1e5
initial_T = 300
f = 0.1
closures = simple_closures
fp = fp
[]
[Modules/FluidProperties]
[fp]
type = IdealGasFluidProperties
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[Components]
[inlet]
type = InletMassFlowRateTemperature1Phase
input = 'fch1:in'
m_dot = 1
T = 300
[]
[fch1]
type = FlowChannel1Phase
position = '0 0 0'
orientation = '1 1 1'
length = 1.73205
n_elems = 5
A = 1
[]
[junction]
type = VolumeJunction1Phase
position = '1 1 1'
connections = 'fch1:out fch2:out'
volume = 0.1
[]
[fch2]
type = FlowChannel1Phase
position = '2 2 2'
orientation = '-1 -1 -1'
length = 1.73205
n_elems = 5
A = 2
[]
[outlet]
type = Outlet1Phase
input = 'fch2:in'
p = 1e5
[]
[]
[Executioner]
type = Transient
dt = 0.5
num_steps = 50
solve_type = NEWTON
line_search = basic
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_abs_tol = 1e-6
l_tol = 1e-03
automatic_scaling = true
[]
[Outputs]
print_linear_converged_reason = false
print_nonlinear_converged_reason = false
print_linear_residuals = false
[out]
type = Exodus
sync_only = false
sync_times = '0 5 10 15 20 25'
show = 'vel_x vel_y vel_z'
[]
[]
(modules/thermal_hydraulics/test/tests/misc/mesh_only/test.i)
[GlobalParams]
initial_T = 300
initial_p = 1e5
initial_vel = 0
initial_vel_x = 0
initial_vel_y = 0
initial_vel_z = 0
gravity_vector = '0 0 0'
scaling_factor_1phase = '1.e0 1.e-4 1.e-6'
closures = simple_closures
[]
[Modules/FluidProperties]
[eos]
type = StiffenedGasFluidProperties
gamma = 2.35
q = -1167e3
q_prime = 0
p_inf = 1.e9
cv = 1816
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[HeatStructureMaterials]
[hs_mat]
type = SolidMaterialProperties
rho = 1
cp = 1
k = 1
[]
[]
[Components]
[pipe1]
type = FlowChannel1Phase
fp = eos
position = '0 0 0'
orientation = '1 0 0'
A = 1.
D_h = 1.12837916709551
f = 0
length = 1
n_elems = 10
[]
[hs1]
type = HeatStructurePlate
fp = eos
position = '0 0 0'
orientation = '1 0 0'
n_elems = 10
length = 1
depth = 0.1
names = 'blk'
materials = 'hs_mat'
n_part_elems = 1
widths = '0.1'
[]
[pipe2]
type = FlowChannel1Phase
fp = eos
position = '0 0 0'
orientation = '0 1 0'
A = 1.
D_h = 1.12837916709551
f = 0
length = 1
n_elems = 10
[]
[hs2]
type = HeatStructurePlate
fp = eos
position = '0 0 0'
orientation = '0 1 0'
n_elems = 10
length = 1
depth = 0.1
names = 'blk'
materials = 'hs_mat'
n_part_elems = 1
widths = '0.1'
[]
[pipe3]
type = FlowChannel1Phase
fp = eos
position = '0 0 0'
orientation = '0 0 1'
A = 1.
D_h = 1.12837916709551
f = 0
length = 1
n_elems = 10
[]
[hs3]
type = HeatStructurePlate
fp = eos
position = '0 0 0'
orientation = '0 0 1'
n_elems = 10
length = 1
depth = 0.1
names = 'blk'
materials = 'hs_mat'
n_part_elems = 1
widths = '0.1'
[]
[junction]
type = VolumeJunction1Phase
connections = 'pipe1:in pipe2:in pipe3:in'
position = '0 0 0'
volume = 1e-5
[]
[in1]
type = SolidWall
input = 'pipe1:out'
[]
[in2]
type = SolidWall
input = 'pipe2:out'
[]
[in3]
type = SolidWall
input = 'pipe3:out'
[]
[]
[Preconditioning]
[pc]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
scheme = 'bdf2'
start_time = 0
dt = 1e-5
num_steps = 1
abort_on_solve_fail = true
[]
(modules/thermal_hydraulics/test/tests/misc/coupling_mD_flow/thm_non_overlapping.i)
T_in = 523.0
mdot = 10
pout = 7e6
[GlobalParams]
initial_p = ${pout}
initial_vel = 1
initial_T = ${T_in}
gravity_vector = '0 0 0'
closures = simple_closures
n_elems = 5
scaling_factor_1phase = '1 1e-2 1e-5'
f = 1
[]
[Modules/FluidProperties]
[fp]
type = IdealGasFluidProperties
gamma = 1.66
molar_mass = 0.004
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[Components]
[inlet_bc]
type = InletMassFlowRateTemperature1Phase
input = 'inlet:in'
m_dot = ${mdot}
T = ${T_in}
[]
[inlet]
type = FlowChannel1Phase
fp = fp
position = '0 0 11'
orientation = '0 0 -1'
length = 1
A = 1
[]
[inlet_plenum]
type = VolumeJunction1Phase
position = '0 0 10'
initial_vel_x = 0
initial_vel_y = 0
initial_vel_z = 1
connections = 'inlet:out bypass:in core_top:in'
volume = 1
[]
[bypass]
type = FlowChannel1Phase
fp = fp
position = '2 0 10'
orientation = '0 0 -1'
length = 10
A = 0.01
[]
[core_top]
type = FlowChannel1Phase
fp = fp
position = '0 0 10'
orientation = '0 0 -1'
length = 0.1
A = 9
[]
[core_top_bc]
type = Outlet1Phase
p = ${pout}
input = 'core_top:out'
[]
[core_bottom_bc]
type = InletMassFlowRateTemperature1Phase
input = 'core_bottom:in'
m_dot = ${mdot}
T = ${T_in}
[]
[core_bottom]
type = FlowChannel1Phase
fp = fp
position = '0 0 0.1'
orientation = '0 0 -1'
length = 0.1
A = 9
[]
[outlet_plenum]
type = VolumeJunction1Phase
position = '0 0 0'
initial_vel_x = 1
initial_vel_y = 0
initial_vel_z = 1
connections = 'bypass:out core_bottom:out outlet:in'
volume = 1
[]
[outlet]
type = FlowChannel1Phase
fp = fp
position = '0 0 0'
orientation = '0 0 -1'
length = 1
A = 1
[]
[outlet_bc]
type = Outlet1Phase
p = ${pout}
input = 'outlet:out'
[]
[]
[ControlLogic]
[set_core_inlet_pressure]
type = SetComponentRealValueControl
component = core_top_bc
parameter = p
value = core_inlet_pressure
[]
[set_core_outlet_mdot]
type = SetComponentRealValueControl
component = core_bottom_bc
parameter = m_dot
value = core_outlet_mdot
[]
[set_core_outlet_temperature]
type = SetComponentRealValueControl
component = core_bottom_bc
parameter = T
value = core_outlet_temperature
[]
[]
[Postprocessors]
[core_inlet_pressure]
type = Receiver
default = ${pout}
[]
[core_outlet_mdot]
type = Receiver
default = ${mdot}
[]
[core_outlet_temperature]
type = Receiver
default = ${T_in}
[]
[core_outlet_pressure]
type = SideAverageValue
variable = p
boundary = 'core_bottom:in'
execute_on = 'INITIAL LINEAR TIMESTEP_END'
[]
[core_inlet_mdot]
type = SideAverageValue
variable = rhouA
boundary = 'core_top:out'
execute_on = 'INITIAL LINEAR TIMESTEP_END'
[]
[core_inlet_temperature]
type = SideAverageValue
variable = T
boundary = 'core_top:out'
execute_on = 'INITIAL LINEAR TIMESTEP_END'
[]
[bypass_inlet_pressure]
type = SideAverageValue
variable = p
boundary = 'bypass:in'
[]
[bypass_outlet_pressure]
type = SideAverageValue
variable = p
boundary = 'bypass:out'
[]
[bypass_pressure_drop]
type = DifferencePostprocessor
value1 = bypass_inlet_pressure
value2 = bypass_outlet_pressure
[]
[bypass_mdot]
type = SideAverageValue
variable = rhouA
boundary = 'bypass:out'
execute_on = 'INITIAL LINEAR TIMESTEP_END'
[]
[inlet_mdot]
type = SideAverageValue
variable = rhouA
boundary = 'inlet:in'
execute_on = 'INITIAL LINEAR TIMESTEP_END'
[]
[outlet_mdot]
type = SideAverageValue
variable = rhouA
boundary = 'outlet:out'
execute_on = 'INITIAL LINEAR TIMESTEP_END'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
timestep_tolerance = 1e-6
start_time = 0
end_time = 100
dt = 0.01
line_search = l2
nl_rel_tol = 1e-6
nl_abs_tol = 1e-4
nl_max_its = 25
l_tol = 1e-3
l_max_its = 20
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-pc_type'
petsc_options_value = ' lu '
[]
[Outputs]
exodus = true
[]
(modules/thermal_hydraulics/test/tests/misc/initial_from_file/volume_junction/steady_state.i)
[GlobalParams]
scaling_factor_1phase = '1. 1.e-2 1.e-4'
initial_T = 500
initial_p = 6.e6
initial_vel = 0
closures = simple_closures
[]
[Modules/FluidProperties]
[fp]
type = StiffenedGasFluidProperties
gamma = 2.35
cv = 1816.0
q = -1.167e6
p_inf = 1.0e9
q_prime = 0
k = 0.5
mu = 281.8e-6
[]
[]
[Closures]
[simple_closures]
type = Closures1PhaseSimple
[]
[]
[Components]
[pipe1]
type = FlowChannel1Phase
fp = fp
# geometry
position = '0 0 0'
orientation = '1 0 0'
length = 1
n_elems = 3
A = 1.907720E-04
D_h = 1.698566E-02
f = 0.1
[]
[junction]
type = VolumeJunction1Phase
connections = 'pipe1:out pipe2:in'
volume = 1
position = '1 0 0'
initial_vel_x = 0
initial_vel_y = 0
initial_vel_z = 0
scaling_factor_rhoV = 1
scaling_factor_rhouV = 1
scaling_factor_rhovV = 1
scaling_factor_rhowV = 1
scaling_factor_rhoEV = 1e-4
[]
[pipe2]
type = FlowChannel1Phase
fp = fp
# geometry
position = '1 0 0'
orientation = '1 0 0'
length = 1
n_elems = 3
A = 1.907720E-04
D_h = 1.698566E-02
f = 0.1
[]
[inlet]
type = InletMassFlowRateTemperature1Phase
input = 'pipe1:in'
m_dot = 0.1
T = 500
[]
[outlet]
type = Outlet1Phase
input = 'pipe2:out'
p = 6e6
[]
[]
[Preconditioning]
[pc]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
scheme = 'bdf2'
start_time = 0
dt = 1
num_steps = 100
abort_on_solve_fail = true
solve_type = 'NEWTON'
line_search = 'basic'
nl_rel_tol = 1e-7
nl_abs_tol = 1e-8
nl_max_its = 10
l_tol = 1e-3
l_max_its = 100
[]
[Outputs]
exodus = true
execute_on = 'initial final'
velocity_as_vector = false
[]
(modules/thermal_hydraulics/include/components/Pump1Phase.h)
// This file is part of the MOOSE framework
// https://www.mooseframework.org
//
// All rights reserved, see COPYRIGHT for full restrictions
// https://github.com/idaholab/moose/blob/master/COPYRIGHT
//
// Licensed under LGPL 2.1, please see LICENSE for details
// https://www.gnu.org/licenses/lgpl-2.1.html
#pragma once
#include "VolumeJunction1Phase.h"
/**
* Pump between 1-phase flow channels that has a non-zero volume
*/
class Pump1Phase : public VolumeJunction1Phase
{
public:
Pump1Phase(const InputParameters & params);
protected:
virtual void buildVolumeJunctionUserObject() override;
/// Pump head [m]
const Real & _head;
public:
static InputParameters validParams();
};
(modules/thermal_hydraulics/include/components/JunctionParallelChannels1Phase.h)
// This file is part of the MOOSE framework
// https://www.mooseframework.org
//
// All rights reserved, see COPYRIGHT for full restrictions
// https://github.com/idaholab/moose/blob/master/COPYRIGHT
//
// Licensed under LGPL 2.1, please see LICENSE for details
// https://www.gnu.org/licenses/lgpl-2.1.html
#pragma once
#include "VolumeJunctionBase.h"
#include "VolumeJunction1Phase.h"
/**
* Junction between 1-phase flow channels that are parallel
*/
class JunctionParallelChannels1Phase : public VolumeJunction1Phase
{
public:
JunctionParallelChannels1Phase(const InputParameters & params);
virtual void addVariables() override;
virtual void addMooseObjects() override;
protected:
virtual void init() override;
/**
* Builds user object for computing and storing the fluxes
*/
virtual void buildVolumeJunctionUserObject() override;
/// Directions at each connection
std::vector<RealVectorValue> _directions;
public:
static InputParameters validParams();
};
(modules/thermal_hydraulics/include/components/ShaftConnectedTurbine1Phase.h)
// This file is part of the MOOSE framework
// https://www.mooseframework.org
//
// All rights reserved, see COPYRIGHT for full restrictions
// https://github.com/idaholab/moose/blob/master/COPYRIGHT
//
// Licensed under LGPL 2.1, please see LICENSE for details
// https://www.gnu.org/licenses/lgpl-2.1.html
#pragma once
#include "VolumeJunction1Phase.h"
#include "ShaftConnectable.h"
/**
* 1-phase turbine that must be connected to a Shaft component
*/
class ShaftConnectedTurbine1Phase : public VolumeJunction1Phase, public ShaftConnectable
{
public:
ShaftConnectedTurbine1Phase(const InputParameters & params);
virtual void addVariables() override;
virtual void addMooseObjects() override;
virtual UserObjectName getShaftConnectedUserObjectName() const override
{
return _junction_uo_name;
}
protected:
virtual void init() override;
virtual void check() const override;
virtual void buildVolumeJunctionUserObject() override;
/// Turbine inlet
const BoundaryName & _inlet;
/// Turbine outlet
const BoundaryName & _outlet;
/// Rated turbine speed
const Real & _omega_rated;
/// Turbine wheel diameter
const Real & _D_wheel;
/// Turbine speed threshold for friction
const Real & _speed_cr_fr;
/// Turbine friction constant
const Real & _tau_fr_const;
/// Turbine friction coefficients
const std::vector<Real> & _tau_fr_coeff;
/// Turbine speed threshold for inertia
const Real & _speed_cr_I;
/// Turbine inertia constant
const Real & _inertia_const;
/// Turbine inertia coefficients
const std::vector<Real> & _inertia_coeff;
/// Name of function to compute data for turbine head
const FunctionName & _head_coefficient;
/// Name of function to compute data for turbine power
const FunctionName & _power_coefficient;
/// Name of turbine pressure drop variable
const VariableName _delta_p_var_name;
/// Name of turbine power variable
const VariableName _power_var_name;
/// Name of turbine driving torque variable
const VariableName _driving_torque_var_name;
/// Name of turbine friction torque variable
const VariableName _friction_torque_var_name;
/// Name of turbine flow_coeff torque variable
const VariableName _flow_coeff_var_name;
/// Name of turbine inertia variable
const VariableName _moi_var_name;
/// Directions at each connection
std::vector<RealVectorValue> _directions;
public:
static InputParameters validParams();
};
(modules/thermal_hydraulics/include/components/ShaftConnectedPump1Phase.h)
// This file is part of the MOOSE framework
// https://www.mooseframework.org
//
// All rights reserved, see COPYRIGHT for full restrictions
// https://github.com/idaholab/moose/blob/master/COPYRIGHT
//
// Licensed under LGPL 2.1, please see LICENSE for details
// https://www.gnu.org/licenses/lgpl-2.1.html
#pragma once
#include "VolumeJunction1Phase.h"
#include "ShaftConnectable.h"
/**
* 1-phase pump that must be connected to a Shaft component
*/
class ShaftConnectedPump1Phase : public VolumeJunction1Phase, public ShaftConnectable
{
public:
ShaftConnectedPump1Phase(const InputParameters & params);
virtual void addVariables() override;
virtual void addMooseObjects() override;
virtual UserObjectName getShaftConnectedUserObjectName() const override
{
return _junction_uo_name;
}
protected:
virtual void init() override;
virtual void check() const override;
virtual void buildVolumeJunctionUserObject() override;
/// Pump inlet
const BoundaryName & _inlet;
/// Pump outlet
const BoundaryName & _outlet;
/// Rated pump speed
const Real & _omega_rated;
/// Rated pump volumetric flow rate
const Real & _volumetric_rated;
/// Rated pump head
const Real & _head_rated;
/// Rated pump torque
const Real & _torque_rated;
/// Rated pump density
const Real & _density_rated;
/// Pump speed threshold for friction
const Real & _speed_cr_fr;
/// Pump friction constant
const Real & _tau_fr_const;
/// Pump friction coefficients
const std::vector<Real> & _tau_fr_coeff;
/// Pump speed threshold for inertia
const Real & _speed_cr_I;
/// Pump inertia constant
const Real & _inertia_const;
/// Pump inertia coefficients
const std::vector<Real> & _inertia_coeff;
/// Name of function to compute data for pump head
const FunctionName & _head;
/// Name of function to compute data for pump torque
const FunctionName & _torque_hydraulic;
/// Name of pump head variable
const VariableName _head_var_name;
/// Name of pump hydraulic torque variable
const VariableName _hydraulic_torque_var_name;
/// Name of pump friction torque variable
const VariableName _friction_torque_var_name;
/// Name of pump inertia variable
const VariableName _moi_var_name;
/// Directions at each connection
std::vector<RealVectorValue> _directions;
/// Transition width for the sign of the frictional torque when speed is 0
const Real & _transition_width;
public:
static InputParameters validParams();
};
(modules/thermal_hydraulics/include/components/ShaftConnectedCompressor1Phase.h)
// This file is part of the MOOSE framework
// https://www.mooseframework.org
//
// All rights reserved, see COPYRIGHT for full restrictions
// https://github.com/idaholab/moose/blob/master/COPYRIGHT
//
// Licensed under LGPL 2.1, please see LICENSE for details
// https://www.gnu.org/licenses/lgpl-2.1.html
#pragma once
#include "VolumeJunction1Phase.h"
#include "ShaftConnectable.h"
/**
* 1-phase compressor that must be connected to a Shaft component
*/
class ShaftConnectedCompressor1Phase : public VolumeJunction1Phase, public ShaftConnectable
{
public:
ShaftConnectedCompressor1Phase(const InputParameters & params);
virtual void addVariables() override;
virtual void addMooseObjects() override;
virtual UserObjectName getShaftConnectedUserObjectName() const override
{
return _junction_uo_name;
}
protected:
virtual void init() override;
virtual void check() const override;
virtual void buildVolumeJunctionUserObject() override;
/// Compressor inlet
const BoundaryName & _inlet;
/// Compressor outlet
const BoundaryName & _outlet;
/// Rated compressor speed
const Real & _omega_rated;
/// Rated compressor mass flow rate
const Real & _mdot_rated;
/// Rated compressor inlet stagnation fluid density
const Real & _rho0_rated;
/// Rated compressor inlet stagnation sound speed
const Real & _c0_rated;
/// Compressor speed threshold for friction
const Real & _speed_cr_fr;
/// Compressor friction constant
const Real & _tau_fr_const;
/// Compressor friction coefficients
const std::vector<Real> & _tau_fr_coeff;
/// Compressor speed threshold for inertia
const Real & _speed_cr_I;
/// Compressor inertia constant
const Real & _inertia_const;
/// Compressor inertia coefficients
const std::vector<Real> & _inertia_coeff;
/// Compressor speeds which correspond to Rp and eff function order
const std::vector<Real> & _speeds;
/// Names of the pressure ratio functions
const std::vector<FunctionName> & _Rp_functions;
/// Names of the adiabatic efficiency functions
const std::vector<FunctionName> & _eff_functions;
/// Name of compressor delta_p variable
const VariableName _delta_p_var_name;
/// Name of compressor isentropic torque variable
const VariableName _isentropic_torque_var_name;
/// Name of compressor dissipation torque variable
const VariableName _dissipation_torque_var_name;
/// Name of compressor friction torque variable
const VariableName _friction_torque_var_name;
/// Name of compressor inertia variable
const VariableName _moi_var_name;
/// Directions at each connection
std::vector<RealVectorValue> _directions;
public:
static InputParameters validParams();
};