首页/文章/ 详情

基于Abaqus用户子程序UEXTERNALDB调用外部文件数据

2月前浏览1948

Abaqus用户子程序UEXTERNALDB常用于在Abaqus/Standard求解器运行时,实现Abaqus与外部程序之间的通信,如交换数据等。本文将通过一个简单案例,介绍如何基于Abaqus用户子程序UEXTERNALDB实现对外部文件数据的调用。

计算案例


   

考虑线弹性断裂力学中的一个典型案例:一个中心裂纹板的裂纹面上承受有非均布载荷作用,这个非均布载荷通过一个分段三次样条函数来描述。在第i个分段上,该非均布载荷可表示为:

 

式中:αiβiγiδi为分段样条函数的系数,si-1si为第i个分段的区间下限和上限。

为了求解中心裂纹板在该非均布载荷作用下的应力分布,我们可以通过Abaqus用户子程序DLOAD或解析场来定义该非均布载荷。因此,本文建立了如图1所示的1/4对称有限元模型。图中,紫色箭头代表了DLOAD子程序的载荷定义域,也就是非均布载荷的作用区域。

1 中心裂纹板1/4对称有限元模型  

事实上,当这个非均布载荷非常简单时,我们可以直接在DLOAD用户子程序中定义该非均布载荷的表达式。然而,这种方法的缺点是,每当我们需要更改该非均布载荷时,则需要重新修改并编译子程序。并且,当需要修改的系数较多时,直接修改子程序将非常繁琐。因此,一种更为简便的方式是将非均布载荷的系数数据存储在外部文件中,以供DLOAD子程序调用。这样,当我们需要修改非均布载荷的系数时,只需要更改外部文件的数据即可,而无需修改并重新编译子程序。

为此,我们构建了一个如下所示的子程序。该子程序由DLOAD子程序和UEXTERNALDB子程序构成。UEXTERNALDB子程序用于读取定义非均布载荷系数的外部文件,并将数据传递给出DLOAD子程序。而DLOAD子程序则根据传递得到的系数实现非均布载荷的施加。

CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C              程序用于在裂纹面上施加非均布载荷
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
   
C-------------------------------------------------------------------------
C     读取存放非均布载荷分段样条曲线系数的外部文本文件
C-------------------------------------------------------------------------
     SUBROUTINE UEXTERNALDB(LOP,LRESTART,TIME,DTIME,KSTEP,KINC)
C    
     INCLUDE 'ABA_PARAM.INC'
C    
     DIMENSION TIME(2)
     DIMENSION INTV(1),REALV(1)
     CHARACTER*256 CHARV(1)
     CHARACTER*256 OUTDIR                                 !Abaqus结果文件输出目录
     CHARACTER*14  EDS_FILE_NAME                          !非均布载荷系数外部文件名
         
     INTEGER::I                                           !循环计数指标
     INTEGER::FILE_PT_INDEX=1                             !外部文件读取索引
     INTEGER,PARAMETER::EDS_COEFF_NUM=6                   !非均布载荷系数数量
     REAL::EDS_DATA_ALPHA(EDS_COEFF_NUM)                  !分段样条曲线系数Alpha
     REAL::EDS_DATA_BETA(EDS_COEFF_NUM)                   !分段样条曲线系数Beta
     REAL::EDS_DATA_GAMMA(EDS_COEFF_NUM)                  !分段样条曲线系数Gamma
     REAL::EDS_DATA_DELTA(EDS_COEFF_NUM)                  !分段样条曲线系数Delta
     REAL::EDS_DATA_LOWER_RANGE(EDS_COEFF_NUM)            !分段样条曲线区间下限
     REAL::EDS_DATA_UPPER_RANGE(EDS_COEFF_NUM)            !分段样条曲线区间上限
     COMMON /EDS_DATA/ EDS_DATA_ALPHA,                    !定义为全局变量
    &                  EDS_DATA_BETA,EDS_DATA_GAMMA,
    &                  EDS_DATA_DELTA,EDS_DATA_LOWER_RANGE,
    &                  EDS_DATA_UPPER_RANGE
     
