借鉴 LS-DYNA 的设计思维,对材料类型、接触类型进行分类,并将在后续使用关键字设计。
粒子分类是建立 SPH 算法数据结构的基础。
粒子分类从相态上大致可分为气、固、液三相。
| 相态 | 粒子类型 | 粒子属性 |
|---|---|---|
| 边界 | 20 | 刚性粒子 |
| 刚体固态 | 30 | 浮体刚体粒子 |
| 淡水 | 50 | 液态流体粒子,密度 1000 kg/m^3,粘性 0.001 Pa*s |
| 海水 | 51 | 液态流体粒子,密度 1025 kg/m^3,粘性 0.001 Pa*s |
| 自定义液体 | 52 | 液态流体粒子 |
| 理想气体 | 110 | 流体粒子,压强 1 atm,密度 1.225 kg/m^3,粘性 0.001 Pa*s |
| 自定义气体 | 111 | 流体粒子 |
| 弹性固态 | 230 | 弹性粒子 |
边界粒子 [20, 29], 刚体粒子 [30, 39], 液体粒子 [50, 59], 气体粒子 [110, 119], 弹性固体粒子 [230, 239]。
粒子采用个位数表示粒子特殊属性,十分位数和百分位数 (质数 2, 3, 5, 11, 23) 表示粒子相态类型。
目前每个相态类型仅支持一种粒子同时模拟。
不同密度、粘性属性的液体,被视为不同的液体,相互之间存在压强、速度差等力学和运动学关系。
不同材料属性、刚体和非刚体的固体,在运动时体现着不相同的特性。
尤其是刚体,我们认为刚体内的压力传导是瞬时的,也就是刚体将看成一个整体来实现运动。 多刚体运动又会存在刚体之间的碰撞问题。
与液体类似。
船舶水动力学领域中,不同粒子间的接触控制类型。
| 粒子类型 | 粒子类型 | 接触控制 | 代码 |
|---|---|---|---|
| 边界(光滑表面) | 边界(光滑表面) | 无交互 | 1 |
| 刚体(光滑表面) | 刚体(光滑表面) | 无交互 | 1 |
| 液体 | 液体 | 交互(压强、粘性、人工力) | 2 |
| 液体 | 气体 | 交互(压强、粘性、人工力) | 2 |
| 气体 | 气体 | 交互(压强、粘性、人工力) | 2 |
| 弹性固体 | 弹性固体 | 交互(压强、粘性、人工力) | 2 |
| 弹性固体 | 液体 | 交互(压强、粘性、人工力) | 2 |
| 弹性固体 | 气体 | 交互(压强、粘性、人工力) | 2 |
| 边界(光滑表面) | 液体 | 排斥力 | 3 |
| 边界(光滑表面) | 气体 | 排斥力 | 3 |
| 边界(光滑表面) | 弹性固体 | 排斥力 | 3 |
| 刚体(光滑表面) | 弹性固体 | 排斥力 | 3 |
| 刚体(光滑表面) | 液体 | 压强交互 | 4(暂与3行为一致) |
| 刚体(光滑表面) | 气体 | 压强交互 | 4(暂与3行为一致) |
待完善。
在数值实现上,分为非固定粒子和固定粒子两种,目前每个相态类型仅支持一种粒子同时模拟。
SPHysics 倾向于对固体粒子施加排斥力,进行总体的刚体求解。