近期在开展基于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. oracle 优化GROUP BY

    提高GROUP BY 语句的效率, 可以通过将不需要的记录在GROUP BY 之前过滤掉.下面两个查询返回相同结果但第二个明显就快了许多. 低效: SELECT JOB , AVG(SAL) FROM ...

  2. 解析xml的方式

    1.DOM 理论:将标记文档语言一次性加载进内存,在内存中形成DOM树. 优点:操作方便,可以对文档进行CRUD(增删改查)操作,适用于服务端操作 缺点:占内存,不适用与手机,智能家居等内存容量小的设 ...

  3. mybatis 一对多查询 集合创建空对象的问题

    在做 mybatis 一对多查询的时候, resultMap 里面用到了集合标签 collection ,后来发现 当该条数据没有子集的时候, collection 会自动创建一个属性都是null的对 ...

  4. [转]vue原理简介

    写vue也有一段时间了,对vue的底层原理虽然有一些了解,这里总结一下. vue.js中有两个核心功能:响应式数据绑定,组件系统.主流的mvc框架都实现了单向数据绑定,而双向绑定无非是在单向绑定基础上 ...

  5. JDBC 时间处理

    Java中用类java.util.Date对日期/时间做了封装,此类提供了对年.月.日.时.分.秒.毫秒以及时区的控制方法,同时也提供一些工具方法,比如日期/时间的比较,前后判断等. java.uti ...

  6. 4-3 xpath的用法

  7. win10系统激活 快捷方式

    系统不定期就会提示激活,每次激活都是找各种工具折腾,今天捣鼓简单的脚本直接激活~~ 首先查看自己系统的版本,后面才能找到合适的激活码 win+R 启动程序 输入 winver 即可查看系统版本 2.查 ...

  8. 【React】 百度地图API

    百度地图 开发文档 :http://lbsyun.baidu.com/index.php?title=jspopular 调用接口 需要 内置加载一个 百度api文件    使用自己的ak  申请一个 ...

  9. js粘贴图片并显示

    var fromDa; $(function(){ document.getElementById('app').addEventListener('paste', function(e) { if( ...

  10. Roslyn 使用 Target 替换占位符方式生成 nuget 打包

    本文告诉大家如何编写在编译过程修改打包文件 在项目文件的相同文件夹可以放一个 nuspec 用来告诉 VisualStudio 如何打包 现在尝试创建一个项目 NearjerbetearDeeyito ...