OpenFOAM (Open Field Operation and Manipulation) is a free, open-source CFD software package. It has a large user base across most areas of engineering and science.
OpenFOAM provides a comprehensive suite of solvers and utilities for complex fluid flow simulations involving chemical reactions, turbulence, heat transfer, and more.
Key Features:
version: '3.8'
services:
openfoam:
image: openfoam/openfoam10-paraview510
container_name: dxflow-openfoam
# Working directory
working_dir: /workspace
# Volumes
volumes:
- ./cases:/workspace/cases
- ./results:/workspace/results
# Resource allocation
deploy:
resources:
limits:
cpus: '16'
memory: 32G
# Keep container running
command: tail -f /dev/null
# Enable X11 for ParaView (optional)
environment:
- DISPLAY=${DISPLAY}
# Network mode for GUI
network_mode: host
# Create directories
mkdir -p cases results
# Deploy container
dxflow compose create --identity openfoam openfoam.yml
dxflow compose start openfoam
# Copy tutorial case
dxflow compose execute openfoam -- \
cp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity cases/
# Enter case directory
cd cases/cavity
# Generate mesh
dxflow compose execute openfoam -- \
blockMesh -case cases/cavity
# Run solver
dxflow compose execute openfoam -- \
icoFoam -case cases/cavity
# Post-process
dxflow compose execute openfoam -- \
postProcess -func graphCell -case cases/cavity
# Create case structure
mkdir -p cases/myCase/{0,constant,system}
# Upload geometry
dxflow fs upload geometry.stl cases/myCase/constant/triSurface/
# Create mesh with snappyHexMesh
dxflow compose execute openfoam -- \
snappyHexMesh -case cases/myCase
# Check mesh quality
dxflow compose execute openfoam -- \
checkMesh -case cases/myCase
# Run simulation
dxflow compose execute openfoam -- \
simpleFoam -case cases/myCase
# Download results
dxflow fs download cases/myCase/results/ results/
| Solver | Application | Type |
|---|---|---|
| icoFoam | Laminar incompressible | Transient |
| simpleFoam | Turbulent incompressible | Steady-state |
| pimpleFoam | Turbulent incompressible | Transient |
| interFoam | Two-phase flow (VOF) | Transient |
| rhoSimpleFoam | Compressible turbulent | Steady-state |
| sonicFoam | Transonic/supersonic | Transient |
| buoyantBoussinesqFoam | Natural convection | Transient |
myCase/
├── 0/ # Initial conditions
│ ├── U # Velocity field
│ ├── p # Pressure field
│ └── T # Temperature field (if applicable)
├── constant/ # Constant properties
│ ├── polyMesh/ # Mesh data
│ ├── turbulenceProperties
│ └── transportProperties
└── system/ # Simulation control
├── controlDict # Time control, output
├── fvSchemes # Discretization schemes
└── fvSolution # Solution algorithms
// blockMeshDict example
vertices
(
(0 0 0)
(1 0 0)
(1 1 0)
(0 1 0)
(0 0 0.1)
(1 0 0.1)
(1 1 0.1)
(0 1 0.1)
);
blocks
(
hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1)
);
boundary
(
inlet
{
type patch;
faces ((0 4 7 3));
}
outlet
{
type patch;
faces ((2 6 5 1));
}
);
# Generate background mesh
blockMesh
# Run snappyHexMesh
snappyHexMesh -overwrite
# Check mesh quality
checkMesh
# Decompose case for parallel run
decomposePar -case cases/myCase
# Run in parallel (MPI)
mpirun -np 16 simpleFoam -parallel -case cases/myCase
# Reconstruct results
reconstructPar -case cases/myCase
# Create ParaView file
paraFoam -case cases/myCase -touch
# Open in ParaView (if X11 enabled)
paraview cases/myCase/case.foam
# Sample along line
postProcess -func 'sample' -case cases/myCase
# Calculate forces/coefficients
postProcess -func 'forceCoeffs' -case cases/myCase
# Extract surface data
postProcess -func 'surfaces' -case cases/myCase
Workstation:
Server/HPC:
Optimize Solver:
Parallel Scaling:
Mesh Quality:
Divergence:
Slow Convergence:
OpenFOAM: The Open Source CFD Toolbox
User Guide, OpenFOAM Foundation
https://www.openfoam.org
Start simulating fluid flows with OpenFOAM's powerful CFD capabilities!