
This intermediate OpenFOAM course targets users with basic OpenFOAM experience, teaching practical tools like case structure, bash scripting, blockMesh, and parameter setup for real industrial applications.
Discover snappy hex mesh hacks for complex geometries, grasp turbulence approaches for industrial OpenFOAM applications, and master mesh convergence analysis to validate simulations.
Open a terminal to access the confirmed tutorials, navigate to the sandbox for OpenFOAM version six point one, and explore the tutorials in applications and solvers using the run subdirectory.
Explore the OpenFOAM intermediate workflow: inspect the flange case, understand the zero, constant, and system directories, and learn when to use blockMesh versus importing external geometry.
Learn how to run OpenFOAM simulations using a bash script, load the solver, apply a minimal, essential workflow, scale the input, and capture outputs in a log file for post-processing.
Run the full OpenFOAM simulation with the run script, load bash aliases, and review generated time-accurate folders containing temperature fields, gradients, and logs for post-processing.
Load and view an OpenFOAM laplacianFoam case in ParaView, inspect mesh regions and temperature gradient, and troubleshoot load issues by creating a dummy file with touch.
Explore laplacianFoam 02 in OpenFOAM intermediate, examining mesh resolution from coarse to fine for conduction and turbulence simulations, and visualize temperature fields in Kelvin with units and color coding.
OpenFOAM intermediate laplacianFoam 03 demonstrates heat transfer from freezing to high temperatures, showing temperature distributions and gradients as the system reaches thermal equilibrium, with clipping revealing interior regions.
Examine the temperature gradient across the mesh, noting interpolation between adjacent cells and how mesh refinement affects trustworthiness; adjust clipping and rescale ranges to reveal subtler patterns.
OpenFOAM intermediate lecture explains using the transport properties file to set constants and dimensions, read dt, and map unit arrays for kg, meters, seconds, and temperature in fluid dynamics.
Examine the laplacianFoam setup for thermal diffusion, showing how the diffusion equation uses the temperature field, diffusion constant, and source terms, within the OpenFOAM solver loop.
OpenFOAM intermediate laplacianFoam 07 guides initializing a temperature field with internal value 273 kelvin and patch boundaries, including zero gradient and fixed values at 273 kelvin and 573 kelvin.
Explore OpenFOAM intermediate with potentialFoam 01, copying the cylinder case to a run directory, then run potentialFoam to solve velocity and pressure and view streamlines.
Explore how OpenFOAM sets velocity and pressure fields through boundary conditions such as zero gradient, symmetry plane, and uniform fixed value, including an example where U equals (1,0,0) m/s.
Explore how pressure divided by density appears in OpenFOAM, linking force, mass, acceleration, and density, plus practical checks like block mesh and check mesh.
OpenFOAM intermediate potentialFoam 04 shows how to inspect patches and boundary conditions, such as left and right patches, zero gradient, and symmetry planes for cylinder flow.
OpenFOAM intermediate introduces potentialFoam 05, showing how to run a block-meshed, steady-state potential flow case and interpret the velocity potential and flux fields.
Use potentialFoam to rapidly approximate pressure and velocity fields with potential flow, relate lowercase and uppercase p phi fields to mass flow across cell faces, and seed more complex solvers.
OpenFOAM intermediate explores potentialFoam 07, analyzing velocity and pressure around a cylinder and showing why potential flow predicts no drag or lift, with energy balance per the Vinales equation.
Solve the scalar velocity potential (Laplace equation) to obtain the velocity field by its gradient, using a cylinder-domain flow; archive the cylinder case for later use.
Explore OpenFOAM scalar transport in incompressible pipe flow, examining a step change in diameter, velocity behavior, pressure drop, and streamlines visualization.
Learn to initialize a scale transport foam case with velocity and temperature fields, apply inlet, outlet, and no-slip wall conditions, and grasp relative temperature without an energy equation.
OpenFOAM intermediate introduces scalarTransportFoam to solve the transient transport equation for a passive scalar, including diffusion and possible source terms, with mesh from blockMesh.
Run scalar transport foam to simulate temperature evolution within a steady velocity field. Observe diffusion and convection of a passive scalar as temperature fronts spread with time.
Learn how convection and diffusion balance in the scalar transport equation using OpenFOAM, with scalarTransportFoam illustrating heat and passive scalar transport.
Explore icoFoam basics in compressible flow by setting up the elbow case, importing a mesh, applying viscosity with nu, and running plus post-processing with OpenFOAM.
OpenFOAM icoFoam case setup explains boundary conditions, two inlets with 1 m/s and 3 m/s, no-slip walls, zero-gradient outlet, and a 2d domain, plus the transient incompressible Newtonian solver.
icoFoam 03 analyzes a velocity transport equation similar to scalar transport, with kinematic viscosity nu acting as the diffusion on velocity, and discusses laminar versus turbulent regimes.
Explore icoFoam 04 simulation results focusing on mesh and initial conditions, velocity, and pressure. Observe the flow approaching a steady state and a notable pressure drop behind the mixing region.
Explore turbulence as a central, elusive fluid dynamics phenomenon and compare three modeling approaches, starting with direct numerical simulation that directly solves the Navier-Stokes equations.
Examine the constraints of direct numerical simulation for turbulence, illustrating astronomical cell counts and tiny time steps, and note refined meshes in turbulent regions for engines and weather.
OpenFOAM intermediate outlines Reynolds averaged simulations as practical turbulence modelling, using turbulent viscosity and kinetic energy, and positions large eddy simulation as a middle-ground to Navier-Stokes solutions.
Large eddy simulation balances accuracy and cost by resolving large turbulent eddies while modeling smaller scales with a subgrid-scale viscosity, bridging direct numerical simulation and Reynolds-averaged methods.
OpenFOAM intermediate highlights Reynolds-averaged turbulence as the common, efficient choice, with ARIA and simpleFoam as the flagship solver for external aerospace flows using Spalart-Allmaras.
Run the Spalart-Allmaras solver in OpenFOAM and inspect velocity and pressure around the airfoil, noting mesh refinement and a slight angle of attack that converges after about 150 steps.
Explore how the Spalart–Allmaras model analyzes velocity and pressure around an airfoil, highlighting energy transfer, lift generation, turbulence formation, and boundary layer concepts with wall functions and no slip conditions.
Set up the Spalart–Allmaras turbulence model by initializing a non-zero turbulent viscosity, often several times the kinematic viscosity, and verify convergence by adjusting the internal field values.
Set up a Reynolds-averaged k-epsilon model, solving k and epsilon to locate turbulent regions and predict pressure and velocity, using surface features, blockMesh, and snappy hex mesh.
OpenFOAM intermediate helps you set up a 3d wind flow simulation around buildings using k-epsilon with patches and initial conditions, including inlet velocity, no-slip walls, and outlet pressure.
Explore k-epsilon turbulence modeling for wind around buildings, detailing boundary conditions and wall functions, initial K and epsilon fields, and how turbulent kinetic energy and epsilon evolve near structures.
Initialize k-epsilon around buildings using a 0.09 constant, compute epsilon from k^(3/4) over a 10 m length scale, set k=1.5 everywhere, with eddy viscosity ratio options and turbulence intensity guidance.
Examine k-omega case files for the pits daily dataset, including initial fields and turbulence model setup, and compare predictions across models while noting ignored unused variables.
OpenFOAM intermediate covers k-omega results and initial values, showing how to initialize k, omega, and epsilon from turbulent intensity and velocity, with wall functions and length scales.
Learn how to initialize omega in OpenFOAM by defining it as the ratio of turbulent viscosity to molecular viscosity, and run the simulation to analyze k and epsilon.
OpenFOAM intermediate: learn setting initial conditions for LES, compare alias and arias turbulence models, and configure transport properties and zero directory initial values.
OpenFOAM intermediate: setting up mesh for les, initialize turbulence fields, apply boundary conditions, and refine the mesh to capture boundary layers.
Analyze les results by tracking turbulent kinetic energy and eddies, observe the pressure drop near the pipe expansion, and review results snapshots to assess mesh and run time.
Explore multiphase simulations with the volume of fluid method in OpenFOAM, using the sloshing tank 2d case to show rigid body dynamics, dynamic mesh, and alpha field concepts.
Set up two-fluid initial conditions in OpenFOAM using a single alpha field, with gravity, transport properties, and dynamic mesh motion for maritime simulations.
Explore meshing strategies in OpenFOAM, contrasting simple blockMesh setups with complex geometries, and learn when to use snappyHexMesh for geometry-driven mesh control.
Learn how to set up a motorbike case, generate a mesh with snappy hex mesh, and run block mesh and surface features before evaluating results.
Explore how snappyHexMesh creates a castellated mesh around a motorbike with the rider, refining near the region to form a hollow fluid domain and revealing jagged wheel edges.
SnappyHexMesh snaps the mesh to the geometry boundary, creates a thin boundary layer around the motorbike and rider, and builds a cast-related mesh that preserves surface features.
Explore the snappy hex mesh dict file and how to tweak cast led mesh, snapping, and layer options using geometry, refinement boxes, and feature angles.
Create a sphere in Blender, export as STL, and use it with snappy hex mesh in OpenFOAM, saving geometry in the tri surface folder.
Import the sphere geometry for OpenFOAM meshing; update references in surface features and snappy hex mesh, check size, position, and orientation with blockMesh and parren view.
OpenFOAM intermediate: visualize and position an imported sphere within the mesh, adjust its size, and move it by editing SDL geometry in constant directory using the axes for centering.
Demonstrates using surfaceTransformPoints to translate and scale a sphere, generate sphere1–sphere3, adjust for origin-centered scaling, and prepare meshing with snappy hex mesh and a centered bounding box.
Learn to build a castellated mesh around a sphere for OpenFOAM, refine around the sphere, set a large bounding box, and snap the mesh with snappy hex mesh.
Master mesh generation for a sphere in OpenFOAM using snappy hex mesh, with block meshes, refinement regions, and boundary layers for fluid dynamics simulations.
Assess OpenFOAM CFD results by examining residuals to gauge how close the solution is to the governing equations. Use log files and grep to track residual behavior across steps.
Run checkMesh to detect catastrophically wrong meshes and reveal topology and connectivity issues. Strive for aspect ratios around one and monitor polyhedra versus hex elements.
Compare simulations to physical experiments with scale models and matching Reynolds number, seek analytical or drag coefficient checks, and adjust the mesh to align with experimental or analytical results.
Explore mesh convergence by analyzing residuals and refining the mesh to test solution trust across 3D meshes. Halving cell distance increases cells and enables Richardson error estimates for stagnation pressure.
Conduct a mesh convergence study by creating three mesh refinements using blockMesh and compare results to identify a region of convergence.
Learn to perform mesh convergence with blockMesh by scaling x and y resolutions using a six times table, ensuring whole numbers for course, middle, and fine meshes.
Explore mesh convergence in OpenFOAM by building three meshes of increasing resolution and comparing their solutions under identical boundary conditions to gauge the error.
Run multiple OpenFOAM cases with identical settings for mesh convergence using a bash script that chains commands with semicolons and writes separate log files.
Compare mesh convergence by overlaying line plots of epsilon, k, and nu_t across fine, medium, and course cases, and export the peak pressure data in csv and svg formats.
Open the csv output in a spreadsheet, extract peak pressure for three meshes, and compare results to illustrate mesh convergence, with the finest mesh showing the highest peak.
Analyze mesh convergence in OpenFOAM using order of convergence, Richardson extrapolation, and the grid convergence index. Assess peak pressure predictions and validate convergence domains with the provided formulas.
Explore mesh convergence in OpenFOAM by applying formulas for p, F0 and GCI, perform Richardson extrapolation, and assess grid-induced error with a safety factor.
Analyze mesh convergence using the grid convergence index (GCI), refinement ratio, and order of convergence p, verify the region of convergence, and explore Richardson extrapolation for improving accuracy.
Plot residuals from an OpenFOAM case by extracting time-step residuals from the log file of simpleFoam, then graph them and apply a log scale to reveal convergence behavior.
The results are in - OpenFOAM can solve all the major industrial CFD problems that established competitors can. The power to design anything from jet airplanes and engines to pipes and heat exchangers is a simple download away. Unfortunately, as I learned the first time I used it, OpenFOAM has a very steep learning curve. Having learned the basics several years ago I quickly realised just how complicated CFD could get. Even though I knew how to set up a case and use blockMesh with some simple solvers it wasn't always clear how to do realistic problems with knowledge of the basics. The principle difficulties were:
- Turbulence: all the really interesting flows included some aspect of this and it's often more art than science!
- Meshing: simple meshes can't account for fighter jet bodies or turbine blades, I knew there must be a better way.
- Mesh Behaviour and Convergence: without solutions with which to compare I never knew whether I could trust my results.
I made this course with my younger self in mind. It's these things, among other tips and tricks, that gave me the most trouble in practice and which require the most experience/correct techniques to do well. The aim of this course, by its end, is to show you how to do this. There are many specialist topics that we can't cover and to learn CFD to an industry standard (where salaries past $100,000 a year are not unusual) could easily span a PhD and many years experience. Even so, there are a few general skills you will need again and again when you face practical problems in CFD. If you can master these, in my experience, you can pick up a lot of the rest as you go and quickly acquire the skills that are already propelling modern engineering into the future.
Disclaimer:
This course is not a substitute for a degree in aerospace engineering or specialist consultancy, by purchasing this course you agree that the course instructor is in no way liable for any disputes, claims, losses, injuries, or damage of any kind that might arise out of or relate to the content of this course or any supporting communications between instructor and student.