共计 1493 个字符,预计需要花费 4 分钟才能阅读完成。
背景痛点
在岩土工程仿真中,岩石单轴压缩试验的数值模拟常常面临两个主要挑战:

- 材料参数敏感性强 :岩石的力学行为受矿物成分、孔隙率等影响显著,微小参数变化可能导致应力 - 应变曲线形态剧变
- 非线性收敛困难 :塑性变形阶段常出现:
- 负特征值警告(Negative eigenvalues)
- 单元过度扭曲(Excessive distortion)
- 接触反复震荡(Contact chattering)
技术对比:DP vs MC 模型
| 特性 | Drucker-Prager 模型 | Mohr-Coulomb 模型 |
|---|---|---|
| 屈服面形状 | 光滑圆锥 | 六棱锥 |
| 参数映射关系 | $\tan\beta = \frac{3\sqrt{3}\sin\phi}{\sqrt{3}+\sin\phi}$ | 直接采用内摩擦角 $\phi$ |
| 适用场景 | 高围压条件 | 低围压 / 剪切破坏主导 |
| 收敛性 | 较好(连续导数) | 需角点平滑处理 |
核心实现
Python 参数标定脚本
import numpy as np
def calibrate_rock_params(E, nu, phi, cohesion):
"""
E: 弹性模量 [GPa]
nu: 泊松比 [无量纲]
phi: 内摩擦角 [度]
cohesion: 粘聚力 [MPa]
"""
try:
beta = np.degrees(np.arctan(3*np.sqrt(3)*np.sin(np.radians(phi))/(np.sqrt(3)+np.sin(np.radians(phi)))))
k = 3*cohesion/np.tan(np.radians(beta))
return {'DP_alpha': beta, 'DP_k': k}
except ZeroDivisionError:
print("Error: Friction angle cannot be 90°")
INP 文件关键修改
*Material, name=Sandstone
*Elastic
2.5e4, 0.25 # E[MPa], nu
*Drucker Prager
35., 0. # β[°], 膨胀角 [°]
*Drucker Prager Hardening
1.2, 0.0 # k[MPa], 塑性应变
收敛性优化
时间步长公式
$$
\Delta t_{new} = 0.8 \times \Delta t_{old} \times \sqrt{\frac{E}{\rho}} \times \frac{h_{min}}{c}
$$
其中 $h_{min}$ 为最小单元尺寸,$c$ 为波速
接触算法选择
| 接触类型 | 法向算法 | 切向算法 | 适用阶段 |
|---|---|---|---|
| 试件 - 压板 | 硬接触 | 罚函数 | 弹性阶段 |
| 裂缝面 | 软接触 | 摩擦系数 0.3 | 塑性阶段 |
避坑指南
不收敛诊断流程
- 检查材料单位制是否统一(特别注意 MPa 与 GPa 混用)
- 确认塑性参数梯度变化(突变会导致雅可比矩阵奇异)
- 监控接触力震荡情况
网格重划分策略
- 损伤变量 $D > 0.7$ 时触发重划
- 采用 RESS 自适应加密:
*ADAPTIVE MESH, ELSET=Damage_Zone 0.7, 0.3, 1.2 # 触发阈值, 最小尺寸系数, 最大尺寸系数
验证案例
砂岩试件(Φ50×100mm)仿真与试验对比:
| 指标 | 试验值 | 仿真值 | 误差 |
|—————|———-|———-|——–|
| 峰值强度 (MPa) | 85.3 | 82.7 | 3.05% |
| 残余强度 (MPa) | 12.1 | 13.5 | 11.6% |
| 断裂能 (kJ/m²) | 0.78 | 0.83 | 6.41% |
性能数据
| 核心数 | 计算时间 (min) | 加速比 |
|---|---|---|
| 1 | 47.2 | 1.0 |
| 4 | 14.8 | 3.19 |
| 8 | 9.3 | 5.08 |
开放性问题
当出现剪切带局部化时,应当如何调整本构模型参数?考虑以下方向:
1. 引入非局部化理论
2. 调整流动法则中的膨胀角
3. 耦合损伤变量与塑性应变率
正文完
