From 586d7c29b2d9415d7cc4521af9a656e1a3eed653 Mon Sep 17 00:00:00 2001 From: Ying-Li Niu <64801511@qq.com> Date: Thu, 11 Jun 2026 18:43:35 +0800 Subject: [PATCH] =?UTF-8?q?case06:=20=E5=8E=9F=E5=AD=90=E6=95=B0=2060?= =?UTF-8?q?=E2=86=92120=EF=BC=8C=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/Readme.md | 6 +-- examples/case05/input/input.txt | 2 +- examples/case06/Readme.md | 2 +- examples/case06/doc/index.html | 10 ++--- examples/case06/input/connection.txt | 60 ++++++++++++++++++++++++++++ examples/case06/input/coord.txt | 60 ++++++++++++++++++++++++++++ examples/case06/input/driver.txt | 2 +- examples/case06/input/input.txt | 16 ++++---- 8 files changed, 139 insertions(+), 19 deletions(-) diff --git a/examples/Readme.md b/examples/Readme.md index 75aebd1..2ffd74f 100644 --- a/examples/Readme.md +++ b/examples/Readme.md @@ -13,7 +13,7 @@ | [case03](./case03/) | **日地月系统(失败)** | 地球绕太阳、月球绕地球,参数不当导致失稳 | 3 | 万有引力 | | [case04](./case04/) | **日地月系统(成功)** | 地球绕太阳、月球绕地球,稳定轨道 | 3 | 万有引力 | | [case05](./case05/) | **一维原子链纵波** | 驱动原子 1 沿 x 轴振动,产生纵波传播 | 60 | 弹簧 + 驱动力 | -| [case06](./case06/) | **一维原子链横波** | 驱动原子 1 沿 z 轴振动,产生横波传播 | 60 | 弹簧 + 驱动力 | +| [case06](./case06/) | **一维原子链横波** | 驱动原子 1 沿 z 轴振动,产生横波传播 | 120 | 弹簧 + 驱动力 | --- @@ -62,12 +62,12 @@ ### case06 — 一维原子链横波 -与 case05 相同的原子链,但驱动力沿 z 方向 `z(t)=0.5·cos(2π·0.1·t+90°)`,原子 z 方向自由(fix_z=0),x/y 锁定。振动在横向传播,形成**横波**。 +120 个原子沿 x 轴等间距排列(间距 1),相邻原子用弹簧(k=1.0, L₀=1.0)连接。驱动力沿 z 方向 `z(t)=0.5·cos(2π·0.1·t+90°)`,原子 z 方向自由(fix_z=0),x/y 锁定。振动在横向传播,形成**横波**。 - **力开关**:弹簧键力开,驱动力开 - **算法**:leapfrog(蛙跳法) - **波速**:慢(z 方向弹簧力呈几何非线性,类似 FPU 系统) -- **渲染**:Marker 模式(GPU 实例化,60 原子) +- **渲染**:Marker 模式(GPU 实例化,120 原子) --- diff --git a/examples/case05/input/input.txt b/examples/case05/input/input.txt index 3e13850..ab7650e 100644 --- a/examples/case05/input/input.txt +++ b/examples/case05/input/input.txt @@ -8,7 +8,7 @@ step_simulate: 0 # 运行物理模拟 → output/trajectory.txt step_sample: 0 # 抽帧 → output/display.txt step_plot: 0 # 绘制轨迹/能量图 → output/trajectory_plots.png -step_animation: 0 # 自动播放 VisPy 3D 动画窗口(需安装 vispy) +step_animation: 1 # 自动播放 VisPy 3D 动画窗口(需安装 vispy) step_plot_wave: 1 # 绘制波形能量动画 plot_wave_save_gif: 0 # 输出波形 GIF(需 step_plot_wave=1) plot_wave_save_mp4: 0 # 输出波形 MP4(需 step_plot_wave=1) diff --git a/examples/case06/Readme.md b/examples/case06/Readme.md index 84c0703..151e74c 100644 --- a/examples/case06/Readme.md +++ b/examples/case06/Readme.md @@ -6,7 +6,7 @@ | 参数 | 值 | |---|---| -| 原子数 | 60 | +| 原子数 | 120 | | 排列 | 沿 x 轴等间距排列,间距为 1 | | 约束 | 原子**沿 z 方向自由振动**(fix_x=1, fix_y=1, fix_z=0),x, y 锁定 | | 弹簧 | 劲度系数 k=1.0,原长 L₀=1.0 | diff --git a/examples/case06/doc/index.html b/examples/case06/doc/index.html index 34cad81..c50710e 100644 --- a/examples/case06/doc/index.html +++ b/examples/case06/doc/index.html @@ -155,7 +155,7 @@

