Refinements

Refinements#

This document provides an overview of mesh refinement capabilities in Flow360. Refinements enable precise control over mesh resolution in specific regions of your geometry to better capture flow features or geometric details.

Available Refinement Types#

Refinement type

Description

Surface Edge Refinement

Controls mesh resolution near edges

Surface Refinement

Controls surface mesh cell size

Boundary Layer Refinement

Creates prismatic layers near walls

Passive Spacing

Controls mesh behavior without direct refinement

Uniform Refinement

Creates uniform mesh spacing in a region

Axisymmetric Refinement

Creates structured-like mesh with cylindrical bias

Geometry Refinement

Controls mesh resolution based on geometric features

See also

For a deeper discussion of the meshing workflow and parameters, see Meshing.


❓ Frequently Asked Questions

  • What happens if refinements overlap?

    The finest (smallest) spacing will be used in overlapping regions.


🐍 Python Example Usage

import flow360 as fl

# Example of combining multiple refinements
meshing_params = fl.MeshingParams(
    refinements=[
        # Surface edge refinement for leading edge
        fl.SurfaceEdgeRefinement(
            name="leading_edge",
            edges=[leading_edge],
            method=fl.HeightBasedRefinement(value=0.001 * fl.u.m)
        ),
        # Surface refinement for general resolution
        fl.SurfaceRefinement(
            name="wing_surface",
            faces=[wing_surface],
            max_edge_length=0.05 * fl.u.m
        ),
        # Boundary layer refinement for wall regions
        fl.BoundaryLayer(
            name="wing_bl",
            faces=[wing_surface],
            first_layer_thickness=1e-5 * fl.u.m,
            growth_rate=1.2
        ),
        # Passive spacing refinement for interface region
        fl.PassiveSpacing(
            name="interface_region",
            type="projected",
            faces=[interface_surface]
        ),
        # Wake region refinement
        fl.UniformRefinement(
            name="wake_region",
            entities=[wake_box],
            spacing=0.1 * fl.u.m
        ),
        # Axisymmetric refinement for propeller region
        fl.AxisymmetricRefinement(
            name="propeller_region",
            entities=[prop_cylinder],
            spacing_axial=0.02 * fl.u.m,
            spacing_radial=0.01 * fl.u.m,
            spacing_circumferential=0.015 * fl.u.m
        ),
        # Geometry refinement for fine features
        fl.GeometryRefinement(
            name="fine_features_refinement",
            faces=[wing_surface, fuselage_surface],
            geometry_accuracy=0.001 * fl.u.m,
            preserve_thin_geometry=True
        )
    ]
)