C     读取Abaqus结果文件输出目录(工作目录)
     CALL GETOUTDIR(OUTDIR,LENOUTDIR)
     EDS_FILE_NAME="EDS_Coeff.txt"    
     
C     读取非均布载荷分段样条曲线系数
     IF(LOP.EQ.0)THEN
       OPEN(110,FILE=TRIM(OUTDIR)//"\"//EDS_FILE_NAME)
       DO WHILE(.NOT.EOF(110))
         READ(110,*) EDS_DATA_ALPHA(FILE_PT_INDEX),
    &                EDS_DATA_BETA(FILE_PT_INDEX),
    &                EDS_DATA_GAMMA(FILE_PT_INDEX),
    &                EDS_DATA_DELTA(FILE_PT_INDEX),
    &                EDS_DATA_LOWER_RANGE(FILE_PT_INDEX),
    &                EDS_DATA_UPPER_RANGE(FILE_PT_INDEX)
         FILE_PT_INDEX=FILE_PT_INDEX+1
       END DO
       CLOSE(110)
     END IF      
     
C     输出非均布载荷分段样条曲线系数至MSG文件  
     CALL STDB_ABQERR(1,"---------------------------",INTV,REALV,CHARV)
     CALL STDB_ABQERR(1,"EDS Coefficient Output     ",INTV,REALV,CHARV)
C     输出非均布载荷分段样条曲线系数Alpha
     CALL STDB_ABQERR(1,"---------------------------",INTV,REALV,CHARV)
     CALL STDB_ABQERR(1,"Coefficient Alpha Table:   ",INTV,REALV,CHARV)
     DO I=1,EDS_COEFF_NUM
       INTV(1)=I
       REALV(1)=EDS_DATA_ALPHA(I)
       CALL STDB_ABQERR(1,"Alpha(%I)=%R             ",INTV,REALV,CHARV)
     END DO
     CALL STDB_ABQERR(1,"---------------------------",INTV,REALV,CHARV)
C     输出非均布载荷分段样条曲线系数Beta
     CALL STDB_ABQERR(1,"Coefficient Beta Table:    ",INTV,REALV,CHARV)
     DO I=1,EDS_COEFF_NUM
       INTV(1)=I
       REALV(1)=EDS_DATA_BETA(I)
       CALL STDB_ABQERR(1,"Beta(%I)=%R              ",INTV,REALV,CHARV)
     END DO
     CALL STDB_ABQERR(1,"---------------------------",INTV,REALV,CHARV)
C     输出非均布载荷分段样条曲线系数Gamma
     CALL STDB_ABQERR(1,"Coefficient Gamma Table:   ",INTV,REALV,CHARV)
     DO I=1,EDS_COEFF_NUM
       INTV(1)=I
       REALV(1)=EDS_DATA_GAMMA(I)
       CALL STDB_ABQERR(1,"Gamma(%I)=%R             ",INTV,REALV,CHARV)
     END DO
     CALL STDB_ABQERR(1,"---------------------------",INTV,REALV,CHARV)
C     输出非均布载荷分段样条曲线系数Delta      
     CALL STDB_ABQERR(1,"Coefficient Delta Table:   ",INTV,REALV,CHARV)
     DO I=1,EDS_COEFF_NUM
       INTV(1)=I
       REALV(1)=EDS_DATA_DELTA(I)
       CALL STDB_ABQERR(1,"Delta(%I)=%R             ",INTV,REALV,CHARV)
     END DO
     CALL STDB_ABQERR(1,"---------------------------",INTV,REALV,CHARV)
C     输出非均布载荷分段样条曲线区间下限
     CALL STDB_ABQERR(1,"EDS Lower Limit Table:     ",INTV,REALV,CHARV)
     DO I=1,EDS_COEFF_NUM
       INTV(1)=I
       REALV(1)=EDS_DATA_LOWER_RANGE(I)
       CALL STDB_ABQERR(1,"Lower Limit(%I)=%R       ",INTV,REALV,CHARV)
     END DO
     CALL STDB_ABQERR(1,"---------------------------",INTV,REALV,CHARV)
C     输出非均布载荷分段样条曲线区间上限
     CALL STDB_ABQERR(1,"EDS Upper Limit Table:     ",INTV,REALV,CHARV)
     DO I=1,EDS_COEFF_NUM
       INTV(1)=I
       REALV(1)=EDS_DATA_UPPER_RANGE(I)
       CALL STDB_ABQERR(1,"Upper Limit(%I)=%R       ",INTV,REALV,CHARV)
     END DO
     CALL STDB_ABQERR(1,"---------------------------",INTV,REALV,CHARV)
         
     RETURN
     END


C-------------------------------------------------------------------------
C     施加非均布载荷分布至裂纹面
C-------------------------------------------------------------------------
     SUBROUTINE DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,
    &                 COORDS,JLTYP,SNAME)
