Simulation project of a smoking pipe by Tobias Holzmann
Revision as of 09:59, 20 May 2021 by Tobias Holzmann (talk | contribs) (Added a new screencast series)
- 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.
Contents
- 1 Simulation Project of a Smoking Pipe
- 1.1 1 Introduction
- 1.2 2 Fluid-Domain Extraction
- 1.3 3 Surface Triangulation
- 1.4 4 Case Preparation for Meshing
- 1.5 5 SnappyHexMesh CastellatedMesh
- 1.6 5.1 Complementary to Part 5
- 1.7 5.2 Cell Types during Castellation
- 1.8 6 Snapping
- 1.9 7 Layer Generation
- 1.10 8 Boundary Condition U
- 1.11 9 Boundary Condition p
- 1.12 10 Final Set-up & First Simulation
- 1.13 11 Transient Analysis
- 1.14 12 codedFixedValue BC
- 1.15 13 More Realisitc BC
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