Files
CFDManager/.gitignore
T
NotBigGhostandClaude Opus 5 8d17bc8014 Валидационная кампания на 115 прогонов и Docker-образ для сервера
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>
2026-08-15 17:36:40 +03:00

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