8d17bc8014e0bb54f774ea125084c12fcb36af6a
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>
SimVulcan
A minimal Vulkan 1.3 / C++20 3D model editor: an orbit camera over three
reference grid planes through the origin, with .obj model loading and display.
Features
- Orbit camera — drag to rotate around the centre, wheel to zoom, and Front / Top / Side buttons to align the view to the principal planes.
- A 3D editor space: three grid planes (XY, XZ, YZ) and coloured X/Y/Z axes meeting at the origin.
.objloading with three display modes — solid (flat-shaded), wireframe, and solid + wireframe overlay.- ImGui interface (Viewport controls + Mesh load panel).
All Vulkan code is isolated in src/vk/; the rest of the app is Vulkan-free.
Targets
- Windows x64 (MSVC / clang-cl)
- Linux x64 (gcc / clang)
- macOS arm64 (Apple Silicon, via MoltenVK)
Prerequisites
- Vulkan SDK 1.3.290+ (
https://vulkan.lunarg.com/) - CMake 3.26+
- Ninja
- C++20 compiler (MSVC 19.36+, gcc 11+, clang 14+)
Build
cmake --preset windows-msvc-release
cmake --build --preset windows-msvc-release
Run from the executable's own directory (build/<preset>/src/app/) so it finds
the spirv/ and assets/ trees copied next to it.
Tests
cmake --build --preset windows-msvc-debug --target simv_tests
ctest --preset windows-msvc-debug
Layout
src/
core/ Logger, Window, App (orchestration, Vulkan-free)
vk/ All Vulkan: Context, Swapchain, Buffer, Image, Shader, GpuMesh,
Renderer (frame loop + depth + ImGui), MeshRenderer, GridRenderer
mesh/ CPU mesh: tinyobjloader + welding (no Vulkan)
editor/ Camera, mouse input, EditorUI + MeshLoadPanel (ImGui, no Vulkan)
app/ main.cpp
shaders/
editor/ mesh + grid vertex/fragment shaders (GLSL → SPIR-V at build time)
tests/ Catch2 unit tests (mesh math)
Description
САПР с упором на вычислительную гидродинамику с KBC методом в ядре и встроенными алгоритмами автоматизации аналитического проектирования обтекаемых тел.
72 MiB
Languages
C++
88.8%
CMake
9.2%
GLSL
1.5%
Batchfile
0.5%