Input file

  • Jiří Fürst

Table of contents

1. Basic structure

The input file describes the geometry of the machine, the model of the fluid, and finally the discretization. The file itself is in TOML.

The file consists of several parts (see individual sections bellow):

  • machine - this section gives basic parameters of the machine
  • thermo - this section gives parameters of the fluid model
  • discretization - this section gives parameters of the discretization
  • boundary_conditions - this section gives parameters of the boundary conditions
  • plots - this section defines plots to be generated after the simulation

The code displays basic performance summary during the computation. The summary contains: - mass flux in kg/s - compression or expansion (total-to-total) - adiabatic efficiency - loss coefficient at mean cut of the first blade row

At the end of computation the results are written into results.vtk file which can be post-processed using e.g. ParaView software.

2. Description of individual parts

2.1. Basic parameters of the machine, section machine

This section describes basic shape of the machine as well as models of blades. The section contains a basic part in the form

[machine]
    type = "compressor"         # can be "compressor" or "turbine"
    rpm  = 17500                # Speed in rev/minute

                                # Shape of the hub, array of [x,r] points, in m
    hub_outline = [ [-0.057, 0.093188 ],
                    [-0.017, 0.093188 ],
                    [ 0.029, 0.098655 ],
                    [ 0.054, 0.098655 ],
                    [ 0.136, 0.100246 ],
                    [ 0.175, 0.100246 ] ]

                                # Shape of the shroud, array of [x,r] points, in m
    shroud_outline = [  [-0.057, 0.135 ],
                    [ 0.175, 0.135 ] ]

The rotation axis is x and the rotation is in right hand direction ( is perpendicular to axis). Hub and shroud outlines are given as a series of points. The actual shape is interpolated using piecewise cubic monotone interpolation, see the figure bellow.

Hub and shroud outlines

The inlet and outlet boundaries are defined by simply connecting first and last point of the hub and shorud outlines.

The machine section then contains the array of tables corresponding to individual blade rows, see next sub-sections.

2.1.1. Specification of blade models, section blade_row

Each blade row is described by an embedded table

[[machine.blade_row ]]
    name     = "R1"            # name of blade row, can be arbitrary
    rotating = true            # rotor of stator
    number_of_blades = 11      # number of blades in row
    leading_edge = [ [-0.016120, 0.093000],       # Leading edge outline, in m
                     [-0.012625, 0.114000],     
                     [-0.010111,  0.135000] ]
    trailing_edge= [ [ 0.030103, 0.093000],       # Trailing edge outline, in m
                     [ 0.023516, 0.114000], 
                     [ 0.018109,  0.135000] ]
    inlet_angle  = [ 53.029, 59.621, 64.936]      # Inlet angles at LE points, in deg
    outlet_angle = [ -7.725, 23.717, 42.544]      # Outlet angles at TE points, in deg
    chord        = [ 0.05310, 0.05225, 0.05140 ]  # Chord at LE/TE points, in m
    relative_thickness = [ 0.06, 0.06, 0.06 ]     # Relative thickness at LE/TE points

The leading and trailing edge outlines are given as arrays of points. The code automatically extends/trims these outlines at hub and shroud, see the figure bellow:

Leading and trailing edge outlines

The inlet and outlet angles, chord and relative thickness are given in corresponding points at the leading edge (for compressors) or trailing edge (for turbines).

All tables are interpolated using piecewise cubic monotone interpolation.

2.1.1.1. Empirical performance model

Each blade row contains a configuration of an empirical performance model. The model is selected and configured using the performance_model table. The table contains a mandatory type key and optional keys depending on the model.

The following performance models are implemented:

  • Lieblein’s performance model for axial compressor blades, see Theory manual
    [machine.blade_row.performance_model]
       type = "lieblein"              # Mandatory for Lieblein's model
       Ksh = 1.0                      # Shape factor, optional
       K1  = 0.004                    # Loss model parameter, optional
       K2  = 1.0                      # Loss model parameter, optional
       m   = [ 0.17, -0.0333, 0.333]  # Coeffs of m in deviation model, optional
  • AMDC-KO model for turbine blades

2.2. Specification of thermo-physical properties of the gas, section thermo

2.2.1. Perfect gas

Viscous compressible fluid governed by the ideal gas EOS, see Theory manual. The model is selected and configured as

[thermo]
    model = "perfect_gas"

[thermo.perfect_gas]
    r  = 287.058        # Specific gas constant in J/(kg.K)
    cp = 1004.0         # Specific heat at const. pressure in J/(kg.K)
    mu0 = 1.716e-5      # Viscosity at T = 273.15 K
    T0  = 273.15        # Reference temperature in K
    S   = 110.4         # Sutherland's temperature in [K]
    Pr  = 0.72          # Prandtl number

2.2.2. Aungier-Redlich-Kwong

Viscous compressible fluid governed by the cubic Aungier-Redlich-Kwong EOS, see Theory manual. The model is selected and configured as

[thermo]
model = "aungier"

[thermo.aungier]
    r     = 296.80           # Specific gas constant in J/(kg.K) 
                             # Coeffs for cp0(T) polynomial (T in K, cp0 in J/(kg.K))
    cp0   = [1.0480e+03, -3.6703e-02, -1.4929e-04, 7.2281e-07, -4.1814e-10]
    h_std = 309269.90        # Enthalpy at p = 1e5 Pa and T = 298.15 K
    s_std = 6839.21          # Entropy at  p = 1e5 Pa and T = 298.15 K 
    T_crit = 126.20          # Critical temperature in K
    p_crit = 3.3980e6        # Critical pressure in Pa
    V_crit = 0.003216        # Critical specific volume in m3/kg
    acentric_factor = 0.037  # Accentric factor
    mu0 = 1.716e-5           # Viscosity at T = 273.15 K
    T0  = 273.15             # Reference temperature in K
    S   = 110.4              # Sutherland's temperature in [K]
    Pr  = 0.72               # Prandtl number

