docs: 更新 examples/Readme.md 并新增 Readme.html
- 覆盖全部 10 个案例(原 Readme 只到 case06) - 新增案例选择指南表格 - Readme.html 为深色主题独立 HTML 页面 (含卡片布局、标签分类、代码高亮、响应式设计) - 各案例详情对齐最新配置参数
This commit is contained in:
+73
-16
@@ -1,19 +1,23 @@
|
||||
# Dynamics 示例案例
|
||||
|
||||
本目录包含 6 个从简单到复杂的物理模拟案例,均基于 `../dynamics.py` 框架运行。
|
||||
本目录包含 10 个从简单到复杂的物理模拟案例,均基于 `../dynamics.py` 框架运行。
|
||||
|
||||
---
|
||||
|
||||
## 案例一览
|
||||
|
||||
| 案例 | 标题 | 简介 | 原子数 | 力类型 |
|
||||
|---|---|---|---|---|
|
||||
| [case01](./case01/) | **双粒子弹簧系统** | 两个原子由弹簧连接,在重力场中运动 | 2 | 重力 + 弹簧 |
|
||||
| [case02](./case02/) | **行星运动** | 地球绕太阳椭圆公转(万有引力) | 2 | 万有引力 |
|
||||
| [case03](./case03/) | **日地月系统(失败)** | 地球绕太阳、月球绕地球,参数不当导致失稳 | 3 | 万有引力 |
|
||||
| [case04](./case04/) | **日地月系统(成功)** | 地球绕太阳、月球绕地球,稳定轨道 | 3 | 万有引力 |
|
||||
| [case05](./case05/) | **一维原子链纵波** | 驱动原子 1 沿 x 轴振动,产生纵波传播 | 60 | 弹簧 + 驱动力 |
|
||||
| [case06](./case06/) | **一维原子链横波** | 驱动原子 1 沿 z 轴振动,产生横波传播 | 120 | 弹簧 + 驱动力 |
|
||||
| 案例 | 标题 | 简介 | 原子数 | 引擎 | 力类型 |
|
||||
|------|------|------|--------|------|--------|
|
||||
| [case01](./case01/) | **双粒子弹簧系统** | 两个原子由弹簧连接,在重力场中运动 | 2 | Python | 重力 + 弹簧 |
|
||||
| [case02](./case02/) | **行星运动** | 地球绕太阳椭圆公转(万有引力) | 2 | Python | 万有引力 |
|
||||
| [case03](./case03/) | **日地月系统(失稳)** | 地球绕太阳、月球绕地球,参数不当导致失稳 | 3 | Python | 万有引力 |
|
||||
| [case04](./case04/) | **日地月系统(稳定)** | 地球绕太阳、月球绕地球,稳定轨道 | 3 | Python | 万有引力 |
|
||||
| [case05](./case05/) | **一维原子链纵波** | 驱动原子 1 沿 x 轴振动,产生纵波传播 | 60 | Python | 弹簧 + 驱动力 |
|
||||
| [case06](./case06/) | **一维原子链横波(阻尼)** | 驱动原子 1 沿 z 轴振动,带阻尼的横波传播 | 120 | C | 弹簧 + 阻尼 + 驱动力 |
|
||||
| [case07](./case07/) | **一维原子链横波(双端驱动)** | 原子 1 和原子 120 同时受 z 方向驱动 | 120 | C | 弹簧 + 阻尼 + 驱动力 |
|
||||
| [case08](./case08/) | **双原子弹簧(C 引擎测试)** | 两个原子弹簧系统,C 引擎快速验证 | 2 | C | 弹簧 + 阻尼 + 驱动力 |
|
||||
| [case09](./case09/) | **一维链纵波(Fortran 引擎)** | Fortran 引擎驱动的纵波传播测试 | 40 | Fortran | 弹簧 + 驱动力 |
|
||||
| [case10](./case10/) | **一维链纵波(能量分析)** | 纵波传播 + 轨迹/能量图绘制 | 40 | C | 弹簧 + 驱动力 |
|
||||
|
||||
---
|
||||
|
||||
@@ -26,14 +30,16 @@
|
||||
- **力开关**:重力场开,弹簧键力开
|
||||
- **算法**:leapfrog(蛙跳法)
|
||||
- **物理**:重力 m·g + 弹簧胡克力
|
||||
- **渲染**:Sphere 模式(精细网格球体)
|
||||
|
||||
### case02 — 行星运动
|
||||
|
||||
模拟地球绕太阳的椭圆轨道运动(一个固定大质量中心体 + 一个绕行小质量体)。采用万有引力相互作用。
|
||||
|
||||
- **力开关**:万有引力开(含强度参数)
|
||||
- **力开关**:万有引力开(含强度参数 `gravity_strength: 100.0`)
|
||||
- **算法**:leapfrog(蛙跳法)
|
||||
- **物理**:牛顿万有引力 F = G·m₁·m₂/r²
|
||||
- **渲染**:Sphere 模式
|
||||
|
||||
### case03 — 日地月系统(失败案例)
|
||||
|
||||
@@ -60,14 +66,53 @@
|
||||
- **波速**:快(x 方向弹簧力为线性)
|
||||
- **渲染**:Marker 模式(GPU 实例化,60 原子)
|
||||
|
||||
### case06 — 一维原子链横波
|
||||
### case06 — 一维原子链横波(带阻尼)
|
||||
|
||||
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 锁定。振动在横向传播,形成**横波**。
|
||||
120 个原子沿 x 轴等间距排列(间距 1),相邻原子用弹簧(k=1.0, L₀=1.0)连接,带横向阻尼(B=[0.01, 0, 0.01])。驱动在 z 方向 `z(t)=0.5·cos(2π·0.1·t+90°)`,原子 z 方向自由(fix_z=0),x/y 锁定。
|
||||
|
||||
- **力开关**:弹簧键力开,驱动力开
|
||||
- **力开关**:弹簧键力开,驱动力开,阻尼开
|
||||
- **算法**:leapfrog(蛙跳法)
|
||||
- **引擎**:C(高性能)
|
||||
- **参数**:T_total=1000, NSTEP=500
|
||||
- **波速**:慢(z 方向弹簧力呈几何非线性,类似 FPU 系统)
|
||||
- **渲染**:Marker 模式(GPU 实例化,120 原子)
|
||||
|
||||
### case07 — 一维原子链横波(双端驱动)
|
||||
|
||||
120 个原子沿 x 轴排列,原子 1 **和**原子 120 同时受 z 方向驱动力驱动(频率相同,初相位错开 90°),产生两端向中间传播的横波相遇。
|
||||
|
||||
- **力开关**:弹簧键力开,驱动力开,阻尼开
|
||||
- **引擎**:C
|
||||
- **参数**:T_total=1000, NSTEP=500
|
||||
- **视觉放大**:z 方向位移放大 10 倍(`display_amp: [1, 1, 10]`),便于观察小幅度横波
|
||||
|
||||
### case08 — 双原子弹簧(C 引擎快速测试)
|
||||
|
||||
2 个原子的简单弹簧系统,用于快速验证 C 引擎的正确性和性能。T_total 仅为 100s。
|
||||
|
||||
- **力开关**:弹簧键力开,驱动力开,阻尼开
|
||||
- **引擎**:C
|
||||
- **用途**:引擎验证 / 调试
|
||||
- **视觉放大**:z 方向位移放大 10 倍
|
||||
- **动画**:关闭(step_animation=0),仅输出波形图
|
||||
|
||||
### case09 — 一维链纵波(Fortran 引擎)
|
||||
|
||||
40 个原子沿 x 轴排列,使用 **Fortran 引擎**驱动的纵波传播模拟。验证 Fortran 引擎的输出兼容性和性能。
|
||||
|
||||
- **力开关**:弹簧键力开,驱动力开,阻尼关
|
||||
- **引擎**:Fortran
|
||||
- **参数**:T_total=200, NSTEP=100
|
||||
- **视觉放大**:z 方向位移放大 10 倍
|
||||
|
||||
### case10 — 一维链纵波(能量分析)
|
||||
|
||||
40 个原子沿 x 轴排列,纵波传播。与 case05 相比,x/y/z 全部自由(fix_x/y/z 均为 0),物理行为更复杂。支持轨迹/能量图绘制(step_plot=1)。
|
||||
|
||||
- **力开关**:弹簧键力开,驱动力开,阻尼关
|
||||
- **引擎**:C
|
||||
- **参数**:T_total=10, NSTEP=20
|
||||
- **视觉放大**:z 方向位移放大 10 倍
|
||||
- **动画**:关闭(step_animation=0),仅输出轨迹/能量图
|
||||
|
||||
---
|
||||
|
||||
@@ -77,7 +122,7 @@
|
||||
# 进入任意案例目录
|
||||
cd examples/case05
|
||||
|
||||
# 完整运行(模拟 + 采样 + 3D 动画)
|
||||
# 完整运行(模拟 + 3D 动画)
|
||||
python run_dynamics.py
|
||||
|
||||
# 仅运行模拟,跳过 3D 动画
|
||||
@@ -89,6 +134,18 @@ python ../../draw.py output/
|
||||
|
||||
每个案例的 `input/input.txt` 中可配置所有物理参数、力开关、算法、渲染方式等。
|
||||
|
||||
## 案例选择指南
|
||||
|
||||
| 你想做什么 | 推荐案例 |
|
||||
|-----------|---------|
|
||||
| 快速上手、理解基本框架 | case01 |
|
||||
| 天体力学 / 万有引力 | case02 / case04 |
|
||||
| 波动物理(纵波) | case05 |
|
||||
| 波动物理(横波、非线性、阻尼) | case06 |
|
||||
| 双端驱动/波干涉 | case07 |
|
||||
| 对比不同引擎性能 | case08 (C) / case09 (Fortran) |
|
||||
| 能量分析 | case10 |
|
||||
|
||||
## 框架结构
|
||||
|
||||
```
|
||||
@@ -101,6 +158,6 @@ dynamics/
|
||||
├── examples/ # 案例(本目录)
|
||||
│ ├── case01/
|
||||
│ ├── ...
|
||||
│ └── case06/
|
||||
│ └── case10/
|
||||
└── output/ # 默认输出目录
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user