jorgensd / jorgensd/dolfinx-tutorial

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

Open
#290 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Jupyter Notebook
Stars
166
Forks
89
Avg merge
3h 25m
Merged PRs (30d)
2

Description

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.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.