2.2.3. Coolprop

Coolprop model uses external Coolprop library (not included). The model is selected and configured as

[thermo]
model = "coolprop"

[thermo.coolprop]
    library  = "/path_to_coolprop_library/libCoolProp.so"
    fluid    = "N2"
    backend  = "TTSE"

The code supports TTSE and HEOS backends.

Warning

the Coolprop library is very slow even with TTSE backend!

2.3. Boundary conditions, section boundary_conditions

The boundary conditions are specified as two sub-tables. The first table inlet specifies the inlet boundary condition and the second table outlet specifies the outlet boundary condition.

The boundary conditions are specified as

[boundary_conditions]
    inlet.type  = "total_inlet"
    inlet.dir   = [1.0, 0.0, 0.0]
    inlet.p_tot = 7.5e6
    inlet.T_tot = 333.15
    outlet.type = "pressure_outlet"
    outlet.p = 8.6e6

As now, the only supported combination of boundary conditions is total_inlet and pressure_outlet. The total_inlet boundary condition is specified by the total pressure, total temperature, and inflow velocity direction. The pressure_outlet boundary condition is specified by the static pressure.

2.4. Discretization, section discretization

The domain is discretized using a structured mesh (see the figure bellow). Structured mesh

The number of cells in streamwise direction can be prescribed either as an array :

[discretization]
    cells_spanwise    = 20
    cells_streamwise  = [10, 10, 10, 10, 10]

or simply as a total number of cells :

[discretization]
    cells_spanwise    = 20
    cells_streamwise  = 50

In the second case, the code automatically distributes points to individual section.

Next, the number of iterations, stopping criterion, and relaxation parameters can be prescribed:

[discretization]
    cells_spanwise = 20
    cells_streamwise = 50
    relax_U = 0.9
    relax_p = 0.02
    relax_h0 = 0.9
    relax_Fn = 0.2
    relaxFv = 0.1
    tolerance_p = 1e-8
    max_iterations = 5000
    min_iterations = 1000

2.5. Postprocessing and plots, section plots

The code contains several built-in postprocessing capabilities. Nevertheless, the result is stored in VTK file and it can be postprocessed using some third party software (e.g.ParaView).

3. Example configuration file for Turana code

[machine]
    type = "compressor"
    rpm  = 17500
    hub_outline = [ [-0.057, 0.093188 ],
                    [-0.017, 0.093188 ],
                    [ 0.029, 0.098655 ],
                    [ 0.054, 0.098655 ],
                    [ 0.136, 0.100246 ],
                    [ 0.175, 0.100246 ] ]
    shroud_outline = [ [-0.057, 0.135 ],
                       [ 0.175, 0.135 ] ]

[[machine.blade_row ]]
    name = "R1"
    rotating = true
    number_of_blades = 11
    leading_edge = [ [-0.016120, 0.093000], [-0.012625, 0.114000], [-0.010111,  0.135000] ]
    trailing_edge= [ [ 0.030103, 0.093000], [ 0.023516, 0.114000], [ 0.018109,  0.135000] ]
    inlet_angle  = [ 53.029, 59.621, 64.936]
    outlet_angle = [ -7.725, 23.717, 42.544]
    chord        = [ 0.05310, 0.05225, 0.05140 ]
    relative_thickness = [ 0.06, 0.06, 0.06 ]

[machine_blade_row.performance_model]
    type = "lieblein"

[[machine.blade_row ]]
    name = "S1"
    rotating = false
    number_of_blades = 13
    leading_edge = [ [ 0.049987, 0.099000], [ 0.049589, 0.117000], [ 0.049491, 0.135000] ]
    trailing_edge= [ [ 0.139000, 0.099000], [ 0.138000, 0.117000], [ 0.137100, 0.135000] ]
    inlet_angle  = [ 40.950, 37.920, 35.633 ]
    outlet_angle = [-10.000, -8.500, -7.000 ]
    chord        = [ 0.09570, 0.09435, 0.09300 ]
    relative_thickness = [ 0.06, 0.06, 0.06 ]

[machine.blade_row.performance_model]
    type = "lieblein"

[thermo]
    model = "perfect_gas"

[thermo.perfect_gas]
    r  = 287.058
    cp = 1004.0
    mu0 = 1.716e-5      # Viscosity at T = 273.15 K
    T0  = 273.15
    S   = 110.4
    Pr  = 0.72

[boundary_conditions]
    inlet.type  = "total_inlet"
    inlet.dir   = [1.0, 0.0, 0.0]
    inlet.p_tot = 7.5e6
    inlet.T_tot = 333.15
    outlet.type = "pressure_outlet"
    outlet.p = 8.6e6

[discretization]
    cells_spanwise    = 20
    cells_streamwise  = 100
    max_iterations    = 2000
    tolerance_p       = 1.0e-8


[plots]
    python = "python3"
    dpi    =  150
    format = "png"
    meridional_view = false
    meridional_mesh = false
    spanwise_pressure = false
    spanwise_temperature = false
    spanwise_C = false
    spanwise_beta = false