Commit Graph

6 Commits

Author SHA1 Message Date
admin 2ab3436235 feat: redesign plot_wave with per-atom energy panels
New 4x2 layout: left col = x/y/z displacement waves, right col = per-atom KE/PE/total energy + system energy vs time.
PE split 50/50 for normal bonds; 100% to non-driven atom when bonded to driver; driven atom PE = E_SHO - KE.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 08:26:51 +08:00
admin 1cefe184d7 fix: plot_wave plt.show() crash when called non-interactively
Add show=False parameter to plot_wave(); when called from dynamics.py,
pass show=False and set matplotlib Agg backend to avoid NonGuiException.
Also print full traceback on failure for easier debugging.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 08:10:16 +08:00
admin e62e536cee feat: 真蛙跳法重构(Python/C/C++/Fortran 四引擎统一)
- 新增 compute_accel_conservative / accel_conservative:
  保守力加速度(弹簧+重力+原子间引力),不含阻尼,供蛙跳专用
- 重写 leapfrog_step / leapfrog_full:
  - 无阻尼:纯辛积分器,每步 1 次力计算(原 Velocity-Verlet 需 2 次)
  - 有阻尼:半隐式处理 v(t+dt/2)=[v(t-dt/2)*(1-α)+a_c*dt]/(1+α),无条件稳定
- 主循环加初始化反向半步 v(-dt/2)=v(0)-0.5*a_c(0)*dt
- 修复 C/C++ number of frames 字段写采样帧数而非总积分步数的 bug
- Python 引擎:新增 display.npz 二进制格式,draw.py/plot_wave.py 优先读取
- 编译参数统一为 -O3 -march=native -ffast-math
2026-06-12 18:36:37 +08:00
admin 20bfdf2f18 feat: 新增 plot_wave_save_gif/plot_wave_save_mp4 开关
- 所有 input.txt 新增 plot_wave_save_gif / plot_wave_save_mp4 参数
- dynamics.py 将参数传入 plot_wave()
- plot_wave.py 根据 save_gif/save_mp4 标志条件保存文件
- 默认均为 0(不输出文件,只显示动画窗口)
2026-06-11 13:31:33 +08:00
admin 131f52fe19 docs: case05纵波 + case06横波一维原子链
- case05 Readme.md 更新为纵波模拟描述
- case05 run_dynamics.py 注释更新
- case06 创建为一维原子链横波模拟
  - coord.txt: fix_x=1, fix_y=1, fix_z=0 (z方向自由)
  - driver.txt: amp_z=0.5, freq_z=0.1, phi_z=90°
  - input.txt: 横波配置 + step_plot_wave
  - Readme.md + doc/index.html + run_dynamics.py
- 模拟验证通过 (50000步/30s)
2026-06-11 13:27:43 +08:00
admin 80520590d1 feat: 新增波形能量动画系统 plot_wave.py
- 创建 plot_wave.py: 从 display.txt 读取原子位移数据
  绘制纵波(x) + 横波(y) + 横波(z) 波形随时间的动画
  同时绘制系统动能/弹性势能/总能量/输入功率(dE/dt)时变曲线
  输出 wave_animation.gif
- 所有 input.txt 新增 step_plot_wave: 0 开关
- case05 开启 step_plot_wave: 1
- dynamics.py disp_data 新增 bond_stiffness/bond_rest_lengths
- 更新案例文档
2026-06-11 12:39:46 +08:00