Turbomachinery CFD Configuration File Manual 17.02
Turbomachinery CFD Configuration File Manual 17.02
Turbomachinery CFD Configuration File Manual 17.02
com [email protected]
Turbomachinery CFD configuration file manual
Configuration File
KEYWORD VALUE # comments
#Machine type
type pump | fan | compressor | turbine | waterTurbine #All Templates. Mandatory.
#Simulation settings
processors 4 #AT M Number of parallel CPU core for simulation [ - ]
bindToCore true #AT NM Lock processes to cores to prevent their migration
hosts node1 node2 node3 #AT NM Remote machines for MPI processes
transient no | yes | semiAMI | semiMXP #AT NM Append transient simulation after stationary; default “no”
Co 0.9 #AT NM Courant number (transient only)
numberOfSpeedlines 3 #AT M Number of speedlines (different rotation speeds)
1_numberOfPoints 3 #AT M Number of points for a speedline (share rotational speed)
1_iterations 1000 1000 1000 #AT M Number of iterations for each point of a speedline [ - ]
1_transientTime 1.0 1.0 1.0 #AT NM Runtime of transient simulation in seconds [ s ]
1_transientRevolutions 5 5 5 #AT NM Runtime of transient simulation in impeller revolutions [ - ]
pMin -2000 #AT NM [m2s-2] or [Pa] bounding value
pMax 5000 #AT NM [m2s-2] or [Pa] bounding value for robust convergence
UMax 1000 #AT NM [m/s] bounding value for robust convergence
rhoMin 0.1 #AT NM [kg/m3] bounding value for robust convergence
rhoMax 20 #AT NM [kg/m3] bounding value for robust convergence
TMin 273.15 #AT NM [K] bounding value for robust convergence
TMax 1000 #AT NM [K] bounding value for robust convergence
p_relax 0.2 #AT NM [-] pressure under-relaxation
U_relax 0.5 #AT NM [-] velocity under-relaxation
rho_relax 1.0 #AT NM [-] density under-relaxation
tt_relax 0.2 #AT NM [-] temperature & turbulence under-relaxation
nonOrthoCorrectors 0 #AT NM [-] non-orthogonality-compensating nested pressure iterations
numericalOrder first #AT NM [-] “first” or “second” numerical order
averagingWindow 100 #AT NM [-] do the averages over last n iterations
transientWindow 0.1_revolutions #AT NM [-/s] averaging window for transient calculation (or _seconds)
snapshotInterval 0 #AT NM [s] secondary write for transient calculation
convergenceCheck true #AT NM monitor convergence and auto-skip to next point
userDefinedFunctions scripts/run.py afterWrite #AT NM custom script, see explanation in notes below
#Operating point (very very important)
angularVelocity -185 -190 -195 #AT M Rotation speeds for all speedlines [rad/s]
revolutions -1770 -1870 -1970 #AT NM Rotation speeds for all speedlines [RPM]
inletBoundaryCondition massFlowRate | directedMassFlowRate
| volumetricFlowRate | directedVolumetricFlowRate
| totalPressure #AT M Selected inlet boundary condition option
1_massFlowRate 0.126 0.124 0.120 #AT, NM BC value [kg/s]
1_volumetricFlowRate 0.126 0.124 0.120 #incompressible fan, incompressible turbine, pump, NM , BC [m3/s]
1_totalPressure 200000 150000 100000 #AT NM BC value [Pa]
1_totalTemperature 1000 900 800 #AT M if compressibility compressible [ K ] BC value
1_meridionalAngle 90 #AT M for directed inlet BC [ degrees ] BC parameter
1_circumferentialAngle 0 #AT M for directed inlet BC [ degrees ] BC parameter
outletBoundaryCondition outletVent | fixedPressure #AT M Selected outlet boundary condition option
outletVentResistance 0 4 8 #AT NM resistance factor value [ - ]
outletVentRelaxation 0.1 #AT NM relaxation factor value [ - ], for experienced users
outletVentMaxPressure 200000 #AT NM maximum outlet pressure value [Pa]
1_fixedPressure 100000 110000 120000 #AT NM average pressure value [Pa]
inletTurbulentEnergyIntensity 0.05 #AT M BC for k, Turbulent intensity, typically 2%-5% [ - ]
inletTurbulentDissipation 100 #AT M BC for omega [ 1/s ]
#Physical settings & Fluid properties
fluidName water | air #AT M name of the fluid
compressibility incompressible | compressible #AT M fluid flow compressible or incompressible
referenceDensity 1.2 #AT M Reference Density [kg/m3]
dynamicViscosity 1.8e-5 #AT M Dynamic viscosity [Pa*s]
gravitationalAcceleration 0 0 0 #AT NM Gravity in Cartesian coordinates x y z [m/s2]
referencePressure 101325 #AT M Reference pressure [Pa]
referenceTemperature 293.15 #AT M if compressibility compressible - Ref. temperature [K]
transport sutherland | constant #AT NM Transport model; see notes below
turbulence kOmegaSST | kEpsilon #AT NM Turbulence model; see notes below
molarWeight 28.9 #AT NM Molar weight [kg/mol] – Air = 28.9
heatCapacityRatio 1.4 #AT NM If totalPressure BC used, Heat Capacity Ratio Cp/Cv [-]
Cp 1004 #AT NM Heat Capacity [J/(kg K)]
R 287.1 #AT NM Gas Constant [J/(kg K)]
Date: 2016-11-01
1
www.cfdsupport.com [email protected]
cavitationRisk false #AT NM Whether to evaluate cavitation properties.
#Initial condition settings (not very important)
initialPressure 101325 #AT M IC for static pressure [ Pa ]
initialVelocity 0 0 10 #AT M IC for velocity vector x y z [ m/s ]
initialTemperature 290 #AT M if compressibility = compressible [ K ]
initialTurbulentEnergy 1.5 #AT M IC for for turbulent kinetic energy k [m2/s2]
initialTurbulentDissipation 100 #AT M IC for for spec. rate of diss. of turb. kin. energy omega [ 1/s ]
#Geometrical information
scaleFactor 0.001 #AT M Scale factor. meters against .stl files
origin 0 0 0 #AT M Any point of axis of rotation
axis 0 0 1 #AT M Directional vector of axis of rotation
numberOfRegions 3 #AT M Number of components
featureEdgesIncludedAngle 0 #AT NM Angle used to extract STL edges; 0 = only boundaries
#Component information
1_wheelDiameter 0 #AT NM Wheel-Impeller-Rotor diameter
1_filePath ./STL #AT M This is the path to .stl files
1_surfaceHookUp true | false #AT NM Hook-up the STL files, default = true.
1_meshPath ./mesh_rotor #AT NM Path to an existing external OpenFOAM mesh.
1_componentName rotor #AT NM Custom name for the component (used in patch names)
1_internalPoint 0 0 -200 #AT M Material point coordinates inside the fluid flow
1_backgroundMeshSize 4.0 4.0 4.0 #AT M Mesh size in each direction (affected by scale factor)
1_inlet pump_pipe_inlet #AT NM Inlet surface(s)
1_outlet pump_pipe_outlet #AT NM Outlet surface(s)
1_rotationAMI pump_per1 pump_per2 #AT NM Periodic surfaces, in pairs.
1_translationAMI name_per1 name_per2 #AT NM Translated coupled surfaces, in pairs.
1_internalAMI name_per1 name_per2 #AT NM Internal patches coupled through the AMI.
1_numberOfPeriodicSegments 6 #AT NM Periodic multiplier, number of segments.
1_wall pump_pipe_wall pump_pipe2_wall #AT NM Rigid wall surface(s)
1_2_inletInterface pump_rotor_inlet #AT NM inlet from other component
1_2_numberOfMixingPlanes 0 #AT NM number of averaging planes, default=1 - if 0 then cyclicAMI is
1_3_outletInterface pump_rotor_outlet #AT NM outlet to other component
2_wheelDiameter 80 #AT NM Wheel-Impeller-Rotor diameter
2_filePath ./STL #AT M This is the path to .stl files
2_internalPoint 0 0 -200 #AT M Material point coordinates inside the fluid flow
2_cylindricalBackgroundMesh true | false #AT NM Background Mesh can be cylindrical or Cartesian, default=false
2_backgroundMeshSize 4.0 4.0 4.0 #AT M Mesh size in each direction (affected by scale factor)
2_inlet pump_rotor_inlet #AT NM Inlet surface(s)
2_outlet pump_rotor_outlet #AT NM Outlet surface(s)
2_wall pump_rotor_wall pump_pipe2_wall #AT NM Rigid wall surface(s)
2_blade pump_rotor_123 pump_rotor_456 #AT NM Blade surface(s)
2_hub pump_rotor_hub #AT NM Hub surface(s)
2_shroud pump_rotor_shroud #AT NM Shroud surface(s)
2_bladeHubFillets pump_rotor_hfill #AT NM Hub-fillets surface(s)
2_bladeShroudFillets pump_rotor_sfill #AT NM Shroud-fillets surface(s)
2_bladePressureSide pump_rotor_PS #AT NM Blade pressure side surface(s)
2_bladeSuctionSide pump_rotor_SS #AT NM Blade suction side surface(s)
2_bladeLeadingEdge pump_rotor_LE #AT NM Blade leading edge side surface(s)
2_bladeTrailingEdge pump_rotor_LE #AT NM Blade trailing edge side surface(s)
2_bladeCap pump_rotor_TE #AT NM Blade caps surface(s)
2_rotatingRegion true | false #AT NM If the region is rotating or not, default is false
2_cutWater pump_rotor_CW #AT NM Cut water component(s)
2_bladeCap-clearance 0.5 #AT NM Distance between bladeCap and shroud for unshrouded impelers
2_bladeTrailingEdge-toInterfaceDistance 1.0 #AT NM Distance between trailingEdge and outlet interface
2_bladeLeadingEdge-toInterfaceDistance 1.5 #AT NM Distance between leadingEdge and inlet interface
2_rotatingPatches pump_rotor_hubTip #AT NM list of rotating patches
2_3_numberOfMixingPlanes 1 #AT NM number of averaging planes, default=1 - if 0 then cyclicAMI is used
3_wheelDiameter 0 #AT NM Wheel-Impeller-Rotor diameter
3_filePath ./STL #AT M This is the path to .stl files
3_internalPoint 0 0 -200 #AT M Material point coordinates inside the fluid flow
3_backgroundMeshSize 1 1 1 #AT M Mesh size in each direction (affected by scale factor)
3_inlet pump_spiral_inlet #AT NM Inlet surface(s)
3_outlet pump_spiral_outlet #AT NM Outlet surface(s)
3_wall pump_spiral_wall pump_cutWater_wall #AT NM Rigid wall surface(s)
#Post-processing
numberOfEfficiencyProbes 1 #AT NM How many reports to generate (default: 1)
1_inletPatches pump_pipe_inlet #AT NM Inlet patches for the first report (default: inlet of first component)
1_torquePatches pump_rotor_PS pump_rotor_PS #AT NM Torque patches for the first report (default: blades of rotating comps.)
1_outletPatches pump_spiral_outlet #AT NM Outlet patches for the first report (default: outlet of last component)
#Mesh parameters available (each component)
Date: 2016-11-01
2
www.cfdsupport.com [email protected]
1_snap true; #AT NM Important.
1_addLayers false; #AT NM Important.
1_castellate-maxGlobalCells 10000000; #AT NM Important.
1_castellate-maxLocalCells 10000000; #AT NM
1_castellate-minRefinementCells 10; #AT NM
1_castellate-maxLoadUnbalance 0.10; #AT NM
1_castellate-nCellsBetweenLevels 1; #AT NM
1_castellate-featureEdgesLevel 0 #AT NM
1_castellate-default-refinementSurfaces 1 4 #AT NM Important.
1_inlet-refinementSurfaces 1 4 #AT NM Important.
1_outlet-refinementSurfaces 1 4 #AT NM Important.
1_wall-refinementSurfaces 1 4 #AT NM Important.
1_blade-refinementSurfaces 1 4 #AT NM Important.
1_hub-refinementSurfaces 1 4 #AT NM Important.
1_shroud-refinementSurfaces 1 4 #AT NM Important.
1_bladeHubFillets-refinementSurfaces 1 4 #AT NM Important.
1_bladeShroudFillets-refinementSurfaces 1 4 #AT NM Important.
1_bladePressureSide-refinementSurfaces 1 4 #AT NM Important.
1_bladeSuctionSide-refinementSurfaces 1 4 #AT NM Important.
1_bladeLeadingEdge-refinementSurfaces 1 4 #AT NM Important.
1_bladeTrailingEdge-refinementSurfaces 1 4 #AT NM Important.
1_bladeCap-refinementSurfaces 1 4 #AT NM Important.
1_cutWater-refinementSurfaces 1 4 #AT NM Important.
1_cyclicAMI-refinementSurfaces 1 4 #AT NM Important.
1_internalAMI-refinementSurfaces 1 4 #AT NM Important.
1_castellate-resolveFeatureAngle 30; #AT NM
1_snap-nSmoothPatch 3; #AT NM
1_snap-tolerance 2.0; #AT NM
1_snap-nSolveIter 30; #AT NM
1_snap-nRelaxIter 5; #AT NM
1_snap-nFeatureSnapIter 10; #AT NM
1_snap-implicitFeatureSnap true; #AT NM
1_snap-explicitFeatureSnap true; #AT NM
1_snap-multiRegionFeatureSnap true; #AT NM
1_layers-relativeSizes true; #AT NM Important.
1_layers-defaultWall-nSurfaceLayers 3; #AT NM Important.
1_layers-expansionRatio 1.2; #AT NM Important.
1_layers-finalLayerThickness 0.25; #AT NM
1_layers-minThickness 0.05; #AT NM
1_layers-nGrow 0; #AT NM
1_featureAngle 90; #AT NM
1_layers-nRelaxIter 25; #AT NM
1_layers-nSmoothSurfaceNormals 10; #AT NM
1_layers-nSmoothNormals 15; #AT NM
1_layers-nSmoothThickness 10; #AT NM
1_layers-maxFaceThicknessRatio 0.3; #AT NM
1_layers-maxThicknessToMedialRatio 0.5; #AT NM
1_layers-minMedianAxisAngle 90; #AT NM
1_layers-nBufferCellsNoExtrude 0; #AT NM
1_layers-nLayerIter 50; #AT NM
1_quality-maxNonOrtho 65; #AT NM
1_quality-maxBoundarySkewness 20; #AT NM
1_quality-maxInternalSkewness 4; #AT NM
1_quality-maxConcave 80; #AT NM
1_quality-minVol 1e-16; #AT NM Important.
1_quality-minTetQuality -1e+30; #AT NM
1_quality-minArea 1e-13; #AT NM
1_quality-minTwist 0.02; #AT NM
1_quality-minDeterminant 0.001; #AT NM
1_quality-minFaceWeight 0.02; #AT NM
1_quality-minVolRatio 0.01; #AT NM
1_quality-minTriangleTwist -1; #AT NM
1_quality-nSmoothScale 4; #AT NM
1_quality-errorReduction 0.75; #AT NM
1_cylindricalBackgroundMeshGrading 1 1 #AT NM gradients g1 g2
1_cylindricalBackgroundMeshRadii 0.05 0.1 0.2 #AT NM radiuses r0 r1 r2 default: r2/4 r2/2 maxR*1.01
1_cylindricalBackgroundMeshWarp 0 #AT NM default: 0
X_tolerance 1e-08 #AT NM linear solver tolerance of quantity X
X_relTol 1e-03 #AT NM linear solver relative tolerance of quantity X
Date: 2016-11-01
3
www.cfdsupport.com [email protected]
Date: 2016-11-01
4
www.cfdsupport.com [email protected]
General Notes & Recommendations:
1. Turbomachinery CFD input is the surface geometry and physical settings being read from Turbomachinery
CFD Configuration File (*.tcfd). The configuration file can be either created manually (e.g. modifying existing
tutorial), or configuration file can be even created in special graphic interface in ParaView called TCFDSource.
Turbomachinery CFD configuration file is described in TCFD file format manual:
Turbomachinery-CFD-Configuration-File-Manual.pdf
2. Any number of surface model components is allowed
3. Each component has to be waterproof, typically inlet + wall + outlet
4. .STL surface model files are recommended in ASCII format
5. Ideally, each component surfaces should fit vertex-to-vertex. Not necessary, but safest.
6. All the interfaces between two components should overlap, or at least to fit each other very well
7. Mesh size - the most important mesh parameter of each component is 0_backgroundMeshSize, which is a basic
mesh block (cell) to be refined. Three dimensions x y z in meters (scaleFactor parameter may change the
dimension).
8. CFD Processor has several options. Custom case name. Writing the case. Writing the mesh. Run the
simulation. Write the report. See all the options: $ CFDProcessor -help
9. Log files - are located in ./logRun/*
10. Number of parallel processors - is set in configuration file within parameter processors
11. For any CFD simulations it is not suitable to have “Trailing edge fixed on outlet” of the Impeller. It is
recommended, when simulate, to extend the hub and shroud a little bit.
12. compressibility: pump and waterTurbine are always incompressible; compressor and turbine are always
compressible; fan can be both compressible and incompressible
13. rotatingPatches: If rotatingRegion is false. RotatingPatches (if any) have rotatingWallVelocity (symmetric
rotation – no MRF)
14. Rotation direction has signum minus for clockwise direction (right hand rule)
15. Cavitation risk is evaluated by function object cavitation. Saturated vapour pressure is evaluated using
Antoine equation (see wikipedia), coefficients are taken from NIST. Relevant entries are referenceTemperature
and referencePressure. Field cavitation is saved alongside other fields, which has values either 1 (cells with
pressure below saturated vapour pressure) or 0 (other cells). Statistics such as number of cavitating cells, their
volume and percentage of cavitating volume from whole computational domain are printed each time step.
16. Convergence Auto Stop - if convergenceCheck is true - each simulation point run is skipped - if the total
machine efficiency change is lower than 0.1% over the last X iterations. X is equal to averagingWindow value.
17. Circumferential and Meridional angle - tangent is chosen in such a way that axis, radial and tangent (in this
order) form a right-handed coordinate system. U is relative velocity, Um is projection of U into meridional plane,
Ur is projection of U into radial plane, Ut is projection of U into tangential plane. Meridional angle α is angle
between axis and Um. It is positive, when Um points away from axis and negative when Um points toward axis.
Axial circumferential angle βa, is angle between tangent and Ut. Radial circumferential angle βr is angle
Date: 2016-11-01
5
www.cfdsupport.com [email protected]
between tangent and Ur. It is positive when Ur points out (of the cylinder on the picture), it is negative when Ur
points in.
18. Cylindrical background mesh can be used. Three radiuses, two gradients and warping.
19. CFD Processor is capable of scheduling MPI jobs to remote machines. This can be used with OpenMPI in Linux.
The keyword “hosts” in the configuration file is followed by a list of nodes (hostnames or IP addresses).
Password-less SSH access to those machines must be possible and the OpenMPI package, as well as the
calculation directory itself, must be accessible at the same filesystem path, e. g. through the use of a disk
shared among the machines. The parameter “bindToCore” is ignored when “hosts” is used.
Date: 2016-11-01
6
www.cfdsupport.com [email protected]
20. *-clearance - non-mandatory parameter which can be used to improve robustness of meshing at clearance
between bladeCap and shroud
21. *-toInterfaceDistance - non-mandatory parameter which can be used to improve robustness of meshing at
small gaps between particular part of blade and neighbouring geometry
22. Currently, there are two possible transport models: sutherland (default) and constant. If “sutherland” is used,
then is it possible to set also the parameters of the Sutherland model: As (default 1.512e-06) and Ts (default
120). If “constant” is used, then the parameter Pr (default 0.7 for air, 7 for water) are available.
23. There are three possible turbulence models: kOmegaSST (default), kEpsilon and laminar. The names and
default values of the optional parameters of the models are: kOmegaSST-alphaK1 (0.85), kOmegaSST-alphaK2
(1.00), kOmegaSST-alphaOmega1 (0.5) kOmegaSST-alphaOmega2 (0.856), kOmegaSST-beta1 (0.075),
kOmegaSST-beta2 (0.0828), kOmegaSST-betaStar (0.09), kOmegaSST-gamma1 (0.5555556), kOmegaSST-gamma2
(0.44), kOmegaSST-a1 (0.31), kOmegaSST-b1 (1.00), kOmegaSST-c1 (10.0), kOmegaSST-F3 (false); kEpsilon-Cmu
(0.09), kEpsilon-C1 (1.44), kEpsilon-C2 (1.92), kEpsilon-C3 (-0.33), kEpsilon-sigmak (1.00), kEpsilon-sigmaEps (1.30).
24. CFD Processor allows a straighforward extension of the built-in workflow by user-defined functions. These
take form of a Python scripts and can be executed in several places along the workflow. The keyword for
setting used defined functions is userDefinedFunctions and has the following syntax:
userDefinedFunctions script locations [ script locations … ]
The word script is a path (no spaces!) to the Python script to be executed. During write-out of the case is will be
written to the subdirectory “scripts” of the case directory and executed from that place. The word locations is a
comma-separated list (no spaces!) of execution points during the workflow, when the script is to be executed.
The possible execution points are: afterWrite, beforeMeshing, afterMeshing, beforeCalculation, afterCalculation,
beforeEverySpeedline, afterEverySpeedline, beforeReport, afterReport. The script can use common Python
functions and also two special predefined functions SetEntry and WriteFile. E.g.
SetEntry(‘system/fvSolution’, ‘SIMPLE/nNonOrthogonalCorrectors’, ‘5’)
WriteFile(‘system/fvSolution’)
Finally, the special predefined variable CaseDirectory contains full path to the directory with the case.
25. END.
Date: 2016-11-01