Skip to content

Replace ns_code1.py with a monolithic Navier–Stokes example (CR–P0) using PETSc field-split Schur preconditioning #290

@akarve1507

Description

@akarve1507

Description
This issue proposes replacing the current ns_code1.py example with a monolithic incompressible Navier–Stokes solver implemented using the Crouzeix–Raviart (CR) element for velocity and DG-0 for pressure (CR–P0 pair).
The solver will employ PETSc’s field-split (Schur complement) preconditioning to demonstrate a modern, scalable monolithic formulation for incompressible flow problems in DOLFINx.
This update will align the Navier–Stokes tutorials with current PETSc practices and provide a clearer, physically accurate alternative to the existing projection/splitting scheme.

Objectives

  • Implement a steady-state monolithic Navier–Stokes solver using Picard iteration.
  • Use CR–P0 elements for an inf-sup stable, div-conforming discretization.
  • Apply PETSc field-split Schur preconditioning with the selfp (SIMPLE-type) Schur approximation.
  • Replace ns_code1.py with this new example and corresponding notebook.
  • Benchmark the solver using the Open Cavity case from Huang et al., “A Large-Scale Benchmark for the Incompressible Navier–Stokes Equations” (arXiv:2112.05309).

Benchmark Setup

  • Domain: 2D open cavity (rectangular domain).
  • Inflow: u=(1−e −5t,0) on the left boundary.
  • Outflow: Zero-Neumann (traction-free).
  • Walls: No-slip top and bottom.
  • Viscosity range: ν=0.0005–0.01.
  • Pressure constraint: Mean-zero enforced by pinning one pressure DOF.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions