34 Commits

Author SHA1 Message Date
88eb05ae94 Add 1D random walk dynamics and example
All checks were successful
CI / Format (push) Successful in 1m9s
CI / Clippy (push) Successful in 2m27s
CI / Test (push) Successful in 2m42s
Implement RandomWalk1D dynamics for lattice-based
simulations and provide an example that demonstrates
diffusive scaling. Move prelude into lib.rs for simpler
module organization. Use () for lattice momentum since
discrete walks don't have meaningful momenta.
2026-05-05 19:28:06 +09:00
8d2d261564 Add simul-lattice crate for discrete space simulations 2026-05-05 00:50:37 +09:00
dffa67d505 docs: reorder M0+ — lattice canary first, trait fix after decision gate
trait 정렬 fix 가 후속의 base 라는 직관적 의존성은 실제로는 약함:
1D random walker 는 simul-core trait 만 사용하므로 simul-euclidean
ForceInteraction 부정합과 독립이다. 반면 trait fix 의 *최종 모양*
(Handle 을 simul-core 로 lift 할지, EuclideanInteraction sub-trait
으로 둘지) 은 두 데이터 포인트 (Euclidean MD + Lattice) 가 있어야
근거 있게 결정됨.

따라서 M0+ 단위 순서를 1↔2 swap + 결정 게이트 신규 §2 추가:

  (구) 1. Trait fix → 2. canary → 3-7. forces/wrappers
  (신) 1. canary → 2. 추상 재설계 결정 → 3. Trait fix → 4-8.

PROGRESS.md §1 M0+ 표 행 재배치, §6 다음 한 단위 갱신.
learning/M0+.md 섹션 순서 물리 재배치 + 새 §2 결정 게이트 추가.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 00:05:58 +09:00
d55c78c694 docs: PROGRESS dashboard + learning/ AI workflow directory
All checks were successful
CI / Format (push) Successful in 1m5s
CI / Test (push) Successful in 2m10s
CI / Clippy (push) Successful in 2m22s
ROADMAP 위에 운영 레이어 추가. 학습자가 "지금 어디 / 다음 무엇 /
어떻게 평가" 를 한 페이지에서 파악할 수 있도록.

신규:
- PROGRESS.md: 진척률 대시보드. 6/12/24개월 컷라인, 마일스톤별
  체크박스, 학습 자산 카운터, 4중 방어선 status, "지금 다음 한 단위".
- learning/README.md: AI 협업 워크플로 사이클.
- learning/M0+.md: 첫 마일스톤 6 단위 디테일 패키지
  (trait 정렬 fix · simul-lattice canary · RMSD/RG/Orientation
   restraint · Andersen → Thermostat trait · Tier-1 wrapper 14건).
- learning/todo-generator.md: 새 단위·마일스톤 todo 트리 생성
  AI prompt 템플릿.
- learning/review-rubric.md: 구현 self-review 5-axis rubric
  (정확성 / 패턴 / NEVER / canary / 단순성). 호의적 동의 금지.
- learning/canary-check.md: 마일스톤 게이트 4중 방어선 점검 prompt.

수정:
- README.md: 단일 진실 원천 인덱스 7행으로 확장
  (PROGRESS.md / learning/ 추가).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-02 16:50:40 +09:00
ac3ec6f8e0 docs: ROADMAP, migration cheatsheet, and agent team analysis
All checks were successful
CI / Format (push) Successful in 1m5s
CI / Clippy (push) Successful in 2m29s
CI / Test (push) Successful in 2m45s
OpenMM(C++ MD library) → simul(Rust crate) 학습 이관 장기 로드맵.
agent team 'simul-roadmap' (team-lead + openmm-analyst + test-translator
+ rust-architect + devil-advocate, 13 task) 의 산물.

핵심 산출물:
- ROADMAP.md: 6개월 MLP / 1년 MVP / 2년 Stretch 컷라인, 80+ unit 평가
  매트릭스, 명시적 NEVER 리스트, 4중 trait drift 방어선
  (simul-lattice canary 가드레일 포함)
