diff --git a/compute.py b/compute.py index ceabc8c..15a6814 100644 --- a/compute.py +++ b/compute.py @@ -1798,10 +1798,6 @@ def apply_motion_update(x, y, z, vx, vy, vz, dt, m, g, b): x, y, z, vx, vy, vz = Leapfrog_Method(x, y, z, vx, vy, vz, dt, m, g, b) else: raise ValueError(f"未知算法: {METHOD}") - - x, vx = Limit_in_box(x, X_MIN, X_MAX, vx) - y, vy = Limit_in_box(y, Y_MIN, Y_MAX, vy) - z, vz = Limit_in_box(z, Z_MIN, Z_MAX, vz) return x, y, z, vx, vy, vz @@ -1870,6 +1866,9 @@ def run_simulation(save_trajectory=0): x, y, z, vx, vy, vz, DT, ATOM_MASSES, G, B) else: x, y, z, vx, vy, vz = apply_motion_update(x, y, z, vx, vy, vz, DT, ATOM_MASSES, G, B) + x, vx = Limit_in_box(x, X_MIN, X_MAX, vx) + y, vy = Limit_in_box(y, Y_MIN, Y_MAX, vy) + z, vz = Limit_in_box(z, Z_MIN, Z_MAX, vz) x, y, z = wrap_position(x, y, z) x, y, z, vx, vy, vz = apply_fixed_constraints(x, y, z, vx, vy, vz) print( @@ -1924,6 +1923,9 @@ def run_simulation(save_trajectory=0): x, y, z, vx, vy, vz, DT, ATOM_MASSES, G, B) else: x, y, z, vx, vy, vz = apply_motion_update(x, y, z, vx, vy, vz, DT, ATOM_MASSES, G, B) + x, vx = Limit_in_box(x, X_MIN, X_MAX, vx) + y, vy = Limit_in_box(y, Y_MIN, Y_MAX, vy) + z, vz = Limit_in_box(z, Z_MIN, Z_MAX, vz) x, y, z = wrap_position(x, y, z) x, y, z, vx, vy, vz = apply_fixed_constraints(x, y, z, vx, vy, vz) diff --git a/examples/case01/input/input.txt b/examples/case01/input/input.txt index c94c425..be540d7 100644 --- a/examples/case01/input/input.txt +++ b/examples/case01/input/input.txt @@ -6,7 +6,7 @@ # 每步用 0/1 单独开关,1=执行,0=跳过 # 依赖关系:抽帧依赖模拟结果,绘图依赖模拟+抽帧 step_simulate: 1 # 运行物理模拟 → output/trajectory.txt -step_sample: 1 # 抽帧 → output/display.txt +step_sample: 0 # 抽帧 → output/display.txt step_plot: 1 # 绘制轨迹/能量图 → output/trajectory_plots.png step_plot_wave: 0 # 绘制波形能量动画 plot_wave_save_gif: 0 # 输出波形 GIF(需 step_plot_wave=1) @@ -71,7 +71,7 @@ warmup_steps: 0 # 默认 0(立即开始记录) T_total: 10.0 # 抽帧间隔(每 NSTEP 步取一帧用于动画) -NSTEP: 100 +NSTEP: 10 # ── 时间步长 ────────────────────────────────── DT: 0.001 # 时间步长 (s)