在本章中考虑的损伤过程可以描述为,当系统穿过由于损伤和塑性的不可逆性导致的不平衡路径时达到的一系列的平衡态。总之,一个系统的当前状态(例如,应力、刚度、柔度)依赖于当前状态(例如,应变)以及系统经历的历史。这是第7章中讨论的粘弹性材料的情况。然而,损伤过程中的和弹塑性材料,当前状态可以用当前应变以及历史对材料的影响来描述,历史影响在本章中用损伤张量D和塑性应变张量εp来表征。
热力学第一定律声明,系统内能的任何增量等于增加到该系统的热量减去系统对其周围做的功
本节中所考虑的系统是一个代表性体积单元(RVE),即包含足够微观结构特征及不可逆过程(例如,损伤和塑性)的从总体上代表材料的最小的体积单元。关于RVE的更多讨论见第6章。
式8.68用率的形式可表示为
式中,
此处,ρ为密度;Ω为RVE的体积;u为内能密度,是一个内部变量和势函数。7
对于可变性的实体,系统的功率为负的系统施加的应力与应变率乘积。
式中,ε为总应变(见式8.125)。
流入RVE的热流由下式给出
7 势函数的值依赖于状态,但不依赖于系统达到该状态的路径和过程[88]。
8
9 此处内能使用字母u表示,沿用了热力学的习惯和[89],不要与其他地方使用的位移向量u混淆。
并且,余应变能密度为
热从高温部分流向低温部分,该事实由热力学第二定律将其形式化。从数学上讲,热流q与温度T的梯度10的方向相反,在形式上可以写为
式中,等号仅对于绝热过程成立,即,没有热交换,因此没有热不可逆性。
想象一个从高温水库向低温水库进行热交换的过程,假设没有热损失到环境中,也没有与环境交换做功。一旦热流到低温水库中,就不可能在没有附加外部做功的情况使热流回到高温水库。也就是,尽管热传递过程是不可逆的,因为第一定律能量平衡(式8.73),所以没有能量损失。对于将来的使用,式8.77可以写11为
注意,任何系统和它的环境可以作为绝热的,只要选取足够大的周围环境,例如宇宙。对于一个任意的系统,由于热流q,总熵率大于(或等于)净熵输入
式8.81的左侧表示系统的总熵率。式8.81的右侧表示外部的熵供应率。差异为内部熵产率
14 使用了[89]的命名法。
受耗散现象影响的正割弹性柔度,包括损伤,定义如下
例8.4 使用下面的Gibbs自由能表示由横向拉伸和面内剪切载荷引起的初始和累积的横向基体裂纹。
解8.4 本构模型定义为关于应力张量的Gibbs自由能的导数
在8.2节中介绍的损伤变量D是一个状态变量,表示材料发生变化的经历。接下来,需要用动力学方程预测用热力学的力表示的损伤的演化。动力学方程可以直接用内部变量来写,例如式8.21或势函数的导数。对于三维问题,可以方便地从势函数推导出动力学定律,与塑性理论中的流动势类似。
内部变量D、δ和相关变量使用数值积分得到,通常使用回归映射算法,如8.4.1节所介绍。
正如在8.1.3节和8.4节所解释的,在定义损伤表面、损伤势和硬化函数时,需要一些内部材料参数。这些参数不能通过一些简单的试验得到。有一些观察到的行为可以通过实验量化,通过调整内部参数使模型预测较好地符合这些观察到的行为来确认模型,以此得到内部参数。模型识别仅针对特定的模型公式、材料、实验有效性和指导相关实验的可行性。因此,模型识别仅能根据具体情况来解释,如同在例8.3所做的。
内部变量通过连续迭代(k-1和k)之间线性化程序进行更新。式8.109的一阶线性化为
例8.5 将例8.4中的损伤模型通过用户材料子程序实现。使用8.4.1节所示的回归映射算法。此外,使用下面的损伤激活函数
解8.5 本模型表示由横向拉伸应力和面内剪切应力引起的损伤。纵向拉伸/压缩没有影响。因此,本模型用热力学的力空间Y2、Y6定义。对于AS4/8852单层板的损伤表面的形状如图8.8所示。
图8.8 在热力学和应力空间中的初始损伤面
以上等式在子程序umatps85.for中实现,该子程序可从[5]获得。材料模型子程序可以用于平面应力单元和层压的壳单元结合的情况。对于横向拉伸载荷的伪代码如下所示。
i. 设置工作路径
菜单:File,Set Work Directory,[C:\SIMULIA\User\Ex_8.5],OK
菜单:File,Save As,[C:\SIMULIA\User\Ex_8.5\Ex_8.5.tra.cae],OK
ii. 创建部件
模块:Part
菜单:Part,Create
2D Planar,Deformable,Shell,Cont
菜单:Add,Line,Rectangle,[0,0],[10,10],X,Done
iii. 定义材料、截面,并赋截面给部件
模块:Property
菜单:Material,Create
General,User Material
# 从文件中读入材料特性参数
# 在Data区域右单击,Read from file,[props.txt],OK,OK
General,Depvar
Number of solution-dependent state variables [3],OK
菜单:Section,Create
Solid,Homogeneous,Cont
# 勾选:Plane stress/strain thickness [1.0],OK
菜单:Assign,Section,# 选取:part,Done,OK
iv. 创建装配
模块:Assembly
菜单:Instance,Create,Independent,OK
v. 定义分析步
模块:Step
菜单:Step,Create
Name [transverse],Procedure type:General,Static/General,Cont
标签页:Basic,Time Period [50]
标签页:Incrementation,Type:Fixed
Maximum number of increments [50],Increment size [2.2],OK
菜单:Output,Field Output Requests,Edit,F-Output-1
Output Variables:Preselected Defaults,# 添加:[SDV],OK
vi. 添加载荷和边界条件
模块:Load
菜单:BC,Manager
Create,Name [BC-1],Step:Initial,Symm/Anti/Enca,Cont
# 选取:原点处的节点,Done,ENCASTRE,OK
Create,Name [BC-2],Step:Initial,Symm/Anti/Enca,Cont
# 选取:Y=0的线,Done,YSYMM,OK
# 作为位移施加的横向载荷可以产生应变
Create,Name [traction],Step:transverse,Disp/Rota,Cont
# 选取:Y=10的线,Done,# 勾选:U2 [0.2],OK
# 关闭Boundary Condition Manager对话框
vii. 对模型划分网格。仅使用一个单元,因为将会得到均匀应力/应变。
模块:Mesh
菜单:Seed,Instance,Approximate global size [10],OK
菜单:Mesh,Element Type
Geometric Order:Quadratic # CPS8R不使用沙漏,OK
菜单:Mesh,Instance,Yes
viii. 创建一个集 合,为了追踪单元的应力和应变。
模块:Mesh
菜单:Tools,Set,Create
Type:Element,Cont,# 选取:网格中仅有的一个单元,Done
模块:Step
菜单:Output,History Output Requests,Edit,H-Output-1
Domain:Set:Set-1,# 展开:Stresses,# 勾选:S
# 展开:Strains,# 勾选:E,OK
ix. 求解和可视化结果
模块:Job
菜单:Job,Manager
Create,Cont
标签页:General,User subroutine file [umatps85.for],OK,OK
Submit,# 当完成后,Results
模块:Visualization
菜单:Result,History Output
# 选择:单元1积分点1处的E22 ,Save As [e22],OK
# 选择:单元1积分点1处的S22 ,Save As [s22],OK
# close History Output pop-up window
菜单:Tools,XYData,Create
Source:Operate on XY data,Cont,Operations:Combine
# 选择:e22,Add to Expr.,# 选择:s22,Add to Expr.
Save As [s22-vs-e22],OK,Plot Expression
通过修改当前的cae模型,可以简单的施加剪切载荷。
i. 保存当前cae模型,并新建一个。
菜单:File,Save
菜单:File,Save As,[C:\SIMULIA\User\Ex_8.5\Ex_8.5.she.cae],OK
ii. 定义分析步
模块:Step
菜单:Step,Manager
# 选择:transverse,Rename,[shear],OK
Edit,标签页:Incrementation,Type:Fixed
Maximum number of increments [50],Increment size [3],OK
# 关闭Step Manager对话框
iii. 添加边界条件和载荷
模块:Load
菜单:BC,Manager
# 在shear分析步中使用位移U1施加剪切载荷
# 选择:traction,Rename,[shear],OK
Edit,# 不勾选:U2,# 勾选:U1 [0.4],OK #
# 关闭BC Manager对话框
iv. 添加约束保证纯剪加载
模块:Interaction
菜单:Constraint,Create
Type:Tie,Cont
Surface,# 选取:x=0的线,Done
Surface,# 选取:x=10的线,Done
Discretization method:Surface to surface
Position Tolerance:Specify distance [10]
# 不勾选:Adjust slave surface initial position,OK
v. 求解并可视化结果
模块:Job
菜单:Job,Manager
Submit,# 当完成后,Results
模块:Visualization
菜单:Result,History Output
# 选择:单元1积分点1处的E12,Save As [e12],OK
# 选择:单元1积分点1处的S12,Save As [s12],OK
# 关闭History Output对话框
菜单:Tools,XYData,Create
Source:Operate on XY data,Cont,Operations:Combine
# 选择:e12,Add to Expr.,# 选择:s12,Add to Expr.
Save As [s12-vs-e12],OK,Plot Expression
两种情况的模型响应在图8.9中给出。
图8.9 模型对面内剪应力和横向拉应力的响应
对于由强度、刚度较大的纤维增强的聚合物基体复合材料,损伤及其共轭的热力学的力可以用二阶张量D和Y描述。此外,在塑性和损伤过程中发生的硬化过程意味着附加的耗散,所以
对于式8.122的特定情况,从式8.92和式8.99,有以下热力学的力的定义
以及硬化方程的定义
加法分解[63]
考虑弹性应变分量可以由应力和柔度计算,上式可以重写为
因此,应力-应变定律的增量和率的形式为
由上式可知,应变增量由3个贡献量:弹性、损伤和塑性。弹性应变以应力增量的直接结果形式出现,损伤应变由材料损伤引起的柔度增加而引起,塑性应变在常数柔度下出现。弹性卸载时,由于塑性,刚度不变,但是损伤会导致刚度降低。根据该论据,习惯[92]假设自由能和余自由能可以分开如下
练习题
问题8.2 仅在x1方向实现一维连续介质损伤力学的UMAT。使用2D平面应力本构方程。令x2方向、泊松比、剪切项为线弹性,且没有损伤。通过重新计算例8.2,以及在问题8.1中得到的图,验证程序。注意,为了得到相同的值,泊松比应该设为0。