在有限元仿真分析中,我们习惯将整个结构或某个部件赋予一组确定的、均匀的材料参数,如:弹性模量 E=210 GPa、泊松比 v=0.3、屈服强度 σy=250 MPa……,这些数字整齐而确定,给我们一种“一切尽在掌握中”的安全感。然而,现实世界的材料却并非如此。
例如,以一块混凝土试块为例:混凝土内部散布着大小不一的骨料、砂浆体和微小的孔隙;再拿一片航空发动机叶片来看:由于铸造工艺的微小偏差,材料在不同位置的晶粒取向和力学性能存在差异。这种微观层面的“不完美”并不是缺陷,而是材料的固有特征,仿真中我们时常假定材料是各向同性的。但如果我们在仿真中故意忽略这些随机性,就等于用了一种平均化的策略去判断仿真8结果的状况——缺少了一些关键的细节。
材料属性随机赋值,是一种将材料“真实”属性引入仿真模型的关键技术。它的核心思路是:在已划分好网格的有限元模型上,不是给每个单元赋予相同的材料参数,而是根据预定义的规则随机地、但有据可依地赋予不同的材料属性。这种“从均匀到非均匀”的转变,能够揭示确定性仿真无法捕捉的一些关键信息。
-01-
材料属性随机赋值的原理很简单,大致可分为三步过程:
第一步,建立均匀网格。我们可以将实体模型离散化为许多个微小的网格单元,每个单元就是结构部件的一块微小的材料“拼图”。此时,所有单元的材料属性完全相同,这个阶段就是传统有限元仿真分析的网格划分过程。
第二步,随机赋值。根据预定义的概率分布(如正态分布、Weibull 分布等),对每个单元独立或空间相关地采样材料参数。有的单元可能被赋予“相 A”(如基体材料),有的被赋予“相 B”(如增强相),有的则是“相 C”(如孔隙或化合物相)。——每块片段的材质就不同了。
第三步,求解与后处理。将这组非均匀的材料场交给有限元求解器,在载荷与边界条件下进行求解。由于相邻单元的刚度不同,应力传递时会在界面处发生应力集中,形成“非均匀应力场”——这正是真实材料在载荷下的典型行为。
从以上流程可以很容易理解:当两块强度、刚度不同的材料拼接在一起时,应力在界面处会发生不连续——刚度较硬的材料会承担更多载荷,而刚度较软的材料则得到的较少。这种载荷重分配现象,在确定性的仿真(所有单元刚度相同)中是完全看不到的。
下图 1 直观展示了前述三步流程。左侧是均匀网格,所有单元外观一致;中间是随机赋值后的网格,不同颜色代表不同的材料相;右侧是求解后的应力场,可以看到应力集中区域——那里往往正是结构可能得失效起点。

图 1:材料属性随机赋值示意图(均匀网格 → 随机材料 → 非均匀应力场)
应力集中是导致结构失效的关键机制。当某个区域的应力超过材料的强度极限时,裂纹就会从那里起源并扩展。确定性仿真由于材料均匀假设,往往会低估这种应力集中的严重程度,从而高估结构的安全裕度。而随机赋值通过引入材料的不均匀性,能够在一定程度上更真实地捕捉这些危险区域。
-02-
确定性仿真与随机仿真两者的区别我们可以用一个比喻来理解:确定性仿真给出的是“如果世界完美,结构会怎样”的答案;而随机仿真回答的是“在真实制造条件下,结构最可能怎样失效”。对工程设计决策而言,后者的价值远大于前者。

