Porous medium model#

The porous medium model in Flow360 simulates flow through porous regions by adding a resistance term to the momentum equations.

For the governing Darcy-Forchheimer equation and how to calibrate the Darcy and Forchheimer coefficients from a measured pressure drop curve, see the Porous Media formulation page.


Available Parameters#

Parameter

Description

Darcy coefficients

3D vector of linear (viscous) pressure drop coefficients

Forchheimer coefficient

3D vector of quadratic (inertial) pressure drop coefficients

Volumetric heat source

Optional heat generation within the porous volume

Assigned zones

Volumes that define the porous region (must specify axes)


Detailed Descriptions#

Assigned zones#

Zones assigned to the Porous Medium model. The entity should be defined by Box or zones from the geometry/volume mesh. The axes of entity must be specified to serve as the principle axes of the porous medium material model.

  • Required

Note: Each entity must have axes defined that determine the principal directions for the resistance coefficients.

Darcy coefficients#

Darcy coefficient of the porous media model which determines the scaling of the viscous loss term. The 3 values define the coefficient for each of the 3 axes defined by the reference frame of the volume zone.

  • Required

  • Example: (1e6, 0, 0) 1/m²

Notes:

  • Values are specified in the local coordinate system of the porous volume.

  • The three components correspond to the three principal axes of the volume.

  • When using Box.from_principal_axes(), the first two directions are those you provide in the axes parameter, and the third is the cross product of these two.

  • When using Box.from_axis_and_angle(), visualize the 3D graphics to identify the directions correctly.

Forchheimer coefficient#

Forchheimer coefficient of the porous media model which determines the scaling of the inertial loss term.

  • Required

  • Example: (1, 0, 0) 1/m

Notes:

  • Values are specified in the local coordinate system of the porous volume, same as Darcy coefficients.

  • The three components correspond to the three principal axes of the volume.

  • These coefficients affect the quadratic (velocity-squared) pressure drop term.

  • Typically dominant at higher flow rates.

Volumetric heat source#

The volumetric heat source within the porous region.

  • Default: 0 W/m³

  • Example: 1.0 W/m³

Notes:

  • Can be specified as a constant value or as a function of position/time using a string expression.

  • String expressions (time/position-dependent functions) can only be defined through the Python API, not in the GUI.


Determining resistance coefficients#

Note: The values you enter for this model are the Darcy coefficient (\(D\)) and Forchheimer coefficient (\(F\)) themselves, per principal axis, in both the WebUI and the Python API. The fit coefficients \(a\) and \(b\) below are intermediate quantities used only to derive \(D\) and \(F\); they are not entered directly. For the governing equation and the full derivation, see the Porous Media formulation page.

From a measured pressure drop versus velocity curve:

  1. Measure the pressure drop across the medium as a function of velocity.

  2. Fit it to a quadratic: \(\frac{\Delta p}{L} = a v + b v^2\).

  3. Darcy coefficient: \(D = \frac{a}{\mu}\).

  4. Forchheimer coefficient: \(F = \frac{2b}{\rho}\).


❓ Frequently Asked Questions

  • What’s the difference between Darcy and Forchheimer coefficients?

    Darcy coefficients control the linear (viscous) component of pressure drop, proportional to velocity. Forchheimer coefficients control the quadratic (inertial) component, proportional to velocity squared. At low Reynolds numbers, the Darcy term dominates, while at higher Reynolds numbers, the Forchheimer term becomes more significant.

  • How do the coefficient vectors relate to the coordinate system?

    The Darcy and Forchheimer coefficients are defined in the local coordinate system of your porous region. When using Box.from_principal_axes(), the first two components correspond to the axes you provide, and the third is their cross product. When using Box.from_axis_and_angle(), it can be challenging to know which component corresponds to which direction, so use the 3D graphics visualization to verify.

  • Can I model time-dependent heat generation in porous media?

    Yes, the volumetric heat source parameter can accept a string expression that includes time dependency, allowing you to model transient heat generation (python only).


🐍 Python Example Usage

See also

Python API reference: PorousMedium.

Below is a Python code example showing how to configure a porous medium model:

# Example (for reference only, not included in GUI documentation)
porous_medium_model = fl.PorousMedium(
    entities=[porous_zone],
    darcy_coefficient=(1e6, 0, 0) / fl.u.m**2,
    forchheimer_coefficient=(1, 0, 0) / fl.u.m,
    volumetric_heat_source=1.0 * fl.u.W/ fl.u.m**3,
)