近期在开展基于GMC/umat的复合材料宏细观渐近损伤分析,一些技术细节分享如下:

1.理论基础

针对连续纤维增强复合材料,可以通过离散化获得如下的模型:

(a)(b)(c)

图1 连续纤维增强复合材料细观离散化(a)代表性体积单元示意图(b)2*2子胞划分(c)Nr*Nb子胞划分

在子胞中采用一阶线性位移模式:

  子胞的应变由几何方程给出:

  单胞的平均应变可由体积平均给出:

本构关系如下所示:

  单胞的平均应力可由体积平均给出:

  需要注意的是,由于采用的是线性位移模式,则子胞内为常应变和常应力。子胞内应变为子胞平均应变,而应力为平均应力。

由子胞边界的位移连续可以得到单胞应变与子胞应变的关系:

  

  写成矩阵形式如下:

  由子胞间的应力连续可得到单胞应力与子胞应力的关系,如下所示:

  为了进一步包含子胞的损伤信息,进而开展损伤后力学分析,为每个子胞分配一个状态变量 ,其表征了损伤的状态,0 为未损伤,0.9999 为损伤。从而可推导出如下考虑损伤的子胞间应力连续方程:

  

  写成矩阵形式有:

  将子胞位移连续与应力连续方程合并,可得如下完备的通用单胞计算模型:

  求解可得:

  将子胞应变矩阵分解为子矩阵 :

  由此可获得任意子胞的应变表达式:

  可获得复合材料宏观本构关系:

2.umat实现(Fortran代码)

以下为 usermat 接口及主程序,主要包含参数传递、当前刚度(考虑损伤)计算、切线刚度矩阵赋值、更新应力,考虑篇幅,星号为部分省略区,只给出关键部分。

 *deck,usermat USERDISTRIB parallel gal
