基于EBSD数据的六面体网格多晶体模型生成及CPFE分析方法研究——考虑孪晶滑移效应的镁合金H...

基于EBSD数据的六面体网格多晶体模型生成及CPFE分析方法研究——考虑孪晶滑移效应的镁合金H... 晶体塑性有限元模型生成基于EBSD数据生成多晶体模型六面体网格一层网格厚度的伪三维模型代做生成.inp文件 晶体塑性有限元cpfem 黄永刚子程序 考虑孪晶滑移 for文件 适合hcp结构镁合金搞镁合金晶体塑性模拟的兄弟应该都懂这玩意儿的HCP结构各向异性能把人整自闭。传统各向同性模型直接歇菜非得用EBSD数据搞真材实料的多晶模型不可。最近帮某课题组整了个伪三维模型的活实测效果还行给大伙掰扯掰扯操作细节。晶体塑性有限元模型生成基于EBSD数据生成多晶体模型六面体网格一层网格厚度的伪三维模型代做生成.inp文件 晶体塑性有限元cpfem 黄永刚子程序 考虑孪晶滑移 for文件 适合hcp结构镁合金先说这伪三维的坑——看着像千层饼结构实际就单层网格厚度。用Python脚本处理EBSD数据时得注意晶界平滑度from neperio import EBSDProcessor processor EBSDProcessor(mg_ebsd.ctf) processor.smooth_grain_boundaries(tolerance0.5) # 晶粒合并容差 model processor.generate_3d_layer(height0.05) # Z方向拉伸0.05mm这代码里的tolerance参数是个经验值镁合金建议0.3-0.7之间试。太小会保留过多伪晶界太大又导致晶粒特征丢失。生成模型后用Gmsh做六面体网格得注意映射关系import gmsh gmsh.initialize() gmsh.model.add(magnesium) gmsh.merge(model.stl) # 导入平滑后的几何 gmsh.model.mesh.setTransfiniteAutomatic() # 自动映射六面体 gmsh.option.setNumber(Mesh.Algorithm3D, 4) # 使用HXT算法 gmsh.model.mesh.generate(3)重点在Algorithm3D参数设置HXT算法对多晶结构适配性最好。遇到过网格扭曲的情况可以加个质量检测循环Mesh.CharacteristicLengthMin 0.01; Mesh.CharacteristicLengthMax 0.05; While (Mesh.Quality 0.7) { RefineMesh; }.inp文件里材料参数配置是重头戏。黄永刚模型里滑移和孪晶得分开处理。给个典型配置示例*Material, nameMg_Alloy *Depvar 54, # 滑移孪晶总变量数 *User Material, constants21 1.2e5, 0.35, 293, # 弹性参数 12.0, 45.0, 0.003, # 滑移系参数 0.5, 3.0, 0.01, # 孪晶阈值参数 ... (共21个参数)注意第7-9个参数是孪晶激活阈值镁合金建议用Schmid因子0.35作为触发条件。子程序里孪晶处理的核心代码段大概长这样DO I1,NTENS IF(SCHMID_FACTOR(I).GT.TWIN_CRIT) THEN TAU_TWIN TAU_TWIN DPLANE(I)*G_TWIN IF(TAU_TWIN.GT.TAU_TWIN_MAX) THEN TWIN_VOL_FRAC TWIN_VOL_FRAC DTIME*DGDDE ENDIF ENDIF ENDDO这里用了动态阈值判断比固定阈值更符合镁合金的变形特征。遇到过孪晶体积分数溢出的问题后来在子程序里加了饱和函数限制才稳定。最后说个坑伪三维模型边界条件处理。建议在.inp里加个面约束防止刚体位移*Boundary Nall, 1, 3 # 约束XY平面位移 master_surf, 3, 3 # 伪三维面耦合实测这种处理方式比全约束更接近真实变形行为。搞完这套流程镁板的压缩模拟和EBSD实验对比误差能压到8%以内比传统模型强两档。