- P_outThe postprocessor (or scalar) that provides the absolute outlet pressure [Pa]. The solved pressure variable P is relative to this value.
C++ Type:PostprocessorName
Unit:(no unit assumed)
Controllable:No
Description:The postprocessor (or scalar) that provides the absolute outlet pressure [Pa]. The solved pressure variable P is relative to this value.
- compute_densityFalseFlag that enables the calculation of density
Default:False
C++ Type:bool
Controllable:No
Description:Flag that enables the calculation of density
- compute_powerFalseFlag that informs whether we solve the Enthalpy/Temperature equations or not
Default:False
C++ Type:bool
Controllable:No
Description:Flag that informs whether we solve the Enthalpy/Temperature equations or not
- compute_viscosityFalseFlag that enables the calculation of viscosity
Default:False
C++ Type:bool
Controllable:No
Description:Flag that enables the calculation of viscosity
- fpFluid properties user object name
C++ Type:UserObjectName
Controllable:No
Description:Fluid properties user object name
- friction_closureClosure computing the friction factor
C++ Type:UserObjectName
Controllable:No
Description:Closure computing the friction factor
- mixing_closureClosure computing the turbulent mixing, wire-induced mixing and sweep flow mixing parameter where applicable
C++ Type:UserObjectName
Controllable:No
Description:Closure computing the turbulent mixing, wire-induced mixing and sweep flow mixing parameter where applicable
- n_blocksThe number of blocks in the axial direction
C++ Type:unsigned int
Controllable:No
Description:The number of blocks in the axial direction
QuadSubChannel1PhaseProblem
Solver class for subchannels in a square lattice assembly and bare fuel pins
Overview
This class solves for the subchannel flow variables in the case of subchannels/pins arranged in a square lattice. It inherits from the base class : SubChannel1PhaseProblem. Information regarding the solver can be found in SubChannel Theory.
Pin surface temperature is calculated at the end of the solve using a user-selected correlation.
Channel-to-Pin and Channel-to-Duct Heat Transfer Modeling
The pin surface temperature are computed via the convective heat transfer coefficient as follows:
where:
is the surface temperature for the pin at a height
is the number of subchannels neighboring the pin
is the bulk temperature for a subchannel neighboring the pin at a height
is the linear heat generation rate for the pin at a height
is the pin diameter at a height
is the convective heat transfer coefficient for the subchannel next to the duct node at a height
For the duct, the duct surface temperature is defined as follows:
where:
is the duct surface temperature at a height
is the bulk temperature of the subchannel next to the duct node
is the heat flux at the duct at a height
is the convective heat transfer coefficientfor the subchannel next to the duct node at a height
In both cases, the convective heat transfer coefficients are computed using the Nusselt number (Nu) as follows:
where:
is the local thermal conductivity of the fluid in the subchannel neighboring the structure
is the hydraulics diameter of the subchannel neighboring the structure
The modeling of the Nusselt number and consequently of the convective heat transfer coefficient h is selected by the user through a closure. The closure models available to the user that are implemented in SCM are the following:
Dittus-Boelter (recommended for water coolant)
Modified Gnielinski (recommended for duct surface)
Kazimi-Carelli (applicable to liquid metals)
Schad-Modified (applicable to liquid metals)
Graber-Rieger (applicable to liquid metals)
Borishanskii (applicable to liquid metals)
All these models inherit from the base class: SCMHTCClosureBase. A synopsis of the closure models availabe in SCM with the range of validity, is presented in Table HTC models.
Currently there is no subchannel-to-duct heat transfer model implemented for square assemblies (square ducts). It only exists for hexagonal assemblies (hexagonal ducts). The subchannel-to-pin model is available for both hexagonal and square assemblies.
Example Input File Syntax
[SubChannel]
type = QuadSubChannel1PhaseProblem
fp = water
n_blocks = 1
compute_density = true
compute_viscosity = true
compute_power = true
P_out = ${P_out}
verbose_subchannel = true
implicit = true
segregated = true
friction_closure = 'MATRA'
pin_HTC_closure = 'Dittus-Boelter'
full_output = true
mixing_closure = 'constant_beta'
[](modules/subchannel/test/tests/problems/psbt/psbt_implicit.i)Input Parameters
- P_tol1e-06Pressure tolerance
Default:1e-06
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Pressure tolerance
- T_maxit100Maximum number of iterations for inner temperature loop
Default:100
C++ Type:int
Controllable:No
Description:Maximum number of iterations for inner temperature loop
- T_tol1e-06Temperature tolerance
Default:1e-06
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Temperature tolerance
- atol1e-06Absolute tolerance for ksp solver
Default:1e-06
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Absolute tolerance for ksp solver
- blockANY_BLOCK_ID List of subdomains for kernel coverage and material coverage checks. Setting this parameter is equivalent to setting 'kernel_coverage_block_list' and 'material_coverage_block_list' as well as using 'ONLY_LIST' as the coverage check mode.
Default:ANY_BLOCK_ID
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:List of subdomains for kernel coverage and material coverage checks. Setting this parameter is equivalent to setting 'kernel_coverage_block_list' and 'material_coverage_block_list' as well as using 'ONLY_LIST' as the coverage check mode.
- dtol100000Divergence tolerance or ksp solver
Default:100000
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Divergence tolerance or ksp solver
- duct_HTC_closureClosure computing HTC on duct (required if duct mesh exists).
C++ Type:UserObjectName
Controllable:No
Description:Closure computing HTC on duct (required if duct mesh exists).
- full_outputFalseFlag that enables the output of the maximum number of variables.
Default:False
C++ Type:bool
Controllable:No
Description:Flag that enables the output of the maximum number of variables.
- gravitycounter_flowDirection of gravity. Default is counter_flow
Default:counter_flow
C++ Type:MooseEnum
Controllable:No
Description:Direction of gravity. Default is counter_flow
- implicitFalseBoolean to define the use of explicit or implicit solution.
Default:False
C++ Type:bool
Controllable:No
Description:Boolean to define the use of explicit or implicit solution.
- interpolation_schemecentral_differenceInterpolation scheme used for the method. Default is central_difference
Default:central_difference
C++ Type:MooseEnum
Controllable:No
Description:Interpolation scheme used for the method. Default is central_difference
- linear_sys_namesThe linear system names
C++ Type:std::vector<LinearSystemName>
Controllable:No
Description:The linear system names
- maxit10000Maximum number of iterations for ksp solver
Default:10000
C++ Type:long
Controllable:No
Description:Maximum number of iterations for ksp solver
- pin_HTC_closureClosure computing HTC on fuel pin (required if pin mesh exists).
C++ Type:UserObjectName
Controllable:No
Description:Closure computing HTC on fuel pin (required if pin mesh exists).
- regard_general_exceptions_as_errorsFalseIf we catch an exception during residual/Jacobian evaluaton for which we don't have specific handling, immediately error instead of allowing the time step to be cut
Default:False
C++ Type:bool
Controllable:No
Description:If we catch an exception during residual/Jacobian evaluaton for which we don't have specific handling, immediately error instead of allowing the time step to be cut
- rtol1e-06Relative tolerance for ksp solver
Default:1e-06
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Relative tolerance for ksp solver
- segregatedTrueBoolean to define whether to use a segregated solution.
Default:True
C++ Type:bool
Controllable:No
Description:Boolean to define whether to use a segregated solution.
- solveTrueWhether or not to actually solve the Nonlinear system. This is handy in the case that all you want to do is execute AuxKernels, Transfers, etc. without actually solving anything
Default:True
C++ Type:bool
Controllable:Yes
Description:Whether or not to actually solve the Nonlinear system. This is handy in the case that all you want to do is execute AuxKernels, Transfers, etc. without actually solving anything
- staggered_pressureFalseBoolean to define the use of staggered or collocated pressure.
Default:False
C++ Type:bool
Controllable:No
Description:Boolean to define the use of staggered or collocated pressure.
- verbose_subchannelFalseBoolean to print out information related to subchannel solve.
Default:False
C++ Type:bool
Controllable:No
Description:Boolean to print out information related to subchannel solve.
Optional Parameters
- allow_initial_conditions_with_restartFalseTrue to allow the user to specify initial conditions when restarting. Initial conditions can override any restarted field
Default:False
C++ Type:bool
Controllable:No
Description:True to allow the user to specify initial conditions when restarting. Initial conditions can override any restarted field
- force_restartFalseEXPERIMENTAL: If true, a sub_app may use a restart file instead of using of using the master backup file
Default:False
C++ Type:bool
Controllable:No
Description:EXPERIMENTAL: If true, a sub_app may use a restart file instead of using of using the master backup file
- restart_file_baseFile base name used for restart (e.g.
/ or /LATEST to grab the latest file available) C++ Type:FileNameNoExtension
Controllable:No
Description:File base name used for restart (e.g.
/ or /LATEST to grab the latest file available)
Restart Parameters
- allow_invalid_solutionFalseSet to true to allow convergence even though the solution has been marked as 'invalid'
Default:False
C++ Type:bool
Controllable:No
Description:Set to true to allow convergence even though the solution has been marked as 'invalid'
- immediately_print_invalid_solutionFalseWhether or not to report invalid solution warnings at the time the warning is produced instead of after the calculation
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not to report invalid solution warnings at the time the warning is produced instead of after the calculation
- show_invalid_solution_consoleTrueSet to true to show the invalid solution occurrence summary in console
Default:True
C++ Type:bool
Controllable:No
Description:Set to true to show the invalid solution occurrence summary in console
Solution Validity Control Parameters
- boundary_restricted_elem_integrity_checkTrueSet to false to disable checking of boundary restricted elemental object variable dependencies, e.g. are the variable dependencies defined on the selected boundaries?
Default:True
C++ Type:bool
Controllable:No
Description:Set to false to disable checking of boundary restricted elemental object variable dependencies, e.g. are the variable dependencies defined on the selected boundaries?
- boundary_restricted_node_integrity_checkTrueSet to false to disable checking of boundary restricted nodal object variable dependencies, e.g. are the variable dependencies defined on the selected boundaries?
Default:True
C++ Type:bool
Controllable:No
Description:Set to false to disable checking of boundary restricted nodal object variable dependencies, e.g. are the variable dependencies defined on the selected boundaries?
- check_uo_aux_stateFalseTrue to turn on a check that no state presents during the evaluation of user objects and aux kernels
Default:False
C++ Type:bool
Controllable:No
Description:True to turn on a check that no state presents during the evaluation of user objects and aux kernels
- error_on_jacobian_nonzero_reallocationFalseThis causes PETSc to error if it had to reallocate memory in the Jacobian matrix due to not having enough nonzeros
Default:False
C++ Type:bool
Controllable:No
Description:This causes PETSc to error if it had to reallocate memory in the Jacobian matrix due to not having enough nonzeros
- fv_bcs_integrity_checkTrueSet to false to disable checking of overlapping Dirichlet and Flux BCs and/or multiple DirichletBCs per sideset
Default:True
C++ Type:bool
Controllable:No
Description:Set to false to disable checking of overlapping Dirichlet and Flux BCs and/or multiple DirichletBCs per sideset
- kernel_coverage_block_listList of subdomains for kernel coverage check. The meaning of this list is controlled by the parameter 'kernel_coverage_check' (whether this is the list of subdomains to be checked, not to be checked or not taken into account).
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:List of subdomains for kernel coverage check. The meaning of this list is controlled by the parameter 'kernel_coverage_check' (whether this is the list of subdomains to be checked, not to be checked or not taken into account).
- material_coverage_block_listList of subdomains for material coverage check. The meaning of this list is controlled by the parameter 'material_coverage_check' (whether this is the list of subdomains to be checked, not to be checked or not taken into account).
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:List of subdomains for material coverage check. The meaning of this list is controlled by the parameter 'material_coverage_check' (whether this is the list of subdomains to be checked, not to be checked or not taken into account).
- material_coverage_checkTRUEControls, if and how a material subdomain coverage check is performed. With 'TRUE' or 'ON' all subdomains are checked (the default). Setting 'FALSE' or 'OFF' will disable the check for all subdomains. To exclude a predefined set of subdomains 'SKIP_LIST' is to be used, while the subdomains to skip are to be defined in the parameter 'material_coverage_block_list'. To limit the check to a list of subdomains, 'ONLY_LIST' is to be used (again, using the parameter 'material_coverage_block_list').
Default:TRUE
C++ Type:MooseEnum
Controllable:No
Description:Controls, if and how a material subdomain coverage check is performed. With 'TRUE' or 'ON' all subdomains are checked (the default). Setting 'FALSE' or 'OFF' will disable the check for all subdomains. To exclude a predefined set of subdomains 'SKIP_LIST' is to be used, while the subdomains to skip are to be defined in the parameter 'material_coverage_block_list'. To limit the check to a list of subdomains, 'ONLY_LIST' is to be used (again, using the parameter 'material_coverage_block_list').
- material_dependency_checkTrueSet to false to disable material dependency check
Default:True
C++ Type:bool
Controllable:No
Description:Set to false to disable material dependency check
Simulation Checks 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.
- default_ghostingFalseWhether or not to use libMesh's default amount of algebraic and geometric ghosting
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not to use libMesh's default amount of algebraic and geometric ghosting
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:No
Description:Set the enabled status of the MooseObject.
Advanced Parameters
- extra_tag_matricesExtra matrices to add to the system that can be filled by objects which compute residuals and Jacobians (Kernels, BCs, etc.) by setting tags on them. The outer index is for which nonlinear system the extra tag vectors should be added for
C++ Type:std::vector<std::vector<TagName>>
Controllable:No
Description:Extra matrices to add to the system that can be filled by objects which compute residuals and Jacobians (Kernels, BCs, etc.) by setting tags on them. The outer index is for which nonlinear system the extra tag vectors should be added for
- extra_tag_solutionsExtra solution vectors to add to the system that can be used by objects for coupling variable values stored in them.
C++ Type:std::vector<TagName>
Controllable:No
Description:Extra solution vectors to add to the system that can be used by objects for coupling variable values stored in them.
- extra_tag_vectorsExtra vectors to add to the system that can be filled by objects which compute residuals and Jacobians (Kernels, BCs, etc.) by setting tags on them. The outer index is for which nonlinear system the extra tag vectors should be added for
C++ Type:std::vector<std::vector<TagName>>
Controllable:No
Description:Extra vectors to add to the system that can be filled by objects which compute residuals and Jacobians (Kernels, BCs, etc.) by setting tags on them. The outer index is for which nonlinear system the extra tag vectors should be added for
- not_zeroed_tag_vectorsExtra vector tags which the sytem will not zero when other vector tags are zeroed. The outer index is for which nonlinear system the extra tag vectors should be added for
C++ Type:std::vector<std::vector<TagName>>
Controllable:No
Description:Extra vector tags which the sytem will not zero when other vector tags are zeroed. The outer index is for which nonlinear system the extra tag vectors should be added for
Contribution To Tagged Field Data Parameters
- identify_variable_groups_in_nlTrueWhether to identify variable groups in nonlinear systems. This affects dof ordering
Default:True
C++ Type:bool
Controllable:No
Description:Whether to identify variable groups in nonlinear systems. This affects dof ordering
- restore_original_nonzero_patternFalseWhether we should reset matrix memory for every Jacobian evaluation. This option is useful if the sparsity pattern is constantly changing and you are using hash table assembly or if you wish to continually restore the matrix to the originally preallocated sparsity pattern computed by relationship managers.
Default:False
C++ Type:bool
Controllable:No
Description:Whether we should reset matrix memory for every Jacobian evaluation. This option is useful if the sparsity pattern is constantly changing and you are using hash table assembly or if you wish to continually restore the matrix to the originally preallocated sparsity pattern computed by relationship managers.
- use_hash_table_matrix_assemblyFalseWhether to assemble matrices using hash tables instead of preallocating matrix memory. This can be a good option if the sparsity pattern changes throughout the course of the simulation.
Default:False
C++ Type:bool
Controllable:No
Description:Whether to assemble matrices using hash tables instead of preallocating matrix memory. This can be a good option if the sparsity pattern changes throughout the course of the simulation.
Nonlinear System(S) Parameters
- near_null_space_dimension0The dimension of the near nullspace
Default:0
C++ Type:unsigned int
Controllable:No
Description:The dimension of the near nullspace
- null_space_dimension0The dimension of the nullspace
Default:0
C++ Type:unsigned int
Controllable:No
Description:The dimension of the nullspace
- transpose_null_space_dimension0The dimension of the transpose nullspace
Default:0
C++ Type:unsigned int
Controllable:No
Description:The dimension of the transpose nullspace
Null Space Removal Parameters
- parallel_barrier_messagingFalseDisplays messaging from parallel barrier notifications when executing or transferring to/from Multiapps (default: false)
Default:False
C++ Type:bool
Controllable:No
Description:Displays messaging from parallel barrier notifications when executing or transferring to/from Multiapps (default: false)
- verbose_multiappsFalseSet to True to enable verbose screen printing related to MultiApps
Default:False
C++ Type:bool
Controllable:No
Description:Set to True to enable verbose screen printing related to MultiApps
- verbose_restoreFalseSet to True to enable verbose screen printing related to solution restoration
Default:False
C++ Type:bool
Controllable:No
Description:Set to True to enable verbose screen printing related to solution restoration
- verbose_setupfalseSet to 'true' to have the problem report on any object created. Set to 'extra' to also display all parameters.
Default:false
C++ Type:MooseEnum
Controllable:No
Description:Set to 'true' to have the problem report on any object created. Set to 'extra' to also display all parameters.
Verbosity Parameters
Input Files
- (modules/subchannel/test/tests/SCMQuadPower/test.i)
- (modules/subchannel/test/tests/problems/psbt/psbt_explicit_v2.i)
- (modules/subchannel/examples/heating_test/3X3_channel.i)
- (modules/subchannel/examples/coupling/thermo_mech/quad/one_pin_problem.i)
- (modules/subchannel/validation/Blockage/PNNL_7x7/7X7blockage70.i)
- (modules/subchannel/validation/PNNL_12_pin/transient/2X6_transient.i)
- (modules/subchannel/test/tests/problems/psbt/psbt_explicit.i)
- (modules/subchannel/validation/PNNL_12_pin/steady_state/2X6_ss.i)
- (modules/subchannel/validation/Blockage/PNNL_7x7/7X7blockage90.i)
- (modules/subchannel/test/tests/problems/psbt/psbt_implicit.i)
- (modules/subchannel/validation/psbt/psbt_ss/psbt.i)
- (modules/subchannel/verification/friction_model_verification/two_channel2.i)
- (modules/subchannel/test/tests/problems/psbt/psbt_monolithic.i)
- (modules/subchannel/test/tests/problems/deformation/quad_pin_diameter.i)
- (modules/subchannel/test/tests/problems/psbt/psbt_explicit_staggered.i)
- (modules/subchannel/test/tests/SCMQuadPower/test_with_pins.i)
- (modules/subchannel/verification/enthalpy_mixing_verification/two_channel.i)
- (modules/subchannel/test/tests/problems/coupling/main.i)
- (modules/subchannel/test/tests/gravity/one_pin_problem.i)
- (modules/subchannel/validation/psbt/psbt_null_transient/psbt_transient.i)
- (modules/subchannel/test/tests/restart/steady.i)
- (modules/subchannel/verification/friction_model_verification/two_channel.i)
- (modules/subchannel/test/tests/restart/transient.i)
- (modules/subchannel/examples/mesh_generator/psbt_mesh_generator_test.i)
- (modules/subchannel/validation/psbt/psbt_null_transient/psbt_ss.i)