C
     INCLUDE 'ABA_PARAM.INC'
C
     DIMENSION TIME(2),COORDS(3)
     CHARACTER*80 SNAME
     CHARACTER*256 CHARV(1)
     CHARACTER*256 OUTDIR
     INTEGER::I                                           !循环计数索引
     INTEGER::INTERVAL_INDEX                              !分段样条区间号
     
C     读取全局变量数据
     INTEGER,PARAMETER::EDS_COEFF_NUM=6                   !非均布载荷系数数量
     REAL::EDS_DATA_ALPHA(EDS_COEFF_NUM)                  !分段样条曲线系数Alpha
     REAL::EDS_DATA_BETA(EDS_COEFF_NUM)                   !分段样条曲线系数Beta
     REAL::EDS_DATA_GAMMA(EDS_COEFF_NUM)                  !分段样条曲线系数Gamma
     REAL::EDS_DATA_DELTA(EDS_COEFF_NUM)                  !分段样条曲线系数Delta
     REAL::EDS_DATA_LOWER_RANGE(EDS_COEFF_NUM)            !分段样条曲线区间下限
     REAL::EDS_DATA_UPPER_RANGE(EDS_COEFF_NUM)            !分段样条曲线区间上限
     COMMON /EDS_DATA/ EDS_DATA_ALPHA,                    !定义为全局变量
    &                  EDS_DATA_BETA,EDS_DATA_GAMMA,
    &                  EDS_DATA_DELTA,EDS_DATA_LOWER_RANGE,
    &                  EDS_DATA_UPPER_RANGE
     
C     判断当前材料点是否位于裂纹面
     IF ((COORDS(1).LT.EDS_DATA_LOWER_RANGE(1)).OR.
    &   (COORDS(1).GT.EDS_DATA_UPPER_RANGE(EDS_COEFF_NUM)))THEN
       CALL STDB_ABQERR(-3,"Loading region is beyond crack surface",
    &       INTV,REALV,CHARV)
     END IF
     
C     判断当前材料点所在分段样条区间号
     DO I=1,EDS_COEFF_NUM
       IF ((COORDS(1).GE.EDS_DATA_LOWER_RANGE(I)).AND.
    &     (COORDS(1).LE.EDS_DATA_UPPER_RANGE(I)))THEN
         INTERVAL_INDEX=I
         EXIT
       END IF        
     END DO
     
C     计算当前材料点上的非均布载荷值
     F=EDS_DATA_ALPHA(INTERVAL_INDEX)*COORDS(1)**3+
    &  EDS_DATA_BETA(INTERVAL_INDEX)*COORDS(1)**2+
    &  EDS_DATA_GAMMA(INTERVAL_INDEX)*COORDS(1)+
    &  EDS_DATA_DELTA(INTERVAL_INDEX)
     
   
     RETURN
     END

