navier-cfd 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- navier_cfd-0.2.0/.gitignore +17 -0
- navier_cfd-0.2.0/LICENSE +17 -0
- navier_cfd-0.2.0/PKG-INFO +253 -0
- navier_cfd-0.2.0/README.md +218 -0
- navier_cfd-0.2.0/pyproject.toml +57 -0
- navier_cfd-0.2.0/src/navier_cfd/__init__.py +30 -0
- navier_cfd-0.2.0/src/navier_cfd/__main__.py +3 -0
- navier_cfd-0.2.0/src/navier_cfd/agents/__init__.py +3 -0
- navier_cfd-0.2.0/src/navier_cfd/agents/orchestrator.py +114 -0
- navier_cfd-0.2.0/src/navier_cfd/benchmarks/__init__.py +4 -0
- navier_cfd-0.2.0/src/navier_cfd/benchmarks/metrics.py +69 -0
- navier_cfd-0.2.0/src/navier_cfd/benchmarks/planning.py +76 -0
- navier_cfd-0.2.0/src/navier_cfd/catalogs.py +208 -0
- navier_cfd-0.2.0/src/navier_cfd/cli.py +229 -0
- navier_cfd-0.2.0/src/navier_cfd/datasets/__init__.py +3 -0
- navier_cfd-0.2.0/src/navier_cfd/datasets/huggingface.py +121 -0
- navier_cfd-0.2.0/src/navier_cfd/evidence.py +404 -0
- navier_cfd-0.2.0/src/navier_cfd/models/__init__.py +3 -0
- navier_cfd-0.2.0/src/navier_cfd/models/base.py +56 -0
- navier_cfd-0.2.0/src/navier_cfd/recommender.py +211 -0
- navier_cfd-0.2.0/src/navier_cfd/specs.py +125 -0
navier_cfd-0.2.0/LICENSE
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
Copyright 2026 Somyajit Chakraborty
|
|
6
|
+
|
|
7
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
you may not use this file except in compliance with the License.
|
|
9
|
+
You may obtain a copy of the License at
|
|
10
|
+
|
|
11
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
|
|
13
|
+
Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
See the License for the specific language governing permissions and
|
|
17
|
+
limitations under the License.
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: navier-cfd
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: CFD-first neural solver registry, Hugging Face data hub, benchmark toolkit, evidence-aware task recommender, and agentic experiment planner.
|
|
5
|
+
Project-URL: Homepage, https://github.com/Samsomyajit/NAVIER-CFD
|
|
6
|
+
Project-URL: Documentation, https://samsomyajit.github.io/NAVIER-CFD/
|
|
7
|
+
Project-URL: Issues, https://github.com/Samsomyajit/NAVIER-CFD/issues
|
|
8
|
+
Author-email: Somyajit Chakraborty <chksomyajit@sjtu.edu.cn>
|
|
9
|
+
License: Apache-2.0
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: CFD,Hugging Face,PDE,PINN,neural operator,scientific machine learning
|
|
12
|
+
Requires-Python: >=3.10
|
|
13
|
+
Requires-Dist: datasets>=2.20
|
|
14
|
+
Requires-Dist: huggingface-hub>=0.24
|
|
15
|
+
Requires-Dist: numpy>=1.24
|
|
16
|
+
Requires-Dist: rich>=13.7
|
|
17
|
+
Requires-Dist: typer>=0.12
|
|
18
|
+
Provides-Extra: all
|
|
19
|
+
Requires-Dist: mkdocs-material>=9.5; extra == 'all'
|
|
20
|
+
Requires-Dist: mypy>=1.10; extra == 'all'
|
|
21
|
+
Requires-Dist: pytest-cov>=5; extra == 'all'
|
|
22
|
+
Requires-Dist: pytest>=8; extra == 'all'
|
|
23
|
+
Requires-Dist: ruff>=0.5; extra == 'all'
|
|
24
|
+
Requires-Dist: torch>=2.1; extra == 'all'
|
|
25
|
+
Provides-Extra: dev
|
|
26
|
+
Requires-Dist: mypy>=1.10; extra == 'dev'
|
|
27
|
+
Requires-Dist: pytest-cov>=5; extra == 'dev'
|
|
28
|
+
Requires-Dist: pytest>=8; extra == 'dev'
|
|
29
|
+
Requires-Dist: ruff>=0.5; extra == 'dev'
|
|
30
|
+
Provides-Extra: docs
|
|
31
|
+
Requires-Dist: mkdocs-material>=9.5; extra == 'docs'
|
|
32
|
+
Provides-Extra: torch
|
|
33
|
+
Requires-Dist: torch>=2.1; extra == 'torch'
|
|
34
|
+
Description-Content-Type: text/markdown
|
|
35
|
+
|
|
36
|
+
<p align="center">
|
|
37
|
+
<img src="docs/assets/navier-cfd-logo.svg" alt="NAVIER-CFD logo" width="860">
|
|
38
|
+
</p>
|
|
39
|
+
|
|
40
|
+
<h1 align="center">NAVIER-CFD</h1>
|
|
41
|
+
|
|
42
|
+
<p align="center"><strong>Neural and Agentic Verification, Integration, Evaluation, and Recommendation for Computational Fluid Dynamics</strong></p>
|
|
43
|
+
|
|
44
|
+
<p align="center">
|
|
45
|
+
<a href="https://github.com/Samsomyajit/NAVIER-CFD/releases"><img src="https://img.shields.io/badge/version-0.2.0-2f6f9f.svg" alt="Version"></a>
|
|
46
|
+
<a href="https://pypi.org/project/navier-cfd/"><img src="https://img.shields.io/pypi/v/navier-cfd.svg?label=PyPI" alt="PyPI"></a>
|
|
47
|
+
<a href="https://pypi.org/project/navier-cfd/"><img src="https://img.shields.io/pypi/pyversions/navier-cfd.svg" alt="Python"></a>
|
|
48
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-Apache%202.0-4c8c6b.svg" alt="Apache 2.0"></a>
|
|
49
|
+
<a href="https://github.com/Samsomyajit/NAVIER-CFD/actions/workflows/ci.yml"><img src="https://github.com/Samsomyajit/NAVIER-CFD/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
50
|
+
<a href="https://samsomyajit.github.io/NAVIER-CFD/"><img src="https://img.shields.io/badge/project-website-0d6fdc.svg" alt="Project website"></a>
|
|
51
|
+
<a href="https://samsomyajit.github.io/NAVIER-CFD/recommender/"><img src="https://img.shields.io/badge/tool-recommender-13b7d8.svg" alt="Interactive recommender"></a>
|
|
52
|
+
<img src="https://img.shields.io/badge/models-55-7c6aa6.svg" alt="55 models">
|
|
53
|
+
<img src="https://img.shields.io/badge/datasets-11-5d8f72.svg" alt="11 datasets">
|
|
54
|
+
<img src="https://img.shields.io/badge/scoring-paper--evidence--aware-7057c7.svg" alt="Paper-evidence-aware scoring">
|
|
55
|
+
</p>
|
|
56
|
+
|
|
57
|
+
NAVIER-CFD is a CFD-first Python platform and project website for neural PDE solvers, hybrid numerical acceleration, benchmark datasets, paper-evidence-aware task recommendation, Hugging Face integration, and agentic experiment planning.
|
|
58
|
+
|
|
59
|
+
## Project website and interactive tool
|
|
60
|
+
|
|
61
|
+
- **Project website:** https://samsomyajit.github.io/NAVIER-CFD/
|
|
62
|
+
- **Interactive model and dataset recommender:** https://samsomyajit.github.io/NAVIER-CFD/recommender/
|
|
63
|
+
- **Technical documentation:** https://samsomyajit.github.io/NAVIER-CFD/docs/
|
|
64
|
+
|
|
65
|
+
The web recommender runs entirely in the browser. It applies hard compatibility filters, explains every score, recommends suitable benchmark datasets, and exports a reproducible run manifest.
|
|
66
|
+
|
|
67
|
+
> A recommendation is a task-specific hypothesis, not proof that one architecture is universally superior. Report the final score together with evidence confidence, metric coverage, matched paper records, and the target benchmark.
|
|
68
|
+
|
|
69
|
+
## Evidence-aware recommendation
|
|
70
|
+
|
|
71
|
+
Version 0.2 introduces a traceable paper-result layer. Each quantitative claim is stored with the paper, benchmark, metric, baseline, physical regime, dimension, mesh, geometry, temporal mode, fidelity, code/data availability, evidence level, and caveats.
|
|
72
|
+
|
|
73
|
+
The recommender now combines:
|
|
74
|
+
|
|
75
|
+
1. **Hard compatibility filtering** for dimension, representation, geometry/mesh transfer, numerical role, temporal mode, and hardware.
|
|
76
|
+
2. **Task-to-paper similarity** across physics, discretization, geometry, temporal regime, role, and fidelity.
|
|
77
|
+
3. **Metric-aware utility** that prefers same-pipeline baseline comparisons and refuses to compare scale-dependent absolute MSE values across unrelated datasets.
|
|
78
|
+
4. **Evidence quality weighting** for independent reproduction, peer review, code/data availability, cases, seeds, and baseline quality.
|
|
79
|
+
5. **Bayesian shrinkage** toward a neutral prior when evidence is sparse.
|
|
80
|
+
6. **Confidence and coverage reporting** so a high score with one weak paper cannot masquerade as a mature result.
|
|
81
|
+
|
|
82
|
+
Citation counts, venue prestige, author prestige, and coauthorship centrality are deliberately excluded from performance scoring. Bibliometrics are used for paper discovery and provenance, not as a proxy for CFD accuracy.
|
|
83
|
+
|
|
84
|
+
See [Evidence Scoring](docs/EVIDENCE_SCORING.md) and the frozen catalog at `src/navier_cfd/data/paper_evidence.json`.
|
|
85
|
+
|
|
86
|
+
## Scientific pipeline
|
|
87
|
+
|
|
88
|
+
<p align="center">
|
|
89
|
+
<img src="docs/assets/navier_pipeline.svg" alt="NAVIER-CFD scientific pipeline" width="100%">
|
|
90
|
+
</p>
|
|
91
|
+
|
|
92
|
+
The workflow keeps the learned numerical role explicit—surrogate, closure, corrector, preconditioner, inverse model, controller, or generator—and connects each experiment to versioned data, traceable model cards, CFD-aware metrics, paper evidence, and a reproducible run manifest.
|
|
93
|
+
|
|
94
|
+
## Why NAVIER-CFD
|
|
95
|
+
|
|
96
|
+
- **55-model taxonomy:** acceleration frameworks, surrogates, general PDE solvers, specialized CFD, geometry and unstructured-mesh models, foundation models, inverse methods, uncertainty, particle and multiphase models, and generative methods.
|
|
97
|
+
- **11 first-class datasets:** PDEBench, CFDBench, RealPDEBench, AirfRANS, DrivAerNet++, DrivAerML, The Well, APEBench, ScalarFlow, ShapeNet-Car, and EAGLE.
|
|
98
|
+
- **Paper-level evidence:** traceable benchmark claims with task context, provenance, quality, confidence, and comparability limits.
|
|
99
|
+
- **Full Hugging Face support:** discovery, inspection, selective downloads, revision pinning, authentication, streaming, caching, and arbitrary CFD dataset identifiers.
|
|
100
|
+
- **Explainable recommendation:** compatibility filtering plus evidence-aware ranking by physics, dimension, mesh, geometry, temporal regime, numerical role, fidelity, memory, conservation, uncertainty, and transfer requirements.
|
|
101
|
+
- **Agentic AI:** deterministic offline planning and provider-neutral interfaces for external LLM agents.
|
|
102
|
+
- **CFD-aware benchmarking:** field, spectral, rollout, conservation, OOD, quantity-of-interest, uncertainty, wall-clock, memory, and break-even metrics.
|
|
103
|
+
- **Safe integration:** external repositories remain metadata-first and are never executed automatically.
|
|
104
|
+
|
|
105
|
+
## Installation
|
|
106
|
+
|
|
107
|
+
From PyPI:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
pip install navier-cfd
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
From source:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
git clone https://github.com/Samsomyajit/NAVIER-CFD.git
|
|
117
|
+
cd NAVIER-CFD
|
|
118
|
+
pip install -e .
|
|
119
|
+
|
|
120
|
+
# development, tests, and documentation
|
|
121
|
+
pip install -e ".[dev,docs]"
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Quick start
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# Explore catalogs
|
|
128
|
+
navier models list
|
|
129
|
+
navier models list --category acceleration
|
|
130
|
+
navier datasets list
|
|
131
|
+
|
|
132
|
+
# Inspect registered paper evidence
|
|
133
|
+
navier evidence list
|
|
134
|
+
navier evidence list --model-id gino
|
|
135
|
+
navier evidence coverage
|
|
136
|
+
|
|
137
|
+
# Search Hugging Face
|
|
138
|
+
navier datasets discover "computational fluid dynamics" --limit 20
|
|
139
|
+
|
|
140
|
+
# Download a CFDBench subset
|
|
141
|
+
navier datasets download cfdbench \
|
|
142
|
+
--local-dir ./data/cfdbench \
|
|
143
|
+
--pattern "cylinder/**"
|
|
144
|
+
|
|
145
|
+
# Evidence-aware recommendation
|
|
146
|
+
navier recommend \
|
|
147
|
+
--problem vehicle_drag \
|
|
148
|
+
--task surrogate \
|
|
149
|
+
--dimension 3 \
|
|
150
|
+
--mesh point_cloud \
|
|
151
|
+
--temporal steady \
|
|
152
|
+
--geometry varying \
|
|
153
|
+
--physics aerodynamics \
|
|
154
|
+
--fidelity rans \
|
|
155
|
+
--memory-gb 80 \
|
|
156
|
+
--top-k 10
|
|
157
|
+
|
|
158
|
+
# Generate an agentic experiment plan
|
|
159
|
+
navier agent plan \
|
|
160
|
+
"Benchmark RealPDEBench cylinder sim-to-real forecasting with 24 GB VRAM, conservation and uncertainty"
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Python API
|
|
164
|
+
|
|
165
|
+
```python
|
|
166
|
+
from navier_cfd import Catalog, TaskSpec, recommend_models
|
|
167
|
+
|
|
168
|
+
catalog = Catalog.load_builtin()
|
|
169
|
+
task = TaskSpec(
|
|
170
|
+
problem="3d_vehicle_aerodynamics",
|
|
171
|
+
task_type="surrogate",
|
|
172
|
+
dimension=3,
|
|
173
|
+
mesh_type="point_cloud",
|
|
174
|
+
temporal_mode="steady",
|
|
175
|
+
geometry_mode="varying",
|
|
176
|
+
physics=("aerodynamics",),
|
|
177
|
+
fidelity="rans",
|
|
178
|
+
requires_geometry_transfer=True,
|
|
179
|
+
requires_mesh_transfer=True,
|
|
180
|
+
hardware_memory_gb=80,
|
|
181
|
+
)
|
|
182
|
+
|
|
183
|
+
for result in recommend_models(task, catalog.models, top_k=8):
|
|
184
|
+
print(result.model.name, result.score)
|
|
185
|
+
print("evidence:", result.evidence_score)
|
|
186
|
+
print("confidence:", result.evidence_confidence)
|
|
187
|
+
print("coverage:", result.evidence_coverage)
|
|
188
|
+
print("records:", result.evidence_count)
|
|
189
|
+
print("reasons:", result.reasons)
|
|
190
|
+
print("cautions:", result.cautions)
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Registered model families
|
|
194
|
+
|
|
195
|
+
- **Physics-informed:** PINN, NSFnets, PINNsFormer, PINO, PI-MFM, and RiemannONet.
|
|
196
|
+
- **Operator learning:** DeepONet, MIONet, Fourier-DeepONet, Fourier-MIONet, FNO, F-FNO, U-FNO, U-NO, LSM, MWT, Laplace NO, and state-space NO.
|
|
197
|
+
- **Geometry and transformer solvers:** Geo-FNO, GINO, GNOT, Transolver, UPT, MeshGraphNets, DoMINO, and ReViT.
|
|
198
|
+
- **CFD-specialized:** PIBERT, FourierFlow, P3D, AeroTransformer, NeuralDEM, DeepM&Mnet, and Energy Transformer.
|
|
199
|
+
- **Foundation and generative:** DPOT, Poseidon, PROSE-FD, BCAT, PDEformer-1, Tadpole, PDE-Refiner, FunDiff, and Flow Matching for PDEs.
|
|
200
|
+
- **Acceleration:** Solver-in-the-Loop, INC, PICT, diffSPH, NeuroSEM, neural-operator preconditioned Newton, and geometry-aware neural preconditioning.
|
|
201
|
+
- **Uncertainty and adaptation:** Conformalized-DeepONet and TANTE.
|
|
202
|
+
|
|
203
|
+
“Included” means represented through a uniform model card and recommendation interface. Official implementations remain external so upstream licenses and revisions are respected.
|
|
204
|
+
|
|
205
|
+
## Repository map
|
|
206
|
+
|
|
207
|
+
```text
|
|
208
|
+
src/navier_cfd/
|
|
209
|
+
agents/ deterministic and LLM-ready planning
|
|
210
|
+
benchmarks/ CFD metrics and benchmark plans
|
|
211
|
+
datasets/ Hugging Face discovery, download, streaming
|
|
212
|
+
models/ safe adapter protocol
|
|
213
|
+
data/ frozen paper-evidence catalog
|
|
214
|
+
catalogs.py model and dataset registries
|
|
215
|
+
evidence.py task similarity, quality, utility, shrinkage
|
|
216
|
+
recommender.py compatibility prior + evidence ranking
|
|
217
|
+
|
|
218
|
+
website/
|
|
219
|
+
index.html standalone project website
|
|
220
|
+
recommender/ interactive browser recommender
|
|
221
|
+
data/ static model and dataset catalogs
|
|
222
|
+
|
|
223
|
+
docs/ MkDocs technical documentation
|
|
224
|
+
case_studies/ detailed benchmark study guides
|
|
225
|
+
configs/tasks/ reusable task specifications
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Recommender validation
|
|
229
|
+
|
|
230
|
+
The Python recommender is covered by `pytest`; the browser engine is covered by Node's built-in test runner.
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
pytest tests/test_recommender.py tests/test_evidence_recommender.py
|
|
234
|
+
node --test website/recommender/recommender-core.test.mjs
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
Canonical tests verify task-specific evidence transfer, geometry-aware 3D ranking, hybrid acceleration selection, evidence provenance, and neutral treatment of incomparable absolute MSE values.
|
|
238
|
+
|
|
239
|
+
## Packaging and deployment
|
|
240
|
+
|
|
241
|
+
- Package: `navier-cfd`
|
|
242
|
+
- Import namespace: `navier_cfd`
|
|
243
|
+
- Current version: `0.2.0`
|
|
244
|
+
- Evidence algorithm: `0.2.0-evidence`
|
|
245
|
+
- Build backend: Hatchling
|
|
246
|
+
- Website source: `website/`
|
|
247
|
+
- Documentation source: `docs/`
|
|
248
|
+
- Branch publisher: `.github/workflows/pages-branch.yml`
|
|
249
|
+
- PyPI Trusted Publishing workflow: `.github/workflows/publish-pypi.yml`
|
|
250
|
+
|
|
251
|
+
## License
|
|
252
|
+
|
|
253
|
+
Licensed under the [Apache License 2.0](LICENSE). Cite NAVIER-CFD and the original model, dataset, upstream implementation, benchmark, and numerical-solver references used in every experiment.
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="docs/assets/navier-cfd-logo.svg" alt="NAVIER-CFD logo" width="860">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">NAVIER-CFD</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center"><strong>Neural and Agentic Verification, Integration, Evaluation, and Recommendation for Computational Fluid Dynamics</strong></p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="https://github.com/Samsomyajit/NAVIER-CFD/releases"><img src="https://img.shields.io/badge/version-0.2.0-2f6f9f.svg" alt="Version"></a>
|
|
11
|
+
<a href="https://pypi.org/project/navier-cfd/"><img src="https://img.shields.io/pypi/v/navier-cfd.svg?label=PyPI" alt="PyPI"></a>
|
|
12
|
+
<a href="https://pypi.org/project/navier-cfd/"><img src="https://img.shields.io/pypi/pyversions/navier-cfd.svg" alt="Python"></a>
|
|
13
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-Apache%202.0-4c8c6b.svg" alt="Apache 2.0"></a>
|
|
14
|
+
<a href="https://github.com/Samsomyajit/NAVIER-CFD/actions/workflows/ci.yml"><img src="https://github.com/Samsomyajit/NAVIER-CFD/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
15
|
+
<a href="https://samsomyajit.github.io/NAVIER-CFD/"><img src="https://img.shields.io/badge/project-website-0d6fdc.svg" alt="Project website"></a>
|
|
16
|
+
<a href="https://samsomyajit.github.io/NAVIER-CFD/recommender/"><img src="https://img.shields.io/badge/tool-recommender-13b7d8.svg" alt="Interactive recommender"></a>
|
|
17
|
+
<img src="https://img.shields.io/badge/models-55-7c6aa6.svg" alt="55 models">
|
|
18
|
+
<img src="https://img.shields.io/badge/datasets-11-5d8f72.svg" alt="11 datasets">
|
|
19
|
+
<img src="https://img.shields.io/badge/scoring-paper--evidence--aware-7057c7.svg" alt="Paper-evidence-aware scoring">
|
|
20
|
+
</p>
|
|
21
|
+
|
|
22
|
+
NAVIER-CFD is a CFD-first Python platform and project website for neural PDE solvers, hybrid numerical acceleration, benchmark datasets, paper-evidence-aware task recommendation, Hugging Face integration, and agentic experiment planning.
|
|
23
|
+
|
|
24
|
+
## Project website and interactive tool
|
|
25
|
+
|
|
26
|
+
- **Project website:** https://samsomyajit.github.io/NAVIER-CFD/
|
|
27
|
+
- **Interactive model and dataset recommender:** https://samsomyajit.github.io/NAVIER-CFD/recommender/
|
|
28
|
+
- **Technical documentation:** https://samsomyajit.github.io/NAVIER-CFD/docs/
|
|
29
|
+
|
|
30
|
+
The web recommender runs entirely in the browser. It applies hard compatibility filters, explains every score, recommends suitable benchmark datasets, and exports a reproducible run manifest.
|
|
31
|
+
|
|
32
|
+
> A recommendation is a task-specific hypothesis, not proof that one architecture is universally superior. Report the final score together with evidence confidence, metric coverage, matched paper records, and the target benchmark.
|
|
33
|
+
|
|
34
|
+
## Evidence-aware recommendation
|
|
35
|
+
|
|
36
|
+
Version 0.2 introduces a traceable paper-result layer. Each quantitative claim is stored with the paper, benchmark, metric, baseline, physical regime, dimension, mesh, geometry, temporal mode, fidelity, code/data availability, evidence level, and caveats.
|
|
37
|
+
|
|
38
|
+
The recommender now combines:
|
|
39
|
+
|
|
40
|
+
1. **Hard compatibility filtering** for dimension, representation, geometry/mesh transfer, numerical role, temporal mode, and hardware.
|
|
41
|
+
2. **Task-to-paper similarity** across physics, discretization, geometry, temporal regime, role, and fidelity.
|
|
42
|
+
3. **Metric-aware utility** that prefers same-pipeline baseline comparisons and refuses to compare scale-dependent absolute MSE values across unrelated datasets.
|
|
43
|
+
4. **Evidence quality weighting** for independent reproduction, peer review, code/data availability, cases, seeds, and baseline quality.
|
|
44
|
+
5. **Bayesian shrinkage** toward a neutral prior when evidence is sparse.
|
|
45
|
+
6. **Confidence and coverage reporting** so a high score with one weak paper cannot masquerade as a mature result.
|
|
46
|
+
|
|
47
|
+
Citation counts, venue prestige, author prestige, and coauthorship centrality are deliberately excluded from performance scoring. Bibliometrics are used for paper discovery and provenance, not as a proxy for CFD accuracy.
|
|
48
|
+
|
|
49
|
+
See [Evidence Scoring](docs/EVIDENCE_SCORING.md) and the frozen catalog at `src/navier_cfd/data/paper_evidence.json`.
|
|
50
|
+
|
|
51
|
+
## Scientific pipeline
|
|
52
|
+
|
|
53
|
+
<p align="center">
|
|
54
|
+
<img src="docs/assets/navier_pipeline.svg" alt="NAVIER-CFD scientific pipeline" width="100%">
|
|
55
|
+
</p>
|
|
56
|
+
|
|
57
|
+
The workflow keeps the learned numerical role explicit—surrogate, closure, corrector, preconditioner, inverse model, controller, or generator—and connects each experiment to versioned data, traceable model cards, CFD-aware metrics, paper evidence, and a reproducible run manifest.
|
|
58
|
+
|
|
59
|
+
## Why NAVIER-CFD
|
|
60
|
+
|
|
61
|
+
- **55-model taxonomy:** acceleration frameworks, surrogates, general PDE solvers, specialized CFD, geometry and unstructured-mesh models, foundation models, inverse methods, uncertainty, particle and multiphase models, and generative methods.
|
|
62
|
+
- **11 first-class datasets:** PDEBench, CFDBench, RealPDEBench, AirfRANS, DrivAerNet++, DrivAerML, The Well, APEBench, ScalarFlow, ShapeNet-Car, and EAGLE.
|
|
63
|
+
- **Paper-level evidence:** traceable benchmark claims with task context, provenance, quality, confidence, and comparability limits.
|
|
64
|
+
- **Full Hugging Face support:** discovery, inspection, selective downloads, revision pinning, authentication, streaming, caching, and arbitrary CFD dataset identifiers.
|
|
65
|
+
- **Explainable recommendation:** compatibility filtering plus evidence-aware ranking by physics, dimension, mesh, geometry, temporal regime, numerical role, fidelity, memory, conservation, uncertainty, and transfer requirements.
|
|
66
|
+
- **Agentic AI:** deterministic offline planning and provider-neutral interfaces for external LLM agents.
|
|
67
|
+
- **CFD-aware benchmarking:** field, spectral, rollout, conservation, OOD, quantity-of-interest, uncertainty, wall-clock, memory, and break-even metrics.
|
|
68
|
+
- **Safe integration:** external repositories remain metadata-first and are never executed automatically.
|
|
69
|
+
|
|
70
|
+
## Installation
|
|
71
|
+
|
|
72
|
+
From PyPI:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
pip install navier-cfd
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
From source:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
git clone https://github.com/Samsomyajit/NAVIER-CFD.git
|
|
82
|
+
cd NAVIER-CFD
|
|
83
|
+
pip install -e .
|
|
84
|
+
|
|
85
|
+
# development, tests, and documentation
|
|
86
|
+
pip install -e ".[dev,docs]"
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Quick start
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# Explore catalogs
|
|
93
|
+
navier models list
|
|
94
|
+
navier models list --category acceleration
|
|
95
|
+
navier datasets list
|
|
96
|
+
|
|
97
|
+
# Inspect registered paper evidence
|
|
98
|
+
navier evidence list
|
|
99
|
+
navier evidence list --model-id gino
|
|
100
|
+
navier evidence coverage
|
|
101
|
+
|
|
102
|
+
# Search Hugging Face
|
|
103
|
+
navier datasets discover "computational fluid dynamics" --limit 20
|
|
104
|
+
|
|
105
|
+
# Download a CFDBench subset
|
|
106
|
+
navier datasets download cfdbench \
|
|
107
|
+
--local-dir ./data/cfdbench \
|
|
108
|
+
--pattern "cylinder/**"
|
|
109
|
+
|
|
110
|
+
# Evidence-aware recommendation
|
|
111
|
+
navier recommend \
|
|
112
|
+
--problem vehicle_drag \
|
|
113
|
+
--task surrogate \
|
|
114
|
+
--dimension 3 \
|
|
115
|
+
--mesh point_cloud \
|
|
116
|
+
--temporal steady \
|
|
117
|
+
--geometry varying \
|
|
118
|
+
--physics aerodynamics \
|
|
119
|
+
--fidelity rans \
|
|
120
|
+
--memory-gb 80 \
|
|
121
|
+
--top-k 10
|
|
122
|
+
|
|
123
|
+
# Generate an agentic experiment plan
|
|
124
|
+
navier agent plan \
|
|
125
|
+
"Benchmark RealPDEBench cylinder sim-to-real forecasting with 24 GB VRAM, conservation and uncertainty"
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Python API
|
|
129
|
+
|
|
130
|
+
```python
|
|
131
|
+
from navier_cfd import Catalog, TaskSpec, recommend_models
|
|
132
|
+
|
|
133
|
+
catalog = Catalog.load_builtin()
|
|
134
|
+
task = TaskSpec(
|
|
135
|
+
problem="3d_vehicle_aerodynamics",
|
|
136
|
+
task_type="surrogate",
|
|
137
|
+
dimension=3,
|
|
138
|
+
mesh_type="point_cloud",
|
|
139
|
+
temporal_mode="steady",
|
|
140
|
+
geometry_mode="varying",
|
|
141
|
+
physics=("aerodynamics",),
|
|
142
|
+
fidelity="rans",
|
|
143
|
+
requires_geometry_transfer=True,
|
|
144
|
+
requires_mesh_transfer=True,
|
|
145
|
+
hardware_memory_gb=80,
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
for result in recommend_models(task, catalog.models, top_k=8):
|
|
149
|
+
print(result.model.name, result.score)
|
|
150
|
+
print("evidence:", result.evidence_score)
|
|
151
|
+
print("confidence:", result.evidence_confidence)
|
|
152
|
+
print("coverage:", result.evidence_coverage)
|
|
153
|
+
print("records:", result.evidence_count)
|
|
154
|
+
print("reasons:", result.reasons)
|
|
155
|
+
print("cautions:", result.cautions)
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Registered model families
|
|
159
|
+
|
|
160
|
+
- **Physics-informed:** PINN, NSFnets, PINNsFormer, PINO, PI-MFM, and RiemannONet.
|
|
161
|
+
- **Operator learning:** DeepONet, MIONet, Fourier-DeepONet, Fourier-MIONet, FNO, F-FNO, U-FNO, U-NO, LSM, MWT, Laplace NO, and state-space NO.
|
|
162
|
+
- **Geometry and transformer solvers:** Geo-FNO, GINO, GNOT, Transolver, UPT, MeshGraphNets, DoMINO, and ReViT.
|
|
163
|
+
- **CFD-specialized:** PIBERT, FourierFlow, P3D, AeroTransformer, NeuralDEM, DeepM&Mnet, and Energy Transformer.
|
|
164
|
+
- **Foundation and generative:** DPOT, Poseidon, PROSE-FD, BCAT, PDEformer-1, Tadpole, PDE-Refiner, FunDiff, and Flow Matching for PDEs.
|
|
165
|
+
- **Acceleration:** Solver-in-the-Loop, INC, PICT, diffSPH, NeuroSEM, neural-operator preconditioned Newton, and geometry-aware neural preconditioning.
|
|
166
|
+
- **Uncertainty and adaptation:** Conformalized-DeepONet and TANTE.
|
|
167
|
+
|
|
168
|
+
“Included” means represented through a uniform model card and recommendation interface. Official implementations remain external so upstream licenses and revisions are respected.
|
|
169
|
+
|
|
170
|
+
## Repository map
|
|
171
|
+
|
|
172
|
+
```text
|
|
173
|
+
src/navier_cfd/
|
|
174
|
+
agents/ deterministic and LLM-ready planning
|
|
175
|
+
benchmarks/ CFD metrics and benchmark plans
|
|
176
|
+
datasets/ Hugging Face discovery, download, streaming
|
|
177
|
+
models/ safe adapter protocol
|
|
178
|
+
data/ frozen paper-evidence catalog
|
|
179
|
+
catalogs.py model and dataset registries
|
|
180
|
+
evidence.py task similarity, quality, utility, shrinkage
|
|
181
|
+
recommender.py compatibility prior + evidence ranking
|
|
182
|
+
|
|
183
|
+
website/
|
|
184
|
+
index.html standalone project website
|
|
185
|
+
recommender/ interactive browser recommender
|
|
186
|
+
data/ static model and dataset catalogs
|
|
187
|
+
|
|
188
|
+
docs/ MkDocs technical documentation
|
|
189
|
+
case_studies/ detailed benchmark study guides
|
|
190
|
+
configs/tasks/ reusable task specifications
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Recommender validation
|
|
194
|
+
|
|
195
|
+
The Python recommender is covered by `pytest`; the browser engine is covered by Node's built-in test runner.
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
pytest tests/test_recommender.py tests/test_evidence_recommender.py
|
|
199
|
+
node --test website/recommender/recommender-core.test.mjs
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Canonical tests verify task-specific evidence transfer, geometry-aware 3D ranking, hybrid acceleration selection, evidence provenance, and neutral treatment of incomparable absolute MSE values.
|
|
203
|
+
|
|
204
|
+
## Packaging and deployment
|
|
205
|
+
|
|
206
|
+
- Package: `navier-cfd`
|
|
207
|
+
- Import namespace: `navier_cfd`
|
|
208
|
+
- Current version: `0.2.0`
|
|
209
|
+
- Evidence algorithm: `0.2.0-evidence`
|
|
210
|
+
- Build backend: Hatchling
|
|
211
|
+
- Website source: `website/`
|
|
212
|
+
- Documentation source: `docs/`
|
|
213
|
+
- Branch publisher: `.github/workflows/pages-branch.yml`
|
|
214
|
+
- PyPI Trusted Publishing workflow: `.github/workflows/publish-pypi.yml`
|
|
215
|
+
|
|
216
|
+
## License
|
|
217
|
+
|
|
218
|
+
Licensed under the [Apache License 2.0](LICENSE). Cite NAVIER-CFD and the original model, dataset, upstream implementation, benchmark, and numerical-solver references used in every experiment.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling>=1.25"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "navier-cfd"
|
|
7
|
+
version = "0.2.0"
|
|
8
|
+
description = "CFD-first neural solver registry, Hugging Face data hub, benchmark toolkit, evidence-aware task recommender, and agentic experiment planner."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
license = {text = "Apache-2.0"}
|
|
12
|
+
authors = [
|
|
13
|
+
{name = "Somyajit Chakraborty", email = "chksomyajit@sjtu.edu.cn"},
|
|
14
|
+
]
|
|
15
|
+
keywords = ["CFD", "scientific machine learning", "neural operator", "PINN", "PDE", "Hugging Face"]
|
|
16
|
+
dependencies = [
|
|
17
|
+
"numpy>=1.24",
|
|
18
|
+
"typer>=0.12",
|
|
19
|
+
"rich>=13.7",
|
|
20
|
+
"huggingface_hub>=0.24",
|
|
21
|
+
"datasets>=2.20",
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
[project.optional-dependencies]
|
|
25
|
+
torch = ["torch>=2.1"]
|
|
26
|
+
dev = ["pytest>=8", "pytest-cov>=5", "ruff>=0.5", "mypy>=1.10"]
|
|
27
|
+
docs = ["mkdocs-material>=9.5"]
|
|
28
|
+
all = ["torch>=2.1", "pytest>=8", "pytest-cov>=5", "ruff>=0.5", "mypy>=1.10", "mkdocs-material>=9.5"]
|
|
29
|
+
|
|
30
|
+
[project.scripts]
|
|
31
|
+
navier = "navier_cfd.cli:app"
|
|
32
|
+
cfdns = "navier_cfd.cli:app"
|
|
33
|
+
|
|
34
|
+
[project.urls]
|
|
35
|
+
Homepage = "https://github.com/Samsomyajit/NAVIER-CFD"
|
|
36
|
+
Documentation = "https://samsomyajit.github.io/NAVIER-CFD/"
|
|
37
|
+
Issues = "https://github.com/Samsomyajit/NAVIER-CFD/issues"
|
|
38
|
+
|
|
39
|
+
[tool.hatch.build.targets.wheel]
|
|
40
|
+
packages = ["src/navier_cfd"]
|
|
41
|
+
|
|
42
|
+
[tool.hatch.build]
|
|
43
|
+
include = ["src/navier_cfd/**/*.py", "src/navier_cfd/**/*.json"]
|
|
44
|
+
|
|
45
|
+
[tool.pytest.ini_options]
|
|
46
|
+
pythonpath = ["src"]
|
|
47
|
+
testpaths = ["tests"]
|
|
48
|
+
addopts = "-q"
|
|
49
|
+
|
|
50
|
+
[tool.ruff]
|
|
51
|
+
line-length = 120
|
|
52
|
+
target-version = "py310"
|
|
53
|
+
|
|
54
|
+
[tool.mypy]
|
|
55
|
+
python_version = "3.10"
|
|
56
|
+
warn_return_any = true
|
|
57
|
+
warn_unused_configs = true
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"""NAVIER-CFD public API: neural and agentic workflows for computational fluid dynamics."""
|
|
2
|
+
|
|
3
|
+
from .catalogs import Catalog
|
|
4
|
+
from .evidence import (
|
|
5
|
+
ALGORITHM_VERSION,
|
|
6
|
+
EvidenceMatch,
|
|
7
|
+
EvidenceRecord,
|
|
8
|
+
EvidenceSummary,
|
|
9
|
+
load_builtin_evidence,
|
|
10
|
+
score_model_evidence,
|
|
11
|
+
)
|
|
12
|
+
from .recommender import Recommendation, recommend_models
|
|
13
|
+
from .specs import DatasetSpec, ModelSpec, TaskSpec
|
|
14
|
+
|
|
15
|
+
__all__ = [
|
|
16
|
+
"ALGORITHM_VERSION",
|
|
17
|
+
"Catalog",
|
|
18
|
+
"DatasetSpec",
|
|
19
|
+
"EvidenceMatch",
|
|
20
|
+
"EvidenceRecord",
|
|
21
|
+
"EvidenceSummary",
|
|
22
|
+
"ModelSpec",
|
|
23
|
+
"Recommendation",
|
|
24
|
+
"TaskSpec",
|
|
25
|
+
"load_builtin_evidence",
|
|
26
|
+
"recommend_models",
|
|
27
|
+
"score_model_evidence",
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
__version__ = "0.2.0"
|