Mar 27, 2014 - Hands-on: OpenFOAM commands. â CAD transformation: scaling, trim, sink. ⢠surfaceTransformPoints âscale. -yawPitchRoll. -translate.
Marine CFD applications using OpenFOAM Andrea Penza, CINECA 27/03/2014
Contents • Background at CINECA: LRC experience • CFD skills • Automatic workflow • Reliability workflow
OpenFOAM solvers for marine CFD analysis • 6DOF/2DOF solver: " interDyMFoam (dynamics, transient, optional wave motion)" fully explicit mules: CFL mandatory"
" • Unsteady 0DOF:" interFoam (transient captive) "
• 0DOF (captive): " LTSInterFoam (Local Time Stepping (quasi-static hypothesis), suitable for automation and large computational campaign)"
OpenFOAM: CFD mandatory
CFD Model ① High Reynolds simulation: RANS model employed ② Turbulence model: k-ω SST
③ Wallfunction enabled: y+ ≈ 70
Ø Standard DTMB-5415 bare hull modeled
CFD model for marine applications
CFD comparison method
Unsteady captive - CFD Results
OpenFOAM vs commercial CFD (GS)
OpenFOAM velocity field
Symmetry well caught by the solver in the velocity field Ø computations
Pressure field over hull
Free surface visualization
CFD results: agreement with theory
DTMB-5414: half hull simulations
CFD skills applied to AC72 issues
Two phase High Reynolds RANS CFD analysis Free surface simulation of high performance boat (AC72 kat) and appendages
3D complex geometries meshing Highly automated meshing process of 3D complex shapes; fullystructured, hybrid or unstrucutured mesh on problem demand.
Aerodynamics Aerodynamic of high Reynolds number RANS simulation of 3D bodies; high parallel CFD computations
2D airfoil design Wing section efficient RANS simulation. Airfoil design optimization based on RANS code data
Marine CFD automatic workflow
OpenFOAM automatic workflow evaluation Automation ① Accuracy ② Scalability ③ Reliability
Ready to CFD production on HPC cluster
Wigley-hull Ø Description: widely used in marine engineering for validation of measures Ø Standard reference
Accuracy: CFD vs experimental
Ø Wigley-hull wave elevation @ different Froude number
Accuracy: mesh sensitivity Ø Fixed Froude number. On purpose degradation of mesh reducing number of cells to investigate how total computed forces become (in)accurate Ø Considerable advantages in elapsed time required Ø Mesh size range [% cells respect to gold-standard mesh]: 5.0% - 8.0% - 36.% - 100.% (gold-standard) Ø Cores range: 12 – 24 @ PLX, CINECA cluster
Accuracy: mesh sensitivity Mesh-size
F value [N]
F diff%
100%
3,03
Used-as-GS
36%
3,05
0,6%
8%
2,98
1,6%
5%
2,93
3,3%
Ø Reducing mesh size in not critical for the absolute convergence but just delays it. Ø 5% size mesh respect to GS produces a 3% discrepancy in the total computed drag Ø 5% size mesh respect to GS requires just 2h @ 12 cpu to reach convergence Ø User choice: different accuracy, different mesh size, different cost.
Scalability Ø Different elapsed time due to different used computational cores Ø Fixed mesh size: 1.7 M cells Ø Cores range: 12 – 24 – 36 – 48 – 72 @ PLX, CINECA cluster Ø Fixed number of iterations: 5000 (up to convergence) Ø Key value indices: elapsed-time, speedup, efficiency
Scalability results
Ø Convergence reached in 2h Ø High efficiency up to 24k cells/core
Reliability Ø Different computed forces due to different Froude number e.g. inlet velocity Ø Fixed mesh size: 1.7 mln cells Ø Fixed number of cores: 36 @ PLX, CINECA cluster Ø Froude number range: 0.250 0.267 0.289 0.316 0.354 0.408 Ø Key value indices: total forces, viscous forces, pressure forces, wave height
Reliability: results Ø Stable solution reached within 4s (4k iteration for LTS solver) Ø Fixed cut-off at 6s. Ø Stable means are computed in the selected range 4s – 6s, so 4h @ 36 cpu exploiting best scalability
Wave elevation (α = 0.5)
Pressure & axial velocity
Pressure over boat hull
Axial (x) velocity over wave 3D surface
Hands-on: CFD result
DTC Hull tutorial: $FOAM_TUTORIALS/multiphase/ LTSInterFoam/DTCHull
Hands-on: OpenFOAM commands ① CAD transformation: scaling, trim, sink Ø surfaceTransformPoints –scale -yawPitchRoll -translate
⑤ Decompose domain: Ø Edit system/decomposeParDict Ø Run decomposePar
⑥ Run solver: ② Setup constants: Ø Edit constant/transportProperties Ø Edit constant/RASProperties
③ Setup BCs: Ø Edit 0.org files
④ Setup free surface initial position: Ø Edit system/setFieldDict Ø Run setFields
Ø mpirun –np … LTSInterFoam -parallel
⑦ Reconstruct domain Ø Run reconstructPar