ANSYS Fluent Overview
#+CATEGORY: ansys # :PROPERTIES: # :ID: uuid-ansys-overview # :END:
ANSYS Fluent Overview :: Solver Architecture and Capabilities
This note documents ANSYS Fluent's architecture, solver families, discretisation options, and workflow. It serves as the reference point for the ANSYS side of the comparison. Every ANSYS vs OpenFOAM section traces back here. Every turbulence, combustion, and multiphase comparison traces back here too.
Fluent's design philosophy differs from OpenFOAM. Fluent prioritises user-friendliness, robustness, and vendor support. OpenFOAM prioritises transparency and customisability. Both choices have real costs and benefits. See ANSYS vs OpenFOAM Comparison.
**Table of Contents**
- Solver Families :: Pressure-based vs density-based
- Discretisation Schemes :: Spatial and temporal options
- Pressure-Velocity Coupling :: SIMPLE, Coupled, PISO
- Mesh Capabilities :: Supported element types and formats
- Boundary Conditions :: Types and specification
- UDF and User Coding :: The UDF API
- Post-Processing :: Fluent's native tools
- See Also
- References
Solver Families :: Pressure-Based vs Density-Based
Fluent offers two distinct solver families, matching the categorisation used in Governing Equations and Compressible Flow.
**Pressure-Based Solvers**
The pressure-based solver solves the Navier-Stokes equations. It treats pressure (from a pressure-correction equation derived from continuity) as the primary variable. This enforces mass conservation. This is the default for incompressible and low-Mach compressible flows. Use it for Mach numbers below ~0.3. Fluent's low-Mach preconditioning extends this to Mach ~0.7–0.8 with the coupled pressure-based option.
| Mode | Coupling | Application |
| ------ | ---------- | ------------- |
| Segregated (segregated) | Each momentum component solved sequentially, then pressure correction | Incompressible flow, low-speed compressible |
| Coupled | Momentum + pressure solved in a block system | High-speed compressible, strong coupling |
| Coupled-implicit | Fully implicit coupled formulation | Transient compressible, high Mach |
| Coupled-explicit | Explicit coupled formulation with Riemann solvers | Transient shock-capturing (rarely used) |
The segregated pressure-based solver is the direct OpenFOAM analogue. It corresponds to simpleFoam (SIMPLE), pisoFoam (PISO), and pimpleFoam (PIMPLE). Fluent's coupled pressure-based solver handles strongly coupled problems more efficiently. It requires heavier linear algebra because the Jacobian is a block matrix (momentum + pressure). In OpenFOAM, solving the coupled system needs custom solvers or the buoyantBoussinesqSimpleFoam family. Most OpenFOAM pressure-based solvers do not include this.
**Density-Based Solvers**
The density-based solver handles high-speed compressible flow. Use it for Mach > 0.3, typically > 0.8 where shocks dominate. It solves the conservation equations in conservative form as a coupled system. This matches OpenFOAM's rhoCentralFoam (density-based, finite-volume with Riemann solvers) and rhoPimpleFoam (density-based, implicit). Fluent's density-based solver supports implicit and explicit time discretisation. Fluent uses a Riemann solver (AUSM+, Roe, HLLC) at each cell face in explicit mode. rhoCentralFoam does the same in OpenFOAM. Fluent also supports JST (Jameson-Schmidt-Turkel) artificial viscosity for shock-capturing in implicit mode. This offers an alternative to Riemann solvers.
| Mode | Time | Riemann Solver | Application |
| ------ | ------ | ---------------- | ------------- |
| Density-based implicit | Implicit | JST (default), AUSM+, Roe | Steady/unsteady compressible |
| Density-based explicit | Explicit | AUSM+, Roe, HLLC | Transient shock-capturing |
The implicit density-based solver handles steady compressible flow. It matches sonicFoam in OpenFOAM. The explicit density-based solver handles transient compressible flows with shock-capturing. It matches rhoPimpleFoam and sonicFoam with explicit time stepping. Fluent supports more Riemann solvers than most OpenFOAM distributions. OpenFOAM typically uses Roe or AUSM+ in rhoCentralFoam. Fluent offers AUSM+, Roe, HLLC, and JST within a single solver framework.
Discretisation Schemes :: Spatial and Temporal Options
Fluent documents its discretisation schemes by order of accuracy and boundedness. This maps directly to the Numerical Schemes note and the OpenFOAM fvSchemes configuration.
Spatial discretisation options for the convective term:
| Scheme | Order | Bounded | Used For |
| -------- | ------- | --------- | ---------- |
| First-order upwind | 1 | Yes | Initialisation, stability tests |
| Second-order upwind | 2 | Yes | Standard RANS production runs |
| QUICK | 2 (3D: ~2.5) | Conditionally | LES/DNS (with care) |
| MUSCL | 2 | Yes | Compressible flow (density-based) |
| Central differencing | 2 | No | LES/DNS (non-bound scalars) |
| High-resolution | Adaptive | Yes | General-purpose (adaptive blending) |
The "High-resolution" scheme is Fluent's adaptive limiter. It matches OpenFOAM's TVD schemes with a Sweby limiter function. It blends between first-order upwind (near discontinuities) and second-order upwind (in smooth regions). It uses a bounded second-derivative limiter. This matches the TVD limiter philosophy in TVD Limiters.
Temporal discretisation:
| Scheme | Order | Type | Used For |
| -------- | ------- | ------ | ---------- |
| Implicit Euler | 1 | Implicit | Steady-state (no temporal accuracy needed) |
| First-order implicit | 1 | Implicit | Transient, standard |
| Second-order implicit | 2 | Implicit | Transient, production |
| Second-order explicit | 2 | Explicit | Transient, Courant-limited |
Fluent supports Crank-Nicolson / backward Euler blending. A factor alpha controls the blend (alpha=1 is pure Crank-Nicolson). This matches OpenFOAM's CrankNicolson scheme with deltaTCoeff in fvSchemes. The blending prevents oscillations. Pure Crank-Nicolson can oscillate for steep gradients. The blend maintains second-order temporal accuracy for smooth solutions.
Pressure-Velocity Coupling :: SIMPLE, Coupled, PISO
Fluent implements the algorithms documented in Pressure-Velocity Coupling.
**Segregated Mode (SIMPLE-family)**
Fluent's segregated pressure-based solver uses a variant of SIMPLE (Semi-Implicit Method for Pressure-Linked Equations). The user sets under-relaxation factors (URF) in the solver controls panel. These map to the relaxationFactors in OpenFOAM's fvSolution dictionary. Fluent defaults to:
| Variable | Default URF (segregated) |
| ---------- | -------------------------- |
| Pressure | 0.2–0.3 (standard) / 0.075–0.2 (stiff) |
| Momentum | 0.5–0.7 |
| Turbulent kinetic energy (k) | 0.5–0.8 |
| Dissipation rate (omega/epsilon) | 0.5–0.8 |
| Enthalpy/temperature | 0.8–1.0 |
| Species mass fractions | 0.6–0.9 |
Set these URFs interactively in the GUI (Solver → Controls → Solutions Controls) in Fluent. Do not use a text file. The under-relaxation philosophy matches OpenFOAM: each equation solves with under-relaxation =p_{n}^{new} = \alpha p_{n}^{calc} + (1-\alpha) p_{n}^{old}/. The difference is GUI-driven vs file-driven. Fluent also supports schemed under-relaxation for accelerated convergence in steady-state simulations with pseudo-time stepping.
**Coupled Mode**
The coupled pressure-based solver solves momentum + pressure in a single matrix system. It has NO separate pressure-correction step. Monitor convergence by residuals of the coupled system. This approach is more efficient than segregated SIMPLE for strongly coupled problems. These include high Mach number, buoyancy-dominated flow, and strong source terms. It requires more memory and more expensive linear algebra.
Fluent's coupled solver uses AMG (Algebraic Multigrid) for the coupled matrix. This matches OpenFOAM's GAMG solver for pressure, extended to the block system. Use coupled mode for buoyant flows, high-speed compressible flow, and rotating machinery. OpenFOAM needs rhoPimpleFoam, buoyantPimpleFoam, or a custom solver for these cases.
**PISO Option**
Fluent runs PISO (Pressure-Implicit with Splitting of Operators) in segregated mode. The Number of PISO Corrections parameter controls this. The code re-solves the pressure equation N times per timestep with N PISO corrections. This corrects the velocity field further. PISO does not apply to steady-state (only SIMPLE/SLIMPLEC). PISO outperforms SIMPLE for transient simulations with small timesteps (CFL < 1). For CFL > 1, use PIMPLE (OpenFOAM's blend of SIMPLE + PISO with under-relaxation). Fluent achieves this in coupled implicit mode.
| Parameter | SIMPLE | PISO | PIMPLE (OpenFOAM) |
| ----------- | -------- | ------ | ------------------- |
| Timestep | Any | Small (CFL < 1) | Large (CFL > 1) |
| Pressure corrections | 1 | 2–4 | 1–3 (with under-relaxation) |
| Accuracy | Lower | Higher | Moderate (trades accuracy for stability) |
| Steady-state support | Yes | No | No (transient only) |
Mesh Capabilities
Fluent supports the following element types:
| Element Type | Dimension | Notes |
| -------------- | ----------- | ------- |
| Triangle | 2D | First-order (3-node) or second-order (6-node) |
| Quad | 2D | First-order (4-node) or second-order (8-node) |
| Tetrahedron | 3D | First-order (4-node) or second-order (10-node) |
| Hexahedron | 3D | First-order (8-node) or second-order (20-node) |
| Wedge (prism) | 3D | First-order with base triangle (6-node) |
| Pyramid | 3D | First-order (5-node), often used in polyhedral conversion |
| Polyhedral | 3D | Converted from tet/hex, more robust, fewer cells |
| Cell-centroid polyhedron | 3D | Fluent Meshing's face-based polyhedra |
Fluent recommends polyhedral meshes over tetrahedral for 3D simulations. They offer better accuracy per cell. They have fewer non-orthogonal faces and better conditioning. They also maintain the automatic mesh generation capability of tets. The polyhedral conversion preserves the original surface triangles. It replaces interior cells with polyhedra. Each polyhedron has 12–20 faces on average, compared to a hex's 6. This matches OpenFOAM's polyDualMesh utility (which converts tet meshes to polyhedral). Fluent performs the conversion natively in its meshing module. It needs no separate utility.
Fluent Meshing (standalone pre-processor) supports:
. Patch conforming (legacy) and patch independent (topology-based) tetrahedral generation . Automatic boundary layer (inflation layer) generation (like snappyHexMesh's addLayers in OpenFOAM) . Polygonal/polyhedral meshing (face-based algorithm) . Mesh adaptation (h-refinement based on gradient/error indicators) . Sliding/moving interface support (AMI equivalents)
Fluent's mesh import supports: IGES, STEP, Parasolid, ACIS (.sat), STL (facet), Nastran, Abaqus, Ansys Mechanical (.cdb, .mpch5), Medit (.msh), CGNS, Gmsh (.msh), OpenFOAM (.msh with fluent3dToMsh), and STAR-CCM+ (.sim). OpenFOAM's fluent3DMeshToFoam does the reverse. It imports Fluent-format grids into OpenFOAM. This bidirectional exchange is standard in the ANSYS vs OpenFOAM workflow.
Boundary Conditions
Fluent's boundary condition types match those in Boundary Conditions:
| BC Type | Fluent Name | OpenFOAM Equivalent |
| --------- | ------------- | --------------------- |
| Velocity inlet | velocity-inlet | velocityInlet / fixedValue |
| Pressure outlet | pressure-outlet | inletOutlet / fixedValue (p) |
| Mass flow inlet | mass-flow-inlet | massFlowInlet |
| Outflow | outflow | outflow / advective |
| Wall | wall | wall / noSlip |
| Symmetry | symmetry | symmetry / symmetryPlane |
| Periodic | periodic / cyclicAMI | cyclic / cyclicAMI |
| Interior | interior | processor / internalFace |
| Far-field | far-field | freestream / fixedValue |
| Pressure-far-field | pressure-far-field | freestream (compressible) |
| Wall (moving) | wall (moving) | movingWall / fixedValue (U) |
| Wall (rough) | wall (rough) | roughWallFunction |
| Wall (function) | wall function | wallFunction (nut, k, epsilon) |
Fluent uses the terms "Velocity Inlet" (Dirichlet on velocity) and "Pressure Outlet" (Dirichlet on pressure backflow, Neumann on inflow). This matches OpenFOAM's inletOutlet BCs.
For turbulence BCs at inlets, Fluent requires turbulence intensity (=I/) and hydraulic diameter (=D_h/) or turbulence length scale (=L/). These values compute k and \omega/ (or \epsilon/):
$$$$ k = \tfrac{3}{2} (U I)^2, \quad \omega = \frac{\sqrt{k}}{C_\mu^{1/4} l} $$$$
This matches OpenFOAM's turbulentIntensityKineticEnergyInlet and turbulentMixingLengthFrequencyInlet BCs. It also matches the analytical estimates in Turbulence Models. Fluent presents these values as GUI inputs. OpenFOAM computes them from BC parameters.
UDF and User Coding :: The UDF API
User-Defined Functions (UDFs) are C-language functions. Fluent compiles them at runtime. They replace OpenFOAM's custom solver development + fvOptions/fvModels. UDFs cover:
| UDF Type | Fluent Macro | Purpose | OpenFOAM analogue |
| ---------- | ------------- | --------- | ------------------- |
| Initial conditions | DEFINE_INIT | Set ICs | setFields / 0/ files |
| Boundary conditions | DEFINE_PROFILE | Custom BCs | custom FvPatchField |
| Material properties | DEFINE_PROPERTY | Variable mu, rho, k, cp | thermophysicalProperties |
| Source terms | DEFINE_SOURCE | Add source to equation | fvOptions source |
| User scalars | DEFINE_ADJUST | User scalar transport | scalarTransportFoam |
| Face thread access | DEFINE_ON_DEMAND | Execute on command | postProcess utility |
| Mesh motion | DEFINE_GRID_MOTION | Dynamic mesh | dynamicMeshDict |
| Property arrays | DEFINE_STORAGE | Storage for custom data | volScalarField |
**Example: UDF for variable viscosity**
DEFINE_PROPERTY(cell_viscosity, thread, d)
{
real T = F_T(f, thread); // temperature at cell centroid
return mu_ref * exp(-E_ref / (8314.4 * T)); // Arrhenius
}
This matches setting transportProperties in OpenFOAM to a non-Newtonian model (e.g., nonNewtonianIllichiPS for temperature-dependent viscosity). UDFs accept any C expression. They are not limited to models pre-implemented in Fluent. This flexibility matches OpenFOAM's custom fvOption source terms. UDFs compile into Fluent's executable. OpenFOAM's fvOptions come from a dictionary.
In OpenFOAM, write a source term class in finiteVolume/src/fvOptions/sources/, compile it with wmake, then reference it in system/fvOptions. UDFs are faster to write (no C++ needed) but less transparent. The Fluent UDF API is well-documented. OpenFOAM's API is also well-documented but requires C++ knowledge. Fluent prioritises accessibility. OpenFOAM prioritises transparency.
**Mesh Motion UDFs and Dynamic Mesh**
Fluent supports dynamic mesh (moving boundaries, 6DOF, arbitrary mesh motion):
. Layering (boundary layer splitting — like snappyHexMesh addLayers, but dynamic) . Smoothing (laplacian mesh smoothing — like OpenFOAM's laplacianFvMotion) . Local remeshing (tetrahedral cell replacement — like OpenFOAM's dynamicRefineFvMesh) . 6DOF rigid body motion (solver for translation + rotation)
These match OpenFOAM's dynamicFvMesh families in Dynamic Meshes. Fluent's layering method is more robust than OpenFOAM's layer addition in dynamic mesh mode. snappyHexMesh layers cannot retract. Fluent can un-layer cells when the boundary moves inward. OpenFOAM uses polyTopoChange for dynamic topology. This matches Fluent's local remeshing but is less mature.
Post-Processing :: Fluent's Native Tools
Fluent's built-in post-processing includes:
| Feature | Description | OpenFOAM analogue |
| --------- | ------------- | ------------------- |
| Contours | Scalar field on surfaces/plane | ParaView Contour filter |
| Vectors / Arrows | Vector field on surfaces | ParaView Glyph filter |
| Streamlines | Particle tracing from seeds | ParaView Streamtracer |
| Pathlines | Lagrangian particle traces | ParaView Trace |
| Ribbons | Streamline with vector deflection | Custom ParaView filter |
| Animations | Temporal sequence | ParaView animation + export |
| XY Plots | Line graphs of any field quantity | probePoints + gnuplot / Python |
| Monitors | Residual + integral quantities vs time | functionObjects (forceCoeffs, fieldValues) |
| Surface integrals | Mass-weighted/area-weighted averages | postProcess -func fieldValue |
| CFD-Post (separate tool) | Advanced post-processing (ANSYS Eco) | ParaView / in-house Python |
Fluent's Monitors and Surface Integrals panels provide in-run data output for quantitative post-processing (force coefficients, surface averages, line probes). This matches OpenFOAM's functionObjects (forces, forceCoeffs, fieldValues, samples) in OpenFOAM Post-Processing. Fluent's equivalent to foamToVTK is the Export → VTK command. It writes .vtk files for ParaView or CFD-Post.
CFD-Post (a standalone ANSYS post-processor) provides more advanced features. These include expression-based field computation, report definitions, custom variables, animation export, and Python automation (CFD-Post macro language / PyCFX). In OpenFOAM, use postProcess utility + Python (paraview.simple / pvpython) + third-party tools (foamLog, foamDictionary).
See Also :: Related Notes
. Governing Equations — the system Fluent solves (mass, momentum, energy conservation) . Numerical Schemes — spatial and temporal discretisation theory . TVD Limiters — bounded schemes, limiter philosophy . Pressure-Velocity Coupling — SIMPLE, PISO, coupled solvers . Boundary Conditions — BC types and well-posedness . Numerical Schemes in OpenFOAM — fvSchemes configuration . OpenFOAM Case Setup — fvSolution relaxation factors . OpenFOAM Dynamic Meshes — mesh motion comparison . OpenFOAM Post-Processing — functionObjects vs Fluent monitors . ANSYS vs OpenFOAM Comparison — comprehensive comparison . ANSYS Turbulence Models — Fluent's turbulence model suite . ANSYS Combustion — combustion models comparison . ANSYS Multiphase — multiphase model comparison
References
. ANSYS Fluent Theory Guide (latest version).ANSYS Inc. . ANSYS Fluent User's Guide (latest version). ANSYS Inc. . ANSYS Fluent Coding Manual (UDF reference). ANSYS Inc. . Versteeg, H.K. & Malalasekera, W. (2007). An Introduction to Computational Fluid Dynamics: The Finite Volume Method. Chapter 5 (Pressure-velocity coupling), Chapter 7 (Discretisation schemes). . Hirsch, C. (1989). Numerical Computation of Internal and External Flows (Vol. 1). Chapter 11 (Discretisation), Chapter 13 (Non-iterative solution).
- ANSYS Fluent Combustion ModelingAnsys
- ANSYS Fluent Multiphase ModelingAnsys
- ANSYS Fluent Turbulence ModelingAnsys
- ANSYS vs OpenFOAM ComparisonAnsys
- OpenFOAM Case Setup — Dictionaries, BCs, and Turbulence ConfigurationOpenFOAM
- OpenFOAM Numerical Schemes — fvSchemes Deep DiveOpenFOAM
- OpenFOAM OverviewOpenFOAM
- OpenFOAM Solver Selection GuideOpenFOAM