- README.md: 단일 진실 원천 인덱스 (ROADMAP > DESIGN > CHEATSHEET …)
- MIGRATION_CHEATSHEET.md: OpenMM ↔ simul 1페이지 빠른 참조
- tests/UPSTREAM_TESTS.md: Tier-3 의도적 미번역 카탈로그 (인지 함정 방지)
- simul-euclidean/tests/_template_openmm.rs: Tier-1 등가성 테스트 템플릿
  (#![cfg(any())] 비활성화, FILL IN 가이드 12개)
- .team-output/T1~T13: agent team 분석 산출물 + DESIGN_PATCH

devil-advocate verdict: 재구성 후 진행 — 야심 절반 축소
(simul-lattice 본격 1차 제외 + canary 유지, CubeCL M4 이후 연기,
명시적 NEVER ~20단위, 6/12/24개월 컷라인).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-02 09:11:29 +09:00
461f547a6b feat: Implement force computation for HarmonicBondInteraction
All checks were successful
CI / Format (push) Successful in 1m4s
CI / Clippy (push) Successful in 1m55s
CI / Test (push) Successful in 2m23s
- Enhance `compute_forces` method to calculate forces and potential energy for harmonic bonds using CubeCL.
- Introduce tests for various scenarios including equilibrium, stretched bonds, and force gradient verification.
- Ensure compatibility with the CubeCL backend for efficient computation.
2026-03-08 23:52:29 +09:00
6e61e7b5ec feat: Implement nonbonded force kernel using CubeCL
Some checks failed
CI / Format (push) Successful in 1m11s
CI / Clippy (push) Successful in 1m57s
CI / Test (push) Failing after 2m20s
- Introduce `nonbonded_kernel` for parallel computation of Lennard-Jones and Coulomb forces, leveraging CubeCL for backend support.
- Update `NonbondedInteraction` to utilize the new kernel, replacing the previous CPU-based implementation.
- Refactor force computation to handle device-resident buffers and streamline energy calculations.
- Enhance documentation to reflect changes in kernel usage and interaction handling.
2026-03-08 23:42:20 +09:00
11c90655af feat: Integrate CubeCL for unified compute backend support
Some checks failed
CI / Clippy (push) Successful in 2m29s
CI / Format (push) Successful in 1m8s
CI / Test (push) Failing after 2m41s
- Replace `rayon` with `cubecl` for compute operations, enabling support for multiple backends (CPU SIMD, CUDA, wgpu, Vulkan)
- Update `Cargo.toml` and `Cargo.lock` to include `cubecl` dependencies and remove `rayon`
- Refactor dynamics implementations (Brownian, Langevin, Verlet) to utilize CubeCL for force computations
- Introduce runtime selection for compute backends and update interaction traits to operate on device-resident buffers
- Add initial structure for CubeCL compute kernels in the `kernels` module
- Update documentation to reflect new architecture and feature flags for backend selection
2026-03-08 22:00:44 +09:00
4a785f22ab refactor: Update force computation to return potential energy directly
Some checks failed
CI / Format (push) Successful in 48s
CI / Test (push) Failing after 1m41s
CI / Clippy (push) Successful in 1m41s
- Modify `compute_forces` method in `ForceInteraction` trait to return potential energy instead of a struct
- Update implementations in `NonbondedInteraction`, `HarmonicBondInteraction`, and related tests to reflect this change
- Simplify dynamics implementations by removing unnecessary output struct usage in Brownian, Langevin, and Verlet dynamics
2026-03-08 16:55:29 +09:00
32707f86fc refactor: Simplify dynamics update loops for improved readability
Some checks failed
CI / Format (push) Successful in 1m1s
CI / Clippy (push) Successful in 1m2s
CI / Test (push) Failing after 1m34s
- Replace index-based loops with iterator-based methods in Brownian, Langevin, and Verlet dynamics implementations
- Enhance clarity and maintainability of position and momentum updates
- Minor adjustments to conditional checks in NonbondedInteraction for better readability
2026-03-08 16:28:52 +09:00
a20823f2d4 refactor: Clean up code formatting and improve readability
Some checks failed
CI / Format (push) Successful in 1m11s
CI / Clippy (push) Failing after 1m18s
CI / Test (push) Failing after 1m24s
- Standardize spacing and formatting in various files for consistency
- Remove unnecessary blank lines and adjust line breaks for better readability
- Ensure consistent use of comments and code structure across the project
2026-03-08 16:22:29 +09:00
1b7b584f09 feat: Add CI workflow for Rust project
Some checks failed
CI / Clippy (push) Failing after 3m23s
CI / Test (push) Failing after 3m28s
CI / Format (push) Failing after 44s
- Introduce GitHub Actions CI workflow for automated testing, linting, and formatting
- Configure jobs for building, testing, running Clippy, and checking code formatting
- Utilize caching for cargo registry and build artifacts to improve build times
2026-03-08 16:01:29 +09:00
e1eb464e0a feat: Implement HarmonicBondInteraction and associated tests
- Introduce HarmonicBondInteraction for simulating harmonic bonds between particles
- Add methods for bond management and force computation
- Create comprehensive tests for HarmonicBondInteraction against OpenMM reference values
- Include a script to generate reference values for validation
2026-03-08 15:57:37 +09:00
401026ee3d feat: Enhance NonbondedInteraction with OpenMM reference tests
- Update COULOMB_CONSTANT for accuracy based on 2019 SI constants
- Add nalgebra as a development dependency
- Introduce comprehensive tests for NonbondedInteraction against OpenMM NonbondedForce
- Create reference values generation script for validation
2026-03-08 15:57:24 +09:00
e6039d7b77 refactor: simul-io wraps external crates
- Use pdbtbx for PDB/mmCIF parsing (re-exported)
- Keep custom XYZ reader/writer (simple format)
- Add PdbTrajectoryWriter for multi-MODEL output
- Remove redundant custom PDB reader/writer
2026-01-12 01:08:17 +09:00
1732d1c407 feat: Add simul-io crate with PDB/XYZ reader/writer
- PDB reader: parse ATOM/HETATM records
- PDB writer: write ATOM, MODEL/ENDMDL, CRYST1
- XYZ reader/writer: simple coordinate format
- Force field module placeholder

Update todo.md: mark completed items
2026-01-12 01:03:40 +09:00
ae0a00567e chore: Upgrade to rand 0.9 for Rust 2024 compatibility
- rand 0.8 -> 0.9, rand_distr 0.4 -> 0.5
- Use rng.random() instead of deprecated rng.gen()
- 'gen' is a reserved keyword in Rust 2024 edition
2026-01-11 01:37:45 +09:00
ac27c8301d refactor: Apply code review feedback
- Upgrade to Rust 2024 edition
- Rename BrownianDynamics → OverdampedLangevinDynamics (more accurate)
- Reuse BOLTZMANN_KJ_PER_MOL_K from simul-core
- Add simul-io crate to roadmap (PDB, XYZ, force fields)
- Add VelocityDependentInteraction to roadmap (Lorentz force)
- Add StateStorage trait for SoA/SIMD to roadmap
2026-01-11 01:34:01 +09:00
fc93a80fec chore: Add Cargo.lock for reproducible builds 2026-01-10 23:57:13 +09:00
cb7f3d2176 docs: Add project todo list and roadmap
- Milestone-based task organization
- OpenMM API mapping table
- Target directory structure
- Design decisions log
2026-01-10 23:57:09 +09:00
8d902724f9 docs: Add comprehensive design document
- Workspace structure and crate responsibilities
- Core abstractions (StateSpace, Dynamics, Interaction)
- State space and dynamics system design
- Simulation API patterns (Builder + Iterator)
- OpenMM API mapping reference
2026-01-10 23:57:03 +09:00
f325965731 feat(simul): Add HelloArgon example
- 36-atom Lennard-Jones gas simulation
- Velocity Verlet integration
- PDB trajectory output
- Demonstrates energy conservation
2026-01-10 23:56:57 +09:00
f67048a45f feat(simul): Add facade crate
- Re-export simul-core and simul-euclidean
- Prelude module for convenient imports
- Re-export nalgebra and rand dependencies
2026-01-10 23:56:52 +09:00
21614e1c34 feat(simul-euclidean): Add CPU compute backend
- ComputeBackend trait for platform abstraction
- CpuBackend with optional Rayon parallelization
- Feature-gated with 'cpu' feature
2026-01-10 23:56:46 +09:00
c61f40d502 feat(simul-euclidean): Add Simulation and Builder
- Simulation<D, Dyn> manages state evolution
- SimulationBuilder for ergonomic construction
- SimulationIterator for functional trajectory collection
2026-01-10 23:56:41 +09:00
191d770ca0 feat(simul-euclidean): Add NonbondedInteraction
- Lennard-Jones potential with Lorentz-Berthelot combining rules
- Coulomb electrostatics support
- ForceInteraction trait and ForceOutput struct
- CompositeForce for combining multiple interactions
2026-01-10 23:56:35 +09:00
4e0a10abd1 feat(simul-euclidean): Add dynamics implementations
- VerletDynamics: velocity Verlet integrator (deterministic)
- LangevinDynamics: BAOAB splitting scheme (stochastic)
- BrownianDynamics: overdamped Euler-Maruyama
- kinetic_energy() helper function
2026-01-10 23:55:47 +09:00
81a5ef55e9 feat(simul-euclidean): Add Euclidean<D> space implementation
- Implement StateSpace for Euclidean<D>
- Point and Momentum as SVector<f64, D>
- Type aliases Space1D, Space2D, Space3D
2026-01-10 23:55:41 +09:00
e7d1edcdef feat(simul-core): Add error types with thiserror
- SimulationError enum for common failure modes
- SimulResult type alias
2026-01-10 23:55:35 +09:00
dee5da7ca8 feat(simul-core): Add physical unit newtypes
- Dalton, Nanometer, Picosecond, KJPerMol, Kelvin, ElementaryCharge
- Arithmetic operations via macro
- Boltzmann constant and thermal_energy() helper
2026-01-10 23:55:30 +09:00
6879762c4a feat(simul-core): Add Dynamics and Interaction traits
- Dynamics trait with step(), is_deterministic(), time_type()
- TimeType enum (Continuous/Discrete)
- Interaction trait with compute() and Output type
2026-01-10 23:55:24 +09:00
31b2d01ee3 feat(simul-core): Add SystemState and StateSnapshot
- SystemState<S> holds positions, momenta, masses, time
- StateSnapshot for trajectory output
- Energy caching with invalidation
2026-01-10 23:55:19 +09:00
f54f7c20d5 feat(simul-core): Add StateSpace trait
- Define StateSpace trait with const DIM, Point, Momentum types
- Add zero_point() and zero_momentum() factory methods
- Core abstraction for Euclidean and Lattice spaces
2026-01-10 23:55:13 +09:00
671cc2f497 chore: Initialize workspace structure
- Add workspace Cargo.toml with members
- Add .gitignore for Rust projects
2026-01-10 23:54:41 +09:00