bench/ — список сценариев (порождается gen_scenarios.py, а не правится руками), драйверы под Linux и Windows, предполётная проверка и описание. Девять групп: эталоны первоисточников, цилиндр против литературы, модели стенки и субсеточность, профили крыла, сложная и множественная геометрия, границы домена, старт и время жизни, внутренние инварианты, сверхмелкие сетки до 4096×2048. Стоимость планируется в обновлениях узлов — единственной переносимой между машинами мере; в часы драйвер переводит её по фактическим MLUPS, которые замеряет на месте (--calibrate). Итого 3.76e14 обновлений, ≈90 часов на 4070 Ti. Гифки пишутся на всю длительность прогона в реальном времени, 10 кадр/с. Число кадров этим задано жёстко, поэтому размер регулируется только кадром: замерено 0.103 байта на пиксель после LZW, отсюда бюджет кадры×пиксели с нижней границей по ширине. Итог 4.4 ГБ, самый тяжёлый файл 226 МБ. preflight.py гоняет каждый сценарий на два шага. Окупился сразу: поймал, что вся группа сверхмелких сеток падала на пределе GPU, а девять прогонов группы F передавали --body-x дважды. Оба отказа проявились бы только на сервере, часов через двадцать после старта кампании. Docker: двухстадийная сборка, в образе libvulkan1 и vulkan-tools. NVIDIA Container Toolkit подкладывает Vulkan-ICD только при graphics в NVIDIA_DRIVER_CAPABILITIES — без него wgpu не увидит карту, поэтому capabilities прописаны в образе, а vulkaninfo лежит внутрь для проверки. ENTRYPOINT — драйвер кампании, CMD по умолчанию --dry-run, чтобы случайный docker run не запустил сточасовую задачу. Проверено локально: образ собирается, смоук проходит с монтированием результатов на хост, физика совпадает с хостовой до последней цифры, --backend gpu без карты отказывает явно. GPU-путь в контейнере проверяется только на машине с картой. В README поправлено разделение вкладов в продольную акустику: измерением 2×2 показано, что 74.9% → 1.1% даёт ОДНОРОДНЫЙ СТАРТ, причём при полностью выключенной губке, а губка снимает лишь остаток (1.12% → 0.83% при утроении длины). При старте из покоя губка не помогает совсем — у стоячей четвертьволновой моды там узел давления, где вязкость её не трогает. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
72 lines
3.6 KiB
Plaintext
72 lines
3.6 KiB
Plaintext
# ---------------------------------------------------------------------------
|
|
# Сборка
|
|
# ---------------------------------------------------------------------------
|
|
# Каталог пресетов CMake целиком: объектники, SPIR-V, скопированные assets,
|
|
# и _deps — клоны зависимостей через FetchContent (только они ~775 МБ).
|
|
/build/
|
|
/out/
|
|
CMakeUserPresets.json # локальные пресеты разработчика, не общие
|
|
compile_commands.json # генерится (CMAKE_EXPORT_COMPILE_COMMANDS), часто симлинк в корень
|
|
|
|
# Зависимости, если их когда-нибудь начнут класть вручную (сейчас каталог пуст,
|
|
# всё тянет FetchContent). Убрать строку, если вендорить их в репозиторий.
|
|
/extern/*
|
|
!/extern/.gitkeep
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Артефакты выполнения приложения
|
|
# ---------------------------------------------------------------------------
|
|
# SimVulcan пишет их в текущий каталог при запуске (обычно внутри build/,
|
|
# но при запуске из другого места окажутся здесь).
|
|
imgui.ini
|
|
pipeline_cache.bin
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Python (docs/theory — исследовательский код)
|
|
# ---------------------------------------------------------------------------
|
|
__pycache__/
|
|
*.py[cod]
|
|
.ipynb_checkpoints/
|
|
.venv/
|
|
venv/
|
|
.pytest_cache/
|
|
|
|
# Числовые сводки демо-прогонов: генерятся скриптами demos_gpu/*.py на GPU-сервере
|
|
# (ноутбук цитирует их значения в markdown). Сами прогоны воспроизводимы.
|
|
docs/theory/demos_gpu/out/
|
|
docs/theory/solver_2x_sdf/out/
|
|
|
|
# ВАЖНО: docs/theory/figures/ и docs/theory/anim/ НЕ игнорируются намеренно —
|
|
# ноутбук kbc_lbm.ipynb их встраивает, и без них он нечитаем на свежем клоне
|
|
# (перегенерация требует GPU-сервера). См. заметку о них в README ветки research.
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Rust (docs/theory/2d_solver — решатель KBC на Rust)
|
|
# ---------------------------------------------------------------------------
|
|
# Каталог сборки cargo: объектники, зависимости, инкрементальный кэш.
|
|
target/
|
|
# Cargo.lock для бинарного крейта обычно коммитят (воспроизводимость прогонов) —
|
|
# он НЕ игнорируется намеренно.
|
|
|
|
# Артефакты прогонов решателя: гифки, ряды, сводки. Воспроизводятся запуском.
|
|
docs/theory/2d_solver/*.gif
|
|
docs/theory/2d_solver/*.csv
|
|
docs/theory/2d_solver/out/
|
|
# Результаты валидационной кампании — гигабайты гифок и рядов. Сам список сценариев
|
|
# (bench/scenarios.json) лежит рядом с драйверами и версионируется.
|
|
docs/theory/2d_solver/bench/out/
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Редакторы и ОС
|
|
# ---------------------------------------------------------------------------
|
|
.vs/
|
|
.vscode/
|
|
.idea/
|
|
*.user
|
|
*.suo
|
|
*.swp
|
|
*~
|
|
.DS_Store
|
|
Thumbs.db
|
|
desktop.ini
|