浏览器内的实时粗粒化分子动力学。 以 Kremer–Grest 珠簧模型演示聚合物的玻璃化转变:调节温度,观察链段动力学从扩散到笼效应、系统冻结成玻璃,并定位 Tg。
在线运行:https://glory0707.github.io/polymer-glass-lab/
- 实时分子动力学:N ≤ 4800 珠,元胞列表邻居搜索,velocity-Verlet + Langevin 恒温,计算全部在浏览器 Worker 内完成
- 迁移率着色:热成像色标(深钢蓝 = 冻结 → 冰白 → 琥珀 = 活跃),直观呈现动力学非均匀性
- 切片视图:z 向裁剪平面夹出薄片,露出内部协同运动
- 上手交互:热笔(局部注入热量,观察热扩散)、拽链(抓住一根链拖着走,黏弹性探针)
- 动力学分析:MSD–τ 双对数曲线、弛豫时间 τp(T) 与 VFT 拟合、自中间散射函数 Fs(q*, τ)、非高斯参数 α₂、van Hove 位移分布
- 热历史与 Tg:MSD@20τ 与势能随温度变化,对数空间两段式拟合自动标注 Tg
- 力学响应:单轴/循环拉伸的应力–应变曲线,叠加键取向 P2(应力光学对应)
- 记忆实验:自定义温度阶梯协议,PE(t) 与 T(t) 同图展示路径依赖弛豫
- 样品调控:链刚度 κ、双分散组分、密度 0.6–1.3 σ⁻³、恒压(NPT)、自由表面薄膜(层分辨迁移率剖面)
- 导览模式:一键播放完整实验故事线
- 数据导出:各曲线一键导出 CSV / JSON
- 无头自检:
npm run sanity,25 项物理与数值检查
LJ 约化单位(σ = ε = m = k_B = 1),周期性边界(薄膜模式下 z 向为对称软壁)。
| 相互作用 / 算法 | 形式 | 参数 |
|---|---|---|
| 非键合珠子 | WCA 排斥势(LJ 在 r_c = 2^(1/6)σ 截断并平移至零) | — |
| 链上相邻珠子 | FENE 键 | k = 30 ε/σ², R₀ = 1.5σ |
| 链刚度(可选) | U_bend = κ(1 − cosφ) | κ = 0–10 |
| 组分(可选) | 双分散:小珠 σ = 0.7σ₀ | 占比 10% / 25% |
| 薄膜壁(可选) | z 向线性回复软壁 | k = 150 ε/σ² |
| 恒温 | Langevin(每步一次 Ornstein–Uhlenbeck) | γ = 1.0 τ⁻¹, Δt = 0.008 τ |
| 体系 | 线形链,链长 40 | N = 1200 / 2400 / 4800, ρ = 1.0 σ⁻³ |
初始化为晶格随机游走链,构造后在 Δt/4 步长下短时退火消除重叠。Tg 为操作定义:有限降温速率下两段式拟合的交点,依赖冷却速率——这是玻璃化的定义性特征,也可在本演示中亲手验证。
git clone https://github.com/Glory0707/polymer-glass-lab.git
cd polymer-glass-lab
npm run serve # 静态服务器,浏览器打开 http://localhost:8000
npm run sanity # 无头物理自检(Node,无需浏览器)- 底部温度轨:拖动设定温度,轨道即色标
- 左下控制簇:降温 / 升温 / 急冷 / 熔化 / 暂停,热笔 / 拖拽工具,⚙样品 打开全部参数
- 右上读数:温度(含实测)、势能、MSD、Tg 估计、模拟时长
- 「导览」 一键播放实验故事线;「曲线」 面板包含全部图表与数据导出
- 视口支持拖动旋转与滚轮缩放,空闲时缓慢环绕
index.html 页面骨架 + importmap(Three.js 走 CDN,零构建)
src/md.js MD 内核:WCA + FENE + 弯角势 + 薄膜软壁、热笔/拽链、Fs/P2/χ₄
src/sim.worker.js Worker 宿主:模拟循环与全部采样、拟合
src/renderer.js Three.js 渲染:InstancedMesh、切片裁剪、薄膜壁面、周期边界补画
src/plots.js Canvas 图表
src/analysis.js 温度分箱、Tg 两段式拟合、τα 提取、VFT 拟合、色标
src/main.js 主循环、指针交互、导览与 UI 接线
tools/sanity.mjs 无头物理自检(25 项)
- Grest & Kremer, J. Chem. Phys. 86, 4068 (1986); Kremer & Grest, J. Chem. Phys. 92, 5057 (1990)
- Keddie, Jones & Cory, Europhys. Lett. 27, 59 (1994)(薄膜 Tg)