admin
|
e40393d793
|
fix: display.txt 缺少渲染参数导致盒子不透明
外部引擎(C/C++)直接写 display.txt 时只输出基础物理参数
(DT/NSTEP/method 等),缺少 alpha/ball_color/box_color
等渲染参数,draw.py 读取不到 alpha 回退默认 0.2。
修复:
1. param.json 新增渲染参数(alpha/ball_color/box_color/...)
2. C/C++ 引擎 SimParams 新增对应字段 & JSON 读取
3. C/C++ write_display_txt 写入所有渲染参数 header
4. param.json ball_color/box_color 用数组统一存储
|
2026-06-12 15:05:46 +08:00 |
|
admin
|
dc7bc00616
|
feat: C/C++ 引擎支持 save_trajectory=0 时直接写 display.txt
所有引擎(Python/C/C++)在 save_trajectory=0 时行为一致:
- 计算时按 NSTEP 抽帧,只存 sampled 缓冲区
- 直接写入 display.txt(新文本格式)
- 不生成 trajectory.txt
Python 引擎:run_simulation 已支持 ✅
C 引擎:采样缓冲区 + write_display_txt ✅
C++ 引擎:采样缓冲区 + write_display_txt ✅
Fortran 引擎:待完成
compute.py run_engine:save_trajectory=0 时跳过 trajectory.txt 加载
dynamics.py:引擎直接输出 display.txt 时跳过抽帧步骤
|
2026-06-12 08:25:27 +08:00 |
|
admin
|
c158c74609
|
perf: 降低 JSON 输出精度 15→8 位 + 添加 I/O 阶段提示
- C/C++/Fortran 引擎:%.15g/setprecision(15)/g0 → %.8g/g0.8
- 添加 "正在写入轨迹数据…" 提示,说明 100% 后的等待原因
- trajectory.txt 文件从 419MB → 407MB(仍有优化空间)
|
2026-06-12 05:53:27 +08:00 |
|
admin
|
db50ac6d4d
|
feat: 外部引擎实时进度条 + C引擎read_bonds rewind修复
1. 引擎端:C/C++/Fortran 主循环每 1% 输出 progress 到 stdout
2. compute.py:读取 "[xxx] progress: N/total" 行更新 tqdm
3. 移除不准的时间估算逻辑,改用真实引擎进度
4. C引擎 read_bonds:rewind 后补 fgets 跳表头
5. gitignore 添加 output_test/
|
2026-06-11 21:36:30 +08:00 |
|
admin
|
9d5997afec
|
fix(c): read_bonds 中 rewind 后未跳过表头行导致成键数据全为空
rewind(f) 将文件指针拉回开头(含表头 'n1 n2 bond_name'),
后续 fscanf 试图将 'n1' 解析为 %d 全部失败,导致:
- bond_pairs 直接用未初始化的栈垃圾 → 随机索引
- bond_stiffness/rest_lengths 保持默认值 1.0/2.0
- 弹簧力无法正确传播 → 第一个原子动后后面全不动
修复:rewind 后加 fgets(line, ...) 再次跳过表头。
|
2026-06-11 19:38:10 +08:00 |
|
admin
|
1fd87cc33b
|
fix(fortran): 修复 JSON 输出缺少逗号导致解析失败
write_json 中 bond_rest_lengths 后面缺少逗号,
导致 JSON 解码器在 driving_force 前报错:
JSONDecodeError: Expecting ',' delimiter
将 has_next 从 .false. 改为 .true.,空数组版本也补上逗号。
|
2026-06-11 19:14:54 +08:00 |
|
admin
|
b783cbb981
|
fix(fortran): 修复 read_coord 中 line(0:0) 字符串越界导致崩溃
错误码 3221225785 (0xC0000005 = STATUS_ACCESS_VIOLATION) 由
read_coord 中列数统计的双重条件导致:
line(i:i) /= ' ' .and. (i == 1 .or. line(i-1:i-1) == ' ')
Fortran 不保证 .or. 短路求值,当 i=1 时 line(0:0) 触发
内存越界。拆分为嵌套 if 块,确保只有在 i>1 时才访问
line(i-1:i-1)。
|
2026-06-11 19:11:34 +08:00 |
|
admin
|
b9ec622808
|
fix: C/C++/Fortran 引擎补齐 wrap_position 和 t=0 驱动力
- 三引擎均新增 wrap_position 周期边界回绕(调用在 limit_in_box 后)
- 三引擎均新增 t=0 驱动力初始调用(在预热循环前)
- 至此三引擎算法与 Python 完全一致
|
2026-06-11 18:57:41 +08:00 |
|
admin
|
685234c84f
|
feat: 为 C/C++/Fortran 引擎增加驱动力(driving_force)支持
- param.json 新增 driving_force 开关
- C 引擎: 新增 DriverData 结构体、read_driver()、apply_driving_force()
- C++ 引擎: 同上(C++ 风格实现)
- Fortran 引擎: 同上(Fortran 90 风格实现)
- 修复 JSON 输出末尾逗号导致加载失败的问题
- 编译通过并验证 C 引擎运行正常(100000步/6.6s)
|
2026-06-11 09:19:34 +08:00 |
|
admin
|
5de80d4f7e
|
modified: CMakeLists.txt
modified: INSTALL.md
modified: README.md
modified: build_release_zip.py
modified: compute.py
new file: doc/index.html
modified: dynamics.py
modified: engines/c/main.c
modified: engines/cpp/main.cpp
modified: engines/fortran/main.f90
modified: examples/case01/input/coord.txt
renamed: examples/case01/input/parameters.yaml -> examples/case01/input/input.txt
modified: examples/case01/run_dynamics.py
new file: examples/case02/input/bond.txt
new file: examples/case02/input/connection.txt
new file: examples/case02/input/coord.txt
new file: examples/case02/input/input.txt
new file: examples/case02/run_dynamics.py
|
2026-05-20 16:03:59 +08:00 |
|
admin
|
45513fe334
|
init
|
2026-05-17 08:47:25 +08:00 |
|