图 2 确定性仿真与随机仿真结果对比
举个例子:
图2 (a) 展示了某结构确定性仿真的单一结果:最大应力为 285 MPa,低于许用值 350 MPa(图中红色虚线),看起来结构完全安全。工程师可能据此判断设计满足要求。但这个结论是基于材料性能处处完全一致的假设。
图2 (b) 是某机构500次随机仿真的结果分布:应力呈现明显的随机分布特征,均值约为285 MPa,但标准差达到约35MPa。更重要的是,约3.6%的样本超过了许用值——这意味着在每生产100件产品时,大约有2~3件可能存在风险。在某些安全敏感领域,这个“小概率”有时是不可接受的。
图2(c) 展示了材料参数与响应之间的感性关系:横轴是弹性模量 E,纵轴是最大应力。每个散点代表一次材料属性随机赋值的结果,红色虚线是趋势线。
-03-
需要明确一点,材料的随机赋值并不是毫无规律地“抛骰 子”。真正有价值的工程应用需要遵循严谨的理论框架,具体包含以下三个关键要素:
一、空间相关性。相邻单元的材料属性往往不是独立的,而是具有空间相关性。例如,如果某个区域的材料强度较低,它周围的材料强度也往往偏低,而不是随机跳变。这种相关性通常通过协方差函数来建模,常见的包括指数型和 Matern 型。常用的 Karhunen-Loeve 展开(KLE)方法能将高维随机场分解为有限维度的正交基,大幅降低随机变量的维度,从而显著减少蒙特卡洛所需的有限元求解次数。
其二,相体积分数约束。在复合材料 RVE 模型中,各相的体积分数必须符合实验测量值。例如,混凝土中骨料约占 40%、砂浆约占 55%、孔隙约占 5%,随机分配必须在此约束下进行。如果不加以约束,得到的微观结构就不能代表真实材料,计算出的等效性能也就失去了物理意义。
其三,概率分布匹配。材料属性(如弹性模量、强度)应从实测统计分布中采样,而非人为假设。强度通常服从 Weibull 分布(这是材料科学中最广泛使用的强度分布模型),弹性模量则常用正态分布或对数正态分布。分布参数应来源于材料厂商提供的材料数据手册,或者组织自己的实验测试。
上述三点共同保证了随机赋值的物理合理性。只有同时满足空间相关性、体积分数约束和概率分布匹配,随机材料赋值的结果才能真正反映工程实际。
本文中,笔者编制的脚本只是简单地具备体相体积分数约束,概率分布方面采用的是 Fisher-Yates 洗牌算法,为均匀分布随机,空间相关性方面也未进行完善,主要原因在于该脚本原本用于材料热工的仿真,根据前面的理论可知,不太适合作为力学方面的仿真求解(下面案例结果分析),但可以作为一种对材料属性随机处理的方式。
-04-
以一个简单案例演示。在ANSYS中,建立一个简单的模型,如下图所示:

进入model分析设置界面,方块和圆棒之间的接触我们采用默认的绑定接触设置:

接着简单划分网格,结果如下所示:

通过笔者编制的脚本,我们可以对任意一个或多个part的单元进行材料属性的随机赋值(网格单元级的赋值)。只需要提前建立好命名选择,本例建立如下命名选择:


打开ANSYS workbench中的python脚本编辑输入框,复 制脚本代码到脚本输入框:


接着,按实际情况输入要设置的材料组分比例和材料参数。本例假设材料有3种材料组分,只需要在MATERIAL_LIST = []列表中输入材料参数即可,如下图:

注意,ratio之和要等于1,在此基础上可以将材料组分设置为任意多个。材料属性参数除了输入力学参数、也可输入热性能相关参数,这代表该脚本可以进行传热方面的前处理。
脚本中,TARGET_NAMED_SELECTION,用于指定目标实体的 Named Selection 名称,以确定哪个part将被按照脚本中设置的材料对单元进行随机分配材料属性。
示例如下:
TARGET_NAMED_SELECTION = "" # 空字符串表示对所有体进行分配;
TARGET_NAMED_SELECTION = "mat_1" # 仅对我们前面设置名为 mat_1 的 Named Selection 中的体分配。
本例对Named Selection为mat_1的部件进行单元随机分配材料属性,设置如下:

接着简单设置一下,约束和载荷条件,如下图:

运行脚本:

将会自动生成相关前处理和后处理APDL命令:

检查没有问题后,就可以计算。
计算后,后处理中可以看到方块part被赋予了随机的材料属性(3种色块,代表3种材料),而圆杆材料为默认结构钢:

变形和应力情况如下:


我们也可以将方块和杆件全部改为随机材料,只需要将TARGET_NAMED_SELECTION设置为空字符串,即TARGET_NAMED_SELECTION = "",此时计算后的结果如下:



可以看到,结果中应力连续性较差,有的网格节点处应力有跳变,这是因为该脚本没有进行空间相关性方面的完善。单元材料之间的变化较大时就会出现明显应力集中,可以通过多设置几组组分,减小组分之间的材料参数变化量缓解。
本脚本文件主要用于传热的分析,方法与上述一致。以下为笔者计算的一个RVE模型案例。该例可以用于如加气混凝土等材料(基体相+空气相)的传热分析。




通过以上案例,相信大家都知道该脚本的使用方法了,但这里需要强调一下使用时需要注意以下事项:
① 该脚本仅适用于 ANSYS Workbench 2020 R2 版本,其他版本未测试,可能存在 API 差异;
② 模型必须先完成网格划分,脚本不负责网格划分;
③ 材料比例之和应接近或等于 1,否则最后一种材料会自动调整;
④ 使用 Named Selection 指定目标体时,需先在 Mechanical 中创建 Named Selection;
⑤ 脚本会自动删除旧的 RandomMatAPDL 和 Post_MaterialPlot 命令,但建议手动删除后,再运行脚本;
⑥ 脚本中定义的材料不会出现在左侧材料树中,如需在材料树中查看,需在 Engineering Data 中手动创建同名材料;
⑦ 求解完成后,可在 Solution Information 中查看材料分配验证信息;
⑧图片中不同颜色代表不同材料,配合 material_legend.txt 文件查看材料名称。