Сверка документации с кодом: исправлены расхождения
Сплошная проверка документов против дерева. Код не менялся. 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 <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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` не передаётся.
|
||||
|
||||
## Быстрый старт на сервере
|
||||
|
||||
|
||||
@@ -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_ī^{после стриминга})`. Второй член — из поля ПОСЛЕ
|
||||
|
||||
Reference in New Issue
Block a user