# FEM — 二维制动踏板支架动力学与损伤演示

纯原生 HTML / CSS / JavaScript（ES Modules），**零外部运行依赖、零构建、零后端**。可直接部署在 GitHub Pages。

在线入口：<https://simdemos.housz.cn/FEM/>（需在此仓库的 Pages 生效后访问）。

## 运行

直接打开在线 URL；本地运行推荐从仓库根目录执行 `python3 -m http.server 8000`，访问 <http://localhost:8000/FEM/>。浏览器的 `file://` 通常不允许 ES 模块直接加载。

交互功能：
- 调节**峰值力（N）**、上升/保持时间（ms）、加载循环次数与间隔，展示不同 `F(t)` 的动力响应；
- 更改假设材料的**损伤启动强度（MPa）**、**等效断裂能（kJ/m²）**、端部集中质量；
- 显示简化支架网格的变形、主拉应力或损伤着色、断裂（单元删除）、实时载荷/位移/损伤曲线；
- 暂停、单步、重置和导出 CSV；
- 预设快速 1600 N、缓慢 1600 N、缓慢 3000 N 的**力控制示例**。

## 数值模型

- 单位制：SI（N、m、s、Pa、kg），2D **平面应力**；支架长 120 mm，厚 12 mm，含人工设定的几何收窄部位。
- **CST（三节点常应变三角形）有限元**，20×6 矩形逻辑网格，每格分为2个三角形，共 147 个节点、240 个单元、294 个位移自由度。第一列两自由度固定，最右列均摊施加竖向载荷。
- `K_e = t A Bᵀ D B`。动力学 `M ü + C u̇ + K(D)u = F(t)`；采用节点集总质量，端部添加等效惯性质量 `m`，质量比例黏性阻尼 `C = α M`。
- **Newmark-β** 平均加速度法（β=1/4, γ=1/2），每步使用矩阵自由乘法与对角预条件共轭梯度（PCG）求解，不依赖第三方物理引擎。
- 依据三角形的**最大主拉应变历史**逐步更新不可逆损伤 `D ∈ [0,1]`，局部弹性刚度乘以 `(1-D)`。采用简化等效裂带（crack-band）正则化 `ε_f = ε_0 + 2 G_c/(σ_c l_e)`，以 `D=1` 删除对应单元。
- 当前为**小应变、线弹性 + 标量损伤**模型。材料软化以错位更新（每次动力学步之后更新单元损伤），可以近似演示渐进失效，但**不是**经过实验标定的CZM、玻纤增强塑料本构模型、接触模型或断裂力学认证工具。
- 端部灰色踏板杆只是**几何示意**；真正受力施加在支架右端节点。未模拟真实踏板铰链、制动推杆、侧向扭转或车身装配状态。
- 设定的材料模量 `E = 3 GPa`、泊松比 `ν = 0.33`、密度 `1250 kg/m³`、强度、断裂能、缺口等均为**演示假设**，不对应任何车辆的实测参数。

### 什么不能据此得出

模拟不能直接证明“快速1600 N必然比缓慢3000 N更危险”，也不能作为任何现实车型存在/不存在质量缺陷的证据。缓慢预设采用力控斜坡，不等于 **20 mm/min的位移控台架试验**。为作实际复现，还需要真实几何、网格/步长收敛性、实际载荷历程、测试约束、复合材料的应变率相关本构、制造缺陷及断裂标定。

## 验证

仓库根目录执行：`node FEM/verify.mjs`（仅需要支持ES Modules的现代Node.js）。

验证项目包括零载荷、低载荷下线性响应、损伤单调性与有限数值检查。数值求解采用小网格，不追求工程CAE级别精度。
