Enthalpy mixing model Verification

Test Description

 

This verification problem is the same used in Robert Salko and Avramova (2015). This case presents a problem where the effects of turbulent mixing are clearly discernible and quantifiable. Turbulence causes both momentum and enthalpy mixing through the terms:

Because the model for turbulent mixing is gradient-driven based in , in order to observe the effects of turbulence, it is necessary to make a gradient in either energy or momentum. It is easier to focus on the energy equation and deactivate the density calculation. The problem geometry consists of two identical channels connected by a gap and is seen in Figure 1.

Figure 1: Enthalpy mixing model verification problem geometry

To test the turbulent mixing model, the temperature of one channel is raised by 10 degrees Celsius. Turbulent enthalpy mixing will transfer heat from the hot channel to the cold channel. The solution given by the code is then compared to the analytical solution:

Results

The analytical solution is compared with the code results in Figure 2. The code results are in good agreement with the analytical solution.

Figure 2: Enthalpy distribution in the axial direction

Input file

To run the enthalpy mixing model verification problem use the following input file:

mass_flux_in = 3500 # kg /sec m2
P_out = 155e+5 # Pa

[QuadSubChannelMesh]
  [sub_channel]
    type = SCMQuadSubChannelMeshGenerator
    nx = 2
    ny = 1
    n_cells = 100
    pitch = 0.0126
    pin_diameter = 0.00950
    gap = 0.00095
    heated_length = 10.0
    spacer_z = '0.0'
    spacer_k = '0.0'
  []
[]

[Functions<<<{"href": "../../../syntax/Functions/index.html"}>>>]
  [T_fn]
    type = ParsedFunction<<<{"description": "Function created by parsing a string", "href": "../../../source/functions/MooseParsedFunction.html"}>>>
    value<<<{"description": "The user defined function."}>>> = if(x>0.0,483.10,473.10)
  []
[]

[FluidProperties<<<{"href": "../../../syntax/FluidProperties/index.html"}>>>]
  [water]
    type = Water97FluidProperties<<<{"description": "Fluid properties for water and steam (H2O) using IAPWS-IF97", "href": "../../../source/fluidproperties/Water97FluidProperties.html"}>>>
  []
[]

[SubChannel]
  type = QuadSubChannel1PhaseProblem
  fp = water
  n_blocks = 1
  beta = 0.006
  CT = 2.0
  P_tol = 1e-6
  T_tol = 1e-6
  compute_density = true
  compute_viscosity = true
  compute_power = true
  P_out = ${P_out}
[]

