Files
CFDManager/docs/theory/demos_gpu/README.md
T
NotBigGhostandClaude Opus 5 11ff7b79b4 Начальный коммит: Vulkan-редактор SimVulcan + исследование KBC-LBM
Состояние на момент заведения репозитория.

C++ приложение (src/, shaders/, tests/) — минимальный редактор 3D-моделей
на Vulkan 1.3: орбитальная камера, три опорные сетки через начало координат,
загрузка .obj с режимами отображения. Весь Vulkan изолирован в src/vk/.

Исследование (docs/) — оригинальные статьи по KBC (docs/origins) и
Python-решатель D2Q9 KBC-N1 с AMR 2x и SDF+Bouzidi (docs/theory).

В решателе перед коммитом исправлены дефекты, найденные сверкой с
первоисточниками: относительный порог знаменателя энтропийного стабилизатора
(абсолютный вырождал KBC в LBGK на 77-99% узлов), заворот вход/выход в углах
домена, диагностика средней плотности по фиктивным узлам тела, зашитый
refine=2. Подробности — docs/theory/solver_2x_sdf/README.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 16:37:38 +03:00

2.6 KiB
Raw Blame History

demos_gpu — GPU-прогоны демо для ноутбука kbc_lbm.ipynb

Ноутбук не исполняет код — он встраивает готовые артефакты (png/gif) и цитирует числа. Все симуляции здесь, только GPU/CuPy (CPU-фолбэка нет). Физика не дублируется: решётка, равновесие, KBC-столкновение, перенос и AMR-связка импортируются из ../solver_2x_sdf — демо тем самым гоняют те же компоненты, что и финальная модель.

Запуск (на GPU-сервере, из этой папки)

python checks_gpu.py      # самопроверки математики          → out/checks.txt
python tgv_gpu.py         # Тейлор–Грин: вязкость, H-теорема → figures/07*, anim/tgv_decay.gif
python shear_gpu.py       # сдвиговый слой BGK vs KBC        → figures/08*, anim/shear_bgk_vs_kbc.gif
python cavity_gpu.py      # каверна Re=1000 vs Ghia          → figures/09*, anim/cavity_transient.gif
python obstacle_gpu.py    # 4 тела, дорожки Кармана          → figures/10*, anim/obstacle_shapes.gif
python amr_demo_gpu.py    # AMR: демо + бенчмарк + вложенный → figures/11d*, anim/amr_{cylinder,nested}.gif
python figures_static.py  # стенсили/блок-схема/схема AMR    → figures/01,06,11c,11_d3q27 (после obstacle!)

figures_static.py — единственный скрипт без GPU (чистый matplotlib, можно гонять локально); схему 11c он перерисовывает по фону из out/obstacle_circle_field.npz, который пишет obstacle_gpu.py — поэтому его запускать после obstacle.

Env: AMR_FP64=1 — двойная точность (жёстче пороги самопроверок в checks_gpu).

Скрипт Время (примерно, совр. GPU)
checks_gpu секунды
tgv_gpu ~1 мин (10k шагов, 96²)
shear_gpu ~1–2 мин (2×8k, 128²)
cavity_gpu ~1–2 мин (до 14k, 110²)
obstacle_gpu ~3–5 мин (4×9.6k, 150×72)
amr_demo_gpu ~5–10 мин (демо + 6 бенчмарков + анимация)

Артефакты идут в общие каталоги ../figures и ../anim под теми же именами, что исторически использовал ноутбук; числовые сводки — в out/*.txt|npz.