1 引言
接触-碰撞问题属于最困难的非线性问题之一,因为在接触-碰撞问题中的响应是不平滑的。当发生碰撞时,垂直于接触界面的速度是瞬时不连续的。对于Coulcomb摩擦模型,当出现粘性滑移行为时,沿界面的切向速度也是不连续的。接触-碰撞问题的这些特点给离散方程的时间积分带来明显的困难。因此,方法和算法的适当选择对于数值分析的成功是至关重要的。
虽然通用商业程序LS-DYNA提供了大量的接触类型,可以对绝大多数接触界面进行合理的模拟,但在具体的工程问题中,面临接触类型的选择及棘手的接触参数控制等问题。
基于以上,本文对LS-DYNA中的接触-碰撞算法作了简要的阐述,对接触类型作了详尽的总结归纳,并对接触界面的模拟提出了一些建议。
2 基本概念
基本概念:“slave”、“master”、“segment”。
在绝大多数的接触类型中,检查slave nodes是否与master segment产生相互作用(穿透或滑动,在Tied Contacts 中slave限定在主面上滑动)。因此从节点的连接方式(或从面的网格单元形式)一般并不太重要。
非对称接触算法中主、从定义的一般原则:
粗网格表面定义为主面,细网格表面为从面;
主、从面相关材料刚度相差悬殊,材料刚度大的一面为主面。
平直或凹面为主面,凸面为从面。
有一点值得注意的是,如有刚体包含在接触界面中,刚体的网格也必须适当,不可过粗。
3 接触算法
在LS-DYNA中有三种不同的算法处理碰撞、滑动接触界面,即:
动态约束法(kinematic constraint method)
罚函数法(penalty method)
分布参数法(distributed paramete method)
3.1 Kinematic Constraint Method
采用碰撞和释放条件的节点约束法由Hughes 等于1976年提出,同年被Hallquit 首先应用在 DYNA2D中,后来扩展应用到 DYNA3D中。
其基本原理是:在每一时间步Δt修正构形之前,搜索所有未与主面(master surface)接触的从节点(slave node),看是否在此Δt内穿透了主面。如是,则缩小Δt,使那些穿透主面的从节点都不贯穿主面,而使其正好到达主面。在计算下一Δt之前,对所有已经与主面接触的从节点都施加约束条件,以保持从节点与主面接触而不贯穿。此外还应检查那些和主面接触的从节点所属单元是否受到拉应力作用。如受到拉应力,则施加释放条件,使从节点脱离主面。
这种算法存在的主要问题是:如果主面网格划分比从面细,某些主节点(master node)可以豪无约束地穿过从面(slave surface)(这是由于约束只施加于从节点上),形成所谓的“纽结”(Kink)现象。当接触界面上的压力很大时,无论单元采用单点还是多点积分,这种现象都很容易发生。当然,好的网格划分可能会减弱这种现象。但是对于很多问题,初始构形上好的网格划分在迭代多次后可能会变得很糟糕,如爆炸气体在结构中的膨胀。
由于节点约束算法较为复杂,目前在LS-DYNA程序中仅用于固连与固连一断开类型的接触界面(统称固连界面),主要用来将结构网格的不协调两部分联结起来。
3.2 Distributed Parameter Method
分配参数法也是发展较早的一种接触界面算法,Wilkins在1964年将该算法成功地应用到HEMP程序中,Burton等在1982年将其应用于TENSOR分析程序中。与节点约束法相比,这种算法具有较好的网格稳定性,因此被DYNA采用。目前,在LS-DYNA程序中用来处理接触一滑动界面的问题。
该方法的基本原理是:将每一个正在接触的从单元(slave element)的一半质量分配到被接触的主面面积上,同时根据每个正在接触的从单元的内应力确定作用在接受质量分配的主面面积上的分布压力。在完成质量和压力的分配后,修正主面的加速度。然后对从节点的加速度和速度施加约束,以保证从节点在主面上滑动,不允许从节点穿透主表面,从而避免了反弹现象。
这种算法主要用来处理接触界面具有相对滑移而不可分开的问题。因此,在结构计算中,该算法并没有太多的用处。它最典型的应用是处理爆炸等问题,炸药爆炸产生的气体与被接触的结构之间只有相对滑动而没有分离。
3.3 Penalty Method
该算法于1981年有Huag等人,1982年8月开始用于 DYNA2D中[2]。现在,罚函数法已发展为一种非常用的接触界面算法,在数值计算中被广泛应用。
罚函数法的基本原理是:在每一个时间步首先检查各从节点是否穿透主面,如没有穿透不作任何处理。如果穿透,则在该从节点与被穿透主面间引入一个较大的界面接触力,其大小与穿透深度、主面的刚度成正比。这在物理上相当于在两者之间放置一法向弹簧,以限制从节点对主面的穿透。接触力称为罚函数值。“对称罚函数法”则是同时对每个主节点也作类似上述处理。
对称罚函数法由于具有对称性、动量守恒准确,不需要碰撞和释放条件,因此很少引起Hourglass效应,噪声小。
对称罚函数法在每一个时间步对从节点和主节点循环处理一遍,算法相同。下面以从节点ns为例详细描述该算法的基本步骤:
1 搜索所有从动点,确定从动点是否穿透主面。
2 如否,不作处理,搜索结束;如是,则在从节点与主面上的接触点间附加
一法向接触力 Fn。
3 处理摩擦力。
4 将接触力 Fn和摩擦力 投影到总体坐标,组集到总体载荷向量中。
4 接触类型
在具体介绍各种类型的接触前,先阐述几个基本的概念。
在壳单元中,自动接触通过法向投影中面的1/2“Contact Thickness”来确定接触面。这就是“shell thickness offsets”。接触厚度可以在接触的定义中明确指定。如果接触厚度没有指定,则等于壳的厚度(在单面接触中,为壳厚度或单元边长的最小值)。相同的,在梁的接触中,接触面从梁的基线偏置梁截面等效半径距离。因此,在有限元几何建模时,为考虑壳厚、梁截面尺寸必须在壳、梁的part间有适当的间隙,否则会有初始穿透现象发生(即发生不真实的接触现象)。虽然LS-DYNA可以通过移动穿透的从节点到主面上来消除初始穿透,但是并不是所有的初始穿透都能检查出。
DYNA中大多数的接触有一个“极限穿透深度”,如侵彻超过这个深度则从节点被释放,接触力置为0。这主要用在自动接触中,防止过大接触力的产生而引起数值不稳定性。然而在有些情况下,因为这个阈值过早达到而使接触失效(常发生在非常薄的壳单元中)。此时应采取的措施是放大接触厚度因子或设置接触厚度为大于壳厚度的一个值,或者改变接触刚度的计算方法(如改为Soft=1)。
LS-DYNA中的接触允许从节点与主段间压缩载荷的传递。如接触摩擦激活,也允许切向载荷的传递。Coulomb摩擦列式用来处理从静到动摩擦的转换,这种转换要求一个衰减系数、静摩擦系数大于动摩擦系数。
关于接触搜索方法,这里仅给出几个简单的要点,详细描述见Theoretical Manual of LS-DYNA。
DYNA中有两种搜索方法:Incremental Search Technique与Bucket Sort。
Incremental Search Algorithms
搜索方向 仅在主段正方向从节点的穿透
搜索步骤 对每一个从节点的:找出最接近的主节点;搜索相邻的主段;穿透检查;施加作用力。
主面要求 主面连续
特点 简单、速度快
Global Bucket Sort
搜索方向 主面正、负方向检查穿透
搜索步骤 搜索接近的主段(不止一个);局部利用Incremental Search确定最接近的主段;穿透检查;施加作用力。
主面要求 主面可以不连续
特点 非常有效,但耗时大所有的非自动
LS-DYNA中的接触类型大体上可以分为五大类:
One-Way Contact (单向接触)
Two-Way Contact( 双向接触)
Single Contact(单面接触)
Entity
Tied Contac(固-连接触)
在以上接触类型中,前四种接触类型的接触算法均采用罚函数法。固-连接触有的采用的罚函数法,有的采用动约束法,少部分采用分布参数法。
4.1 One-Way Treatment of Contact
One-Way、Two-Way是对接触搜索来讲的。One-way仅检查从节点是否穿透主面,而不检查主节点。在Two-Way Contact中从节点与主节点是对称的,从节点与主节点都被检查是否穿透相应的主面或从面。
LS-DYNA中的_Node_To_Surface接触类型都属于单向接触,另外还有特别注明为单向接触的_Surface_To_Surface接触类型:
*Contact_Nodes_To_surface
*Contact_Automatic_Nodes_To_Surface
*Contact_Froming_Nodes_To_Surface(自动接触类型、主要用于金属拉压成形)
*Contact_Constraint_Nodes_To_Surface(现已很少用)
*Contact_Eroding_Nodes_To_Surface
*Contact_One_Way_Surface_To_Surface
Contact_One_Way_Automatic_Surface_To_Surface
由于在单向接触中,仅有从节点被检查是否穿透主面,而不考虑主节点,因此在使用时必须注意,应保证在接触过程中主节点不会穿过从面。同样的原因,单向接触要比双向接触运行速度快得多,因此仍被广泛应用。在以下情况中使用单向接触是合适的:
主面是刚体
相对细的网格(从)与相对平滑、粗的网格(主)接触
beam_to_surface、 Shell edge_to_surface接触。beam node、Shell edge node作从点。
在接触分析中,由于问题的复杂性,判断接触发生的方向有时是很困难的,因此分析中应尽量使用自动接触(不需要人工干预接触方向)。但当面的方向在整个分析过程中都能确定的情况下,下面的非自动接触类型是非常有效的:
*Contact_Nodes_To_Surface(5)
*Contact_One_Way_Surface_To_Surface(10)
*Contact_Constraint_Nodes_To_Surface(18)
*Contact_Eroding_Nodes_To_Surface(16)
4.2 Two-Way Treatment of Contact
主、从面的定义与算法处理上是完全对称的。因此主面、从面可以随意定义。计算资源大约是单向的2倍。LS-DYNA中绝大多数_Surface_To_Surface接触都是双向接触类型。
双向接触除对主节点的搜索外,其它方面同单向接触是完全一样的。与前述接触类型5、18、16相对应的双向接触为:
*Contact_Surface_To_Surface(3)
*Contact_Constraint_Surfaces_To_Surface(17)
*Contact_Eroding_Surface_To_Surface(14)
在Crash Analysis中,*Contact_Automatic_Surface_To_Surface(a3)推荐使用。在金属的拉压成形分析中推荐使用*Contact_Froming_Nodes_To_Surface。
4.3 Single Surface
单面接触是LS-Dyna中应用最为广泛的接触类型,尤其在Crashworthiness应用中。在这中类型中,从面一般定义为Part或PartSet ID。各Part间及自身Part间的接触都考虑。如果建模精确,该接触是可信、精确的。在单面接触中,壳厚偏置总是考虑的,因此建模时不能有初始穿透存在。
单面接触有:
*Contact_Single_Surface(4,不推荐使用)
*Contact_Automatic_Single _Surface(推荐)
*Contact_Automatic_General
*Contact_General_Interior
*Contact_Airbag_Single_Surface
对于Crash Analysis,推荐使用*Contact_Automatic_Single _Surface(13)。这个接触类型其性能随DYNA版本的提高不断改善。
4.4 Tied Contact(Translational DOF only, No Failure, No Offset)
固-连接触用来将从节点约束、限定在主面上。这种接触类型一般是非对称的,因此定义主、从是要符合§2中描述的一般规则。在这种类型的接触中,主、从接触面最好不要以Parts ID形式输入,应采用node/segment的形式。
固-连接触类型丰富,采用的接触算法也不一致,下面分别介绍。
Translational DOF only, No Failure, No Offset
这种接触仅约束从节点的平动自由度,且不考虑接触的失效,不允许从节点的偏置。如果从节点与对应的主段间有微小的距离存在,则采用正交投影的方法将从节点移动到主面上。因此,初始几何构形可能有微小的改变。
这种类型接触采用动态约束算法,因此不能将刚体约束到可变形体或刚体。
如下两个命令是常用的固连接触。这两种接触在数值处理上是完全一样的,所不同的仅是输入数据格式。
*Contact_Tied_Nodes_To_Surface(6)
*Contact_Tied_Surface_To_Surface(2)
Translational DOF only, No Failure, With Offset
这种接触采用罚函数算法,允许从节点与主面间偏移(主、从面间存在微小的距离)存在,可以用于刚体相应的约束。
与上述接触类型2、6对应的为
*Contact_Tied_Nodes_To_Surface_OFFSET(O6)
*Contact_Tied_Surface_To_Surface_OFFSET(O2)
由于从节点的偏置,可能会引起附加的动量矩。但在这种类型的接触中,不考虑偏置引起的动量矩。因此,主、从面必须相当的接近。
Translational DOF & Rotational DOF, With Failure, No Offset
采用动态约束算法。
Translational DOF & Rotational DOF, With Failure, With Offset
罚函数法。
Translational DOF Only, With Failure, With Offset
动态约束算法。
5 接触刚度的计算
在基于罚函数算法的接触类型中,目前LS-DYNA有两种计算主、从面间接触刚度的方法。
5.1 Penalty-base Approach(SOFT=0)
该算法是LS-DYNA计算接触刚度的缺省方法。它利用接触段的尺寸与其材料特性来确定接触刚度。当两个接触面的材料刚度参数相差不大时,该方法是很有效的。但当两个接触面的材料刚度相差很大时,由于接触刚度采用主、从面中较小的刚度,而使接触失效。
对于Crash分析,除非先验证明没有问题,否则一般不使用SOFT=0。
5.2 Soft Constraint-based Approach(SOFT=1&2)
计算接触刚度时,综合考虑了发生接触的节点之质量与整体时间步长,以保证接触的稳定性。这样的处理,对于材料性质相差悬殊的接触问题是非常合适的。
Soft=1与Soft=0算法除刚度计算外,其它考虑是完全一致的。当Soft=1时,采用下式计算接触刚度k(单向接触):
k = max(SLSFAC*SFS*k0, SOFSCL*k1)
其中:k0~根据材料弹性模量与单元尺寸确定的接触刚度;
k1~根据节点之质量与整体时间步长来确定接触刚度。
对于Two-Way型接触,用SFM代替上式中的SFS。
5.3 Segment-based Contact VS. Standard Contact
与Soft=0、1(以下简称“标准算法”)不同,Soft=2是一种基于段(Segment based)的接触算法。在标准算法中,检查从点穿透主段与否而施加罚力与从点及相应的主点;而在段接触算法中,直接检查段是否发生相互穿透而施加罚力与相应段的节点。
6 接触控制参数
LS-DYNA提供了多个与接触相关的控制参数。根据不同接触问题的具体特点,设置不同的控制参数,对提高“接触模型”的精确性是非常必要的。
LS-DYNA中的接触控制参数可以在*Control_Contact、*Contact或*Part_Contact中设置,而有些参数也可以同时在多个命令中设定。如一个参数在多个命令中设置,则这样的设置有一定的优先次序。*Control_Contact对整个模型中的接触提供一种“全局性”的“缺省”参数设置;*Contact对每个具体的接触提供“局部”的参数设置,优先权较高;*Part_Contact则为某个具体的Part涉及的接触提供最高级别的参数控制。
6.1 Thickness offset: Automatic, SLTHK(Card 1,*Control_Contact, Option Card A)
LS-DYNA中非自动接触类型:
*CONTACT_SURFACE_TO_SURFACE
*CONTACT_NODES_TO_SURFACE
*CONTACT_ONE_WAY_SURFACE_TO_SURFACE
利用参数SHLTHK确定是否考虑“厚度偏置”,该参数可以在*CONTROL_CONTACT中全局定义,也可以在Optional Card B中局部定义。如果SHLTHK=0,不考虑厚度偏置,采用incremental search方法来确定从节点最接近的主段;如SHLTHK=1,考虑变形体的厚度偏置,但不考虑刚体厚度偏置;如SHLTHK=2,变形体、刚体的厚度偏置都考虑。如SHLTHK为1或2,程序采用global bucket search来确定接触对。接触建立以后,采用incremental searching来跟踪从节点在主面上的位置。采用global bucket searching 的优点是主、从面可以不连续(这对incremental search是不可能的)。
在非自动接触类型中,接触段的法向方向(符合右手法则,指向接触面)是非常重要的,必须保证所有接触段的法向一致指向接触面,这就是所谓的“oriented contact”。一个简单的方向自动定位方法是激活*CONTROL_CONTACT中的参数ORIEN(必须在两个中面间有一定的距离)。
自动接触和单面接触总是考虑“壳厚偏置”。在这些类型的接触中,采用整体块搜索和局部增量搜索方法确定接触对。
在Crash Analysis中,一般建议使用自动类型的接触,因为自动接触对于接触面的连续性、方向等基本没有限制,具有教强的适应能力。
6.2 Contact Sliding Friction: FS&FD(Card 2)
LS-DYNA中的摩擦采用Coulcomb摩擦列式与等效弹塑性弹簧模型。摩擦通过设置*Contact或*Part_Contact中非零的静(FS)、动(FD)系数来激活。
如静、动摩擦系数不同,则FD应小于FS,同时必须指定非零的衰减系数DC。对于伴有数值噪声的问题(如Crash Analysis),FS、FD通常设为相同的值,以避免额外噪声产生。为限制过大、不真实的摩擦力产生,通常设置不同类型的问题对摩擦系数的敏感性是不同的,有时可能存在很大的差异。在具体问题分析是,可以通过极限分析(设置FS和FD的上、下限)的方法确定摩擦的敏感性。
6.3 Penalty Scale Factors: SFS&SFM(Card 3)
罚因子(SFS、SFM)用来增大或减小接触刚度。在Soft=0、2时,真正的主、从罚因子是SFS、SFM分别与SLSFAC(*Control_Contact中定义)的乘积。
对于材料刚度相当、网格尺寸相差不大的两面间的接触问题,SFS、SFM、SLSFAC的缺省设置是可行的。但相接触的两个面的材料、网格相差很远时,对于Soft=0的接触算法可能存在问题,此时一个简单的办法就是设置Soft=1,而不必考虑(或试算)罚因子的选择。
6.4 Contact Thickness: SST&MST(Card 3)
SST、MST可以直接指定期望的“接触厚度”。如SST=MST=0(缺省值),则接触厚度等于*Section_Shell中定义的单元厚度。
有时通过设置非零的SST、MST值来消除“初始穿透”(尽量避免这样做)。 SST和MST一般不应小于0.6~0.7。
Contact Thickness Scaling(SFST&SFMT )同SST、MST作用相同。
6.5 Viscous Damping: VDC(Card 2)
粘性接触阻尼用来降低(高速)碰撞过程中接触力的高频振荡。对于存在软材料(如泡沫材料)的接触问题,VDC设为40~60(临界阻尼的40~60%),通常能提高模型的稳定性。对于金属间的碰撞接触问题,VDC一般可设为20。
6.6 Bucket-Sort Frequency: BSORT(Optional Card A, *Contact)&NSBCS(Card 2, *Control_Contact)
Bucket Sort是一种非常有效的接触搜索算法。如果考虑“厚度偏置”,则在所有的接触类型(自动、非自动接触)中,对于任一从节点均使用Bucket Sort方法搜索可能与之接触的主段。由于接触搜索是“接触模拟”中非常耗时的一个步骤,因此应尽量减少搜索的次数。BSORT用来指定两次搜索间的迭代时间步数,Bucket Sort的间隔一般为10~100(与具体的接触类型有关)。
对于不连续面间的接触、高速碰撞等问题,应增加搜索的次数,即减小BSORT(或BSBCS),但一般不应小于10。在这些问题中,如搜索间隔过大,一些从点就会在接触处理中被漏掉。但对于相对平滑的面间接触问题,可以适当增加BSORT或NSBCS。
6.7 Maximum Penetration: PENMAX (Optional card B, *Control Contact)& XPENE (Card 2, *Control_Contact)
为避免由于从节点穿透深度过大(罚力与穿透深度成正比)而引起的数值不稳定,当从节点穿透到一定的深度(Maximum Penetration),该节点从接触中自动释放(但依然参与其他的计算)。在对壳元的穿透中,为防止当从节点穿透壳的中面而引起的接触力方向的突然翻转,“壳厚偏置”的考虑也是非常必要的。
在非自动接触中,如SHLTHK=0,则缺省的最大穿透深度为1.0e20,也就是说不考虑从节点的释放。如SHLTHK=1 or 2,则参数XPENE确定节点释放准则:
Max Distance(Solids)=XPENE(default=4.0)*(thickness of the solid element),SHLTHK=1
Max Distance(Solids)=0.05*(thickness of the solid element),SHLTHK=2
Max Distance(Shells)=XPENE(default=4.0)*(thickness of the shell element),SHLTHK=1
Max Distance(Shells)=0.05*(minimum diagonal length),SHLTHK=2
在自动接触、单面接触中(Automatic_General除外),最大穿透深度由PENMAX(缺省值为0.4)确定:
Max Distance=PENMAX*(thickness of the solid)
Max Distance=PENMAX*(slave thickness+master thickness)
对于Automatic_General接触,PENMAX的缺省值为200(几乎不考虑节点的释放)。
对于控制最大穿透深度的参数一般不要改动(使用缺省设置)。如果节点穿透过大而需要释放,可以采用增大接触刚度、改变罚函数算法(SOFT),或增加接触厚度等方法来实现。
7 接触输出
在LS-DYNA中,最常用的接触输出文件是RCFORC,它包含主、从面每一个节点接触力(Global Cartesian Coordinate System)的ASCII文件。为输出RCFORC必须在k文件中包含*Database_FCFORC,同时必须激活接触控制中的参数SPR、MPR(Card 1)。注意:对于单面接触,RCFORC无效。此时要输出接触节点力,必须通过*Contact_Force_Transducer_Penalty定义力传感器(force transducers)。力传感器仅用来输出接触力,对数值分析结果毫无影响。
接触面的能量通过*Database_Sleout输出到ASCII文件SLEOUT中。该文件对于分析每个接触定义的可靠性是很有帮助的。
在某些情况下,有时需要接触界面的可视化(如应力云图等),这时必须通过以下控制输出二进制的接触界面文件:
1) *Database_Binary_Intfor;
2) 设置接触面的输出标志SPR、MPR;
3) 在执行计算任务时,包含选项“s=filename”。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删