[ICs<<<{"href": "../../../syntax/ICs/index.html"}>>>]
  [S_ic]
    type = ConstantIC<<<{"description": "Sets a constant field value.", "href": "../../../source/ics/ConstantIC.html"}>>>
    variable<<<{"description": "The variable this initial condition is supposed to provide values for."}>>> = S
    value<<<{"description": "The value to be set in IC"}>>> = 8.78778158e-05
  []

  [T_ic]
    type = FunctionIC<<<{"description": "An initial condition that uses a normal function of x, y, z to produce values (and optionally gradients) for a field variable.", "href": "../../../source/ics/FunctionIC.html"}>>>
    variable<<<{"description": "The variable this initial condition is supposed to provide values for."}>>> = T
    function<<<{"description": "The initial condition function."}>>> = T_fn
  []

  [w_perim_IC]
    type = ConstantIC<<<{"description": "Sets a constant field value.", "href": "../../../source/ics/ConstantIC.html"}>>>
    variable<<<{"description": "The variable this initial condition is supposed to provide values for."}>>> = w_perim
    value<<<{"description": "The value to be set in IC"}>>> = 0.34188034
  []

  [q_prime_IC]
    type = ConstantIC<<<{"description": "Sets a constant field value.", "href": "../../../source/ics/ConstantIC.html"}>>>
    variable<<<{"description": "The variable this initial condition is supposed to provide values for."}>>> = q_prime
    value<<<{"description": "The value to be set in IC"}>>> = 0.0
  []

  [P_ic]
    type = ConstantIC<<<{"description": "Sets a constant field value.", "href": "../../../source/ics/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": "../../../source/ics/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": "../../../source/ics/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": "../../../source/ics/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": "../../../source/ics/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": "../../../source/ics/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
  []
[]

[AuxKernels<<<{"href": "../../../syntax/AuxKernels/index.html"}>>>]
  [mdot_in_bc]
    type = SCMMassFlowRateAux<<<{"description": "Computes mass flow rate from specified mass flux and subchannel cross-sectional area. Can read either PostprocessorValue or Real", "href": "../../../source/auxkernels/SCMMassFlowRateAux.html"}>>>
    variable<<<{"description": "The name of the variable that this object applies to"}>>> = mdot
    boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = inlet
    area<<<{"description": "Cross sectional area [m^2]"}>>> = S
    mass_flux<<<{"description": "The postprocessor or Real to use for the value of mass_flux"}>>> = ${mass_flux_in}
    execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'timestep_begin'
  []
[]

[Outputs<<<{"href": "../../../syntax/Outputs/index.html"}>>>]
  exodus<<<{"description": "Output the results using the default settings for Exodus output."}>>> = true
  csv<<<{"description": "Output the scalar variable and postprocessors to a *.csv file using the default CSV output."}>>> = true
[]

[Postprocessors<<<{"href": "../../../syntax/Postprocessors/index.html"}>>>]
  [Temp_1]
    type = SubChannelPointValue<<<{"description": "Prints out a user selected value of a specified subchannel at a user selected axial height", "href": "../../../source/postprocessors/SubChannelPointValue.html"}>>>
    variable<<<{"description": "Variable you want the value of"}>>> = T
    index<<<{"description": "Index of subchannel"}>>> = 0
    execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'initial timestep_end'
    height<<<{"description": "Axial location of point [m]"}>>> = 10.0
  []
  [Temp_2]
    type = SubChannelPointValue<<<{"description": "Prints out a user selected value of a specified subchannel at a user selected axial height", "href": "../../../source/postprocessors/SubChannelPointValue.html"}>>>
    variable<<<{"description": "Variable you want the value of"}>>> = T
    index<<<{"description": "Index of subchannel"}>>> = 1
    execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'initial timestep_end'
    height<<<{"description": "Axial location of point [m]"}>>> = 10.0
  []
[]

[Executioner<<<{"href": "../../../syntax/Executioner/index.html"}>>>]
  type = Steady
[]

################################################################################
# A multiapp that projects data to a detailed mesh
################################################################################

[MultiApps<<<{"href": "../../../syntax/MultiApps/index.html"}>>>]
  [viz]
    type = FullSolveMultiApp<<<{"description": "Performs a complete simulation during each execution.", "href": "../../../source/multiapps/FullSolveMultiApp.html"}>>>
    input_files<<<{"description": "The input file for each App.  If this parameter only contains one input file it will be used for all of the Apps.  When using 'positions_from_file' it is also admissable to provide one input_file per file."}>>> = "3d.i"
    execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = "timestep_end"
  []
[]

[Transfers<<<{"href": "../../../syntax/Transfers/index.html"}>>>]
  [xfer]
    type = SCMSolutionTransfer<<<{"description": "Transfers subchannel solution from computational mesh onto visualization mesh", "href": "../../../source/transfers/SCMSolutionTransfer.html"}>>>
    to_multi_app<<<{"description": "The name of the MultiApp to transfer the data to"}>>> = viz
    variable<<<{"description": "The auxiliary variables to transfer."}>>> = 'mdot SumWij P DP h T rho mu q_prime S'
  []
[]
(modules/subchannel/verification/enthalpy_mixing_verification/two_channel.i)

The solution will be projected to the 3D mesh created by the following input file:

[Mesh<<<{"href": "../../../syntax/Mesh/index.html"}>>>]
    [subchannel]
      type = SCMDetailedQuadSubChannelMeshGenerator<<<{"description": "Creates a detailed mesh of subchannels in a square lattice arrangement", "href": "../../../source/meshgenerators/SCMDetailedQuadSubChannelMeshGenerator.html"}>>>
      nx<<<{"description": "Number of channels in the x direction [-]"}>>> = 2
      ny<<<{"description": "Number of channels in the y direction [-]"}>>> = 1
      n_cells<<<{"description": "The number of cells in the axial direction"}>>> = 100
      pitch<<<{"description": "Pitch [m]"}>>> = 0.0126
      pin_diameter<<<{"description": "Rod diameter [m]"}>>> = 0.00950
      gap<<<{"description": "(Its an added distance between a perimetric pin and the duct: Edge Pitch W = pitch/2 - pin_diameter/2 + gap) [m]"}>>> = 0.00095 #
      heated_length<<<{"description": "Heated length [m]"}>>> = 10.0
    []
  []

  [AuxVariables<<<{"href": "../../../syntax/AuxVariables/index.html"}>>>]
    [mdot]
    []
    [SumWij]
    []
    [P]
    []
    [DP]
    []
    [h]
    []
    [T]
    []
    [rho]
    []
    [mu]
    []
    [S]
    []
    [w_perim]
    []
    [q_prime]
    []
  []

  [Problem<<<{"href": "../../../syntax/Problem/index.html"}>>>]
    type = NoSolveProblem
  []

  [Outputs<<<{"href": "../../../syntax/Outputs/index.html"}>>>]
    exodus<<<{"description": "Output the results using the default settings for Exodus output."}>>> = true
  []

  [Executioner<<<{"href": "../../../syntax/Executioner/index.html"}>>>]
    type = Steady
  []
(modules/subchannel/verification/enthalpy_mixing_verification/3d.i)

References

  1. Chris Gosdin Robert Salko, Marcus Gergar and Maria Avramova. CTF Void Drift Validation Study. CASL, 2015.[BibTeX]