首页/文章/ 详情

几何必须位错密度的非局部实现

15天前浏览27
参考文献:《A non-local methodology for geometrically necessary dislocations and application to crack tips》
作者提出了一种把几何必需位错(GND)计算“做成非局部积分”的方法,并嵌入 CPFE(晶体塑性有限元)里:这样既大幅降低了传统局部算法的网格敏感性,又能在裂尖附近给出更符合实验的应力/GND与存储能密度分布,对疲劳寿命预测更靠谱。
传统“局部”GND算法对网格尺寸/单元类型高度敏感,在裂尖这种应变梯度巨大的区域,数值场常出现非物理尖峰,进而影响应力与存储能评估。该文章用一个非局部域积分去近似“塑性形变梯度的旋度”并汇聚邻域单元的信息,再解 Nye 张量得到 GND;方法完整的嵌入 CPFE 框架中。
非局部的概念图如下:
作者通过模拟四点弯曲实验证实了:非局部法让 GND 场更均匀,网格敏感性显著降低。
四点弯曲变形下,不同网格密度下的局部和非局部的GND分布情况:
 
四点弯曲变形下,两类模型的应力分布情况:  
可以看到:用邻域信息重算 GND,网格不再主宰结果;数值场回归“物理应有的样子。作者分析认为使用这类方案评估可以提高疲劳寿命的预测精度。
此外作者不仅是提出了非局部几何必须位错密度的完整实现,还系统对比非局部域大小、权重衰减等因素对模拟结果的影响,做晶体塑性/疲劳断裂/寿命预测的科研与工程读者,尤其关注“裂尖微观驱动力与路径预测”的同学,可以下载了解完整的数值实现。
基于作者提出的数值思路。进行完整的数值实现尝试:
建立包含50个晶粒的二维 多晶模型,模拟拉伸变形下局部和非局部几何必须位错密度和应力的分布情况
左图局部,右图非局部,可以看到非局部的实现会使得位错密度分布更加平滑,峰值峰值更低。
应力分布特征与GND接近
局部储能密度分布:
该指标通常用于预测疲劳寿命,并基于峰值,这个峰值差异讲直接导致寿命预测的差异,因此使用基于储能的寿命指标,使用非局部模型可以对试样提供更高精度的预测效果(网格依赖性小)


来源:我的博士日记

疲劳断裂储能
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-09-17
最近编辑:15天前
此生君子意逍遥
博士 签名征集中
获赞 57粉丝 109文章 110课程 0
点赞
收藏
作者推荐

EVPSC 开源代码分享

网址:https://github.com/ShawnWolgu/EVPSC_DV evpsc基于经典的vpsc模型扩展而来,该代码来源于上海交通大学课题组的开源共享,不同于vpsc的fortran语言,该开源代码采用的C语言编写,作者提供了完整的安装过程和详细的案例,如单晶,孪晶方案,多相,不同应变率的问题 并发布了原始的代码,感兴趣的可以下载了解。并于vpsc模型对比分析。 其中windows下的安装方式使用cmake工具进行,详细过程如下: cmake_minimum_required(VERSION 3.23)set(CMAKE_C_COMPILER "D:/ProgramData/MinGW/mingw64/bin/gcc.exe")set(CMAKE_CXX_COMPILER "D:/ProgramData/MinGW/mingw64/bin/g++.exe")project(EVPSC_CPP)set(CMAKE_CXX_STANDARD 17)set(CMAKE_EXPORT_COMPILE_COMMANDS ON)SET(EIGEN3_INCLUDE_DIR "D:/ProgramData/eigen-3.4.0/")SET(CMAKE_MODULE_PATH "D:/ProgramData/eigen-3.4.0/cmake")SET(JSON_INCLUDE_DIR "D:/ProgramData/nlohmann-json/include")SET(OMP_INCLUDE_DIR "C:/Program Files (x86)/Microsoft SDKs/MPI/Include")find_package( Eigen3 3.3 REQUIRED )# include_directories is needed for the compiler to know where looking for Eigen3 header files to be included include_directories( ${EIGEN3_INCLUDE_DIR} )include_directories( ${JSON_INCLUDE_DIR} )include_directories( ${OMP_INCLUDE_DIR} )SET(CMAKE_CXX_FLAGS "-fopenmp -O3")file(GLOB_RECURSE SRC_LIST ${PROJECT_SOURCE_DIR}/src/*.cpp)set(BIN_NAME "EVPSC")add_executable(${BIN_NAME} ${SRC_LIST})来源:我的博士日记

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