103 lines
4.7 KiB
Plaintext
103 lines
4.7 KiB
Plaintext
# 物理模拟参数配置
|
||
# 格式:YAML
|
||
# 用法:python run_dynamics.py
|
||
|
||
# ── 流程控制 ──────────────────────────────────
|
||
# 每步用 0/1 单独开关,1=执行,0=跳过
|
||
# 依赖关系:抽帧依赖模拟结果,绘图依赖模拟+抽帧
|
||
step_simulate: 1 # 运行物理模拟 → output/display.txt(引擎直接抽帧)
|
||
step_sample: 0 # (旧版)从 trajectory.txt 重新抽帧,默认0=不执行
|
||
step_plot: 0 # 绘制轨迹/能量图 → output/trajectory_plots.png
|
||
step_animation: 1 # 自动播放 VisPy 3D 动画窗口(需安装 vispy)
|
||
step_plot_wave: 0 # 绘制波形能量动画
|
||
force_calc: 0 # 强制重新计算:1=跳过缓存强算,0=自动使用已有输出
|
||
plot_wave_save_gif: 1 # 输出波形 GIF(需 step_plot_wave=1)
|
||
plot_wave_save_mp4: 1 # 输出波形 MP4(需 step_plot_wave=1)
|
||
|
||
# ── 文件保存 ──────────────────────────────────
|
||
save_trajectory: 0 # 0=不保留完整轨迹文件, 1=保留 trajectory.txt(用于后续单独抽帧)
|
||
|
||
# ── 计算引擎 ──────────────────────────────────
|
||
# 可选: python, c, cpp, fortran, java
|
||
engine: fortran # 默认使用 python 引擎
|
||
|
||
# ── 盒子 ──────────────────────────────────────
|
||
box_a: 80.0 # 立方体半边长,粒子被限制在 [-box_a, box_a]³ 内
|
||
|
||
# ── 初始构型 ──────────────────────────────────
|
||
# 坐标文件格式:
|
||
# 第一行:n mass radius x y z vx vy vz fix_x fix_y fix_z
|
||
# 后续行:原子序号 质量 半径 x y z vx vy vz fix_x fix_y fix_z
|
||
coord_file: input/coord.txt
|
||
connection_file: input/connection.txt
|
||
bond_file: input/bond.txt
|
||
driver_file: input/driver.txt # 驱动力定义文件(driving_force=1 时生效)
|
||
|
||
# 绘图/动画展示的原子序号(对应 coord_file 第一列 n)
|
||
plot_atom: 1
|
||
|
||
# ── 物理参数 ──────────────────────────────────
|
||
# 三个方向分量分别对应 x, y, z
|
||
G: [0.00, 0.00, 0.00] # 重力场分量 (m/s²)
|
||
B: [0.02, 0.00, 0.02] # 阻尼分量
|
||
|
||
# ── 力开关(0=关闭, 1=开启)──────────────────
|
||
gravity_field: 0 # 均匀重力场 (G)
|
||
gravity_interaction: 0 # 原子间万有引力
|
||
elastic_force: 1 # 弹簧键力
|
||
damping_force: 1 # 阻尼 (B)
|
||
driving_force: 1 # 驱动力(需 driver_file 定义)
|
||
#
|
||
gravity_strength: 1.0 # 万有引力强度(仅 gravity_interaction=1 时有效)
|
||
|
||
# ── 数值算法 ──────────────────────────────────
|
||
# 可选:
|
||
# explicit_euler 显式欧拉法
|
||
# implicit_euler 隐式欧拉法
|
||
# midpoint 中点法
|
||
# leapfrog 蛙跳法
|
||
method: leapfrog
|
||
|
||
# ── 步骤控制 ──────────────────────────────────
|
||
# 以下参数控制哪些步骤被执行和保存
|
||
|
||
# 预热步数:模拟开始时跳过不保存的步数(用于稳定初始状态)
|
||
warmup_steps: 0 # 默认 0(立即开始记录)
|
||
|
||
# 总模拟时间(秒),程序自动计算 NT = T_total / DT
|
||
# 如果同时指定了 NT,以 NT 为准
|
||
T_total: 20.0
|
||
|
||
# 抽帧间隔(每 NSTEP 步取一帧用于动画)
|
||
NSTEP: 10
|
||
|
||
# ── 时间步长 ──────────────────────────────────
|
||
DT: 0.01 # 时间步长 (s)
|
||
|
||
# 抽帧范围:只保存 [sample_start, sample_end) 区间内的帧
|
||
sample_start: null # null 表示从头开始(帧索引从 0 起)
|
||
sample_end: null # null 表示到末尾
|
||
|
||
|
||
|
||
# ── 渲染方式 ──────────────────────────────────
|
||
# 3D 动画中原子渲染方式:
|
||
# 0 = Sphere (网格球体,效果精细,原子数少时推荐)
|
||
# 1 = Marker (GPU 实例化点,原子数多时性能更佳)
|
||
use_marker: 1
|
||
|
||
# ── 显示参数 ──────────────────────────────────
|
||
# 盒子透明度:单个数值(统一)或 6 个数的数组,按 [-x,+x,-y,+y,-z,+z] 顺序
|
||
alpha: [0.0, 0.0, 0.0, 0.0, 0.0, 0.5]
|
||
|
||
# 小球颜色
|
||
# 小球半径从 coord_file 的 radius 列读取
|
||
ball_color_r: 0.20 # R 分量 (0~1)
|
||
ball_color_g: 0.60 # G 分量
|
||
ball_color_b: 0.90 # B 分量
|
||
|
||
# 盒子面颜色
|
||
box_color_r: 0.80
|
||
box_color_g: 0.80
|
||
box_color_b: 0.85
|