From 3e81ed130c4ca52f25474fb2b2ff1d759d8dd41c Mon Sep 17 00:00:00 2001 From: NotBigGhost Date: Wed, 16 Sep 2026 14:12:25 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B2=D0=B5=D1=80=D0=BA=D0=B0=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D0=B8=20=D1=81=20=D0=BA=D0=BE=D0=B4=D0=BE=D0=BC:=20=D0=B8?= =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D1=80?= =?UTF-8?q?=D0=B0=D1=81=D1=85=D0=BE=D0=B6=D0=B4=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Сплошная проверка документов против дерева. Код не менялся. README.md решателя: - компенсированное суммирование Кэхена–Ноймайера заявлено «в редукциях и в сумме сил», но ядро k_force копит в обычном f32 и сворачивает наивным деревом; kadd применяется только в редукциях статистики; - «каждый прогон кладёт гифку» — гифку пишут 59 прогонов из 115, остальным --gif не передаётся; перечислено, что пишется всегда; - «≈90 часов GPU» — это ≈90 машинных часов: 108 прогонов на GPU (≈87 ч) и 7 на CPU (≈3 ч, сходимость группы A). bench/README.md — те же две поправки про часы и гифки. docs/theory/solver_2x_sdf/README.md: - предлагался несуществующий переключатель cfg.collision="bgk" и реестр операторов get; тот же файл двумя разделами ниже говорит, что оператор зафиксирован. Правка перенесена из ветки rust, файл общий для всех веток. Co-Authored-By: Claude Opus 5 --- docs/theory/2d_solver/README.md | 19 ++++++++++++------- docs/theory/2d_solver/bench/README.md | 6 ++++-- docs/theory/solver_2x_sdf/README.md | 6 ++++-- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/docs/theory/2d_solver/README.md b/docs/theory/2d_solver/README.md index 8525eb4..0a4ba72 100644 --- a/docs/theory/2d_solver/README.md +++ b/docs/theory/2d_solver/README.md @@ -364,8 +364,11 @@ CPU (f64) и GPU (f32) на одной постановке совпадают статистики: на 240×120 счёт упирался в 863 шаг/с при том, что сам счёт занимал 0.27 мс из 1.16. Теперь итоги копятся в кольце на 128 слотов, синхронизация — раз в батч: **6715 шаг/с**, в 7.8 раза быстрее, при неизменном пошаговом интерфейсе снаружи. -2. **Компенсированное суммирование** (Кэхена–Ноймайера) в редукциях и в сумме сил. Наивная сумма - по 10⁵–10⁷ узлам съедает ~log₂N бит мантиссы — именно там f32 терял основную точность. +2. **Компенсированное суммирование** (Кэхена–Ноймайера) в редукциях статистики — ⟨ρ⟩, ⟨γ⟩, + счётчики узлов и вырожденных узлов. Наивная сумма по 10⁵–10⁷ узлам съедает ~log₂N бит + мантиссы — именно там f32 терял основную точность. **Ядро сил компенсации не использует:** + `k_force` копит в обычном f32 и сворачивает наивным деревом. Ранние редакции этого README + утверждали обратное; если точность Cd когда-нибудь упрётся в потолок, начинать надо отсюда. ### Обтекание цилиндра против литературы @@ -469,11 +472,13 @@ rms Cl 0.81 вместо 0.40 — то есть 75-процентная прод ## Валидационная кампания -`bench/` — 115 прогонов на ≈90 часов GPU, разложенных по девяти группам: эталоны первоисточников, -цилиндр против литературы, модели стенки, профили крыла, сложная и множественная геометрия, -границы домена, старт и время жизни, внутренние инварианты, сверхмелкие сетки до 4096×2048. -Каждый прогон кладёт логи, ряды, машиночитаемую сводку и гифку на всю свою длительность в -собственную папку. +`bench/` — 115 прогонов на ≈90 машинных часов, разложенных по девяти группам: эталоны +первоисточников, цилиндр против литературы, модели стенки, профили крыла, сложная и +множественная геометрия, границы домена, старт и время жизни, внутренние инварианты, +сверхмелкие сетки до 4096×2048. Из них 108 идут на GPU (≈87 часов) и 7 — на CPU (≈3 часа, +исследования сходимости группы A). Каждый прогон кладёт в собственную папку `cmd.txt`, +`log.txt`, `report.txt`, `series.csv` и `summary.json`; гифку на всю свою длительность +пишут **59 прогонов из 115**, остальным `--gif` не передаётся вовсе. ```sh cd bench diff --git a/docs/theory/2d_solver/bench/README.md b/docs/theory/2d_solver/bench/README.md index 7575242..fc8ba9d 100644 --- a/docs/theory/2d_solver/bench/README.md +++ b/docs/theory/2d_solver/bench/README.md @@ -1,8 +1,10 @@ # Валидационная кампания -115 прогонов, ≈90 часов на RTX 4070 Ti. Проверяет решатель по трём независимым линиям: +115 прогонов, ≈90 машинных часов: 108 на GPU (≈87 часов на RTX 4070 Ti) и 7 на CPU (≈3 часа — +исследования сходимости группы A, где нужен f64). Проверяет решатель по трём независимым линиям: эталонам из статей авторов метода, литературе по обтеканию тел и внутренним инвариантам самой -схемы. Каждый прогон кладёт логи, ряды, машиночитаемую сводку и гифку в собственную папку. +схемы. Каждый прогон кладёт в собственную папку `cmd.txt`, `log.txt`, `report.txt`, `series.csv` +и `summary.json`; гифку пишут **59 прогонов из 115** — остальным `--gif` не передаётся. ## Быстрый старт на сервере diff --git a/docs/theory/solver_2x_sdf/README.md b/docs/theory/solver_2x_sdf/README.md index 43c341f..590ac8c 100644 --- a/docs/theory/solver_2x_sdf/README.md +++ b/docs/theory/solver_2x_sdf/README.md @@ -31,8 +31,10 @@ ## Где какая математика (для ревизии) - **Столкновение** — `collision.py`. KBC-N1: `f ← f − β(2Δs + γΔh)`, где `Δs = Ps·(f−feq)` — - проекция на сдвиг-моменты, `γ` — энтропийный лимитер. Чтобы поэкспериментировать: - переключить `cfg.collision="bgk"`, либо добавить TRT новой функцией и зарегистрировать в `get`. + проекция на сдвиг-моменты, `γ` — энтропийный лимитер. Оператор жёстко зафиксирован: + модуль объявляет `collide = kbc_collide`, поля `cfg.collision` и реестра операторов + не существует (см. раздел «Статус» ниже). Чтобы поэкспериментировать с BGK или TRT, + придётся вводить и то и другое — это осознанно не сделано. - **Перенос** — `streaming.py`. Чистая пул-схема; на физику влияет только корректность сдвигов. - **Силы** — `forces.py`. Обмен импульсом по линкам тела: `F = Σ_links c_i (f_i^{после столкн.} + f_ī^{после стриминга})`. Второй член — из поля ПОСЛЕ