首页/文章/ 详情

【FCA-Chp-7】第7章 粘弹性(2)

2年前浏览2021

7.6 粘弹性复合材料微观力学

7.6.1 一维情况

回顾Carson域内的本构方程式7.51。根据对应原理,对于弹性材料的所有微观力学方程在Carson域内对线性粘弹性材料有效。例如,Reuss微观力学模型假设在基体和纤维中的应变是均匀且完全相同的(6.1.1节的讨论)。因此,复合材料的刚度C是各成分(基体和纤维)刚度根据各自的体积分数VmVf的加权组合

 

 

由此,刚度张量在Laplace域内是(见式7.47

 

最后,通过进行Laplace逆变换式7.48可得时域内的刚度张量如下

 


 

7.3 纤维的弹性行为和基体的粘弹性行为定义如下:

纤维(弹性):

然后,Carson变换为

使用Reuss模型计算复合材料行为

 

回到Laplace

回到时域(Laplace逆变换)

 

 

7.6.2 三维情况

 

 

1张量用加粗形式表示,或用带索引的分量表示。

使用卷积定理(表7.1),式7.65Laplace变换为

 

或用Carson变换为

 

假设纤维是弹性的,基体是粘弹性的,后者用Maxwell模型表示

 

Carson变换为

 

使用对应原理得到

 

使用式1.75并假设泊松比为常数,在Carson域内基体的拉梅常数为

 

基体的剪切模量为

 

式中

系数用于解释微观结构的几何,包括微观结构的包含物及其几何排列[36]。对于按照方阵排列的圆柱形纤维[37],则有

 

注意,式7.73产生6个独立的弛豫张量元素。这是因为式7.73表示的复合材料的微观结构按照方阵排列。如果微观结构是随机的(图1.12),复合材料是横观各向同性的(见1.12.4节),则弛豫张量仅有5个独立的元素。当轴x1为复合材料横观各向同性的轴时,平均化过程(式6.7)产生具有横观各向同性的弛豫张量如下

 

 

基于[50]MATLAB程序可以从[5]获得,用于数值上的Laplace逆变换。另一个算法在[8,附录D]中提供。

 


i. 从实现式7.73~7.76的部分代码得到的输出是弛豫模量在Carson域内关于s的方程。注意,必须声明作为符号的变量s

ii. 用得到的方程除以s,回到Laplace域。

iii. 使用函数invlapFEAcomp变回到时域,该函数来源于[50]

iv. 最后,使用粘弹性模型方程拟合E2(t)的数值。通常,基体弛豫使用的模型方程可以方便地用于复合材料弛豫;在本例中,使用Maxwell模型。该步操作由fitfunFEAcomp.m实现。


MATLAB代码PMMViscoMatrix.minvlapFEAcomp.mfitfunFEAcomp.m可从[5]获得。结果在图7.4中给出。对于复合材料的Maxwell参数的完整集 合在例7.7中计算


7.7 粘弹性复合材料宏观力学

7.7.1 均衡对称层压板

均衡对称层压板的面内粘弹性行为可以使用1.15节(表观层压板特性)的过程得到,但是在Carson域内。在Carson域内,从单层板坐标系下的单层板的刚度开始。将每个单层板的矩阵转动到层压板坐标系下。然后,使用式1.102对它们求平均值。使用式1.05,得到在Carson域内的层压板工程特性参数,除以s回到Laplace域。最后,进行Laplace逆变换,得到时域内的层压板刚度。然后,使用一个模型方程拟合它们,如同例7.4

7.7.2 一般层压板

由于对应原理,从经典层压板理论(CLT,见第3章)而来的应力-合力与应变-曲率方程在Carson域内对于线性粘弹性层压复合材料仍然有效。在Carson域内的层压板的ABDH矩阵可以使用从一阶剪切变形理论(FSDT3.1.1节)而来的方程进行计算。这种方法 论[54]中使用过。


7.8 粘弹性复合材料的有限元分析

大多数商业软件已经实现了各向同性材料的粘弹性(蠕变)。这严重限制了对聚合物基体复合材料的粘弹性行为分析感兴趣的用户。

然而,可以利用商用软件中用户可编程的特征,实现本章中出现的公式。这样相对简单,因为在本章中使用的方法不是依赖于应力的,但是线性粘弹性方法及其实现并不复杂。在例7.7中使用UMAT子程序实现粘弹性公式。

 


7.5 模型的大部分可以通过修改例5.2的模型得到,具体过程如下伪代码:

i. 找到例5.2cae文件

菜单:FileSet Work Directory[C:\SIMULIA\User\Ex_7.5]OK

菜单:FileOpen[C:\SIMULIA\User\Ex_5.2\Ex_5.2.cae]OK

菜单:FileSave As[C:\SIMULIA\User\Ex_7.5\Ex_7.5.cae]OK

 

ii. 修改部件

模块:Part

    # 编辑实体拉伸,改变90°铺层厚度

    # 在模型树,# 展开:Parts(1)Part-1Features

    # 右单击:Solid extrudeEditDepth [11.25]OK

    # 移动分割面

    # 右单击:Datum plane-1EditOffset [10]OK

 

iii. 修改材料和截面特性。在例5.2中定义为Material-1的材料必须删除,因为在Abaqus中粘性分析只接受各向同性材料。

模块:Property

菜单:MaterialManager

    # 选择:Material-1DeleteYes

    # 创建各向同性粘弹性材料

    CreateName [iso-visco]MechanicalElasticityElastic

    TypeIsotropic[11975, 0.1866]

    Moduli time scaleInstantaneous

    # 粘性部分

    MechanicalElasticityViscoelasticDomainTimeTimeProny

    g_1 [0.999]k_1 [0.999]tau_1 [58.242]OK

    # 关闭Material Manager对话框

菜单:SectionEditSection-1Materialiso-viscoOK

 

iv. 修改分析步

模块:Step

菜单:StepManager

    # 选择:Step-1DeleteYes# 这样也会删掉已创建的边界条件

    CreateName [Step-1]Procedure typeGeneralViscoCont

    标签页:BasicTime period [150]

    标签页:IncrementationTypeFixedMax number of increments [200]

    Increment size [1]OK# 关闭Step Manager对话框

 

v. 定义约束和相互作用

模块:Interaction

    # X=40的面设置为刚性面,用于施加力

菜单:ToolsReference Point[40,10,11.25]X # RP-1

菜单:ConstraintCreate

    Name [Constraint-1]TypeCouplingCont

    # 选取:RP-1 # 常控制点

    Surface# 选取X=40处的面,Done

    Constrained degrees of freedomU1 # 不勾选:U1以外的其他所有自由度,OK

 

vi. 创建一个集 合用于历史输出

模块:StepModelModel-1StepStep-1 # Step-1 must be selected

菜单:ToolsSetCreate

    Name [Set-1]Cont# 选取:RP-1Done

菜单:OutputHistory Output RequestsEditH-Output-1

    DomainSet Set-1Output Variables:选取下面列出的变量

    # 展开:Stresses# 勾选:S # 确认选择所有项

    # 展开:Strains# 勾选:E # 确认选择所有项

    # 展开:Displacement/Velocity/Acceleration# 勾选:UOK

 

vii. 添加载荷和边界条件

模块:Load

    # 约束参考点的转动UR2UR3

菜单:BCCreate

    Name [BC-RP-1]StepInitialTypeDisp/RotaCont

    # 选取:RP-1Done# 勾选:UR2UR3OK

    # 在参考点施加载荷

菜单:LoadCreate

    StepStep-1MechanicalConcentrated forceCont

    # 选取:RP-1DoneCF1 [1000.0]OK

 

viii. 对模型重划分网格

模块:Mesh

菜单:MeshInstanceYes

 

ix. 求解和可视化结果

模块:Job

菜单:JobManager

    CreateContOKSubmit# 当完成后,Results

模块:Visualization

    # 绘制位移-时间曲线

菜单:ResultHistory OutputU1Plot# 关闭对话框

菜单:PlotContoursOn Deformed Shape

    工具条:Field OutputPrimaryUU1

菜单:ResultStep/FrameIndex0Apply

菜单:ResultStep/FrameIndex1Apply

菜单:ResultStep/FrameIndex150Apply

    # 类似地显示E11S11结果

 

结果在表7.3中给出。注意,在例5.2中应力和应变云图显示的是局部坐标系下的结果,因此表7.3中所示的结果是从外侧单层板提取的。这样做的目的是强调每个单层板的云图显示的是在局部坐标系CSYS下的结果。

7.3 结果(例7.5

 

 

7.6 模型的大部分可以通过修改例7.5的模型而得到,具体操作如下面的伪代码所示。注意,初始位移在短时间内(1min)使用自动增量的方式加载。然后,第二个分析步设置为计算150min的弛豫,使用固定间隔以便数据解读。

 

i. 找到例7.5cae文件

菜单:Set Work Directory[C:\SIMULIA\User\Ex_7.6]OK

菜单:FileOpen[C:\SIMULIA\User\Ex_7.5\Ex_7.5.cae]OK

菜单:FileSave As[C:\SIMULIA\User\Ex_7.6\Ex_7.6.cae]OK

 

ii. 修改分析步

模块:Step

菜单:StepEditStep-1

    标签页:BasicTime period [1]

    标签页:IncrementationTypeAutomatic

    Creep/swelling/viscoelastic strain error tolerance[1E-6]OK

菜单:StepCreate

    Name [Step-2]Procedure typeGeneralViscoCont

    标签页:BasicTime period [150]

    标签页:IncrementationTypeFixedMax number of increments [200]

    Increment Size [1]OK

 

iii. 修改施加的载荷和边界条件

模块:Load

    # 删除RP-1上的载荷

菜单:LoadDeleteLoad-1Yes

    # RP-1上定义一个位移

菜单:BCCreateStepStep-1Disp/RotaCont

    # 选取:RP-1Done# 勾选:U1 [4.0]OK

 

iv. 求解和可视化结果

模块:Job

    # 创建新的分析作业。不要覆盖蠕变算例的结果。

菜单:JobManager

    CreateContOKSubmit# 当完成后,Results

模块:Visualization

    # 绘制时间-位移曲线

菜单:ResultHistory OutputU1Plot# 关闭对话框

    # 可视化不同时刻的结果,与例7.5中的操作相同。

 

结果在表7.4中给出。

7.4 结果(例7.6

 

 

7.5 单层板粘弹性特性(例7.7用)

 

 

7.7 单层板的Maxwell参数在表7.5中给出。在Abaqus中使用UMAT子程序和下列时间相关的特性,可以实现正交各向异性材料的本构方程。

子程序可从[5umat3dvisco.for]获得。模型其他部分的建立可以使用与例7.6相似的过程。

 

i. 找到例7.6cae文件,并设置工作路径

菜单:Set Work Directory[C:\SIMULIA\User\Ex_7.7]OK

菜单:FileOpen[C:\SIMULIA\User\Ex_7.6\Ex_7.6.cae]OK

菜单:FileSave As[C:\SIMULIA\User\Ex_7.7\Ex_7.7.cae]OK

 

ii. 创建使用UMAT的材料

模块:Property

菜单:MaterialCreate

    Name [user]GeneralUser MaterialTypeMechanical

    [102417 11975 0.401 0.1886 5553.8 5037.3 16551 58.424 44.379 54.445]

    # E1oE2onu12onu23oG12oG23otau1tau2tau12tau23

    # 作为一列向量输入

    GeneralDepvar

    Number of solution-dependent state variables [6]OK

 

iii. 修改分析步

模块:Step

菜单:StepManager

    # 选取:Step-1Edit,标签页:BasicTime period [0.001]

    标签页:IncrementationTypeAutomaticError tolerance [1E-6]OK

    # 保持Step-2不变,# 关闭Step Manager对话框

分析步:Step-1# 在工作区上方的环境栏选择

菜单:OutputField Output RequestsEditF-Output-1

    Output VariablesEdit variables [S,E,U,RF,SDV]OK

菜单:OutputHistory Output RequestsEditH-Output-1

    Output VariablesEdit variables [S11,E11,U1,RF1,SDV]OK

 

iv. 将单元类型修改为二阶单元,不使用沙漏刚度

模块:Mesh

菜单:MeshElement Type# select allDone

    Family3D StressGeometric OrderQuadratic

    # 勾选:Reduced integrationOK

菜单:MeshInstanceYes

 

v. 求解和可视化结果

模块:Job

    # 创建第3个分析作业,但不覆盖前面的结果

菜单:JobManager

    CreateCont,标签页:GeneralUser subroutine file [umat3dvisco.for]OK

    Submit# 当完成后,Results

模块:Visualization

    # 可视化支反力,用于计算层压板刚度

  工具条:Field OutputSymbolRFRESULTANT

    # 保存数据到Excel文件

    # 在左侧树

    # 展开:Output Databases# 展开:Job-4.odb (使用的Job名称)

    # 展开:History Output# 右单击:Reaction Force

    Save AsName [XYData-RF1]OK

    # 展开:XYData# 右单击:XYData-RF1Plot

    # 右单击:XYData-RF1Edit# 选择所有数据

    # 右单击:Copy# 粘贴到Excel文件

    # 关闭对话框

结果在表7.6中给出。

7.6 随时间变化的平均应力σ4


Abaqus中,分析被划分为分析步s = 1,...,ns。进一步,每个分析步通常又划分为增量步i = 1,...,ni。Abaqus记录从分析开始经过的(总)时间,包括重启动分析步。另外,Abaqus还记录从分析步开始经过的时间,称为分析步时间ts


关于图7.5,当前增量步(在当前分析步内)开始时的分析步时间ts传递到用户子程序中的变量TIME(1)。当前增量步开始时的(总)时间是TIME(2)。当前时间增量ΔTDTIME

7.5 分析步时间ts、总时间t和时间增量ΔT的定义

这样,当前分析步时间可以计算如下

 

当前(总)时间可以计算如下

 

 

7.6 在例7.7中计算得到的层压板刚度

 

7.8 Abaqus中,可以使用弹性特性表示纤维,使用粘弹性特性表示基体。模型定义与例6.4很相似。有两种方法求解本例:一种是修改Python脚本Ex_6.4-CE.py;另一种是修改Ex_6.4-CE.cae。下面介绍第一种方法。


首先,将PBC_2D.pysrecover2D.py复制到本地路径。然后,将Ex_6.4-CE.py复制为Ex_7.8.py,并使用Notepad 打开。通过修改Ex_7.8.py中相应的行,将工作路径更新到当前路径C:\SIMULIA\User\Ex_7.8,如下:

 

os.chdir(r’C:\SIMULIA\User\Ex_7.8’)

 

然后,修改材料特性,使其包含基体所有的粘弹性参数。弹性模量的单位为TPa(即1000GPa),因为模型尺寸使用微米为单位。

Ef, nuf = 168.4E-3, 0.443 # TPa

Em, num, tau, g_1, k_1 = 4.082E-3, 0.311, 39.15, 0.999, 0.999 # TPa,,min,,,

 

strain = [0.000, 0.0, 0.01] # epsilon_11epslion_22gamma_12

 

下一步,需要新定义粘弹性基体材料。纤维保持为弹性。为了得到粘弹性材料的Python脚本,打开Abaqus/CAE,(空的模型)保存为Ex_7.8.cae。然后,按照例7.5的操作定义粘弹性材料。在Abaqus/CAE中详细操作的伪代码如下:


模块:Property

菜单:MaterialCreate

    Name [matrix]MechanicalElasticityElasticTypeIsotropic

    Moduli time scaleInstantaneousData [4.082E-3, 0.311]

    MechanicalElasticityViscoelasticDomainTimeTimeProny

    g_1k_1tau_1 [0.999, 0.999, 39.15]OK

 

保存模型之前,从Ex_7.8.rec中复制下面的命令行到Ex_7.8.py中,替换在# Materials程序段中定义基体材料特性的两行。

mdb.models[’Model-1’].Material(name=’matrix’)

mdb.models[’Model-1’].materials[’matrix’].Elastic(moduli=INSTANTANEOUS,  

    table=((0.004082, 0.311), ))

mdb.models[’Model-1’].materials[’matrix’].Viscoelastic(domain=TIME,

    table=((0.999, 0.999, 39.15), ), time=PRONY)

 

并且,立即使用变量名替换数值(用于脚本参数化),如下:

mdb.models[’Model-1’].Material(name=’matrix’)

mdb.models[’Model-1’].materials[’matrix’].Elastic(moduli=INSTANTANEOUS,

    table=((Em, num), ))

mdb.models[’Model-1’].materials[’matrix’].Viscoelastic(domain=TIME,

    table=((g_1, k_1, tau), ), time=PRONY)

 

现在,保存模型以重置rec文件。创建一个粘弹性分析步Step-1,用于施加应变,创建分析步Step-2,用于追踪接着发生的弛豫,该操作与例7.6相同。在Abaqus中详细操作的伪代码如下:

模块:Step

菜单:StepCreate

    Name [Step-1]Procedure typeGeneralViscoCont

    标签页:BasicTime period [0.001]

    标签页:IncrementationTypeAutomaticviscoelastic tolerance [1E-6]OK

菜单:StepCreate

    Name [Step-2]Procedure typeGeneralViscoCont

  标签页:BasicTime period [100]

  标签页:IncrementationTypeFixedMaximum number of increments[200]

    Increment Size [1]OK

 

保存模型之前,从Ex_7.8.rec中复制以下命令行到Ex_7.8.py,替换# Step程序段中定义Step-1的命令行。

mdb.models[’Model-1’].ViscoStep(cetol=1e-06, initialInc=0.001, maxInc=0.001,

    minInc=1e-08, name=’Step-1’, previous=’Initial’, timePeriod=0.001)

mdb.models[’Model-1’].ViscoStep(cetol=0.0, initialInc=1.0, maxNumInc=200,

    name=’Step-2’, previous=’Step-1’, timeIncrementationMethod=FIXED,

    timePeriod=100.0)

 

下一步,更新文件名称以便添加边界条件到模型。

execfile(’C:/SIMULIA/User/Ex_7.8/PBC_2D.py’)

 

下一步,更新下面一行中的文件名称。

mdb.saveAs(pathName=’C:/SIMULIA/User/Ex_7.8/Ex_7.8.cae’)

 

下一步,添加下面注释行。

# Calculate Stresses and Strains

# execfile(’srecover2D.py’)

# visualize

# o3 = session.openOdb(name=’Job-1.odb’)

# session.viewports[’Viewport1’].setValues(displayedObject=o3)

 

此时,更新后的脚本应该看起来像从[5Ex_7.8.py]获得的脚本。下一步,在Abaqus/CAE新建一个模型,然后运行脚本,操作如下:

菜单:FileNew Model DatabaseWith Standard/Explicit Model

菜单:FileRun Script [Ex_7.8.py]OK

 

可视化结果,操作如下:

模块:Job

菜单:JobResultsJob-1

模块:Visualization

菜单:PlotContoursOn Deformed Shape

菜单:ResultStep/Frame

 

注意,如何打开图7.7所示的窗口,单击菜单:ResultStep/Frame,打开Step/Frame对话框。现在,可以选择分析步和增量步。在本例中,Step-1是加载分析步,Step-2是弛豫分析步。因为在Step-2中使用了固定增量步,增量步编号与时间(分钟)对应。对于时间相关的分析,例如本例,帧(frame)和增量步(increment)含义相同的。

 

7.7 用于在输出数据库中选择分析步和帧(增量步)的Step/Frame窗口

 

i. 选择分析步。在本例中,Step-1是加载分析步,Step-2是弛豫分析步。在脚本中选择分析步如下:

# In Ex. 7.8, Step-2 is the relaxation step

frameRepository = odb.steps[’Step-2’].frames;


ii. 脚本参数化选择存储增量步的帧:

# Get the results for frame [i], where i is the increment number

i = 0

frameS = frameRepository[i].fieldOutputs[’S’].values;

frameE = frameRepository[i].fieldOutputs[’E’].values;

frameIVOL = frameRepository[i].fieldOutputs[’IVOL’].values;

 

剩余的脚本保存不变。完整的脚本如下(也可从[5srecover2D.py]获取)。

# srecover2D.py modified for Ex. 7.8

from visualization import *

# Open the output data base for the current Job

odb = openOdb(path=’Job-1.odb’);

myAssembly = odb.rootAssembly;

 

# Temporary variable to hold the frame repository speeds up the process

# In Ex. 7.8, Step-2 is the relaxation step

frameRepository = odb.steps[’Step-2’].frames;

 

# Get the results for frame [i], where i is the increment number

i = 80

frameS = frameRepository[i].fieldOutputs[’S’].values;

frameE = frameRepository[i].fieldOutputs[’E’].values;

frameIVOL = frameRepository[i].fieldOutputs[’IVOL’].values;

 

Tot_Vol=0.; # Total Volume

Tot_Stress=0.; # Stress Sum

Tot_Strain = 0.; # Strain Sum

 

# Calculate Average

for II in range(0,len(frameS)):

    Tot_Vol =frameIVOL[II].data;

    Tot_Stress =frameS[II].data * frameIVOL[II].data;

    Tot_Strain =frameE[II].data * frameIVOL[II].data;

 

Avg_Stress = Tot_Stress/Tot_Vol;

Avg_Strain = Tot_Strain/Tot_Vol;

 

# from Abaqus Analysis User’s Manual - 1.2.2 Conventions -

# Convention used for stress and strain components

print ’2D Abaqus/Standard Stress Tensor Order11-22-33-12’

print ’Average stresses Global CSYS11-22-33-12’;

print Avg_Stress;

print ’Average strain Global CSYS11-22-33-12’;

print Avg_Strain;

odb.close()

 

7.8 时间相关的剪切模量


练习题

 


 

 

 


来源:AbaPY
MechanicalMaxwellAbaqusDeform复合材料MATLAB理论材料控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-08-31
最近编辑:2年前
KongXH
博士 专注于有限元分析领域,联合创作...
获赞 49粉丝 100文章 59课程 1
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