subroutine usermat(
& matId, elemId,kDomIntPt, kLayer, kSectPt,
& ldstep,isubst,keycut,
****************************************************
****************************************************
c------------------------------------.自定义变量声明-------------------------------------
real* Q(,),mic_sig(,,),mic_dam(,),mic_dam2(),sstrain(,)
INTEGER i,j,ii,jj,KK1,Kk2,Nb,Nr
real* ex_f,ey_f,ez_f,gxy_f,gxz_f,gyz_f,prxy_f,prxz_f,pryz_f
& ,s_f(,),c_f(,),
& ex_m,prxy_m,g_m,s_m(,),c_m(,)
real* vf,k1,a,b,L,H
real* cell_H(),cell_L()
integer cforcm(,)
real* mac_test_s(,),mac_e(,),s_temp(,,)
character()::num
real* xt,xc,s,xt_f,xc_f
real* dam_ori(,)
c-------------------------------------动态数组
real (kind=), allocatable:: ag(:,:), agg(:,:)
allocate(ag(,),agg(,))
****************************************************
****************************************************
c------------------------------------.目前刚度计算-----------------------------------------
do i=,
sstrain(i,)=strain(i)
end do
call mic_sig_cal(sstrain,c_f,c_m,cell_H,cell_L,
& cforcm,mic_dam,mic_sig)
call mic_dam_cal(mic_sig,cforcm,xt,xc,s,xt_f,
& xc_f,cell_L,cell_H,mic_dam,dam_ori)
mac_test_s=.
call mac_con_cal(c_f,c_m,cell_H,cell_L,
& cforcm,mic_dam,mac_test_s)
Q=mac_test_sc------------------------------------.一致切线算子矩阵----------------------------------
dsdePl=Q
c------------------------------------.更新应力----------------------------------
DO Kk1=, ncomp
DO Kk2=, ncomp
stress(Kk2)=stress(Kk2)+dsdePl(Kk2,Kk1)*dStrain(Kk1)
END DO
END DO
****************************************************
****************************************************
RETURN
END
c------------------------------------------------------------------------------------------------

  以下为主要子程序之细观应力计算:

 subroutine mic_sig_cal(sstrain,c_f,c_m,cell_H,cell_L,
& cforcm,mic_dam,mic_sig)
#include "impcom.inc"
real* sstrain(,),mic_sig(,,),mic_dam(,)
integer Nb,Nr
real* c_f(,),c_m(,)
real* cell_H(),cell_L()
integer cforcm(,)
real* ag(,),bg(,)
real* bgg(,)
real* temp(,)
real* mic_eps(,)
integer i,j,k,ii,jj,kk,iii,jjj,kkk,countt
****************************************************
****************************************************
c eps12
do j=,Nb
countt=countt+
do i=,Nr
ii=(i-)*Nb+j
ag(countt,(ii-)*+)=cell_L(i)
end do
bg(countt,)=.
end do****************************************************
****************************************************
c sig21
do j=,Nb
do i=,Nr-
countt=countt+
temp=.
ii=(i-)*Nb+j
iii=(i+-)*Nb+j
if (cforcm(i,j).eq.)then
temp(,(ii-)*+:(ii-)*+)=c_f(,:)*(-mic_dam(i,j))
else
temp(,(ii-)*+:(ii-)*+)=c_m(,:)*(-mic_dam(i,j))
end if
if(cforcm(i+,).eq.)then
temp(,(iii-)*+:(iii-)*+)=-*c_f(,:)*(-mic_dam(i,j))
else
temp(,(iii-)*+:(iii-)*+)=-*c_m(,:)*(-mic_dam(i,j))
end if
ag(countt,:)=temp(,:)
bg(countt,:)=.
end do
end do
****************************************************
****************************************************
RETURN
END
c----------------------------------------------------------------------------------

以下为主要子程序之细观损伤计算:

 subroutine mic_dam_cal(mic_sig,cforcm,xt,xc,s,xt_f,
& xc_f,cell_L,cell_H,mic_dam,dam_ori)
#include "impcom.inc"
integer i,j,k
real* mic_sig(,,) ,mic_dam(,),dam_ori(,)
integer cforcm(,)
real* cri
real* cri_flag,xt,xc,s,f1,f11,f44,f12
real* xt_f,xc_freal* matrix_f
real* cell_H(),cell_L()
****************************************************
****************************************************
if( (cforcm(i,j).eq.).and.
& ( mic_sig(i,j,).ge.(1.0*xt).or.
& mic_sig(i,j,).le.(-1.0*xc) ) ) then
mic_dam=0.9999
dam_ori(i,j)=0.9999
end if
****************************************************
****************************************************
if( (cforcm(i,j).eq.).and.
& ( (mic_sig(i,j,).ge.xt_f*1.0).or.
& (mic_sig(i,j,).le.xc_f*1.0)) ) then
mic_dam=0.9999
dam_ori(i,j)=0.9999
end if
end do
end do
RETURN
END
c---------------------------------------------------------------------

以下为主要子程序之宏观刚度计算:

 subroutine mac_con_cal(c_f,c_m,cell_H,cell_L,
& cforcm,mic_dam,mac_test_s)
#include "impcom.inc"
real* c_f(,),c_m(,),cell_H(),cell_L(),
& mic_dam(,),mac_test_s(,)
integer cforcm(,)
real* ag(,),ag_inv(,),a(,),bg(,)
real* temp(,),temp_a(,),temp_c(,)
real* temp_ca(,)
integer i,j,k,ii,jj,kk,iii,jjj,kkk,countt
integer Nb,Nr
****************************************************
****************************************************
c sig21do j=,Nb
do i=,Nr-
countt=countt+
temp=.
ii=(i-)*Nb+j
iii=(i+-)*Nb+j
if (cforcm(i,j).eq.)then
temp(,(ii-)*+:(ii-)*+)=c_f(,:)*(-mic_dam(i,j))
else
temp(,(ii-)*+:(ii-)*+)=c_m(,:)*(-mic_dam(i,j))
end if
if(cforcm(i+,).eq.)then
temp(,(iii-)*+:(iii-)*+)=-*c_f(,:)*(-mic_dam(i,j))
else
temp(,(iii-)*+:(iii-)*+)=-*c_m(,:)*(-mic_dam(i,j))
end if
ag(countt,:)=temp(,:)
bg(countt,:)=.
end do
end do
****************************************************
****************************************************
temp_ca=matmul(temp_c,temp_a)
mac_test_s=mac_test_s+cell_L(i)*cell_H(j)*temp_ca
end do
end do
return
end

3.参考文献

[1] Aboudi J. A continuum theory for fiber-reinforced elastic-viscoplastic composites[J]. International Journal of Engineering Science. 1982, 20(5): 605-621.

[2] Aboudi J. Elastoplasticity theory for porous materials ☆[J]. Mechanics of Materials. 1984, 3(1): 81-94.

[3] Aboudi J. Closed form constitutive equations for metal matrix composites[J]. International Journal of Engineering Science. 1987, 25(9): 1229-1240.

[4] Aboudi J. Micro-Failure Prediction of the Strength of Composite Materials under Combined Loading[J]. Journal of Reinforced Plastics & Composites. 1991, 10(5): 495-503.

[5] 雷友锋. 纤维增强金属基复合材料宏-细观统一本构模型及应用研究[D]. 南京航空航天大学, 2002.

[6] 孙志刚. 复合材料高精度宏-细观统一本构模型及其应用研究[D]. 南京航空航天大学, 2005.

[7] 高希光. 陶瓷基复合材料损伤耦合的宏细观统一本构模型研究[D]. 南京航空航天大学, 2007.

[8] Tang Z, Zhang B. Prediction of biaxial failure envelopes for composite laminates based on Generalized Method of Cells[J]. Composites Part B Engineering. 2012, 43(3): 914-925.

[9] 唐占文. 考虑界面相的复合材料宏-细观渐进损伤解析模型研究[D]. 哈尔滨工业大学, 2013.

[10]Pineda E J, Bednarcyk B A, Waas A M, et al. Progressive failure of a unidirectional fiber-reinforced composite using the method of cells: Discretization objective computational results[J]. International Journal of Solids & Structures. 2013, 50(9): 1203-1216.

基于GMC/umat的复合材料宏细观渐近损伤分析(一)的更多相关文章

  1. 基于GMC/umat的复合材料宏细观渐近损伤分析(二)

    采用GMC/umat进行缠绕复合材料力学性能分析,将一些细节分享如下: 1.纤维缠绕复合材料内部交叉及波动分布受缠绕角度.缠绕线形的影响而不同,任意一种纤维缠绕结构其都存在层合区域.螺旋波动区域和环向 ...

  2. 一种H.264高清视频的无参考视频质量评价算法(基于QP和跳过宏块数)

    本文记录一种无参考视频质量评价算法.这是我们自己实验室前两年一个师姐做的,算法还是比较准确的,在此记录一下. 注意本算法前提是高清视频.而且是H.264编码方式. 该方法主要使用两个码流里面的参数进行 ...

  3. MPC学习笔记1:基于状态空间模型的预测控制(2)

    基于估计的无约束预测控制 1.引言 基本上这两个部分都是在线性理论的框架下,利用状态空间法来建模.求解控制律.状态空间模型在理论分析上具有很强的优越性,但实际应用中能直接准确且经济地获取系统状态并不容 ...

  4. 伯克利、OpenAI等提出基于模型的元策略优化强化学习

    基于模型的强化学习方法数据效率高,前景可观.本文提出了一种基于模型的元策略强化学习方法,实践证明,该方法比以前基于模型的方法更能够应对模型缺陷,还能取得与无模型方法相近的性能. 引言 强化学习领域近期 ...

  5. ABAQUS复合材料

    转自)http://meiniyuan.blog.sohu.com/134141022.html 有很多帖子相当的不错,介绍了复合材料研究的基本的原理和方法,发现好的帖子再更新:0 c3 n0 ~+ ...

  6. Debug格式化输出----基于C语言

    Debug格式化输出----基于C语言 1. 使用宏实现 举例: #include <stdio.h> #define ECHO_COLOR_NONE "\033[0;0m&qu ...

  7. 宏&一个简单的宏病毒示例

    基于VisualBasicForApplications 其一:录制宏 在word,视图,宏,录制宏选项. 操作比较简单,不再赘述. (注意根据需求选择normal还是当前文档) 例如:录制宏:快捷键 ...

  8. 基于React Native的58 APP开发实践

    React Native在iOS界早就炒的火热了,随着2015年底Android端推出后,一套代码能运行于双平台上,真正拥有了Hybrid框架的所有优势.再加上Native的优秀性能,让越来越多的公司 ...

  9. MPC学习笔记1:基于状态空间模型的预测控制(1)

    MPC调节器 1.给定一个由状态空间法描述的离散系统: MPC控制器与其他线性二次调节器(LQR)的区别就在于其可以很好的将系统动态约束纳入考虑. 采样周期Ts控制了算法的效率,太大会错过很多系统运行 ...

