feat: display.txt 传递原子半径数组,draw.py 读取 per-atom 半径
之前所有原子使用统一的 ball_radius(来自 input.txt), 现在 display.txt header 包含 atom_radii 字段(逗号分隔 的半径数组),draw.py 据此为每个原子设置独立半径。 fallback:若没有 atom_radii 字段,仍使用 ball_radius。
This commit is contained in:
+2
-1
@@ -1460,7 +1460,8 @@ def run_simulation(save_trajectory=0):
|
|||||||
"gravity_strength": str(GRAVITY_STRENGTH),
|
"gravity_strength": str(GRAVITY_STRENGTH),
|
||||||
"driving_force": str(DRIVING_FORCE),
|
"driving_force": str(DRIVING_FORCE),
|
||||||
"use_marker": str(use_marker),
|
"use_marker": str(use_marker),
|
||||||
"alpha": ",".join(str(a) for a in (alpha if isinstance(alpha, list) else [alpha]))}
|
"alpha": ",".join(str(a) for a in (alpha if isinstance(alpha, list) else [alpha])),
|
||||||
|
"atom_radii": ",".join(str(r) for r in ATOM_RADII)}
|
||||||
)
|
)
|
||||||
print(f"[compute] display.txt 已保存至: {disp_path} ({n_frames_actual} 帧)")
|
print(f"[compute] display.txt 已保存至: {disp_path} ({n_frames_actual} 帧)")
|
||||||
|
|
||||||
|
|||||||
@@ -67,6 +67,11 @@ DISP_T = DISP_STEP * DT
|
|||||||
|
|
||||||
# 原子信息
|
# 原子信息
|
||||||
ATOM_IDS = disp_data["atom_ids"]
|
ATOM_IDS = disp_data["atom_ids"]
|
||||||
|
# 优先使用 per-atom 半径,否则用统一的 ball_radius
|
||||||
|
_raw_radii = h.get("atom_radii", "")
|
||||||
|
if _raw_radii.strip():
|
||||||
|
ATOM_RADII = np.array([float(x) for x in _raw_radii.split(",")])
|
||||||
|
else:
|
||||||
ATOM_RADII = np.full(N_ATOMS, float(h.get("ball_radius", 0.5)))
|
ATOM_RADII = np.full(N_ATOMS, float(h.get("ball_radius", 0.5)))
|
||||||
PLOT_ATOM_ROW = 0
|
PLOT_ATOM_ROW = 0
|
||||||
PLOT_ATOM_ID = int(ATOM_IDS[0])
|
PLOT_ATOM_ID = int(ATOM_IDS[0])
|
||||||
|
|||||||
+2
-1
@@ -253,7 +253,8 @@ def run_case(config_path, runtime_base, input_dir="input", output_dir="output",
|
|||||||
"gravity_strength": str(data.get("gravity_strength", 1.0)),
|
"gravity_strength": str(data.get("gravity_strength", 1.0)),
|
||||||
"driving_force": str(data.get("driving_force", 0)),
|
"driving_force": str(data.get("driving_force", 0)),
|
||||||
"use_marker": str(config.get("use_marker", 0)),
|
"use_marker": str(config.get("use_marker", 0)),
|
||||||
"alpha": _fmt_alpha(data.get("alpha", 0.2))}
|
"alpha": _fmt_alpha(data.get("alpha", 0.2)),
|
||||||
|
"atom_radii": _fmt_alpha(data.get("atom_radii", []))}
|
||||||
|
|
||||||
n_frames = len(indices)
|
n_frames = len(indices)
|
||||||
compute.save_display_txt(
|
compute.save_display_txt(
|
||||||
|
|||||||
Reference in New Issue
Block a user