近期在开展基于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. poj 1066 Treasure Hunt (Geometry + BFS)

    1066 -- Treasure Hunt 题意是,在一个金字塔中有一个宝藏,金字塔里面有很多的墙,要穿过墙壁才能进入到宝藏所在的地方.可是因为某些原因,只能在两个墙壁的交点连线的中点穿过墙壁.问最少 ...

  2. Logback新版本报no applicable action for [Encoding]问题

    logback.xml配置文件如下: <?xml version="1.0" encoding="UTF-8"?> <configuratio ...

  3. iptables发布内部网络服务器

    要使因特网上的计算机访问到内部网的FTP服务器.WEB服务器,在做为防火墙的计算机上应添加以下规则: 1. echo 1 > /proc/sys/net/ipv4/ip_forward 2. 发 ...

  4. Java多线程遍历文件夹,广度遍历加多线程加深度遍历结合

    复习IO操作,突然想写一个小工具,统计一下电脑里面的Java代码量还有注释率,最开始随手写了一个递归算法,遍历文件夹,比较简单,而且代码层次清晰,相对易于理解,代码如下:(完整代码贴在最后面,前面是功 ...

  5. JavaScript的一些SAO操作

    IE判断检测 jQuery 在 1.9 版本之前,提供了一个浏览器对象检测的属性 使用率极高.但是在版本发布之后,大家钟爱的这个属性被无情的抛弃了.大家开始着手寻找.browser 的替代方案.于是各 ...

  6. H3C PPP会话流程

  7. P1028 过河问题

    题目描述 为了躲避黑暗大魔王的追杀,zifeiy与他的伙伴们共N人连夜逃出了黑暗城堡,他们走到一条河的东岸边,想要过河到西岸.而东岸边有一条小船. 船太小了,一次只能乘坐两人.每个人都有一个渡河时间T ...

  8. Dbvisualizer各种中文乱码问题解决方法

    1.SQL Commander里中文显示成‘口’ 解:进入Tools -> Tool Properties -> General -> Appearence -> Fonts, ...

  9. 性能测试基础-HTTP用例设计

    JSON格式请求: web_custom_request("https://xx.xx.xx.xx:xx/pvcpappinf//msgcustomization/xinPowGenDay, ...

  10. 2018-11-5-win10-uwp-异步转同步

    title author date CreateTime categories win10 uwp 异步转同步 lindexi 2018-11-05 10:18:40 +0800 2018-2-13 ...