随机推荐

  1. SuperSocket性能数据采集的应用程序接口的改动

    性能数据采集的应用程序接口作了修改,两个虚方法已经被更改: protected virtual void UpdateServerSummary(ServerSummary serverSummary ...

  2. phpstorm IDEA 双击Shift键会弹出 SearchEverywhere 对话框,如何取消这个功能

    https://blog.csdn.net/qq_27598243/article/details/80526352 解决方法:一:Open lib/resources.jar/idea/Platfo ...

  3. 一个简单的hexo搭建博客网站的故事

    首先安装hexo mkdir hexo #创建一个文件夹 cd hexo #切换到hexo目录下面 npm install -g hexo-cli npm install hexo --save 然后 ...

  4. vue+file-saver+xlsx导出table表格为excel

    https://blog.csdn.net/wjswangjinsheng/article/details/91393396

  5. 百度小程序富文本bdParse遇到的坑

    百度开发工具能正常显示文章图文详情, web浏览也可以, app浏览就不行, 审核说兼容性问题, 都不是, 后来发现是后台传输的数据问题, 不能用json_encode()返回数据

  6. springboot 项目打包可运行jar文件

    eclipse 运行run as  maven bulid  ,填入package ,运行打包 java -jar xxx.jar

  7. httpclient: Content-Length header already present问题

    现象:用httpclient发送http请求时,客户端返回: org.apache.http.client.ClientProtocolException at org.apache.http.imp ...

  8. python模块之random模块

    random模块 随机模块,用于处理随机问题. import random # 随机整数 print(random.randint(0, 9)) # 0到9之间随机一个整数 print(random. ...

  9. 2019-11-20-Github-给仓库上传-NuGet-库

    title author date CreateTime categories Github 给仓库上传 NuGet 库 lindexi 2019-11-20 08:18:14 +0800 2019- ...

  10. Linux 内核即插即用规范

    一些新 ISA 设备板遵循特殊的设计规范并且需要一个特别的初始化顺序, 对增加接口板 的简单安装和配置的扩展. 这些板的设计规范称为即插即用, 由一个麻烦的规则集组成, 来建立和配置无跳线的 ISA ...