在工程实际应用中,我们经常会遇到移动载荷的例子,如车辙实验,汽车过桥等。今天就介绍一下用abaqus子程序Dload实现移动载荷。

Dolad:隐式求解算法

Vdload:显示求解算法

(1)Dolad简介

Dload 函数体和各参数物理意义如下:SUBROUTINEDLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS,JLTYP,SNAME)

F

需要自己定义的载荷

KSTEP

载荷步数(如第一个载荷步、第二个载荷步)

KINC

增量步数

TIME

Time(1)载荷步时间、Time(2)总时间

NOEL

单元编号

NPT

单元积分点编号

LAYER、KSPT

和LAYER SOILD相关

COORDS

积分点坐标

JLTYP

载荷类型

SNAME

名称

(2)案例

如图所示,物体表面作用一个压力载荷P(t),同事这个载荷在面内以一定速度V移动

Abaqus中施加移动车辆荷载(待整理)-编程知识网

Dload.for子程序源码

SUBROUTINEDLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,

1 COORDS,JLTYP,SNAME)

INCLUDE ‘ABA_PARAM.INC’

DIMENSION TIME(2), COORDS (3)

CHARACTER*80 SNAME

PARAMETER(P0=5e4,Dm0=250,Dmiu=0.002,speed=80/3.6,DL=6.0,width=0.2)

Pi=3.1415926535897932384626433832795

omega=2.0*Pi*speed/DL !角速度 speed为移动速度

Disp=TIME(1)*speed !移动距离

xMin=Disp+0.002 !0.002 设置误差范围,积分点坐标和节点坐标不一样

xMax=Disp+width-0.002 ! width 加载宽度

IF(COORDS(1).ge.xMin.and.COORDS(1).lt.xMax)THEN !判断坐标位置

F=P0+Dm0*Dmiu*omega*omega*sin(omega*TIME(1)) !定义载荷大小

ELSE

F=0

END IF

RETURN

END

(3)Abaqus操作

1、用general static 分析步设置成fixed 增量步这样可以等间隔的时间输出结果

Abaqus中施加移动车辆荷载(待整理)-编程知识网

2、定义载荷load的时候选pressure 在distribution中选user-defined

Abaqus中施加移动车辆荷载(待整理)-编程知识网

3、建立job 在general选项中 添加Dload.for 文件目录

Abaqus中施加移动车辆荷载(待整理)-编程知识网

4、结果

Abaqus中施加移动车辆荷载(待整理)-编程知识网

(5)总结

Abaqus的Dload子程序让用户可以自定义各种复杂的非均布载荷,比如和坐标或者时间相关的载荷,其实只要知道了Dload各参数的意思,用起来也比较得心应手。

DLOAD子程序说明

———————————————————————————————————— 

Use this subroutine to define nonuniform, distributed
mechanical loads (pressures and body forces).

使用此子程序定义非均匀的分布式机械负载(压力和体力)。

当负载是时间和/或位置的复杂函数时,通常使用用户子程序DLOAD。

通常可以用* AMPLITUDE选项建模简单的时间函数。

子程序也可以用来定义一个随元素号和/或积分点数而变化的负载。

———————————————————————————————————— 

一般用法,在INP文件中定义载荷施加的位置(关键字),求解时让其与子DLOAD子程序关联。

当* DLOAD或* DSLOAD选项包含不均匀的加载类型标签时,子程序被调用。

*DLOAD
1, P4NU

(Apply nonuniform DLOAD to face 4 of element 1,)

“ABAQUS /Standard”手册中给出了可用于任何特定单元的非均匀分布载荷类型列表。

DLOAD子程序接口

Abaqus中施加移动车辆荷载(待整理)-编程知识网

      SUBROUTINE DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,
     1 COORDS,JLTYP,SNAME)
C
      INCLUDE 'ABA_PARAM.INC'
C
      DIMENSION TIME(2), COORDS (3)
      CHARACTER*80 SNAME

      user coding to define F


      RETURN
      END

Abaqus中施加移动车辆荷载(待整理)-编程知识网

子程序中的各个参数的意义可以参考ABAQUS帮助文档

F——分布负载的大小

KSTEP——分析步

TIME(1)——步进时间的当前值或负载比例因子的当前值

TIME(2)——当前总时间值

NOEL——单元编号

NPT——根据负载类型,在元素或元素表面加载积分点数。

LAYER——层数

KSPT——当前图层中的Section point

COORDS——积分点坐标(数组)

JLTYP——DLOAD调用的载荷类型的标识

 SNAME——表面加载定义的表面名称(JLTYP = 0)。 对于身体力或基于单元的表面载荷,表面名称以空白形式传递

供参考的子程序

———————————————————————————————————— 

Abaqus中施加移动车辆荷载(待整理)-编程知识网

      SUBROUTINE DLOAD(F, KSTEP, KINC, TIME ,NOEL, NPT,
     1 LAYER, KSPT, COORDS, JLTYP, SNAME)
C
C EXPONENTIAL PRESSURE LOAD
C
      INCLUDE ‘ABA_PARAM.INC’
C
      DIMENSION COORDS(3),TIME(2)
      CHARACTER*80 SNAME
      DATA TEN,ONE,CONST /10.,1.,-23.03/
      F=TEN*(ONE-(EXP(CONST*TIME(1))))
      IF(NPT.EQ.1) WRITE(6,*) ‘ LOAD APPLIED’,F,’AT TIME=’,TIME(1)
      RETURN
      END

Abaqus中施加移动车辆荷载(待整理)-编程知识网

 ———————————————————————————————————— 

 (

用户只能定义变量F 这是分布式负载的大小,单位取决于分布式负载的类型:

FL–1 对于沿一维(梁)单元的线载荷,

FL–2 表面负荷(例如压力)和

FL–3 体力(例如重力,向心力,加速度)。