一维原子链驱动力学模拟

-

60 个原子沿 x 轴排列 · 弹簧连接 · z 方向受迫振动

+

120 个原子沿 x 轴排列 · 弹簧连接 · z 方向受迫振动

case06 · examples/case06
@@ -185,7 +185,7 @@

1.1 一维原子链

-

60 个原子沿 x 轴 等间距排列,原子间距为 1。相邻原子之间用 理想弹簧 连接,弹簧的劲度系数 k = 1.0,原长 L₀ = 1.0(与原子间距一致,初始状态弹簧无拉伸)。

+

120 个原子沿 x 轴 等间距排列,原子间距为 1。相邻原子之间用 理想弹簧 连接,弹簧的劲度系数 k = 1.0,原长 L₀ = 1.0(与原子间距一致,初始状态弹簧无拉伸)。

每个原子被限制在 z 方向 自由振动,x 和 y 方向锁定(fix_x=1, fix_y=1, fix_z=0)。

@@ -415,13 +415,13 @@ step_animation: 1 # 播放动画
case06/
 ├── input/
 │   ├── input.txt          # 主配置文件(YAML 格式)
-│   ├── coord.txt          # 原子坐标(60 个原子)
+│   ├── coord.txt          # 原子坐标(120 个原子)
 │   ├── connection.txt     # 弹簧连接关系(59 条键)
 │   ├── bond.txt           # 弹簧参数(k=1.0, L₀=1.0)
 │   └── driver.txt       # 驱动力定义(本案例新增)
 ├── output/
-│   ├── trajectory.txt     # 全量轨迹数据(10000 步 × 60 原子)
-│   ├── display.txt        # 抽帧后的动画数据(200 帧 × 60 原子)
+│   ├── trajectory.txt     # 全量轨迹数据(50000 步 × 120 原子)
+│   ├── display.txt        # 抽帧后的动画数据(500 帧 × 120 原子)
 │   ├── dynamics.log       # 计算日志
 │   ├── animation.log      # 动画启动日志(闪退时排查用)
 │   └── wave_animation.gif # 波形能量动画(step_plot_wave=1 时生成)
diff --git a/examples/case06/input/connection.txt b/examples/case06/input/connection.txt
index c0d1094..e57b7a3 100644
--- a/examples/case06/input/connection.txt
+++ b/examples/case06/input/connection.txt
@@ -58,3 +58,63 @@ n1 n2 bond_name
 57 58 k1
 58 59 k1
 59 60 k1
