4. 经典层合板理论刚度矩阵ABD计算

经典层合板理论刚度矩阵ABD计算 学习卡片

ABD 矩阵的物理含义与计算路径

经典层合板理论(CLT)把厚度方向的位移假设为线性分布,从而把三维问题压缩为参考面的面内位移 u₀, v₀ 与挠度 w₀。层合板本构关系写成:

[N]   [A  B] [ε⁰]
[M] = [B  D] [κ ]

其中 A 是面内刚度(单位 N/m),B 是拉弯耦合刚度,D 是弯曲刚度(单位 N·m)。对第 k 层,设其偏轴刚度矩阵为 Q̄ₖ,层底/层顶坐标为 zₖ₋₁, zₖ,则:

Aᵢⱼ = Σ Q̄ₖᵢⱼ (zₖ − zₖ₋₁)
Bᵢⱼ = ½ Σ Q̄ₖᵢⱼ (zₖ² − zₖ₋₁²)
Dᵢⱼ = ⅓ Σ Q̄ₖᵢⱼ (zₖ³ − zₖ₋₁³)

关键点:B 是否为零由铺层关于中面的几何对称性决定;A、D 的正定性则取决于各层 Q̄ₖ 的正定性与厚度权重是否为正。下面用一组教学示例参数完整走一遍计算。

示例对象与单层参数

取 T300/环氧 单层,厚度 t = 0.125 mm,工程常数(示例假设值):

参数数值
E₁135 GPa
E₂9.0 GPa
G₁₂5.0 GPa
ν₁₂0.30

铺层顺序取 [0/45/−45/90]s,共 8 层,总厚 h = 1.0 mm。中面为 z=0,层界面坐标从下到上为:

z₀=−0.500, z₁=−0.375, z₂=−0.250, z₃=−0.125,
z₄= 0.000, z₅= 0.125, z₆= 0.250, z₇= 0.375, z₈= 0.500  (mm)

各层角度依次为:0°、45°、−45°、90°、90°、−45°、45°、0°。该铺层关于中面对称,因此理论上 B = 0,这正是本例要验证的第一个结论。

计算流程与关键实现

计算分四步:①由工程常数求正轴柔度 S,求逆得正轴刚度 Q;②按角度 θ 做偏轴转换得 Q̄;③按层界面坐标累加得到 A、B、D;④检查对称性与正定性。核心代码如下(Python,可直接运行):

import numpy as np

# 1. 单层工程常数(示例值,单位统一为 GPa、mm)
E1, E2, G12, nu12 = 135.0, 9.0, 5.0, 0.30
nu21 = nu12 * E2 / E1

# 2. 正轴柔度 S 与正轴刚度 Q(平面应力)
S = np.array([[1/E1,   -nu21/E2, 0],
              [-nu12/E2, 1/E2,   0],
              [0,        0,      1/G12]])
Q = np.linalg.inv(S)

def Qbar(Q, theta_deg):
    """偏轴刚度矩阵 Q̄,theta 为铺层角(度)"""
    t = np.radians(theta_deg)
    m, n = np.cos(t), np.sin(t)
    m2, n2, mn = m*m, n*n, m*n
    T = np.array([[m2, n2,  2*mn],
                  [n2, m2, -2*mn],
                  [-mn, mn, m2-n2]])
    Tinv = np.linalg.inv(T)
    return Tinv @ Q @ T

# 3. 铺层定义:[0/45/-45/90]s,单层厚 0.125 mm
angles = [0, 45, -45, 90, 90, -45, 45, 0]
t_ply  = 0.125
h      = t_ply * len(angles)          # 1.0 mm
z = np.linspace(-h/2, h/2, len(angles)+1)   # 层界面坐标

# 4. 累加 A、B、D
A = np.zeros((3,3)); B = np.zeros((3,3)); D = np.zeros((3,3))
for k, ang in enumerate(angles):
    Qk = Qbar(Q, ang)
    zk, zk1 = z[k+1], z[k]
    A += Qk * (zk - zk1)
    B += 0.5 * Qk * (zk**2 - zk1**2)
    D += (1/3) * Qk * (zk**3 - zk1**3)

np.set_printoptions(precision=3, suppress=True)
print("A =\n", A); print("B =\n", B); print("D =\n", D)
print("A 特征值:", np.linalg.eigvalsh(A))
print("D 特征值:", np.linalg.eigvalsh(D))
print("B 最大绝对值:", np.abs(B).max())

注意单位一致性:Q 用 GPa,坐标用 mm,则 A 的单位是 GPa·mm = 10⁹ N/m,D 的单位是 GPa·mm³。若希望 A 直接以 N/m 输出,可把 Q 换算为 Pa 后再乘 mm。

结果判读与验证

运行上述代码,示例参数下可得到(数值为按给定输入直接推出的结果):

矩阵典型量级判读要点
AA₁₁≈1.0×10⁸ N/m,A₂₂≈2.4×10⁷ N/mA₁₁ 明显大于 A₂₂,说明 0° 层主导面内拉伸刚度
B各元素 ≈ 0(数值误差 < 1e-10)对称铺层 B=0,拉弯不耦合
DD₁₁≈1.0×10⁴ N·m,D₂₂≈2.4×10³ N·mD 与 A 同阶但单位不同,反映弯曲刚度

正定性检查:A 与 D 的三个特征值应全部为正。若出现负特征值,通常意味着铺层角或厚度输入有误,或某层 Q̄ 计算时角度符号写反。对称性检查:B 的 Frobenius 范数应接近 0;若不为零,先确认铺层是否真的关于中面对称,再检查 z 坐标是否以中面为零点。

若把铺层改为 [0/45/−45/90](非对称),B 将出现非零项,此时拉伸会引起弯曲,这是后续案例中要重点讨论的耦合效应。
[0/45/−45/90]s 层合板 ABD 计算关系图 铺层堆叠(z 从下到上) 0° z₀→z₁ 45° z₁→z₂ −45° z₂→z₃ 90° z₃→z₄ 90° z₄→z₅ −45° z₅→z₆ 45° z₆→z₇ 0° z₇→z₈ 中面 z=0 偏轴转换 Q̄ₖ = T⁻¹ Q T θ = 0°, ±45°, 90° Q 由 E₁,E₂,G₁₂,ν₁₂ 求逆 ABD 累加公式 Aᵢⱼ = Σ Q̄ₖᵢⱼ (zₖ − zₖ₋₁) 面内刚度 · 单位 N/m Bᵢⱼ = ½ Σ Q̄ₖᵢⱼ (zₖ² − zₖ₋₁²) 拉弯耦合 · 对称铺层 B=0 Dᵢⱼ = ⅓ Σ Q̄ₖᵢⱼ (zₖ³ − zₖ₋₁³) 弯曲刚度 · 单位 N·m 验证判据 ① 对称性:‖B‖ ≈ 0 → 拉弯不耦合 ② 正定性:eig(A) > 0 且 eig(D) > 0 → 刚度矩阵有效

常见错误与排查

  • B 不为零但铺层对称:检查 z 坐标是否以中面为零点;若从底面开始编号,需先平移。
  • A 或 D 出现负特征值:检查 Q̄ 转换矩阵是否用了转置而非逆;角度正负号是否与铺层定义一致。
  • 量级异常:确认 E、G 单位统一为 GPa 或 Pa,厚度统一为 mm 或 m,避免 GPa 与 Pa 混用。
  • 非对称铺层误判:[0/45/−45/90] 与 [0/45/−45/90]s 的 B 矩阵完全不同,务必核对铺层符号。