下面,本文将对该子程序的实现流程做简要介绍。在UEXTERNALDB子程序中,字符串变量EDS_FILE_NAME用于定义存放非均布载荷外部数据的文件名。EDS_COEFF_NUM变量为非均布载荷的分段数,为了保证数据能被正常读取,必须填写正确的分段数。EDS_DATA_ALPHA等变量则用于定义非均布载荷的系数和区间上、下限。这里,COMMON指令用于将这些变量定义为全局变量,使其能够被传递到DLOAD子程序中。然后,UEXTERNALDB子程序将根据指定的文件名找到对应的外部数据文件,并通过READ函数循环读取外部文件数据,并将其存放到相应的变量中。注意,这里我们使用了UEXTERNALDB子程序提供的LOP变量来判断读取数据文件的时机。这里,我们设置为当LOP变量取值为0时开始读取外部文件数据,这代表数据文件是在计算开始时被调用的。我们也可以通过判断LOP变量的取值来实现在计算过程的其他阶段来读取外部文件。事实上,这正是使用UEXTERNALDB子程序读取外部文件的优势。它允许我们可以控制在计算过程的特定阶段来读写外部文件数据。当然,我们也可以在DLOAD子程序中通过READ函数来读取外部文件。然而,由于DLOAD子程序将在每次进入积分点时均被调用一次,这意味在每个积分点上,都将执行一次文件读写,这将严重降低计算效率。虽然我们可以通过指定增量步或分析步号来判断外部文件的读写时机,但这并不是一种较好的解决方法。在DLOAD子程序中,我们将同样通过COMMON指令来接收全局变量的取值,并基于外部文件定义的数据来实现非均布载荷的施加,这里不再赘述。需要该案例完整计算文件的读者可在公 众号回复ARB_CFT获取。

UEXTERNALDB子程序简介


   

用户子程序UEXTERNALDB:

l  可以在每次分析的开始时刻、每个增量步的开始时刻、每个增量步的结束时刻以及每次分析的结束时刻被分别调用一次(此外,也会在重启动分析的开始时刻被调用一次);

l  可以用于与其他软件或Abaqus/Standard中的其他子程序进行通信;

l  可以用于在分析的开始时刻打开用于其他用户子程序的外部文件,或者在分析的结束时刻关闭这些外部文件;

l  可以用于在每个增量步的开始时刻计算或读取历程信息。这些信息能够被写入用户自定义COMMON块或外部文件,以便在分析中被其他子程序调用;

l  还可以用于将用户计算的历程信息的当前值写入到外部文件。


   

   

   

子程序接口


   

   

   

需要定义的变量

用户子程序UEXTERNALDB在被调用后无需用户更改子程序中变量的取值。


   

   

   

提供参考信息的变量

当用户子程序UEXTERNALDB被调用后,以下变量的取值可以被用户读取,以便为需要执行的操作提供参考信息。

LOP

LOP=0表明子程序正在分析的开始时刻被调用。

LOP=1表明子程序正在当前分析增量步的开始时刻被调用。如果在当前分析增量步下计算无法收敛,需要更小的时间增量,则该子程序会在分析增量步的开始时刻被多次调用。

LOP=2表明子程序正在当前分析增量步的结束时刻被调用。此时,所有在重启动分析中用户需要用到信息必须被写入到外部文件。

LOP=3表明子程序正在分析的结束时刻被调用。

LOP=4表明子程序正在重启动分析的开始时刻被调用。此时,所有必须的外部文件都应该被打开并合理放置,所有重启动分析用到信息也应该从外部文件中被读入。

LOP=5表明子程序正在当前分析步的开始时刻被调用。变量KSTEP中包含了当前的分析步号。

LOP=6表明子程序正在当前分析步的结束时刻被调用。变量KSTEP中包含了当前的分析步号。

TIME(1)

当前分析步时间

TIME(2)

总的分析步时间

DTIME

时间增量

KSTEP

当前分析步号。如果LOP=4,则KSTEP为重启动分析步号。

KINC

当前增量步号。如果LOP=4,则KINC为重启动增量步号。


 

 

 

 

 

 

 



来源:FEM and FEA
ACTAbaqus断裂其他软件通信UM裂纹材料控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-09-01
最近编辑:2月前
追逐繁星的Mono
硕士 签名征集中
获赞 47粉丝 92文章 66课程 0
点赞
收藏
作者推荐