+60 61 k1
+61 62 k1
+62 63 k1
+63 64 k1
+64 65 k1
+65 66 k1
+66 67 k1
+67 68 k1
+68 69 k1
+69 70 k1
+70 71 k1
+71 72 k1
+72 73 k1
+73 74 k1
+74 75 k1
+75 76 k1
+76 77 k1
+77 78 k1
+78 79 k1
+79 80 k1
+80 81 k1
+81 82 k1
+82 83 k1
+83 84 k1
+84 85 k1
+85 86 k1
+86 87 k1
+87 88 k1
+88 89 k1
+89 90 k1
+90 91 k1
+91 92 k1
+92 93 k1
+93 94 k1
+94 95 k1
+95 96 k1
+96 97 k1
+97 98 k1
+98 99 k1
+99 100 k1
+100 101 k1
+101 102 k1
+102 103 k1
+103 104 k1
+104 105 k1
+105 106 k1
+106 107 k1
+107 108 k1
+108 109 k1
+109 110 k1
+110 111 k1
+111 112 k1
+112 113 k1
+113 114 k1
+114 115 k1
+115 116 k1
+116 117 k1
+117 118 k1
+118 119 k1
+119 120 k1
diff --git a/examples/case06/input/coord.txt b/examples/case06/input/coord.txt
index c3ca42f..c274431 100644
--- a/examples/case06/input/coord.txt
+++ b/examples/case06/input/coord.txt
@@ -59,3 +59,63 @@ n mass radius x y z vx vy vz fix_x fix_y fix_z
 58 1 0.1 57 0 0 0 0 0 1 1 0
 59 1 0.1 58 0 0 0 0 0 1 1 0
 60 1 0.1 59 0 0 0 0 0 1 1 0
+61 1 0.1 60 0 0 0 0 0 1 1 0
+62 1 0.1 61 0 0 0 0 0 1 1 0
+63 1 0.1 62 0 0 0 0 0 1 1 0
+64 1 0.1 63 0 0 0 0 0 1 1 0
+65 1 0.1 64 0 0 0 0 0 1 1 0
+66 1 0.1 65 0 0 0 0 0 1 1 0
+67 1 0.1 66 0 0 0 0 0 1 1 0
+68 1 0.1 67 0 0 0 0 0 1 1 0
+69 1 0.1 68 0 0 0 0 0 1 1 0
+70 1 0.1 69 0 0 0 0 0 1 1 0
+71 1 0.1 70 0 0 0 0 0 1 1 0
+72 1 0.1 71 0 0 0 0 0 1 1 0
+73 1 0.1 72 0 0 0 0 0 1 1 0
+74 1 0.1 73 0 0 0 0 0 1 1 0
+75 1 0.1 74 0 0 0 0 0 1 1 0
+76 1 0.1 75 0 0 0 0 0 1 1 0
+77 1 0.1 76 0 0 0 0 0 1 1 0
+78 1 0.1 77 0 0 0 0 0 1 1 0
+79 1 0.1 78 0 0 0 0 0 1 1 0
+80 1 0.1 79 0 0 0 0 0 1 1 0
+81 1 0.1 80 0 0 0 0 0 1 1 0
+82 1 0.1 81 0 0 0 0 0 1 1 0
+83 1 0.1 82 0 0 0 0 0 1 1 0
+84 1 0.1 83 0 0 0 0 0 1 1 0
+85 1 0.1 84 0 0 0 0 0 1 1 0
+86 1 0.1 85 0 0 0 0 0 1 1 0
+87 1 0.1 86 0 0 0 0 0 1 1 0
+88 1 0.1 87 0 0 0 0 0 1 1 0
+89 1 0.1 88 0 0 0 0 0 1 1 0
+90 1 0.1 89 0 0 0 0 0 1 1 0
+91 1 0.1 90 0 0 0 0 0 1 1 0
+92 1 0.1 91 0 0 0 0 0 1 1 0
+93 1 0.1 92 0 0 0 0 0 1 1 0
+94 1 0.1 93 0 0 0 0 0 1 1 0
+95 1 0.1 94 0 0 0 0 0 1 1 0
+96 1 0.1 95 0 0 0 0 0 1 1 0
+97 1 0.1 96 0 0 0 0 0 1 1 0
+98 1 0.1 97 0 0 0 0 0 1 1 0
+99 1 0.1 98 0 0 0 0 0 1 1 0
+100 1 0.1 99 0 0 0 0 0 1 1 0
+101 1 0.1 100 0 0 0 0 0 1 1 0
+102 1 0.1 101 0 0 0 0 0 1 1 0
+103 1 0.1 102 0 0 0 0 0 1 1 0
+104 1 0.1 103 0 0 0 0 0 1 1 0
+105 1 0.1 104 0 0 0 0 0 1 1 0
+106 1 0.1 105 0 0 0 0 0 1 1 0
+107 1 0.1 106 0 0 0 0 0 1 1 0
+108 1 0.1 107 0 0 0 0 0 1 1 0
+109 1 0.1 108 0 0 0 0 0 1 1 0
+110 1 0.1 109 0 0 0 0 0 1 1 0
+111 1 0.1 110 0 0 0 0 0 1 1 0
+112 1 0.1 111 0 0 0 0 0 1 1 0
+113 1 0.1 112 0 0 0 0 0 1 1 0
+114 1 0.1 113 0 0 0 0 0 1 1 0
+115 1 0.1 114 0 0 0 0 0 1 1 0
+116 1 0.1 115 0 0 0 0 0 1 1 0
+117 1 0.1 116 0 0 0 0 0 1 1 0
+118 1 0.1 117 0 0 0 0 0 1 1 0
+119 1 0.1 118 0 0 0 0 0 1 1 0
+120 1 0.1 119 0 0 0 0 0 1 1 1
diff --git a/examples/case06/input/driver.txt b/examples/case06/input/driver.txt
index 5f55248..92c6a38 100644
--- a/examples/case06/input/driver.txt
+++ b/examples/case06/input/driver.txt
@@ -1,2 +1,2 @@
 n amp_x amp_y amp_z freq_x freq_y freq_z phi_x phi_y phi_z period
