From aa52223840f9f5ecdfa03f338e0f694c4ecdc2b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Syver=20D=C3=B8ving=20Agdestein?= Date: Fri, 10 Jul 2026 17:58:21 +0200 Subject: [PATCH] doc: correct INS.jl solver description and exclusion rationale - The obstacle exclusion claimed the cylinder "cannot be represented in INS.jl" and that its "spectral/LU pressure projection is periodic-only". Neither holds: the LU (and DCT) pressure solvers handle non-periodic boundary conditions, and a finite Brinkman forcing term with the library's native channel BCs represents the obstacle. What diverges is this tesseract's hard-mask penalization (velocity zeroed after each projection), which is projection-inconsistent. Reword the exclusion to attribute the failure correctly. - INS.jl is a staggered finite-volume (energy-conserving) discretization, not finite-difference. - "CPU-only" describes this wrapper, not the library (KernelAbstractions kernels run on CUDA, including the spectral pressure solver and the differentiable path). Clarify the description; uses_gpu stays false as a property of this tesseract. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01Gdif1Cu1pdCJENe2hNUaF1 --- .../benchmarks/problems/navier_stokes_grid/exclusions.py | 9 ++++++--- .../navier-stokes-grid/ins-jl/tesseract_config.yaml | 9 +++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/mosaic/benchmarks/problems/navier_stokes_grid/exclusions.py b/mosaic/benchmarks/problems/navier_stokes_grid/exclusions.py index a1d64f79..e39109b6 100644 --- a/mosaic/benchmarks/problems/navier_stokes_grid/exclusions.py +++ b/mosaic/benchmarks/problems/navier_stokes_grid/exclusions.py @@ -38,9 +38,12 @@ ) INS_JL_NO_OBSTACLE = Exclusion( ExclusionCategory.CATEGORICAL, - "no IBM or volume penalization — the cylinder obstacle cannot be " - "represented in INS.jl; spectral/LU pressure projection is also " - "periodic-only", + "this tesseract represents the cylinder by hard-mask Brinkman " + "penalization (velocity zeroed after each projection), which is " + "projection-inconsistent and diverges; INS.jl itself supports the " + "obstacle via a finite Brinkman forcing term with its native channel " + "BCs (Dirichlet inflow, pressure outflow, LU/DCT pressure solvers " + "handle non-periodic BCs), but that route is not implemented here", ) WARP_NS_NO_OBSTACLE = Exclusion( ExclusionCategory.CATEGORICAL, diff --git a/mosaic/tesseracts/navier-stokes-grid/ins-jl/tesseract_config.yaml b/mosaic/tesseracts/navier-stokes-grid/ins-jl/tesseract_config.yaml index 22eeb6e3..ec52a354 100644 --- a/mosaic/tesseracts/navier-stokes-grid/ins-jl/tesseract_config.yaml +++ b/mosaic/tesseracts/navier-stokes-grid/ins-jl/tesseract_config.yaml @@ -1,8 +1,9 @@ name: ins_navier_stokes_grid version: "0.1.0" description: > - Julia finite-difference solver with spectral pressure projection and RK4 time integration; - CPU-only. Differentiates through the time loop via Zygote.jl reverse-mode AD. + Julia staggered finite-volume solver with spectral pressure projection and RK4 time + integration; run on CPU in this benchmark (the library itself also supports CUDA via + KernelAbstractions.jl). Differentiates through the time loop via Zygote.jl reverse-mode AD. build_config: custom_build_steps: - "RUN apt-get update -qq && apt-get install -y -q --no-install-recommends wget ca-certificates gcc g++ && rm -rf /var/lib/apt/lists/*" @@ -26,8 +27,8 @@ metadata: name: "INS.jl" backend: julia family: projection - scheme: "FD + projection" - discretization: FD + scheme: "FV + projection" + discretization: FV numerics: "Projection, RK4" ad_strategy: autodiff differentiable: true