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 时跳过抽帧步骤
This commit is contained in:
+12
-1
@@ -894,6 +894,7 @@ def run_engine(engine, input_dir, output_dir, config):
|
||||
"damping_force": int(config.get("damping_force", 0)),
|
||||
"gravity_strength": float(config.get("gravity_strength", 1.0)),
|
||||
"driving_force": int(config.get("driving_force", 0)),
|
||||
"save_trajectory": int(config.get("save_trajectory", 0)),
|
||||
}
|
||||
param_path = os.path.join(script_dir, "engines", engine, "param.json")
|
||||
os.makedirs(os.path.dirname(param_path), exist_ok=True)
|
||||
@@ -1008,7 +1009,17 @@ def run_engine(engine, input_dir, output_dir, config):
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
# 加载输出的 trajectory.txt
|
||||
# 加载输出的 trajectory.txt / display.txt
|
||||
save_traj = int(config.get("save_trajectory", 0))
|
||||
if not save_traj:
|
||||
# save_trajectory=0:引擎只写 display.txt
|
||||
disp_path = os.path.join(os.path.abspath(output_dir), "display.txt")
|
||||
if not os.path.exists(disp_path):
|
||||
raise FileNotFoundError(f"引擎未生成 display.txt: {disp_path}")
|
||||
print(f"[compute] 引擎已生成 {disp_path}")
|
||||
return None, None, None, None, None, None
|
||||
|
||||
# save_trajectory=1:加载完整 trajectory.txt
|
||||
traj_path = os.path.join(os.path.abspath(output_dir), "trajectory.txt")
|
||||
if not os.path.exists(traj_path):
|
||||
raise FileNotFoundError(f"引擎未生成 trajectory.txt: {traj_path}")
|
||||
|
||||
Reference in New Issue
Block a user