Setup Guide

Non-Newtonian Fluids in OpenFOAM: BirdCarreau, PowerLaw, and generalisedNewtonian Setup

Setting up non-Newtonian viscosity models in OpenFOAM has become a common source of confusion since OpenFOAM 12 (openfoam.org) restructured where rheology is defined. This guide covers the full setup for BirdCarreau, CrossPowerLaw, powerLaw, and HerschelBulkley — for single-phase, two-phase VoF, and the known limitations with multiphase VoF. It also explains the difference between openfoam.org and openfoam.com for non-Newtonian cases.

By CFDpilot · Updated May 2026

1. The OpenFOAM 12 restructuring

In OpenFOAM versions up to 9 (openfoam.org) and in all openfoam.com versions, non-Newtonian models were defined in constant/transportProperties:

// Old structure (OF9, openfoam.com)
transportModel  BirdCarreau;

BirdCarreauCoeffs
{
    nu0     1.734e-3;
    nuInf   1e-6;
    k       5.0;
    n       0.45;
}

From OpenFOAM 10 onwards (openfoam.org), this was split across two files. physicalProperties becomes a minimal placeholder, and the actual rheology moves into momentumTransport under the generalisedNewtonian model:

// constant/physicalProperties — OF12
viscosityModel  constant;
nu              1e-3;   // placeholder, overridden at runtime
rho             1000;
// constant/momentumTransport — OF12
simulationType  laminar;

laminar
{
    model           generalisedNewtonian;

    viscosityModel  BirdCarreau;

    nu0             1.734e-3;
    nuInf           1e-6;
    k               5.0;
    n               0.45;
}

The nu value in physicalProperties is read during initialisation but immediately overridden by the generalisedNewtonian model. Its value does not affect results. The rho value however is used — set it correctly.

2. Available models and parameters

All viscosity values are kinematic (ν = μ/ρ, units m²/s). If your rheometer data gives dynamic viscosity in Pa·s, divide by density before entering the values.

BirdCarreau

The Bird-Carreau model: η = η + (η0 − η) [1 + (λγ̇)²](n−1)/2

viscosityModel  BirdCarreau;

nu0             1.734e-3;   // zero-shear kinematic viscosity [m²/s]
nuInf           1e-6;       // infinite-shear kinematic viscosity [m²/s]
k               5.0;        // relaxation time λ [s]
n               0.45;       // power-law index [-]

CrossPowerLaw

The Cross model: η = η + (η0 − η) / [1 + (mγ̇)n]

viscosityModel  CrossPowerLaw;

nu0             1e-3;
nuInf           1e-5;
m               0.4;        // time constant [s]
n               3.0;        // power index [-]

powerLaw

The power-law model: η = k γ̇n−1. Unbounded at low shear rates — always set nuMin and nuMax.

viscosityModel  powerLaw;

k               3000;       // consistency index [m²/s · s^(n-1)]
n               0.4;        // shear-thinning index [-]
nuMin           0.1;        // viscosity floor [m²/s]
nuMax           1e6;        // viscosity ceiling [m²/s]

HerschelBulkley

For yield-stress fluids (gels, pastes, muds). Flow only occurs above the yield stress τ0.

viscosityModel  HerschelBulkley;

k               1.0;        // consistency index
n               0.5;        // flow index
tau0            10.0;       // yield stress [Pa] / rho → [m²/s²]
nu0             1e-3;       // viscosity below yield stress

3. Two-phase VoF setup (incompressibleVoF)

For two immiscible non-Newtonian fluids, the rheology of each phase is defined in a separate momentumTransport.PhaseName file. The top-level momentumTransport must declare simulationType twoPhaseTransport — without this, OpenFOAM ignores the per-phase files and falls back to the constant viscosity in physicalProperties.

constant/momentumTransport

simulationType  twoPhaseTransport;

// Per-phase rheology is in momentumTransport.PhaseA and momentumTransport.PhaseB

constant/momentumTransport.PhaseA

simulationType  laminar;

laminar
{
    model           generalisedNewtonian;

    viscosityModel  powerLaw;
    k               3000;
    n               0.4;
    nuMin           0.1;
    nuMax           1e6;
}

constant/momentumTransport.PhaseB

simulationType  laminar;

laminar
{
    model           generalisedNewtonian;

    viscosityModel  BirdCarreau;
    nu0             5e-4;
    nuInf           1e-6;
    k               2.0;
    n               0.6;
}

