Skip to content

Баги Windows/physics/save-load/CI#44

Draft
Iosif2321 wants to merge 1 commit into
ElectroZybr:mainfrom
Iosif2321:windows-physics-save-load-ci-bugs
Draft

Баги Windows/physics/save-load/CI#44
Iosif2321 wants to merge 1 commit into
ElectroZybr:mainfrom
Iosif2321:windows-physics-save-load-ci-bugs

Conversation

@Iosif2321
Copy link
Copy Markdown

Что сделано

Этот PR закрывает набор Windows/physics/save-load/CI багов.

Physics correctness

  • Перенесён refresh NeighborList на force-entry path после движения атомов, чтобы быстрые атомы не считали forces по stale neighbor pairs.
  • Исправлены mixed mobile-fixed non-bonded пары: fixed atoms хранятся после mobile atoms, поэтому пары теперь записываются в mobile rows, которые реально обходит ForceField.
  • Разделены physical cutoff и cutoff + skin: skin больше не должен менять LJ/Coulomb physics и остаётся параметром amortization/rebuild.
  • Добавлена защита от near-overlap force spikes через общий floor pair distance для LJ/Coulomb kernels.
  • Реализован public CoulombForceField::compute(...), который раньше был no-op.
  • RK4/Langevin canonicalized к фактическому runtime behavior, пока настоящие implementations отсутствуют.

Simulation/cache/save-load

  • Централизована validation/clamp для Simulation::setDt, чтобы UI/load paths не могли напрямую протащить invalid dt.
  • NeighborList invalidates после world-level atom add/remove и box/cell-size изменений.
  • Сохранены Na/Cl default charges через AtomData, а text loader больше не нейтрализует атом при отсутствующем charge.
  • Binary load теперь проверяет consistency atom arrays перед AtomStorage::init.
  • .latbin title/description назначаются после clear(), чтобы metadata не стиралась сразу после load.

Build/package/CI/benchmarks

  • Runtime executables перенесены из source root в build tree.
  • Release packaging теперь идёт через Runtime install component и включает wgpu_native.dll.
  • CTest больше не пустой: добавлен latticelab.regression.
  • CI дополняется CTest и benchmark smoke/inventory guards.
  • Bench preset собирает и benchmarks, и latticelab_tests.
  • Исправлены benchmark issues: IdealCrystal3D route, force/energy reset между итерациями, valid NeighborList для rebuild benchmark.
  • #pragma GCC ivdep заменён на compiler-guarded LATTICELAB_IVDEP, чтобы убрать MSVC C4068 warning.

UI

  • Добавлены stable hidden ImGui IDs для icon-only/dynamic labels.
  • Visible UI labels не должны измениться; hidden IDs нужны только для стабильного ImGui state.

Документация внутри кода

  • В каждом изменённом code/config файле добавлено русское пояснение Исправление бага: ..., рядом с relevant fix point.
  • Для CMakePresets.json использовано поле description, потому что JSON не поддерживает comments.

Связанные открытые PR

  • PR perf: параллельный расчёт физики через OpenMP #40 (perf: параллельный расчёт физики через OpenMP) меняет те же physics/CMake файлы, но его scope — OpenMP parallelization. Этот PR не добавляет OpenMP и должен рассматриваться как correctness/verification base перед parallelization.
  • PR Fix Metal backend and macOS build setup #37 (Fix Metal backend and macOS build setup) пересекается только по CMakeLists.txt; Metal/macOS files этим PR не затрагиваются.

Проверки

  • git diff --cached --check — passed.
  • VS DevCmd + cmake.exe --build --preset debug — passed.
  • ctest.exe --test-dir build\debug --output-on-failure100% tests passed, 0 tests failed out of 1.
  • VS DevCmd + cmake.exe --build --preset bench --target latticelab_tests — passed.
  • ctest.exe --test-dir build\bench --output-on-failure100% tests passed, 0 tests failed out of 1.

Notes

  • CPU/GPU/OpenMP acceleration intentionally не включалась в этот PR: прямой parallelization требует отдельного design pass для thread-local scratch, deterministic reduction и benchmark gates.
  • Visual behavior should be almost unchanged; expected visible effect is fewer UI state collisions and more stable/correct simulation behavior under the fixed edge cases.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant