在工程實際應用中,我們經常會遇到移動載荷的例子,如車轍實驗,汽車過橋等。今天就介紹一下用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移動
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 增量步這樣可以等間隔的時間輸出結果
2、定義載荷load的時候選pressure 在distribution中選user-defined
3、建立job 在general選項中 添加Dload.for 文件目錄
4、結果
(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子程序接口
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幫助文檔
F——分布負載的大小
KSTEP——分析步
TIME(1)——步進時間的當前值或負載比例因子的當前值
TIME(2)——當前總時間值
NOEL——單元編號
NPT——根據負載類型,在元素或元素表面加載積分點數。
LAYER——層數
KSPT——當前圖層中的Section point
COORDS——積分點坐標(數組)
JLTYP——DLOAD調用的載荷類型的標識
SNAME——表面加載定義的表面名稱(JLTYP = 0)。 對於身體力或基於單元的表面載荷,表面名稱以空白形式傳遞
供參考的子程序
————————————————————————————————————
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
————————————————————————————————————
(
用戶只能定義變量F 這是分布式負載的大小,單位取決於分布式負載的類型:
FL–1 對於沿一維(梁)單元的線載荷,
FL–2 表面負荷(例如壓力)和
FL–3 體力(例如重力,向心力,加速度)。
)