NotBigGhostandClaude Opus 5 f174f1c9a0 Сверка со статьями: эталон Тейлора–Грина, выбор модели KBC, лечение продольной акустики
Проверка переориентирована на первоисточники из docs/origins вместо сравнения с
python-прототипом.

ЭТАЛОН ТЕЙЛОРА–ГРИНА (разд. VI 2D-статьи) — единственное течение статьи с точным
аналитическим решением. Второй порядок сходимости воспроизведён: 2.05 и 2.01 на
сетках 64/128/256, отдельно по амплитуде и по форме. Два места потребовали разбора:
* начальное давление. Течение несёт собственное поле p ~ ρu₀², находимое из
  ∇²p = 2ρ(ψ_xx·ψ_yy − ψ_xy²). Старт с ρ ≡ 1 сбрасывает разницу в акустику, которая
  в периодическом ящике не затухает и садится полкой на ошибку. Работа 2024 года
  делает то же самое явно, решая ∂ρ/∂t + ∇·(ρu₀) = D∇²ρ до стационара;
* способ измельчения. При фиксированном u₀ ошибка упирается в полку O(Ma²) (измерено:
  относительная ошибка формы ∝ u₀^1.07). Порядок виден целиком только при диффузионном
  измельчении, ν = const и u₀ ∝ 1/N. Это свойство слабо-сжимаемого метода, а не
  реализации: LBGK на том же тесте даёт ту же полку, что согласуется с утверждением
  статьи о практически одинаковом поведении всех моделей.
Добавлено приближение Града (ур. 58) для согласованного старта эталонов.

СВЕРКА ОПЕРАТОРА с пошаговым листингом работы 2024 года — совпадает дословно, включая
Δh = f − f^eq − Δs и f′ = f − β(2Δs + γΔh). Та же работа подтверждает относительный
порог вырожденности γ: стабилизатор «далеко не постоянен», а MRT с γ = const не
достигает той же устойчивости.

ВЫБОР СОСТАВА СДВИГОВОЙ ЧАСТИ (табл. I) — ключ --kbc-model: n1 = {N, Π_xy} (KBC D),
n2 = {N, Π_xy, T} (KBC C). По точности неразличимы, как и заявляет статья. Разница в
объёмной вязкости (ур. 57): у n2 она фиксирована ξ = ν, у n1 равна c_s²(1/(γβ) − ½) и
при измеренной ⟨γ⟩ ≈ 1.73 < 2 в среднем вчетверо больше ν. Поэтому вопреки ожиданию
именно n1 сильнее демпфирует продольную акустику и оставлен умолчанием.

ПРОДОЛЬНАЯ АКУСТИКА КАНАЛА — найдена причина «поршневого» поведения потока. Вход по
скорости акустически есть жёсткий поршень, выход по давлению — открытый конец; канал
работает четвертьволновым резонатором. Измерено: период пульсации 3332 шага против
расчётных 4·Nx/c_s = 3325, первый ноль автокорреляции ровно на Nx/c_s, затухание за
30000 шагов — 3.8%, то есть мода не гаснет. Возбуждал её сам старт из покоя.
Исправлено умолчаниями: --init uniform (домен сразу заполнен потоком) и автоподбор
губки по длине домена. Пульсация упала с 75% до 1.0% от скорости потока, а числа
выправились сами: St 0.183 против прежних 0.194 (литература 0.183), rms Cl 0.38
против 0.84, ⟨ρ⟩ = 1.0000. Отчёт теперь печатает период моды, время её вязкого
затухания и измеренную пульсацию с предупреждением при превышении 5%.

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

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.
  • .obj loading 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)
S
Description
САПР с упором на вычислительную гидродинамику с KBC методом в ядре и встроенными алгоритмами автоматизации аналитического проектирования обтекаемых тел.
Readme
72 MiB
Languages
C++ 88.8%
CMake 9.2%
GLSL 1.5%
Batchfile 0.5%