-1     0     0   0.5      0      0    0.1     0     0   90    all
+1     0     0   2.0      0      0    0.1     0     0    90    all
diff --git a/examples/case06/input/input.txt b/examples/case06/input/input.txt
index 4f78b81..790b5df 100644
--- a/examples/case06/input/input.txt
+++ b/examples/case06/input/input.txt
@@ -8,11 +8,11 @@
 step_simulate:  1   # 运行物理模拟 → output/trajectory.txt
 step_sample:    1   # 抽帧 → output/display.txt
 step_plot:      0   # 绘制轨迹/能量图 → output/trajectory_plots.png
-step_plot_wave: 0   # 绘制波形能量动画
-plot_wave_save_gif: 0  # 输出波形 GIF(需 step_plot_wave=1)
-plot_wave_save_mp4: 0  # 输出波形 MP4(需 step_plot_wave=1)
 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)
 
 # ── 计算引擎 ──────────────────────────────────
 # 可选: python, c, cpp, fortran, java
@@ -35,14 +35,14 @@ plot_atom: 1
 
 # ── 物理参数 ──────────────────────────────────
 # 三个方向分量分别对应 x, y, z
-G: [0.0, 0.0, 0.0]   # 重力场分量 (m/s²)
-B: [0.0, 0.0, 0.0]   # 阻尼分量
+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: 0         # 阻尼 (B)
+damping_force: 1         # 阻尼 (B)
 driving_force: 1         # 驱动力(需 driver_file 定义)
 #
 gravity_strength: 1.0    # 万有引力强度(仅 gravity_interaction=1 时有效)
@@ -63,10 +63,10 @@ warmup_steps: 0           # 默认 0(立即开始记录)
 
 # 总模拟时间(秒),程序自动计算 NT = T_total / DT
 # 如果同时指定了 NT,以 NT 为准
-T_total: 50.0
+T_total:  2.0
 
 # 抽帧间隔(每 NSTEP 步取一帧用于动画)
-NSTEP: 100
+NSTEP: 10
 
 # ── 时间步长 ──────────────────────────────────
 DT:    0.001         # 时间步长 (s)