基于GMC/umat的复合材料宏细观渐近损伤分析(一)
近期在开展基于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的复合材料宏细观渐近损伤分析(一)的更多相关文章
- 基于GMC/umat的复合材料宏细观渐近损伤分析(二)
采用GMC/umat进行缠绕复合材料力学性能分析,将一些细节分享如下: 1.纤维缠绕复合材料内部交叉及波动分布受缠绕角度.缠绕线形的影响而不同,任意一种纤维缠绕结构其都存在层合区域.螺旋波动区域和环向 ...
- 一种H.264高清视频的无参考视频质量评价算法(基于QP和跳过宏块数)
本文记录一种无参考视频质量评价算法.这是我们自己实验室前两年一个师姐做的,算法还是比较准确的,在此记录一下. 注意本算法前提是高清视频.而且是H.264编码方式. 该方法主要使用两个码流里面的参数进行 ...
- MPC学习笔记1:基于状态空间模型的预测控制(2)
基于估计的无约束预测控制 1.引言 基本上这两个部分都是在线性理论的框架下,利用状态空间法来建模.求解控制律.状态空间模型在理论分析上具有很强的优越性,但实际应用中能直接准确且经济地获取系统状态并不容 ...
- 伯克利、OpenAI等提出基于模型的元策略优化强化学习
基于模型的强化学习方法数据效率高,前景可观.本文提出了一种基于模型的元策略强化学习方法,实践证明,该方法比以前基于模型的方法更能够应对模型缺陷,还能取得与无模型方法相近的性能. 引言 强化学习领域近期 ...
- ABAQUS复合材料
转自)http://meiniyuan.blog.sohu.com/134141022.html 有很多帖子相当的不错,介绍了复合材料研究的基本的原理和方法,发现好的帖子再更新:0 c3 n0 ~+ ...
- Debug格式化输出----基于C语言
Debug格式化输出----基于C语言 1. 使用宏实现 举例: #include <stdio.h> #define ECHO_COLOR_NONE "\033[0;0m&qu ...
- 宏&一个简单的宏病毒示例
基于VisualBasicForApplications 其一:录制宏 在word,视图,宏,录制宏选项. 操作比较简单,不再赘述. (注意根据需求选择normal还是当前文档) 例如:录制宏:快捷键 ...
- 基于React Native的58 APP开发实践
React Native在iOS界早就炒的火热了,随着2015年底Android端推出后,一套代码能运行于双平台上,真正拥有了Hybrid框架的所有优势.再加上Native的优秀性能,让越来越多的公司 ...
- MPC学习笔记1:基于状态空间模型的预测控制(1)
MPC调节器 1.给定一个由状态空间法描述的离散系统: MPC控制器与其他线性二次调节器(LQR)的区别就在于其可以很好的将系统动态约束纳入考虑. 采样周期Ts控制了算法的效率,太大会错过很多系统运行 ...
随机推荐
- jq实现超级简单的隔行变色
文章地址:https://www.cnblogs.com/sandraryan/ <!DOCTYPE html> <html lang="en"> < ...
- poj 3181 Dollar Dayz(完全背包)
Dollar Dayz Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5419 Accepted: 2054 Descr ...
- Flex AIR应用GPS定位功能(Android和IOS)
说明: 使用AIR进行GPS定位功能实现时,会经常判断GPS是否打开.一般的官方或者书上的介绍的方法,测试后,只能对Android系统进行判断,而对ios系统则无法进行判断. 经过研究测试,终于解决实 ...
- [转载] linux、Solaris下xdmcp远程桌面服务
原文链接 http://youlvconglin.blog.163.com/blog/static/52320420106243857254/ 使用图形界面远程登录linux和Solaris,首先要在 ...
- jQuery 选择器 bug
$(function(){ $(".menu li").hide(); //目标对象(一定要用class或id选择器)绑定函数 $(".menu").click ...
- 关于Ping和Tracert命令原理详解
本文只是总结了两个常用的网络命令的实现原理和一点使用经验说明.这些东西通常都分布在各种书籍或者文章中的,我勤快那么一点点,总结一下,再加上我的一点理解和使用经验,方便大家了解.这些也是很基础的东西,没 ...
- H3C IPv6地址表示方式
- multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
情景再现: 上传文件到.net(wcf)后台时,总是上传不成功,后台要求Content-Type是application/octet-stream,我使用multipart/form-data方式,c ...
- 关于POSTMAN做并发压测
一开始我个人在做测试时用到了POSTMAN,用了两种方式做测试, 第一种: 测试发现这种方式是阻塞排队,我让接口睡两秒,这100次请求间隔就是2秒,是串行执行 于是想到第二种,在一个collectio ...
- 2018-8-10-win10-uwp-获得缩略图
title author date CreateTime categories win10 uwp 获得缩略图 lindexi 2018-08-10 19:16:51 +0800 2018-2-13 ...