
Build your foundation in OpenFOAM using the finite volume method to solve differential equations on three-dimensional meshes, yielding cell-wise fields for fluid dynamics, solid mechanics, and electromagnetism.
The course starts with fundamentals of case building in OpenFOAM, then teaches meshing and boundary conditions, and finally explores solvers and features across elasticity, plasticity, temperature, and time-dependent problems.
Set up and run simulations in OpenFOAM and foam-extend, using solver tutorials to build custom solutions, and explore linear elastic, plastic, and thermal material models with friction.
Configure OpenFOAM on Windows 10 by enabling Windows Subsystem for Linux, installing Ubuntu, and accessing Linux files from Windows with mounting and basic bash commands.
Learn how to transfer files between Linux and Windows on Windows 10 using a mounted path, work in the Linux home directory, and use copy and move commands.
Learn to run Linux GUI tools on Windows with Xming, fix X server display errors, and access Parivar and Palmview from Windows by exporting the display.
Download OpenFOAM from openfoam.org and choose ubuntu/linux, macOS, or Windows emulation; install via the linux terminal using copy-paste commands and add the apt key.
Update the app package manager's repository and use super user privileges to prepare for installation. Install OpenFOAM 7 with the -y option to auto-confirm prompts, typically downloading about eighty megabytes.
Patch OpenFOAM 7 with apt-get updates and upgrades, then selectively upgrade only OpenFOAM 7, and configure bashrc to load OpenFOAM environment variables and use GenY to manage multiple versions.
Master managing multiple OpenFOAM installations with aliases that load different environment variable sets. Use the dot command to source the bashrc and avoid version conflicts, then test with blockMesh.
Navigate and use OpenFOAM 7 installation under /opt/openfoam7, explore tutorials and solver categories (combustion, compressible, incompressible, heat transfer), focus on stress analysis for practical results.
Explore the run folder in OpenFOAM, identify solid displacement foam and solid equilibrium displacement foam tutorial cases and their solvers, then safely copy a case to your home directory.
Explore how OpenFOAM organizes a case with run scripts and a zero directory, then build the mesh and run the simulation to obtain displacement and temperature fields.
Discover how OpenFOAM uses control dict to tailor time steps, snapshot frequency, and batch restarts, enabling efficient CFD simulations with configurable increments and memory management.
Explore how OpenFOAM solves problems using solver algorithms and boundary conditions, and how to set up case architecture with block mesh, snappy hex mesh, control dict, and constants for simulations.
Understand how the allrun bash script orchestrates OpenFOAM tasks, notably blockMesh and solid displacement, and how post-processing generates stress fields from the displacement field.
Discover how to visualize OpenFOAM meshes with ParaView, load blockMesh outputs, and explore a plate with a hole domain, switching between result fields to analyze geometry and symmetry.
Explore the OpenFOAM mesh visualization, observe square prism cells, 2D versus 3D limitations, and how simple face-based rules propagate displacement across the mesh.
Run block mesh and solid displacement foam, then analyze iteration-based residuals that decrease from high to low, revealing trustworthiness of the solution and differences between D X and D Y.
Explore how OpenFOAM solutions reveal displacement and stress distributions around a hole, using sigma fields and color maps to identify peak stress and its implications for plate design.
Learn how initial values files set displacement and other fields in OpenFOAM, and how boundary faces and boundary conditions are defined. Find key unit conventions in the OpenFOAM user guide.
Set symmetry plain on the left and bottom to model a single plate with a hole, and apply 10,000 pa rightward traction with zero pressure in a 2d OpenFOAM setup.
The temperature initial values file T defines a uniform 300 kelvin temperature across a two dimensional domain, with zero gradient boundaries and symmetry planes, while front and back are empty.
Learn to mesh with blockMesh in OpenFOAM, achieving quick, high-quality meshes for simple geometries while following conventions to ensure successful simulations.
Learn to build a simple blockMesh for OpenFOAM by starting from scratch, defining vertices and boundaries, and converting a complex setup into a single cube for easy initialization.
Convert geometry to a block mesh by listing eight corner coordinates in zero-based order, and apply the right-hand rule to define outward boundary faces and patches.
Define coordinates and vertices for each block face in blockMesh, form the domain with a ten by ten by one cell grid, and verify boundary faces for an OpenFOAM mesh.
Master blockMesh patch setup in OpenFOAM by applying right hand rule. Define edge sequences and coordinates, manage local x/y directions, and run blobfish to verify a near two dimensional domain.
Generate a block mesh with blockMesh, color faces via mesh parts, and verify orientation with coordinate axes. Review initial conditions, set 300 kelvin and displacement, run, and view results.
Explore blockMesh fundamentals for creating geometries with blocks, applying symmetry and hole features, and assigning boundary conditions; use snappy hex mesh for complex geometry.
Install blender and swift block to enable meshing for openfoam, guiding linux and windows installation, python and pip setup, and blender add-ons configuration.
Discover how to run blender compatibly for geometry creation in OpenFOAM workflows, weigh blender against other options, and use right-click to select, middle-mouse rotate, pan, and zoom, then delete cameras.
Explore Blender basics: object mode, adding a cube mesh, and editing vertices; switch views, see vertices through the object, and note block mesh limitations for simple geometries.
Master Blender basics part 2 by learning selection tools for faces, edges, and vertices, plus through-object view, axis-constrained grabs, and keeping normals correct.
Learn Blender basics to build a simple beam by extruding constrained edges, create two blocks for block mesh, and use swift block to generate a block dict for OpenFOAM.
Learn Blender basics for creating structural ribbing by extruding faces, aligning vertex sets with active element pivots, and scaling along the x axis to achieve precise alignment.
extrude the selected faces to form connecting columns, align to the axis with the green constraint, then delete faces to create a hollow gap for a block in the middle.
Explore closing holes in a mesh using vertex, edge, and face select in Blender, pressing F to create faces, ensuring a completely closed domain for OpenFOAM boundary conditions.
Speed up blender workflows by mastering vertex selection, F operations to create edges and faces, and extrude techniques to build a fully closed mesh ready for swift block meshing.
Activate the swift block add-on in Blender from preferences and save your geometry before blocking. Select nothing or everything, press build blocking, then deselect blocks with get blocked.
Explore block meshing workflows in swiftBlock with preview mesh, edge mapping, and selective edge cell counts to tailor two-dimensional simulations in OpenFOAM.
Set the edge cells to 30 percent and reduce the z-axis to one cell. Use parallel edges to refine near edges, then adjust grading and boundary conditions at the bottom.
Select z direction faces, create a patch, assign empty for z and walls for others; define front load, back load, and bottom patches with constant displacement to zero in blockMesh.
Export the blockMeshDict using swift block, organize the foam extend workflow, and manage the case directory structure including system, geometry, and constant folders.
Swift Block generates blockMeshDicts to create complex vertex maps and edge gradings, with an option to use simple grading for a uniform block and to prepare initial and boundary conditions.
Explore how swiftBlock reads a blockMeshDict and uses Blender with zero-based block IDs, then adjust last blocks and map local X, Y, Z to global axes, rebuild, and verify.
edit the initial values file in OpenFOAM by copying boundary patches, setting correct boundary types, and applying a traction boundary, with two-dimensional simulation using empty front and back boundaries.
Apply tutorial-based initial values for temperature in OpenFOAM, adapting the boundary conditions to your case. Use a 2d domain with zero-gradient boundaries, symmetry, or empty patches for consistency.
Ensure consistent naming across patch names and the T file when setting initial values for OpenFOAM. Configure front load, backload, and patch bottom boundary conditions to control forces and movement.
Explore how GMSH compares to block mesh and blender for generating meshes, emphasizing structured vs unstructured options, accuracy trade-offs, and workflow with a text-based settings file.
Install gmsh, create geometry with points, generate a mesh, and convert the mesh for OpenFOAM using a .geo file; follow the geometry, elementary entities, and physical groups steps.
Construct a square in Gmsh by specifying coordinates and drawing straight lines between points, rotate and zoom view as needed, then edit geo file to manage points, lines, and comments.
Select the square boundary to define a plane surface, press e to exclude holes, then extrude in the z direction with a vector to form a wedge for meshing.
Build a 2d Gmsh mesh for OpenFOAM by extruding a plane, setting z-thickness, and using recombine for quadrilaterals, then define and name five boundary surfaces for proper boundary conditions.
Toggle surface and volume visibility in GMSH, restart when needed, and add the physical volume for the domain. Then prepare the geometry for meshing with Camonte Mesh.
Define a 3D mesh with a structured distribution by setting transfinite lines, equal cell divisions across sides, and a one-cell-thick z-direction, using progression to tailor cell counts.
Orient boundary points in GMSH with the right-hand rule and clockwise ordering around the z axis, then combine front and back transponder surfaces in the GUI to create a mesh.
Export the gmsh mesh and convert the MSH file for OpenFOAM in your case directory. Check import with checkMesh and view the result in paraview, noting boundary field warnings.
Explore fundamentals of OpenFOAM, including file structure with initial values, constant and system directories, and meshing trade-offs between structured and unstructured approaches, using blockMesh and ParaView to inspect results.
Gain modeling experience with OpenFOAM by exploring mesh quality, convergence analysis, and residuals, then compare CFD results to analytical solutions and experiments to ensure real-world validity.
Install foam extend 4.1 from source on Ubuntu via the terminal, following the OpenFOAM wiki, update packages, install prerequisites, and clone the code into a dedicated home directory.
Learn to install foam-extend 4.1 on ubuntu by cloning from GitHub, creating a dedicated folder, compiling, sourcing environment variables, and managing multiple OpenFOAM versions with aliases, including behind-firewall options.
Learn how to manage multiple OpenFOAM installations with bash aliases, using source or dot to load environment variables, and how to add aliases for foam-extend 4.1 in your bashrc.
Install Foam-Extend 4.1 and verify by running the allwmake first install, then troubleshoot alias and environment paths to ensure OpenFOAM runs without errors.
Install foam-extend 4.1, run the alias, and explore the solid mechanics toolkit, including elastic solid foam and the analytical plate hole tutorial to validate CFD results.
Explore the foam-extend plate hole case in OpenFOAM, visualizing the sigma stress field and comparing simulated results with the analytical plate hole solution, highlighting boundary conditions and modeling choices.
Explore how pressure values compare to the analytical solution for a plate with a circular hole in OpenFOAM. Refine mesh fineness and geometry to reconcile finite-plate behavior with infinite-plate assumption.
Increase mesh fineness by doubling the X and Y cell counts across all blocks to test convergence to the analytical solution, ensuring matching faces to avoid block mesh errors.
Compare the maximum stress between the original and finer mesh, noting the peak rises from 3.0e4 to 3.6e4 pascals and edge concentration reveals Richardson extrapolation concepts.
Examine how increasing the domain size and refining the mesh in the plateHole OpenFOAM case drives convergence, with doubling and quadrupling cells showing stabilization within about 3 percent.
Extend the plateHole domain by editing vertex coordinates to increase domain size along x and y, updating twelve coordinates. Run the simulation to compare max stress with the analytical solution.
Analyze convergence characteristics of a numerical OpenFOAM solid mechanics simulation by tracing residuals, comparing with analytical solutions, and understanding how relaxation and iteration drive toward steady state.
OpenFOAM applies conservation equations with finite volume schemes, using benchmarks and residuals to illustrate convergence and guide learners in creating and validating new solutions.
Channel solver output to a log file using the greater-than symbol redirection, then use grep to extract ux and initial residuals into separate files for plotting in a spreadsheet.
Edit data to remove initial residual equals and spaces, preparing two columns for plotting. Plot residuals vs iteration in LibreOffice, overlay both series, and use a logarithmic y-axis.
Watch residuals decline exponentially and approach a stable state, with ux and uy converging below 1e-7 as iterations continue in OpenFOAM. Tolerances and relaxation influence convergence speed and solution reliability.
Explore post-processing in OpenFOAM, generating publishable visuals from simulations using simple tools like stress field plots, a stream tracer, and safe screenshot exports to produce ready-to-use graphs and figures.
Explore OpenFOAM post processing with clipping planes and surfaces of constant temperature to inspect 2D fields, and visualize vector fields using arrows and color magnitude.
Use the stream tracer to generate streamlines from a vector field crossing a sphere, then plot a line filter to compare sigma magnitude with the sigma analytical solution along surface.
Explore post-processing in OpenFOAM by generating and comparing sigma magnitude plots, adjusting colors and axes, exporting graphs as PNGs, and using basic tools to obtain meaningful stress data.
Explore time varying and transient cases in solid foam solvers by incorporating thermal effects, temperature and displacement interaction, plasticity, and boundary friction to predict stresses in heterogeneous materials.
Extend the plate with a hole to time-varying traction by configuring a time-dependent stress file in constant and adjusting the control dict for start and end times and time steps.
Explore time varying solid traction on a plate with a hole in OpenFOAM, and observe interpolated stress changes as traction steps from 10k to 20k and back to 1k.
Explore elastic-plastic deformation of solid foam in OpenFOAM, distinguishing small elastic deformations from large non-linear plastic behavior, and learn how yield stress and plastic modulus shape the stress-strain response.
Explore plasticity in OpenFOAM as we relate total modulus after yield to elastic modulus, determine plastic modulus from yield stress, and verify results with time-varying displacement and mesh quality checks.
Explore how beta identifies regions undergoing plastic deformation, distinguish elastic from plastic behavior, and view displacement increments as slight material flow, with time steps showing tear development.
Analyze how a time-varying displacement drives plastic deformation in an OpenFOAM model, comparing elastic and plastic moduli and yield stress to reveal post-yield stiffness and failure risks.
Explore the sliding friction bowl case in OpenFOAM, focusing on setup, file structure, initial displacement, and time versus displacement insights in an elastic solid foam contact scenario.
Explore the initial values file for a 2D OpenFOAM friction scenario, detailing boundary patches on bottom and top bricks, shadow patch connections, and a time varying fixed displacement driving contact.
Learn friction in OpenFOAM by modeling contact between two blocks with a master patch, using standard penalty normal and friction models, including gap, penetration depth, and Cullum's law.
Explore how OpenFOAM models friction between the top and yellow bricks by importing displacement values into the initial values file and tracking y and x movement across 50–60 time steps.
Explore elastic thermal solid foam by coupling thermal and mechanical properties with two interacting fields: displacement and temperature, plus relevant material and initial value settings.
Explore thermal properties in the OpenFOAM constants folder, including specific energy per unit mass, thermal conductivity, and the thermal expansion coefficient, with Kelvin temperature units.
Learn how to set up thermal simulations with OpenFOAM by using the thermal conductivity in the initial value file, fixed boundary temperatures, and comparing results to an analytical solution.
Explore OpenFOAM basics, mastering meshing options—from block mesh to SwiftBlock and Blender workflows—to build accurate simulations, validate results, and set up cases with the systems, constants, and zero directories.
Celebrate completing the complete introduction to OpenFOAM and discover growing opportunities in computational modeling. Gain confidence solving software compatibility issues and technical challenges through imaginative thinking and course Q&A support.
Computational modelling is already central to modern engineering and industry with the demand for skilled professionals steadily rising with time. Unfortunately the software suitable for these roles often costs tens of thousands of dollars for a license and/or is prohibitively complicated to learn and put into practice. Being opensource and used in many active companies today, OpenFOAM is an excellent way to learn these methods and greatly enhance your ability to solve engineering problems. While structured in a way that makes it highly flexible and ideal for making your own projects, learning OpenFOAM without help can be a daunting prospect.
The purpose of this course is to give a simple and straightforward introduction to OpenFOAM covering common bugs and mistakes so that you can easily pass through the steep initial learning curve at your own pace. While the lessons learned here can be applied to any OpenFOAM solver (of which there is a substantial range), the focus is on solid mechanics since the implementation is typically much simpler than more popular applications (high speed flow, etc.). In addition, since solid mechanics is necessary for most engineering disciplines even if it isn't that discipline's primary interest (aerodynamics centres around the interaction between solid objects and fluid flows for example), solid mechanics is an excellent core skill to have and a necessary theoretical precursor to a healthy understanding of fluid dynamics of all forms.
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.