- variableThe variable this initial condition is supposed to provide values for.
C++ Type:VariableName
Unit:(no unit assumed)
Controllable:No
Description:The variable this initial condition is supposed to provide values for.
FCTFdisplacementIC
This class calculates the displacement of the duct for the areva FCTF
Overview
This is a custom, hard-coded IC, that is used only in one specific geometry. This kernel calculates and initializes, the deformation of the duct (displacement
AuxVariable) for the AREVA FCTF. SCM models the effect of the duct deformation, by adapting the geometric parameters of the perimetric subchannels according to a representative per subchannel deformation variable, which is called Displacement (displacement
D). This auxiliary variable is calculated based on the centroid coordinates of each subchannel Kyriakopoulos and Retamales (2024).
If the flag that enables deformation modeling is activated ("deformation","deformation"), the geometric parameters of the subchannels are re-calculated before the start of the solution algorithm. The geometric parameters (surface area, wetted perimeter, gap) are depended on the auxiliary variables Dpin
and displacement
. It is only the displacement of the perimetric subchannels that is taken into consideration, since the perimetric subchannels are the ones next to the deformed duct.
Example Input File Syntax
An example input file that uses this initial condition kernel is shown below:
# Following Benchmark Specifications and Data Requirements for the AREVA heated-bundle test in its Fuel Cooling Test Facility (FCTF)
# as part of a U.S. DOE funded project: Towards a Longer-Life Core. In partnership with TerraPower, TAMU and ANL,
# AREVA NP tested a wire-wrapped pin bundle. The bundle consists of electrically heated pins and non-heated pins.
# This test collected measurements to evaluate thermal hydraulic performance of a wire wrapped bundle, useful for CFD and other software validation.
# Available at: https://www.osti.gov/servlets/purl/1346027/
###################################################
# Steady state subchannel calculation
# Thermal-hydraulics parameters
###################################################
T_in = 305.68 #Kelvin (32.53 C)
# mu = 0.0007646 #Pas
# Re = 20500
# Dh = 0.004535
Total_Surface_Area_SC = 0.00285294 #m2
Total_Surface_Area_EXP = 0.002808 #m2
P_out = 829370.355 # Pa (120.29 psia)
Power = 90640 # Watt Each heater pin had a max power of 30kW
# Heater 17 (18) not working.
# test:19 power = 22613 22610 22754 22663 [W], Total Power = 90640 [W], mdot_average = 9.576 [kg/s], Re = 20300
# Index of heated pins per silicon controled rectifiers (Areva notation):1 3 6 7 || 4 5 11 15 ||2 9 19 40 60 || 13 44 48 52 56 (from bottom to top)
# Index of heated pins per silicon controled rectifiers (SC notation):0 3 6 1 || 4 5 12 16 || 2 10 8 43 39 || 14 47 51 55 59 (from top to bottom) 38 areva->41 SC
# Relative power of pin per rectifier: 1.12266659312 || 1.12251765225 || 0.90373345101 || 0.90011915269
mdot_average = '${fparse 9.43 * Total_Surface_Area_SC / Total_Surface_Area_EXP}'
mass_flux_in = '${fparse mdot_average / Total_Surface_Area_SC}' #kg/m2
###################################################
# Geometric parameters (non-deformed heated bundle)
###################################################
fuel_pin_pitch = 0.01122652 #m
fuel_pin_diameter = 0.009514 #m
wire_z_spacing = 0.285 #m
wire_diameter = 0.0017062 #m
inner_duct_in = 0.092 #m
n_rings = 5
unheated_length_entry = 1.14 #m
heated_length = 1.71 #m
unheated_length_exit = 0.855 #m
###################################################
[TriSubChannelMesh]
[subchannel]
type = SCMTriSubChannelMeshGenerator
nrings = ${n_rings}
n_cells = 65
flat_to_flat = ${inner_duct_in}
unheated_length_entry = ${unheated_length_entry}
heated_length = ${heated_length}
unheated_length_exit = ${unheated_length_exit}
pin_diameter = ${fuel_pin_diameter}
pitch = ${fuel_pin_pitch}
dwire = ${wire_diameter}
hwire = ${wire_z_spacing}
spacer_z = '0.0'
spacer_k = '0.0'
[]
[fuel_pins]
type = SCMTriPinMeshGenerator
input = subchannel
nrings = ${n_rings}
n_cells = 65
unheated_length_entry = ${unheated_length_entry}
heated_length = ${heated_length}
unheated_length_exit = ${unheated_length_exit}
pitch = ${fuel_pin_pitch}
[]
[]
[Functions]
[axial_heat_rate]
type = ParsedFunction
expression = '(0.4*pi/(pi-2))*sin(pi*z/L) + 1.4 - (0.4*pi/(pi-2))'
symbol_names = 'L'
symbol_values = '${heated_length}'
[]
[]
[AuxVariables]
[mdot]
block = subchannel
[]
[SumWij]
block = subchannel
[]
[P]
block = subchannel
[]
[DP]
block = subchannel
[]
[h]
block = subchannel
[]
[T]
block = subchannel
[]
[rho]
block = subchannel
[]
[mu]
block = subchannel
[]
[S]
block = subchannel
[]
[w_perim]
block = subchannel
[]
[displacement]
block = subchannel
[]
[q_prime]
block = fuel_pins
[]
[Tpin]
block = fuel_pins
[]
[Dpin]
block = fuel_pins
[]
[]
[FluidProperties]
[water]
type = Water97FluidProperties
[]
[]
[Problem]
type = TriSubChannel1PhaseProblem
fp = water
n_blocks = 1
P_out = ${P_out}
CT = 2.6
compute_density = true
compute_viscosity = true
compute_power = true
P_tol = 1.0e-4
T_tol = 1.0e-4
implicit = true
segregated = false
interpolation_scheme = 'upwind'
verbose_subchannel = true
deformation = true
[]
[ICs]
[S_IC]
type = SCMTriFlowAreaIC
variable = S
[]
[w_perim_IC]
type = SCMTriWettedPerimIC
variable = w_perim
[]
[q_prime_IC]
type = SCMTriPowerIC
variable = q_prime
power = ${Power}
filename = "pin_power_profile61.txt"
axial_heat_rate = axial_heat_rate
[]
[T_ic]
type = ConstantIC
variable = T
value = ${T_in}
[]
[Dpin_ic]
type = ConstantIC
variable = Dpin
value = ${fuel_pin_diameter}
[]
[P_ic]
type = ConstantIC
variable = P
value = 0.0
[]
[DP_ic]
type = ConstantIC
variable = DP
value = 0.0
[]
[Viscosity_ic]
type = ViscosityIC
variable = mu
p = ${P_out}
T = T
fp = water
[]
[rho_ic]
type = RhoFromPressureTemperatureIC
variable = rho
p = ${P_out}
T = T
fp = water
[]
[h_ic]
type = SpecificEnthalpyFromPressureTemperatureIC
variable = h
p = ${P_out}
T = T
fp = water
[]
[mdot_ic]
type = ConstantIC
variable = mdot
value = 0.0
[]
[displacement_ic]
type = FCTFdisplacementIC
variable = displacement
[]
[]
[AuxKernels]
[T_in_bc]
type = ConstantAux
variable = T
boundary = inlet
value = ${T_in}
execute_on = 'timestep_begin'
block = subchannel
[]
[mdot_in_bc]
type = SCMMassFlowRateAux
variable = mdot
boundary = inlet
area = S
mass_flux = ${mass_flux_in}
execute_on = 'timestep_begin'
[]
[]
[Outputs]
exodus = true
csv = true
[]
!include deformed_duct_pp.i
[Executioner]
type = Steady
[]
################################################################################
# A multiapp that projects data to a detailed mesh
################################################################################
[MultiApps]
[viz]
type = FullSolveMultiApp
input_files = '3D.i'
execute_on = 'FINAL'
[]
[]
[Transfers]
[subchannel_transfer]
type = SCMSolutionTransfer
to_multi_app = viz
variable = 'mdot SumWij P DP h T rho mu S displacement'
[]
[pin_transfer]
type = SCMPinSolutionTransfer
to_multi_app = viz
variable = 'Dpin Tpin q_prime'
[]
[]
(modules/subchannel/validation/areva_FCTF/FCTF_deformed.i)In this input file the variable displacement
is populated in the Initial Conditions block (ICs), using the custom kernel FCTFdisplacementIC
.
[ICs<<<{"href": "../../syntax/ICs/index.html"}>>>]
[S_IC]
type = SCMTriFlowAreaIC<<<{"description": "Computes flow area of subchannels in a triangular lattice arrangement", "href": "SCMTriFlowAreaIC.html"}>>>
variable<<<{"description": "The variable this initial condition is supposed to provide values for."}>>> = S
[]
[w_perim_IC]
type = SCMTriWettedPerimIC<<<{"description": "Computes wetted perimeter of subchannels in a triangular lattice arrangement", "href": "SCMTriWettedPerimIC.html"}>>>
variable<<<{"description": "The variable this initial condition is supposed to provide values for."}>>> = w_perim
[]
[q_prime_IC]
type = SCMTriPowerIC<<<{"description": "Computes axial power rate (W/m) that goes into the subchannel cells or is assigned to the fuel pins, in a triangular lattice arrangement", "href": "SCMTriPowerIC.html"}>>>
variable<<<{"description": "The variable this initial condition is supposed to provide values for."}>>> = q_prime
power<<<{"description": "The postprocessor or Real to use for the total power of the subassembly [W]"}>>> = ${Power}
filename<<<{"description": "name of radial power profile .txt file (should be a single column) [UnitLess]."}>>> = "pin_power_profile61.txt"
axial_heat_rate<<<{"description": "user provided normalized function of axial heat rate [Unitless]. The integral over pin length should equal the heated length"}>>> = axial_heat_rate
[]
[T_ic]
type = ConstantIC<<<{"description": "Sets a constant field value.", "href": "ConstantIC.html"}>>>
variable<<<{"description": "The variable this initial condition is supposed to provide values for."}>>> = T
value<<<{"description": "The value to be set in IC"}>>> = ${T_in}
[]
[Dpin_ic]
type = ConstantIC<<<{"description": "Sets a constant field value.", "href": "ConstantIC.html"}>>>
variable<<<{"description": "The variable this initial condition is supposed to provide values for."}>>> = Dpin
value<<<{"description": "The value to be set in IC"}>>> = ${fuel_pin_diameter}
[]
[P_ic]
type = ConstantIC<<<{"description": "Sets a constant field value.", "href": "ConstantIC.html"}>>>
variable<<<{"description": "The variable this initial condition is supposed to provide values for."}>>> = P
value<<<{"description": "The value to be set in IC"}>>> = 0.0
[]
[DP_ic]
type = ConstantIC<<<{"description": "Sets a constant field value.", "href": "ConstantIC.html"}>>>
variable<<<{"description": "The variable this initial condition is supposed to provide values for."}>>> = DP
value<<<{"description": "The value to be set in IC"}>>> = 0.0
[]
[Viscosity_ic]
type = ViscosityIC<<<{"description": "Computes viscosity from specified pressure and temperature", "href": "ViscosityIC.html"}>>>
variable<<<{"description": "The variable this initial condition is supposed to provide values for."}>>> = mu
p<<<{"description": "Pressure [Pa]"}>>> = ${P_out}
T<<<{"description": "Temperature [K]"}>>> = T
fp<<<{"description": "Fluid properties user object name"}>>> = water
[]
[rho_ic]
type = RhoFromPressureTemperatureIC<<<{"description": "Computes the density from pressure and temperature.", "href": "RhoFromPressureTemperatureIC.html"}>>>
variable<<<{"description": "The variable this initial condition is supposed to provide values for."}>>> = rho
p<<<{"description": "The pressure [Pa]"}>>> = ${P_out}
T<<<{"description": "The temperature [K]"}>>> = T
fp<<<{"description": "The name of fluid properties user object."}>>> = water
[]
[h_ic]
type = SpecificEnthalpyFromPressureTemperatureIC<<<{"description": "Computes the specific enthalpy from pressure and temperature.", "href": "SpecificEnthalpyFromPressureTemperatureIC.html"}>>>
variable<<<{"description": "The variable this initial condition is supposed to provide values for."}>>> = h
p<<<{"description": "The pressure [Pa]"}>>> = ${P_out}
T<<<{"description": "The temperature [K]"}>>> = T
fp<<<{"description": "The name of fluid properties user object."}>>> = water
[]
[mdot_ic]
type = ConstantIC<<<{"description": "Sets a constant field value.", "href": "ConstantIC.html"}>>>
variable<<<{"description": "The variable this initial condition is supposed to provide values for."}>>> = mdot
value<<<{"description": "The value to be set in IC"}>>> = 0.0
[]
[displacement_ic]
type = FCTFdisplacementIC<<<{"description": "This class calculates the displacement of the duct for the areva FCTF", "href": "FCTFdisplacementIC.html"}>>>
variable<<<{"description": "The variable this initial condition is supposed to provide values for."}>>> = displacement
[]
[]
(modules/subchannel/validation/areva_FCTF/FCTF_deformed.i)Input Parameters
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
- stateCURRENTThis parameter is used to set old state solutions at the start of simulation. If specifying multiple states at the start of simulation, use one IC object for each state being specified. The states are CURRENT=0 OLD=1 OLDER=2. States older than 2 are not currently supported. When the user only specifies current state, the solution is copied to the old and older states, as expected. This functionality is mainly used for dynamic simulations with explicit time integration schemes, where old solution states are used in the velocity and acceleration approximations.
Default:CURRENT
C++ Type:MooseEnum
Controllable:No
Description:This parameter is used to set old state solutions at the start of simulation. If specifying multiple states at the start of simulation, use one IC object for each state being specified. The states are CURRENT=0 OLD=1 OLDER=2. States older than 2 are not currently supported. When the user only specifies current state, the solution is copied to the old and older states, as expected. This functionality is mainly used for dynamic simulations with explicit time integration schemes, where old solution states are used in the velocity and acceleration approximations.
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.
- ignore_uo_dependencyFalseWhen set to true, a UserObject retrieved by this IC will not be executed before the this IC
Default:False
C++ Type:bool
Controllable:No
Description:When set to true, a UserObject retrieved by this IC will not be executed before the this IC
Advanced Parameters
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Material Property Retrieval Parameters
Input Files
References
- Vasileios Kyriakopoulos and Mauricio Tano Retamales.
Validation of moose’s subchannel module using the areva fctf heated bundle benchmark.
Nuclear Engineering and Design, 428:113562, 2024.[BibTeX]