The phase names must match those declared in constant/phaseProperties. The physicalProperties.PhaseA and physicalProperties.PhaseB files still need viscosityModel constant and a valid rho.

4. Multiphase VoF (3+ phases) and OF.org vs OF.com

incompressibleMultiphaseVoF in OpenFOAM 12 openfoam.org does not reliably support non-Newtonian models. The generalisedNewtonian framework is not fully integrated into the multiphase momentum transport layer in this version. Attempting to use it typically results in the simulation running with the constant viscosity from physicalProperties instead of the defined model.

The practical alternatives:

The two distributions (openfoam.org and openfoam.com) are independent forks with different file structures and different release cadences. Tutorials and setup guides from one version often do not transfer directly to the other.

5. Convergence tips

Initialise with Newtonian, then switch

For strongly shear-thinning fluids (n < 0.5), starting from a uniform zero velocity field with the full non-Newtonian model active often causes divergence. The local viscosity at low shear rates can be orders of magnitude higher than at high shear rates, making the momentum equation very stiff at startup. The reliable approach:

  1. Run with viscosityModel constant (or n = 1) until the flow is established
  2. Copy the converged time directory as your new 0/
  3. Switch to the target viscosity model and rerun

nuMin and nuMax for powerLaw

The powerLaw model has no natural viscosity bounds — it diverges to infinity at zero shear rate and collapses to zero at high shear rates. Always set nuMin and nuMax. Set them wide enough not to interfere with the physics, but tight enough to prevent unphysical extremes. A factor of 10³–10⁴ between nuMin and nuMax around the expected operating viscosity is typical.

Relaxation factors

For steady-state non-Newtonian cases with strong shear-thinning, reduce the U relaxation factor to 0.5–0.6 (lower than the standard 0.7). The viscosity field couples back into the momentum equation at every iteration, creating an additional source of instability absent in Newtonian cases.

External references

FAQ

Why does OpenFOAM 12 only show Newtonian and constant viscosity models?

In OpenFOAM 12 (openfoam.org), non-Newtonian models were moved from physicalProperties into momentumTransport under a laminar { model generalisedNewtonian; } block. The physicalProperties file must still contain viscosityModel constant as a placeholder — it no longer defines the actual rheology. The error "Unknown viscosity model BirdCarreau" appears because the solver is looking in the wrong file.

What are the BirdCarreau model parameters in OpenFOAM?

BirdCarreau uses nu0 (zero-shear kinematic viscosity, m²/s), nuInf (infinite-shear kinematic viscosity, m²/s), k (relaxation time, s), and n (power-law index, dimensionless). All viscosity values are kinematic — divide dynamic viscosity by density before entering them. A common mistake is entering rheometer values in Pa·s directly without dividing by rho.

How do I set up non-Newtonian fluids in incompressibleVoF (two phases)?

Set simulationType twoPhaseTransport in the top-level constant/momentumTransport file. Then create constant/momentumTransport.PhaseA and constant/momentumTransport.PhaseB, each with simulationType laminar and the generalisedNewtonian block. Without twoPhaseTransport in the top-level file, the per-phase files are silently ignored.

Can I use non-Newtonian models with incompressibleMultiphaseVoF in OpenFOAM 12?

Not reliably. The generalisedNewtonian model is not fully wired into the multiphase momentum transport framework in OpenFOAM 12 openfoam.org. The practical alternatives are OpenFOAM 9 (openfoam.org) or OpenFOAM.com versions (v2412, v2512) which retained the transportProperties structure and support multiphase non-Newtonian setups.

What is the difference between openfoam.org and openfoam.com for non-Newtonian simulations?

They are independent forks. OpenFOAM.org (versions 10–13) restructured rheology into momentumTransport. OpenFOAM.com (v2412, v2512) retained transportProperties. For multiphase non-Newtonian cases, openfoam.com is currently more reliable. Tutorials and case files from one fork typically do not work directly with the other.

Why does my non-Newtonian simulation diverge even with a correct setup?

Most common causes: nuMax not set for powerLaw (viscosity diverges near stagnation), initial velocity too far from solution causing extreme local viscosity values, or relaxation factors too high for a strongly shear-thinning fluid. Start with n = 1 (Newtonian), converge the flow field, then switch to your target model using the converged state as initial condition.

Struggling with a non-Newtonian case? Upload your case files to CFDpilot for an automated diagnostic — it checks your momentumTransport setup, physicalProperties consistency, and flags common configuration errors.