
abaqus晶体塑性有限元分析 晶体塑性黄永刚 晶体塑性有限元 粘塑性自洽晶体塑性 梯度 损伤分析 相场方法 GTN模型及修正 本构模型的二次开发 python/fortran 的编写 abaqus结构分析 构建晶体塑性模型晶粒之间的动力学关系可以预测晶体取向、晶粒形态、织构等通过构建晶体塑性模型和晶粒之间的动态关系可以预测晶体取向、晶粒形貌和织构老铁们搞晶体塑性有限元是不是总在ABAQUS里和材料子程序死磕今天咱们就唠唠这玩意儿怎么玩出花。说到晶体塑性绕不开黄老爷子的经典模型这老哥把滑移系硬化规则整得明明白白。咱先看段Fortran的UMAT骨架SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,...) ! 读取材料参数 CALL GET_CRYSTAL_PARAMS(PROPS,NPROPS) ! 滑移系解析 DO I1,N_SLIP TAU_RESOLVED DOT_PRODUCT(STRESS, SCHMID_FACTOR(:,:,I)) GAMMA_DOT(I) G0 * (TAU_RESOLVED/TAU_CRITICAL(I))**M END DO ! 更新塑性变形梯度 CALL UPDATE_FP(GAMMA_DOT,DTIME) ! 计算雅可比矩阵 CALL CALC_JACOBIAN(DDSDDE) RETURN END这段代码里藏着三个魔鬼细节滑移系方向得用Schmid因子转换应力塑性变形梯度更新要考虑所有激活滑移系的贡献硬化模型里tau_critical得用Voce硬化律迭代。有次我忘了归一化滑移方向张量结果应力算出来比实际大了三个量级...最近在折腾粘塑性自洽模型VPSC这货比传统晶体塑性更擅长处理多晶相互作用。用Python搞了个多晶集合的应力分配算法def vpsc_iteration(grains): for _ in range(MAX_ITER): macro_stress np.mean([g.stress for g in grains]) for grain in grains: delta (macro_stress - grain.stress) * alpha grain.update_local_stiffness(delta) if np.linalg.norm(delta) TOL: break return macro_stress这个alpha参数调起来真要命大了震荡小了收敛慢。建议用自适应步长像极了女朋友闹脾气时的试探步长。abaqus晶体塑性有限元分析 晶体塑性黄永刚 晶体塑性有限元 粘塑性自洽晶体塑性 梯度 损伤分析 相场方法 GTN模型及修正 本构模型的二次开发 python/fortran 的编写 abaqus结构分析 构建晶体塑性模型晶粒之间的动力学关系可以预测晶体取向、晶粒形态、织构等通过构建晶体塑性模型和晶粒之间的动态关系可以预测晶体取向、晶粒形貌和织构损伤分析方面GTN模型和相场法可以联动。举个栗子用相场模拟裂纹扩展时在裂尖区域启动GTN损伤IF(PHASEFIELD(I) 0.8) THEN VOID_RATIO VOID_RATIO DTIME*EXP(-(STRESS_HYDRO/FC)**2) IF(VOID_RATIO FC) CALL ELEMENT_DELETE() ENDIF注意这里用静水应力触发损伤比Mises应力更敏感但容易导致过早删除单元。上次手滑把指数项写成平方根模拟结果直接上演金属蒸发术。最后说说晶粒取向预测的骚操作——用Python后处理提取欧拉角odb openOdb(Job.odb) for frame in odb.steps[Step-1].frames: euler frame.fieldOutputs[SDV_EULER].values plt.quiver(X,Y, np.cos(euler), np.sin(euler))这能画出晶粒取向的矢量图比云图更直观。记得在UMAT里把欧拉角存进状态变量不然毛都看不到。晶体塑性这潭水深得很本构模型写得再溜也架不住网格划分时手抖搞出畸形单元。建议新手先用黄老爷子的原始代码魔改别上来就挑战梯度塑性这种地狱难度。下次咱们可以唠唠怎么用机器学习替代传统硬化模型那才是真·邪道玩法。