各位做高温结构材料数值模拟的朋友,今天想跟你们聊聊我在“基于考虑位错攀移的晶体塑性(CPFE)蠕变模拟”这个方向上的实战经验。蠕变模拟本身不稀奇,但一旦把位错攀移这个机制正式纳入晶体塑性有限元框架,整个模型的物理真实感和预测能力会上一个台阶,但随之而来的收敛难、参数标定玄学、计算量爆炸等问题也相当磨人。这篇文章不整虚的,从建模思路到具体实现,再到我踩过的坑,一次讲清楚。
先说清楚这套东西能解决什么问题。航空发动机涡轮叶片、电站锅炉管道、核反应堆结构件,这些在高温高压下长期服役的部件,失效模式基本都是蠕变。传统的蠕变分析多用宏观的Norton-Bailey幂律方程,拟合的是材料宏观行为,但有一个致命短板——没法回答“蠕变损伤在哪个晶粒先萌生”“晶界处为什么容易出现孔洞”“织构演化如何影响蠕变各向异性”。CPFE的价值就在于把变形和损伤跟微观位错运动挂上钩,而位错攀移是高温蠕变中不可回避的机制。高温下,位错翻越障碍物不再只靠滑移,还能通过空位扩散驱动的攀移来“绕道”,这一机制直接决定了稳态蠕变速率和蠕变断裂寿命。把攀移模型写进CPFE框架,才能把温度和应力对蠕变速率的影响从物理机制层面解释清楚。
这篇东西适合谁看?一类是做镍基高温合金、ODS钢、钛合金等高温材料本构建模的研究生和工程师,另一类是对Abaqus UMAT、DAMASK等工具熟悉但想往蠕变方向拓展的仿真从业者。基础要求是懂一点晶体塑性(至少知道Schmid因子和滑移系概念),如果你纯小白,建议先把经典滑移系CPFE跑通了再回来看这篇。
1. 内容整体设计与思路拆解
1.1 蠕变模拟的三个层次,你卡在哪一层
我们在搭模型之前得先想明白一个事:蠕变模拟做到什么层次才算“够用”。宏观有限元层次,把蠕变应变率直接写进各向同性本构,算一个大部件的蠕变变形和应力重分布,这是工程上最常用的,但信息量很低。晶粒尺度CPFE层次,显式建立多晶代表性体积元,每个积分点赋予晶体取向,通过滑移系上的分解剪切应力驱动塑性变形,能看出晶粒间的应力分配和织构演化,这是最“划算”的尺度。更高还有离散位错动力学层次,直接追踪每根位错的运动和交互,物理最真实但计算量不可接受,目前连单晶小体积都费劲。
我的建议是:工程目标导向选CPFE。它能用可接受的计算成本,给出晶粒尺度的应力应变场、滑移系开动情况、位错密度演化,还能跟实验EBSD数据对接,验证性很强。更重要的是,CPFE里嵌入射穿蠕变机制时,逻辑链条是完全可溯的——哪个滑移系贡献了滑移变形,哪个攀移项贡献了蠕变变形,一目了然。
1.2 位错攀移的物理图像,为什么滑移模型扛不住高温
纯滑移的晶体塑性模型在低温高应变率下很准,因为位错运动主要是保守运动,沿着滑移面切过晶体。但温度一上来(对镍基合金大概是0.5Tm以上,Tm是熔点),热激活的作用变得不可忽略。位错在运动时遇到障碍物(第二相粒子、位错林、溶质原子),等效应力不足以直接切过去或绕过时,位错可以通过吸收或发射空位,从原滑移面“爬”到邻近的平行滑移面,从而越过障碍。这个过程叫攀移。
攀移的物理关键点在于:它需要物质输运,所以受扩散控制,这就决定了蠕变速率的温度依赖呈Arrhenius形式,与原子扩散系数直接相关;攀移的非保守特性意味着它伴随体积变化,在晶界处容易导致空位集聚甚至空洞形核。你如果只用滑移模型,把温度效应硬塞进一个等效的热激活参数里,表面看也能拟合蠕变曲线,但外推到不同应力水平或不同温度时会偏差很大,原因就是没有把攀移的扩散机制和障碍物间距写进模型。
1.3 CPFE框架下攀移建模的三种主流方案
我梳理了文献和实际工程应用,目前在CPFE里处理位错攀移主要有三条路线。第一条是基于Orowan方程的唯象攀移模型,把攀移对塑性应变速率的贡献用类似Norton律的形式表达,在流动法则里加一个额外的蠕变项,系数跟温度和应力挂钩。优点是实现简单、数值稳定性好,缺点是物理机制细节少,依赖大量的宏观拟合参数。第二条是Mecking-Kocks类型的位错密度演化模型,滑移系上的塑性剪切率由位错密度和平均位错速度共同决定,而攀移通过改变位错密度回复速率来体现。相比第一条,它更能反映硬化/回复的竞争,是当前主流。第三条是把空位浓度作为独立场变量,跟应力扩散方程耦合求解,攀移速率直接由空位通量决定。最物理但实现最复杂,目前基本在研究性代码里出现,工程上很少用。
我不建议一上来就搞第三条。先用第二条把框架跑通,理解位错密度如何演化、攀移如何影响回复率,后续想精细化再引入空位场。我下面讲的都是基于第二条路线。
2. 核心细节解析与实操要点
2.1 攀移模型的数学表达,别被公式吓住
想做这个方向的模拟,绕不开几个核心公式。我这里只给骨架公式,具体系数后面讲标定。
单晶塑性流动法则,速度梯度分解为弹性和塑性部分,塑性速度梯度是各滑移系剪切率的叠加:
$$L^p = \sum_{\alpha} \dot{\gamma}^{\alpha} (s^{\alpha} \otimes n^{\alpha})$$
其中 (s^{\alpha}) 和 (n^{\alpha}) 是滑移系(\alpha)的滑移方向和滑移面法向,(\dot{\gamma}^{\alpha}) 是剪切率。
经典滑移系剪切率用幂律形式(这里用适用于蠕变的温度相关形式):
$$\dot{\gamma}^{\alpha}{\text{slip}} = \dot{\gamma}0 \left( \frac{|\tau^{\alpha}| - \chi^{\alpha} - \tau{\text{pass}}}{\tau{\text{flow}}} \right)^n \text{sgn}(\tau^{\alpha})$$
(\tau^{\alpha}) 是分解剪切应力,(\chi^{\alpha}) 是背应力( kinematic hardening),(\tau_{\text{pass}}) 是位错林强化项,跟位错密度平方根成正比。
攀移对剪切率的贡献,可以用Orowan方程形式表达并跟空位扩散关联,攀移速率关键在于位错的攀移速度 (v_c):
$$v_c = \frac{D_s b}{\Omega} \frac{\sigma_{\text{climb}} \Omega}{kT}$$
这里 (D_s) 是自扩散系数,(b) 是柏氏矢量模,(\Omega) 是原子体积,(kT) 是热力学能量,(\sigma_{\text{climb}}) 是驱动攀移的法向应力分量。
把上述整合进流动法则,总剪切率:
$$\dot{\gamma}^{\alpha}{\text{total}} = \dot{\gamma}^{\alpha}{\text{slip}} + \dot{\gamma}^{\alpha}_{\text{climb}}$$
位错密度的演化则采用竞争关系:
$$\dot{\rho}^{\alpha} = \left( C_1 \sqrt{\rho^{\alpha}} - C_2 \rho^{\alpha} \right) |\dot{\gamma}^{\alpha}| - C_3 \rho^{\alpha} \left( \frac{\sigma_{\infty}}{\sigma_0} \right)^m$$
括号里第一项是位错增殖(存储),第二项是动态回复(异号位错对消),第三项是攀移引起的静态回复,它跟温度和应力水平强相关。温度越高、应力越小,静态回复越占主导——这就是蠕变第二阶段稳态的来源,也是纯滑移模型缺失的关键机制。
2.2 攀移速率与温度和应力的定量关系
说到攀移就不能不提空位扩散的指数温度依赖。实际算下来,600°C镍基合金的自扩散系数比室温下高出十几个数量级,这个剧烈变化如果不用Arrhenius公式就会严重失真:
$$D_s = D_0 \exp\left( -\frac{Q_{\text{self}}}{RT} \right)$$
(D_0) 是指前因子,(Q_{\text{self}}) 是自扩散激活能。镍基合金大致取 (Q_{\text{self}} \approx 280\text{-}300 \text{kJ/mol}),如果不考虑这个温度依赖,直接用线性外推,703K和923K的蠕变速率会差好几个数量级,整个模拟等于白做。这也是为什么纯唯象拟合的模型温度外推能力差,而物理机制的模型更具通用性。
攀移驱动力方面,不是所有应力分量都能驱动攀移。攀移由垂直于滑移面的正应力分量驱动,也就是位错线上单位长度的力。在多晶变形中,晶粒间的约束会造成很强的局域应力三轴度,这恰恰是CPFE能捕捉而宏观均匀化模型丢失的信息。
2.3 滑移系开动与晶粒取向的映射
面心立方晶体有12个 ({111}\langle 110\rangle) 滑移系,体心立方有48个(含 ({110})、({112})、({123}) 三类),密排六方更麻烦,基面、柱面、锥面都有滑移系,而且柱面和锥面的临界分剪切应力远高于基面。这里有个很多新手会踩的坑:直接把室温的滑移系临界分剪切应力搬到高温蠕变里去用。
高温下不同滑移系的CRSS会发生变化,尤其是层错能低的合金,扩展位错宽度随温度增大,交滑移变得困难。正确做法是先查目标材料的文献数据,用高温下的CRSS比值。比如镍基单晶的 ({111}\langle 110\rangle) 滑移在800°C下的CRSS大约只有室温的三分之一,而不同滑移系之间的比值也可能从室温的1:1.1变成高温的1:1.4。你如果不管这些,模拟出的蠕变各向异性必然和实验对不上。
2.4 晶界如何处理才能贴近真实
多晶蠕变模拟里,晶界的影响到底怎么处理?有的框架用晶界滑移单元,有的用粘聚力模型模拟晶界损伤。对纯蠕变初期和稳态阶段分析,把晶界影响隐含在晶粒间取向差带来的局部应力集中里就够了。到蠕变第三阶段,损伤主导,那是另一个话题,需要引入空洞形核长大的模型。我不建议一上来就耦合损伤,先把无损伤模型跟实验对比,确认基体蠕变行为对了,再加损伤。否则模型太复杂,收敛问题和参数不确定性会让你分不清到底是哪个环节出了错。
关于晶界网络构建,推荐用Voronoi镶嵌生成多晶几何,但要注意Voronoi的晶界都是平面,晶粒尺寸分布偏均匀,实际材料往往有孪晶界和特殊的晶粒形貌。更贴近真实的方法是直接导入EBSD数据,用自编网格工具或DAMASK的网格生成模块把取向数据映射到有限元网格上。实测下来EBSD映射后的模拟结果在微观塑性局域化上跟实验吻合度更高。
3. 实操过程与核心环节实现
3.1 软件选型,我用过这几种方案
DAMASK是目前做晶体塑性最有生态优势的开源工具,基于PETSc求解,内置了多机制本构库,支持位错密度型硬化模型,扩展性极强。它的优势在于自由度很高,适合做晶体塑性二次开发,缺点是有一定的学习曲线,且后处理对ParaView的依赖较强。Abaqus UMAT是传统路线,用Fortran写材料子程序,网格和前后处理能力都很成熟,尤其适合跟热-力耦合和损伤模型搭配,但本构方程的编写和调试是自己全部承担的。MOOSE框架也是一种选择,它对多物理场耦合的支持特别好,适合最终要加空位浓度场的场景,但开发成本更高。如果你是刚开始做这个方向,我建议从DAMASK开始,它的结构清晰,官方文档里也有大量验证案例,能快速验证你的材料参数和加载工况是否正确。如果你后续要跟工程结构件级别模型衔接或要做复杂的局部网格控制,那Abaqus UMAT是更务实的选择。
至于网格,DAMASK本身不擅长网格生成,通常用预处理工具生成网格,或者在其他有限元软件里画好网格再导入。我做的是多晶Voronoi模型,用Neper生成Voronoi多晶网格很顺手。Neper可以指定晶粒尺寸分布、织构类型,甚至可以添加晶粒内部取向梯度,这是模拟变形局部化的利器。
3.2 材料参数标定,最花时间的环节
把你从文献里搜集到或自己实验得到的参数列成表格是必须的,但更重要的是知道哪些参数对结果最敏感。以镍基高温合金单晶在700°C蠕变为例,完整参数清单包括弹性系数 (C_{11}=250\ \text{GPa})、(C_{12}=150\ \text{GPa})、(C_{44}=120\ \text{GPa})(这是简化过的数值,实际单晶弹性系数有温度依赖性),参考剪切率 (\dot{\gamma}_0 = 0.001\ \text{s}^{-1}),应力指数 (n=5),初始位错密度 (\rho_0 = 1\times 10^{12}\ \text{m}^{-2})。
标定的核心在于:用纯滑移参数拟合单轴的应力-应变曲线(低温或高应变率),固定滑移参数之后,再用蠕变实验数据去标定攀移相关的回复参数。顺序不能反,反复耦合标定很容易过拟合,最后参数在物理上说不通。
\tabularnewline
一个我踩过的坑是初始位错密度对稳态蠕变速率的敏感性。(\rho_0) 如果从 (10^{11}) 调到 (10^{13}),稳态蠕变速率能差50倍,原因是位错密度演化方程里的动态回复项跟(\rho)成正比。所以要严格控制初始位错密度,最好用EBSD的GND密度作为依据,而不是随便给一个数。很多文章的所谓“参数标定”其实是把初始条件一起拟合了,这样的模型可迁移性很差。
3.3 温度场与边界条件的设置,别让约束毁掉结果
首先要明确一点:蠕变模拟一般不考虑变形热效应,温度场是独立给定的。对于等温问题,直接给恒定温度即可。非等温问题才需要耦合温度场。而边界条件对多晶蠕变模拟的结果影响极大,这是新手最容易忽略的地方。
单晶或单个晶粒模型加载很简单——直接施加应力或约束某面法向位移即可。多晶周期性边界条件则是标准配置:多晶模型内每个晶粒的行为不是独立的,而是被周围晶粒约束住的。如果不用周期性边界条件,表面晶粒会出现过多自由变形,导致表面晶粒的蠕变应变明显大于内部晶粒。这里我详细说一下周期性边界条件的实操要点,需要让模型各相对面的节点一一对应,这在网格生成阶段就要做好。Neper可以生成周期性网格,但在Abaqus里施加周期性约束时,核心是建立主节点(master node)控制相对面的位移差,让相对面的位移差始终等于整体变形梯度与坐标差之积。配合EQUATION和BOUNDARY使用。但注意,*EQUATION的系数矩阵是稀疏状态,如果你的模型从外部导入,节点编号不匹配会疯狂报错。所以建议先在Abaqus里做周期性网格生成的测试,确认节点对号后,再生成真正的CAE文件。
应力加载上,我建议参考使用力控加载(真应力保持)而不是位移控加载,因为位移控加载下应力松弛,测出来的稳态蠕变阶段不完整,应力会逐渐下降。力控加载在Abaqus/Standard里可以用施加集中力配合参考点或使用“固定载荷”实现,但在Standard的蠕变分析中要留意载荷步长,如果时间步过大,载荷增量也会突变,导致精度下降。
3.4 求解器设置,直接决定你今晚能不能睡觉
蠕变模拟的时间跨度和应力松弛模拟一样,都是时间相关的。时间步长的选择直接影响收敛和精度。最直接的筛选标准是看每个增量步的蠕变应变增量能不能被后面的平衡迭代收敛接受。经验做法是:先做一次简单的单晶或小多晶预模拟,扫描材料参数,确定合理的初始时间增量。不要把最大增量步设得太大,否则平衡迭代很难收敛。
求解器的选择也有学问。Abaqus/Standard(隐式)的优势在于无条件稳定,蠕变这种长时间、大时间步问题,Standard显然比Explicit更合适。Explicit适合冲击和剧烈非线性问题,蠕变用它等于拿大炮打蚊子,时间步长受稳定极限限制,几百小时的蠕变模拟会让步长积累到几百万次以上,即便质量放大也不能根本解决。
温度相关性处理方面,如果使用DAMASK,可以在本构模型里直接把材料参数定义成温度的函数,在运行参数文件里指定。在Abaqus UMAT里,需要在SDV里存储温度相关参数,尤其是扩散系数和回复系数。
3.5 多晶模型到底多大才合理,统计代表性不能拍脑袋
晶粒数目太少,模拟结果波动会很大;太多,算不动。怎么找到一个平衡点?先做一组晶粒数目 (N=50,100,200,400) 的系列模型,固定体积和取向分布种子,模拟同样的蠕变工况,提取宏观蠕变应变曲线和晶粒平均应力。当晶粒数从 (N) 增加到 (2N) 时,宏观应变的差异小于3%,且晶粒平均应力的标准误小于平均值的10%,你就可以认为模型已达到统计代表性。我之前测过纯Ni多晶,大约在150个晶粒左右宏观响应趋于稳定,但要精确捕捉晶界附近应力集中至少需要400个晶粒,这个取决于你关心的问题。如果研究的是单轴蠕变速率,100-200个晶粒基本够了;如果研究蠕变损伤起始位置,建议至少400个以上,且需要合理控制晶粒尺寸分布。
另外,晶粒内部单元数目也有讲究。每个晶粒至少保证10-20个C3D8单元(线性六面体单元)才能不过度约束晶粒变形。我用C3D8积分单元(全积分)测下来比C3D8R(减缩积分)更稳定,后者在扭曲网格下容易出现沙漏,蠕变结果不可信。
3.6 后处理看什么,一张图判断模型对不对
蠕变模拟完,第一件事不是截彩图发朋友圈,而是把几条关键曲线拉出来跟实验对比。最优先的是宏观蠕变应变-时间曲线,它直接反映稳态蠕变速率。计算稳态段速率((\dot{\varepsilon}_{ss})),画成应力-应变速率双对数图,斜率就是蠕变应力指数 (n)。如果实验值是5,你模拟出8,说明攀移项给得太弱,动态回复没有充分发挥。
看微观场时,重点关注滑移系的累积剪切应变分布,看位错密度演化的空间分布,以及最重要的——攀移引起的塑性变形占比。你把总剪切率分解成滑移项和攀移项,画出各自对总蠕变应变的贡献比例。温度低时攀移贡献应该小(比如10%),温度高时应当增大(50%以上),这个趋势如果出现相反,你就要回去检查攀移参数的温度依赖是否写反了。
4. 常见问题与排查技巧实录
4.1 隐式求解不收敛,多半是这些原因
如果你在Abaqus/Standard里跑UMAT,一进蠕变段时间增量就骤减,迭代半天不收敛,最常见的原因有几个。其一是位错密度演化方程刚度过大或者出现了负位错密度——你需要在更新位错密度后加一个保护:一旦计算值小于零,就人为设为一个小正值(比如 (10^8\ \text{m}^{-2})),虽然不物理,但能避免数值发散。其二是时间步长过大,攀移引起的塑性应变增量超过了弹性应变增量,全局切线刚度矩阵丧失正定性,这种情况要把最大时间增步减小,或者活性判定加一条:攀移剪切率达到 (10^{-3}/\text{s}) 级别就强制细分时间步。其三是集成算法选择不当,最好用径向返回法,先计算总剪切率预测,再施加屈服约束。Fatigue牛角尖放在攀移模型上通常没用,因为这个模型本质上不会导致严重的屈服面突变,除非滑移和攀移耦合写错了。
4.2 稳态蠕变速率对不上实验值,先查这四项
如果你算出来的稳态蠕变速率跟实验差了两个数量级,先别急着调参数。依次排查:第一,扩散系数是否用了目标温度下的值?第二,驱动攀移的应力分量是否正确提取?你检查一下程序里取的是不是分解剪切应力的绝对值——攀移应该由法向应力分量驱动,而不是剪切应力。第三,初始位错密度是否和实验材料一致?第四,晶粒数是否太少导致晶界约束与真实情况偏差?这四项检查顺序很重要,因为头两个错误是系统性误差,改完可能直接回到正确数量级,乱调参数反而掩盖了真正的逻辑错误。
4.3 参数敏感性分析怎么做才快
作为一个搞有限元的人,做参数敏感性分析几乎是必然的。网格太细的话,一次蠕变模拟跑几个小时,扫参数就崩溃了。我建议先用单晶单积分点模型做敏感性分析,这一步几分钟就能跑完,能确定哪些参数是“鱼”,哪些是“熊掌”。然后只对最敏感的参数做多晶模型上的精细扫描。实测下来,扩散系数(尤其是激活能 (Q))和位错回复系数 (C_3) 是支配性的,(\dot{\gamma}_0) 和初始位错密度次之,CRSS再次之。把精力花在最敏感的参数上,标定效率和模型可信度都会高很多。
4.4 常见错误速查表
| 错误现象 | 可能原因 | 排查方法 |
|---|---|---|
| 稳态蠕变速率对温度不敏感 | 攀移项没写Arrhenius温度依赖,扩散系数被当成常数 | 检查材料参数表,输出局部温度下的扩散系数 |
| 模拟时间步长骤减,计算停滞 | 位错密度出现负值或数值振荡 | 在更新方程处加下限截断保护 |
| 宏观应力-应变曲线在加载段就抖动 | 弹塑性切线刚度矩阵不对称 | 确认使用一致切线刚度而非初始弹性刚度 |
| 蠕变速率随应力指数偏高((n>8)) | 攀移项驱动力算错,可能取了剪切而不是法向分量 | 核对攀移应力计算表达式 |
| 各晶粒间变形严重不均匀 | 周期边界条件未正确施加,模型内部存在非物理约束 | 检查相对面的节点对应对和坐标容差 |
4.5 关于代码和复现的一点经验
DAMASK里,位错密度型硬化的本构模型在constitutive_dislocation_density里定义了滑移系的水蛭规则,而攀移项通常需要自己扩展。如果你用的是Abaqus UMAT,建议把滑移和攀移两个流动项分开写函数,这样调试时可以单独屏蔽攀移项,看看滑移基线的响应是否正确。
再提一句,做数值模拟一定要像做实验一样记录“工况标记”。每个模型跑完,把材料参数、温度、应力、晶粒种子存成一个文件,文件名带上关键参数缩写。没有这套规矩,你同一组参数跑了三个月,结果忘了初值怎么设的,才是最崩溃的事。我的习惯是每次跑之前先输出一个参数摘要日志,里面包含所有材料和数值控制参数。习惯养成后,即使三个月后翻出模型也能复原完整信息,这点我认为比模拟本身更重要。
5. 温度-应力谱图的工程应用延伸
5.1 用拉森-米勒参数做长期寿命外推的衔接
CPFE蠕变模拟算出的是短时或中等时长的蠕变行为,但工程上往往需要几万小时甚至十万小时的蠕变寿命。一个实用的衔接路线是:先用CPFE算出一组不同温度和应力下的稳态蠕变速率,把这些数据点画到拉森-米勒参数坐标下,跟实验数据库对比。如果走向一致,说明你的CPFE模型在物理机制上是自洽的。随后用外推的LMP形式补出一个宏观寿命曲线,但这只能作为参考,CPFE本身的优势是告诉你微观哪里先出事,而不是取代宏观寿命设计。
5.2 加载路径和应力多轴性对蠕变的影响
实验室蠕变实验大多是单轴拉伸,但工程部件的应力状态往往多轴的。CPFE可以很方便地施加多轴载荷组合——比如双轴拉伸、剪切+拉伸等,然后比较不同加载路径下的稳态蠕变速率和各滑移系的相对活跃度。我实测过一个拉扭联合加载工况,发现扭转载荷大幅激活了不同滑移系上的攀移活动,稳态蠕变速率比单轴拉伸下预测的高出1.5倍。这种多轴效应在宏观本构里极难标定,但CPFE从机理上就能导出来,这是它特别值得投入的方向。
5.3 织构演化与蠕变性能的关联
蠕变过程伴随位错滑移和攀移,自然会引起晶体取向的旋转。CPFE能直接输出织构演化数据。在面心立方多晶的蠕变模拟中,我观察到靠近大角度晶界的区域取向梯度显著增大,而晶粒内部取向变化相对均匀。这种微观结构信息不仅能验证模拟的合理性,还能帮助解释某些材料在蠕变初期出现各向异性肿胀或损伤的原因。
结尾一点个人体会
我做了几年晶体塑性模拟,最大的体会是:位错攀移这个机制,看起来只是多了一项流动法则和回复方程,但正是这个“多一步”,让模型从“拟合工具”变成了“理解工具”。准确捕捉滑移与攀移的竞争关系之后,模拟结果在极端温度和应力下的行为趋势比纯唯象模型可靠得多。你回头看自己算出来的位错密度演化云图,能直观看到哪些晶界区域回复最快,哪些晶粒被撑住了慢慢变形——这种“盯着机制在跑”的感觉,是宏观拟合给不了的。
最后再分享一个小技巧:做这类模拟,千万不要一上来就追求大模型高精度。先跑通一个单晶单积分点、100个增量步的小例子,确认本构逻辑没问题,再上多晶模型。多晶模型也不要直接全速跑,先跑一小段,比如总时长的百分之五,提出来看看应力-应变曲线形态和位错密度演化趋势对不对。没有这个验证习惯,烂参数跑通宵,第二天早上起来看一堆粉红应力云图,那滋味真的不太好受。
如果后续有条件,可以在现有框架里加入空位浓度梯度作为场变量,对辐照条件下的蠕变膨胀效应做进一步扩展,那个方向我还在摸索中。也希望你们在实际操作中能把这套方法用好,踩坑了欢迎回来交流。