VDI 2230规范学习笔记3: 同心夹紧螺栓连接柔度的有限元计算1

引言在上一篇文章中,我们介绍了在VDI 2230规范中,如何基于变形锥理论确定同心夹紧螺栓连接的螺栓柔度δS和被夹体柔度δP。对于实际工程构件中的螺栓连接,被夹体的几何形状往往比较复杂,此时基于变形锥理论计算被夹体柔度时,对于一些关键参数的选取存在一定难度,这使得通过解析法往往难以获得准确的螺栓连接柔度。为此,本文将探究如何通过有限元法来确定螺栓连接柔度,并基于一个简单的螺栓连接示例,分别采用VDI 2230和有限元法计算螺栓连接柔度,通过对比结果来验证计算方法的有效性。基于弹性应变能的螺栓连接柔度计算方法在介绍螺栓连接柔度计算方法之前,我们首先回顾一下初始预紧状态下同心夹紧螺栓连接的连接图,如图1所示。 图1 初始预紧状态下同心夹紧螺栓连接的连接图假定螺栓的装配预紧力为FM,在该预紧力下,螺栓产生的变形量为fSM,被夹体产生的变形量为fPM。假设螺栓在加载过程中始终处于弹性状态,则载荷-变形曲线成线性增长。我们将螺栓和被夹体的载荷-变形曲线放置在一起,就构成了如上图所示的连接图。如果我们将螺栓和被夹体看成一个弹簧,则图中蓝色 区域的面积代表了弹簧在预紧力作用下储存的能量,而绿色 区域的面积则代表了被夹体在预紧力作用下的能量。对于连续介质构成的弹性体而言,则代表了物体由于产生弹性变形而存储的弹性应变能。显然,如果我们能够建立弹性应变能与柔度之间的联系,就可以通过弹性体的能量变化来间接计算其柔度。由图1可知,螺栓刚度kS和被夹体刚度kP可分别定义为: 根据图1中的面积,可得螺栓和被夹体的弹性应变能US和UP可分别定义为: 因此,螺栓柔度δS和被夹体柔度δP可通过弹性应变能和预紧力表示为: 从上式中可以看到,对于一个处于初始预紧状态的螺栓连接,如果我们知道其螺栓预紧力FM以及螺栓预紧力作用下螺栓和被夹体产生的弹性应变能,即可确定螺栓和被夹体的柔度。下面,本文通过一个简单的螺栓连接示例,介绍基于弹性应变能计算螺栓连接柔度的具体实现流程。同心夹紧螺栓连接计算示例 计算示例简介 考虑如图2所示的一个同心夹紧螺栓连接,两块被夹体通过M18的螺栓和螺母连接在一起。已知上、下被夹体的长和宽均为125 mm,厚度t均为30 mm,被夹体中心开有通孔,通孔直径dh为19 mm。 图2 同心夹紧螺栓连接示意图螺栓规格依照标准GB/T 5782-2000 六角头螺栓 A级和B级选取,其尺寸参数如表1所示。表1 M18螺栓尺寸参数螺母规格依照GBT 6170-2015 1型六角螺母选取,其尺寸参数如表2所示。表2 M18螺母尺寸参数表1和表2中符号含义参见相关标准。 基于VDI 2230规范的螺栓连接柔度计算 下面采用VDI 2230提供的方法分别计算被夹体和螺栓的柔度。01螺栓柔度计算 在计算螺栓柔度时,可将螺栓分为夹紧长度以内和夹紧长度以外的区域。在夹紧长度lK以内的区域,又可以分为圆柱螺杆长度l1和螺纹未旋合部分长度lGew。夹紧长度以外的区域,属于螺栓在受载过程中的额外变形区域,包括代表螺栓头变形的替代延伸长度lSK,以及代表螺纹连接区域变形的等效长度lGM,如图2所示。对于无螺纹的螺杆区域,已知其长度l1=lg=38 mm,取钢制螺栓的弹性模量ES为205 GPa,则其柔度δ1可表示为: 对于螺纹的未旋合部分,已知其长度lGew可表示为 则其柔度δGew可表示为: 式中:Ad3为螺栓小径横截面面积,可表示为: 式中:d3为螺栓小径,可表示为: 代入可得螺栓螺纹未旋合部分的柔度δGew为: 对于六角头螺栓,已知其螺栓头部替代延伸长度lSK可定义为: 因此螺栓头的柔度δSK可表示为: 式中:AN为螺栓公称直径对应的横截面积,即有: 代入可得: 对于螺栓螺纹连接部位的柔度δGM,它由螺栓旋合螺纹的柔度δG和螺母的柔度δM共同构成。已知螺栓旋合螺纹的柔度δG可表示为: 式中:lG为螺纹旋合部分的替代延伸长度,定义为: 可以看到,并非螺纹旋合的所有部分均对螺纹连接部位的柔度有贡献。将其代入柔度计算公式可得: 而螺母的柔度δM可表示为: 式中:EM为螺母的弹性模量,与螺栓的弹性模量相同。lM为螺母的替代延伸长度,对于通孔螺栓连接(TBJ),可定义为: 代入可计算得到螺母的柔度δM为: 因此,螺栓的柔度δS可视为所有区域的柔度的总和,即有: 02被夹体柔度计算 对于本文考虑的计算示例,由于被夹体的长度和宽度远大于螺栓头的支承面直径dw,因此变形锥可充分延伸而不被截断(即满足DA≥DA,Gr),故可以将被夹体的变形区域简化为单个变形锥。在基于变形锥理论计算被夹体柔度时,需要确定变形锥的角度。变形锥的角度与周围材料的支承效果和被夹体的厚度均有关系。对于通孔螺栓(TBJ),VDI 2230给出了标准螺栓连接的变形锥角度: 式中: 式中:DʹA为基体替代外径,在本例中可取为平板的宽度,即有DʹA=125 mm。代入可得变形锥角为: 已知螺栓孔直径dh为19 mm,代入可得被夹体的柔度为: 基于弹性应变能的螺栓连接柔度计算 基于图2所示的螺栓连接尺寸,本文建立了考虑螺纹的螺栓连接有限元模型,如图3所示。考虑螺纹的螺栓模型属于VDI 2230 Part II中所定义的IV级螺栓模型,可以充分考虑螺纹连接对螺栓和被夹体柔度的影响。关于螺纹网格的建模方法,可以参见《一种螺栓连接结构有限元模型的精细建模方法》。 (a)整体有限元模型(b)螺纹连接细节图3 考虑螺纹的螺栓连接有限元模型计算时,需分别在螺栓和螺母的螺纹,螺栓与上被夹体,螺母与下被夹体,上被夹体和下被夹体的分界面之间建立面-面接触对,以考虑螺栓预紧过程中的接触行为,并取各个接触对之间的摩擦系数均为0.1。计算中取螺栓装配预紧力FM为100 kN,预紧力通过有限元软件Abaqus中的Bolt Load进行施加,预紧力施加位置设定在螺杆中部。同时,为避免螺栓连接在预紧过程中产生刚体 位移,出于计算收敛性考虑,将被夹体的边角部位的全部阶段与接地弹簧连接,如图4所示,并取接地弹簧的三向刚度为10 N·mm。由于弹簧刚度很小,因此不会对被夹体的变形行为产生影响,但可以极大地提高计算收敛性。 图4 接地弹簧设置在有限元软件Abaqus,部件的弹性应变能可以通过时间历程变量ALLSE输出。为了分别输出被夹体的螺栓的弹性应变能,可以将上、下被夹体和螺栓分别定义单元集,然后为单元集指定时间历程变量ALLSE输出,如图5所示。图5 单元集 合级别的时间历程变量ALLSE输出通过有限元计算,图6给出了螺栓连接的轴向压缩应力云图。从图中可以看到,被夹体和螺母在预紧过程中均处于压缩状态。被夹体的压缩变形区域与VDI 2230假设的变形锥存在很大区别,这同样说明变形锥角实际上是基于被夹体的柔度反算出来的,而非直接通过应力云图测量得到的。图6 螺栓连接轴向压缩应力云图图7给出了螺栓预紧过程中,各个部件的弹性应变能变化。 图7 螺栓连接部件弹性应变变化可以看到,部件的弹性应变能随预紧力的增大成非线性变化,这是因为预紧力与弹性应变能成二次关系。由有限元计算可以得到,当预紧力FM为100 kN时,螺栓和螺母的弹性应变能分别为8482.76和863.505 N·mm,两块被夹体的弹性应变能分别为1032.54和1029.78 N·mm。由于螺母对于螺栓的弹性变形也存在贡献,因此在使用弹性应变能法时,将螺母的弹性应变能也归入到螺栓的弹性应变能中,则有: 由此可计算得到螺栓和被夹体的柔度分别为: 通过对比可以发现,采用弹性应变能法计算时,相比于解析法,螺栓柔度的相对误差为1.77%,被夹体柔度的相对误差为9.31%。 模型简化对于螺栓连接柔度计算的影响 建立带有螺纹的螺栓连接模型非常复杂,并且对于含有多螺栓连接的复杂结构,采用带有螺纹的精细螺栓连接模型也是不切实际的。因此,在实际计算时,更多时候采用的是不带螺纹的简化螺栓模型进行建模。为此,本文采用VDI 2230 Part II推荐的III级螺栓模型进行建模,并研究模型简化对于螺栓连接柔度计算的影响。在简化螺栓模型中,螺栓螺纹采用直径为小径d3的圆柱体代替,螺母的螺纹部位也需更改为对应的尺寸。此时,螺栓与螺母之间的螺纹连接采用绑定约束模拟。基于III级螺栓模型建立的简化螺栓连接有限元模型如图8所示。由于无需考虑螺纹,因此简化螺栓模型的计算规模要远小于考虑螺纹的精细模型。 图8 简化螺栓连接有限元模型通过简化螺栓模型进行计算可以得到,当预紧力FM为100 kN时,螺栓和被夹体的弹性应变能分别为: 由此可以计算得到螺栓和被夹体的柔度分别为: 相比于VDI 2230给出的解析解,采用简化螺栓模型进行计算时,螺栓柔度的相对误差为8.13%,被夹体柔度的相对误差为8.57%。图9给出了采用VDI 2230规范以及基于弹性应变能的有限元法计算得到的连接图对比。 图9 VDI 2230规范及有限元计算的螺栓连接图对比从图中可以看到,通过考虑螺纹的IV级螺栓模型进行有限元计算得到的螺栓连接图与采用VDI 2230规范计算得到的螺栓连接图较为吻合。而采用III级螺栓模型进行计算时得到的连接图存在一定偏差。通过前面的误差分析可以发现,这是由于螺栓模型简化导致螺栓柔度计算存在较大偏差所造成的。这一点从上图中螺栓载荷-位移曲线的斜率也可以体现。而螺栓模型简化对于被夹体柔度的计算影响很小。由于螺栓规格是确定的,采用VDI 2230规范计算螺栓柔度相对是容易的。因此,在实际计算时,可以采用VDI 2230规范与有限元法结合的方式,即通过III级螺栓模型进行建模来计算被夹体柔度,而采用VDI 2230规范来计算螺栓柔度。 结论 (1)本文采用有限元法,基于弹性应变能进行螺栓连接柔度计算。当采用考虑螺栓的IV级螺栓模型进行螺栓连接有限元建模时,由有限元法计算得到的螺栓连接柔度与VDI 2230规范吻合良好。(2)当采用不考虑螺纹的III级螺栓模型进行有限元计算时,螺栓简化对于螺栓柔度的计算精度有较大影响,但对于被夹体柔度的计算精度影响很小。在实际计算时,可采用VDI 2230规范计算螺栓柔度,采用III级螺栓模型计算被夹体柔度。 来源:FEM and FEA

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