剪切矩阵应变(Shear Matrix Strain)
Group: Lattice | Class: ShearMatrixCard
功能说明
通过 xy/yz/xz 剪切矩阵分量生成非对角形变样本。对晶格矢量的三个剪切通道做系统扫描,每个通道独立控制 min/max/step。
symmetric=true 时填充 S 的下三角对应项,使剪切路径更接近对称形变。
操作示例
场景:模型预测剪切模量 C44 比 DFT 低 40%
你在 fcc Al 上训练了一个 NEP 模型,C11/C12 都对,但 C44 只有 DFT 值的 60%。诊断发现:C44 是对应于 xy/yz/xz 方向剪切的分量,而训练集里所有结构都是轴向拉伸/压缩(通过 Lattice Strain 生成的),模型没见过非对角剪切变形。
诊断思路: 剪切弹性常数来源于非对角应变。如果训练集只覆盖对角应变(axial strain),模型对剪切方向的刚度完全靠外推。需要往训练集里加入已知剪切分量的结构。
输入: 一个弛豫好的 fcc Al 单胞
目标: 沿 xy 方向做 -3% 到 +3% 剪切,步长 1%,对称模式,共 7 个结构
参数设置:
xy_range=[-3, 3, 1]yz_range=[0, 0, 1](不扫 yz)—— 注意要把步长非零的值写进去,否则 range 为空不生成xz_range=[0, 0, 1](不扫 xz)symmetric=true
输出: 7 个结构,剪切矩阵的 xy 分量从 -0.03 到 +0.03,yz 和 xz 分量为 0
怎么验证训练集质量改善:
重训后重新计算弹性常数矩阵,C44 应该更接近 DFT 参考值
检查输出结构的晶格角变化:单斜/triclinic 体系剪切后角度会偏离正交,确认变化在物理合理范围
如果 C44 改善但 C55/C66 仍有偏差,再单独扫 yz_range 和 xz_range
如果三个分量都需要同时补,再同时放开三个 range —— 但注意输出数 = Nxy * Nyz * Nxz,组合数很快爆炸
什么时候加这张卡、什么时候不加
加:
模型剪切模量、非对角弹性常数系统性偏差
训练集缺少非正交晶格构型、所有结构都在高对称格点
需要覆盖剪切方向的应力-应变响应
不加:
只需要体积和单轴应变 →
Lattice Strain更直接想通过角度而非矩阵分量控制剪切 →
Shear Angle Strain更适合体系本身是刚性分子晶体,剪切只会破坏分子内拓扑 → 考虑
identify_organic
参数说明
XY Range(xy_range)
tuple[float, float, float],默认 (-5.0, 5.0, 1.0)。剪切矩阵 xy 分量的扫描区间,格式 [min, max, step],单位 %。比如 sxy=5 对应剪切矩阵分量 0.05。如果你只扫一个分量,把另外两个设为一个点就行——但注意不能设成 [0, 0, 0](步长为 0 会让 range 变空),正确写法是 [0, 0, 1] 保证至少生成一个 0 点。
YZ Range(yz_range)
tuple[float, float, float],默认 (-5.0, 5.0, 1.0)。yz 分量的扫描区间,单位和语法同 xy_range。同理,不扫时写 [0, 0, 1]。
XZ Range(xz_range)
tuple[float, float, float],默认 (-5.0, 5.0, 1.0)。xz 分量的扫描区间,同上。不扫时写 [0, 0, 1]。
输出总数 = Nxy * Nyz * Nxz。三个通道同时按默认值跑 = 11^3 = 1331 个结构。建议先单通道试跑验证参数,再逐步加通道。
Symmetric(symmetric)
bool,默认 true。打开后剪切矩阵下三角同步填充(比如 S[1,0] = S[0,1]),形变路径更接近物理上的对称剪切。如果你在研究非对称畸变(比如某些铁弹相变),把这个关掉。
Identify Organic(identify_organic)
bool,默认 false。分子晶体必须打开——否则剪切变形会撕裂分子内键。纯无机体系关着即可。
推荐预设
单分量弹性补样(仅 xy,±3%,对称)
{
"class": "ShearMatrixCard",
"check_state": true,
"xy_range": [-3, 3, 1],
"yz_range": [0, 0, 1],
"xz_range": [0, 0, 1],
"symmetric": true,
"identify_organic": false
}
双分量剪切覆盖(xy+yz,±5%,对称,~121 个输出)
{
"class": "ShearMatrixCard",
"check_state": true,
"xy_range": [-5, 5, 1],
"yz_range": [-5, 5, 1],
"xz_range": [0, 0, 1],
"symmetric": true,
"identify_organic": false
}
三通道研究级(xy+yz+xz,±6%,步长 2%,非对称,~343 个输出)
{
"class": "ShearMatrixCard",
"check_state": true,
"xy_range": [-6, 6, 2],
"yz_range": [-6, 6, 2],
"xz_range": [-6, 6, 2],
"symmetric": false,
"identify_organic": false
}
推荐组合
Lattice Strain->Shear Matrix Strain:先补轴向应变,再补剪切分量,覆盖完整弹性张量Shear Matrix Strain->Atomic Perturb:剪切变形后加坐标噪声Super Cell->Shear Matrix Strain:先扩胞再剪切,适合研究大尺度剪切响应
常见问题
输出为空。 检查 range 的步长是否 > 0。如果不扫某个分量,不能设置 [0, 0, 0] —— 步长为 0 会导致 range 为空。应该设置 [0, 0, 1] 确保至少生成一个点(0)。
输出数量爆炸。 三通道联扫的输出数 = Nxy * Nyz * Nxz。默认 [-5, 5, 1] 三个通道同时开 = 11^3 = 1331 个结构。建议先单通道试跑验证参数合理性后再加通道。
剪切后结构物理不合理。 剪切幅度过大导致晶格条件数恶化(接近奇异)。抽查最近邻距离和晶格行列式。±5% 以上建议逐步增加并每步检查。
vs Shear Angle Strain 如何选择。 Shear Matrix 在笛卡尔坐标下直接修改剪切矩阵分量,适合和弹性常数计算对齐;Shear Angle 修改晶胞角度 alpha/beta/gamma,适合和 XRD/晶体学角度对齐。两者产生不同的形变路径,可以互补使用。
输出标签
Shr(xy={sxy}%,yz={syz}%,xz={sxz}%,sym={0|1})
可复现性
无随机性。同参数同输入 → 严格一致输出。所有剪切分量按固定网格扫描。