Суверенний розв'язувач рівнянь Нав'є–Стокса в парадигмі POLER[Ψ]. Окремий інструмент в окремому репозиторії. Чистий Rust, нуль хмар, нуль GPU-вимог.
∂u/∂t = u×ω − ∇B + ν∇²u ⟂ dp/dt = −η·Π_Λ[D·p + γJ·p + ∇F]
Форма Ламба для руху в'язкої рідини і канонічне рівняння каузальної динаміки POLER мають одну структуру: ротор + дисипатор + градієнт. poler-flow рахує перше, керуючись дисципліною другого: енергія — ляпунівська функція, в'язкість — дисипатор, завихореність — ротор, тиск — потенціал.
| Призначення | чисельні розв'язки нестисливих рівнянь Нав'є–Стокса: 2D/3D, ламінарні та турбулентні режими, енергетичні діагностики |
| Ядро v1 | метод дробових кроків (Chorin) на рознесеній MAC-сітці + псевдоспектральний метод (періодичний бокс) |
| Валідація | точні розв'язки: Taylor–Green, Пуазейль/Куетт, кавітакція Ghia; спектри Колмогорова k−5/3 |
| Унікум | трійковий {−1,0,+1} LES-клозур із кристалів .t5c — живий міст до poler-engine |
| Статус | v0.2.0 — M1 виконано. 2D проєкційний солвер повністю пройшов драбину A1–A11 (див. docs/reports/M1_REPORT.md) |
- Фізика замість слів. Кожна заява має приймальний тест: точний розв'язок, закон збереження або бенчмарк із літератури. MVR-культура: число або мовчання.
- Суверенний стек. std + libc + memmap2 + zstd. Власний FFT, власний мультигрід, власний парсер TOML-кейсів. Жодних SMT-хмар, ONNX, CUDA.
- Стрімінг завжди. Снапшоти ллються на диск через обмежене 4 MiB-кільце; датасети течуть у кристал без розпакування (уроки .poler / --archive-to-crystal).
- Дисципліна RAM. Робоча множина — формула, а не сюрприз: WSS ≈ N·8Б·(поля+скретч). Бюджет на кожну сітку, VmHWM зчитується в приймальних тестах.
- Детермінізм. Фіксований порядок редукцій, f64 всюди, той самий бінарник → біт-в-біт ідентичні снапшоти (звіряється BLAKE3).
- Трійковий міст. Клозур турбулентності = кристал .t5c: та сама знакова квантизація PMI, що й пам'ять poler-engine; сенсорика і фізика ділять код.
- Інструмент, не оракул. Рушій рахує поля, розхідність, спектри й бюджети; тлумачить фізику — автор.
| Файл | Зміст |
|---|---|
docs/ARCHITECTURE.md |
повний архітектурний план: модулі, потоки даних, пам'ять, детермінізм, M0–M6 |
docs/MATH.md |
математичне ядро: форми рівнянь, методи, точні розв'язки, приймальні формули |
docs/DATABASE_SURVEY.md |
що знайдено пошуком у базах користувача (580 МБ) і як лягло в архітектуру |
docs/FORMATS.md |
специфікація контейнера снапшотів .pfld |
docs/DIRECTIVE_M1_PROJECTION_2D.md |
директива M1 (виконана) |
docs/reports/M1_REPORT.md |
звіт виконання M1: таблиця A1–A11 з числами |
cargo test --release --test acceptance_2d # драбина A1–A11 (≈2 хв)
cargo run --release -- run cases/taylor_green_2d.toml # TG: точний розв'язок NS
cargo run --release -- run cases/cavity_re1000.toml # Ghia Re=1000 (≈110 с)
cargo run --release -- selftest # MVR-смоук ядерЗразок звіту прогону:
poler-flow: case=cavity_re1000 steps=18084 t=60.000000 wall_s=108.0
E=4.313e-2 max_div=3.0e-11 max_budget=5.4e-1 vmhwm_kb=5944 fnv=f3ace146…
Вихідні коди: 0 — ок; 1 — порушено [acceptance]-гард; 2 — помилка вводу.
report/probe/ingest/--resume — M5–M6 (див. ARCHITECTURE.md §7).
| Віха | Зміст | Ключове приймання |
|---|---|---|
| M0 | математичні ядра: FFT, мультигрід, Thomas | FFT↔DFT ≤1e−12; MG ≤8 V(3,3) до 1e−8 |
| M1 | 2D проєкційний солвер — виконано | TG2D 8.0e−5; Пуазейль 1e−10; Куетт 2e−13; Ghia ≤1.4%; div 1.1e−11; порядок 2.000; 0 алокацій; біт-детермінізм |
| M2 | 3D MAC-солвер | TG3D енергія ≤3%; 128³ ≤ 320 МБ |
| M3 | псевдоспектральний шлях | бюджет енергії ≤0.1%/крок; декада k−5/3 |
| M4 | LES: Smagorinsky/dynamic/WALE | a priori + a posteriori проти DNS |
| M5 | трійковий клозур .t5c | corr ≥0.6; ≥10⁷ клітинок/с |
| M6 | I/O + CLI | .pfld-стрімінг, VTK, resume, e2e |
- poler-engine — гіпокамп і інференс: кристали .t5c/.t5q, стрімінг-інжестія, ε-фільтр, mmap-дисципліна. poler-flow переймає патерни, не залежить від крейту.
- poler-edit — редактор; майбутнє: перегляд полів .pfld (M6+).
Ліцензія — EULA POLER (як у poler-engine). Критерій істини — приймальні тести
з docs/MATH.md, не думки авторів.