Simulation project of a smoking pipe by Tobias Holzmann

From OpenFOAM Wiki
Revision as of 09:59, 20 May 2021 by Tobias Holzmann (talk | contribs) (Added a new screencast series)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
  • contributor: Tobias Holzmann
  • affiliation: Holzmann CFD
  • contact: click here for email address
  • OpenFOAM version: v8
  • published under: GPL v3 license

Go back to Basics.

Go back to Day 15.

Simulation Project of a Smoking Pipe

The following screencasts will guide you through a complete OpenFOAM CFD project of a smoking pipe. The videos are based on the OpenFOAM v8 version.

1 Introduction

  • Describing the aim of the project
  • Get your geometry file

2 Fluid-Domain Extraction

  • Fluid region extraction
  • Repairing the geometry
  • Closing holes with different algorithms
  • Merging/Sewing methods for closing gaps
  • Tips & Tricks (maybe)
  • Checking the created surface
  • Intersections / Free boundaries

3 Surface Triangulation

  • exporting STL files from the Geometry module (similar to a common CAD export)
  • Extended surface triangulation
  • Exporting the single named triangulated surfaces
  • Giving information about the general file structure of an STL file (a reference to József Nagy's video is given)
  • Combining the single STL files to a region STL file
  • Analyzing the STL's in ParaView

4 Case Preparation for Meshing

  • Background mesh generation using Salome®
  • Mesh conversion using the »ideasUnvToFoam« application
  • Creating missing files that are needed to run snappyHexMesh (including a general but brief description of what the files do) such as controlDict, fvSolutions, fvSchemes, snappyHexMeshDict, meshQualityDict

5 SnappyHexMesh CastellatedMesh

  • Analyzing the snappyHexMeshDict
  • Explaining the control parameters of the castellatedMeshControls dictionary within the snappyHexMeshDict especially the keywords:
  • Set-up the control file of snappyHexMesh for the smoking pipe geometry
  • Creating the first castellated meshes
  • Resolving errors
  • Analyzing partially the output of the application
  • Showing the influence of the levels (x y) in combination with the feature angle approach

5.1 Complementary to Part 5

  • Refinement level
  • nCellsBetweenLevels
  • What is a castellatedMesh
  • resolveFeatureAngle
  • maxGlobalCells
  • Use the regions of the STL file for individual refinement

5.2 Cell Types during Castellation

  • Cell type generation during the castellated process
  • Explaining why we get polyhedron cells
  • Hints for ParaView how to display the cell type
  • Extract cells from the mesh in ParaView and display them correctly

6 Snapping

  • Explaining what snapping means
  • Creation of the first snapped mesh and the influence of the parameter »tolerance«
  • Resetting the »tolerance« parameter and recreating the mesh
  • Explaining »feature Snapping« 
  • Influence of nFeatureSnapIter parameter
  • Details about nSolveIter
  • Details about nRelaxIter
  • Details about nSmoothPatch and nonOrthogonality
  • Further information regarding the control parameters (Engys PDF)
  • Analysis of the mesh in general and optimization suggestions

7 Layer Generation

  • Activating the layer generation algorithm
  • The »addLayersControls« dictionary
  • The »relativeSize« description
  • The »layers« sub-directory and the control settings
  • Extended options for layer-set-up and definitions
  • First layer generation and visualization (including explanation)
  • How does snappyHexMesh add layers (algorithm idea)
  • Other meshing examples with different layer-parameters

8 Boundary Condition U

  • General information regarding the boundary condition files
  • Why the application looks at the conditions in the file 0
  • Copying existing boundary conditions
  • Analyzing the complete text file U
  • Deeper insight into the dictionary boundaryField {}
  • Adapt the boundary conditions to our first set-up

9 Boundary Condition p

  • Starting analyzing the p file located in the 0 folder
  • The units of the pressure [m²/s²] or [kg/m/s²]
  • Advantage of dividing by the density for numerics
  • The values of the pressure corresponding to the units
  • The boundaryField
  • Outlook to the next topics we are talking about

10 Final Set-up & First Simulation

  • Short introduction about what we are doing in the first simulation and explaining the simpleFoam solver
  • Start the simpleFoam solver and analyzing the output (error) while giving general information about the fvSolution and fvSchemes files
  • Explicit explanation of the fvSchemes file
  • Explicit explanation of the fvSolution file
  • Explicit explanation of the algorithm sub-dictionary we are using (brief)
  • A few words regarding the field and matrix relaxation
  • The transportProperties file that handles the fluid in use
  • The momentumTransport file that handles the methodology we are using (laminar, RAS, LES)
  • Generals hint regarding steady-state simulation and the controlDict settings - especially the time information
  • Analyze the converged data using #ParaView
  • Glyph hack for #ParaView
  • Outlook to the next video

11 Transient Analysis

  • Copy the steady-state for the new transient case
  • Starting pimpleFoam and first hints
  • Differences of icoFoam, pisoFoam, and pimpleFoam using the User Guide
  • Starting modifying the steady-state case to run a transient CFD while explaining all the differences
  • Linear Solvers
  • Analyze the output of the solver
  • Courant number and time step adjustment
  • Analyze the transient CFD output (brief) and a hint to the steady-state solution

12 codedFixedValue BC

  • Copying the transient case for the dynamic boundary case
  • Physics that we applied wrong in the prior simulation/set-up
  • Starting changing the velocity field using »codedFixedValue« boundary condition
  • Hints regarding new folders that are created during starting the solver
  • Where to find information for the boundary condition we apply
  • Starting coding inside the »codedFixedValue« boundary condition
  • The »operator==()« function
  • Apply a directed (normal to the faces) velocity, diving into Doxygen, Classes
  • How to call functions by using the »this« pointer
  • Using Doxygen, checking classes, which functions we can call
  • Getting the surface normals - calling nf() function from fvPatch class
  • Setting up the boundary condition to apply a normal velocity field
  • Get access to the time value
  • Insights in my latest rifle-silencer project

13 More Realisitc BC

  • Recall of the last video
  • Creating a more realistic boundary condition
  • Analyzing the new codedFixedValue condition in #ParaView
  • The first breath
  • The influence of the distorted cell
  • Stopping breathing and its influence
  • The influence of the distorted cell again
  • Extract the distorted cell for a closer analysis
  • The latest 3D printing project by Tobias Holzmann