ABAQUS DISP二次開發(一)


1. 簡介

  • 定義復雜位移條件的子程序,可用于定義例如隨時間和空間(坐標)同時變化的位移,隨節點編號變化的位移等。

  • 用于定義使用了User-defined的邊界條件或連接運動的大小;

  • 用戶子程序定義的邊界條件或連接運動定義中定義的所有自由度均會調用該子程序;

2. 子程序接口

      SUBROUTINE  DISP(U,KSTEP,KINC,TIME,NODE,NOEL,JDOF,COORDS)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION U(3),TIME(3),COORDS(3)
C
user coding to define U
RETURN
END

說明:
子程序在執行的過程中,遍歷邊界條件上的每個節點,遍歷每個節點上的自由度約束,每個約束均執行一次子程序。變量NODE用于辨識節點、JDOF用于辨識自由度編號。
如果在邊界條件定義時,輸入了預定義值,那個程序執行過程中會將該值傳入子程序。如果子程序不修改該值,那么abaqus會按照默認方式處理該約束條件。如果沒有輸入預定義值,那么子程序必須對其賦值,否則報錯或者賦0值。

ABAQUS DISP二次開發(一)的圖1

3. 變量

需要被定義的變量:

U(1)

  • 需要定義的荷載變量,包括位移、孔隙壓力、溫度等。U(1)被傳入時可以是預先在荷載設置中定義好的值,也可以是默認值(一般情況下默認為0)。如果荷載定義中多個變量使用了User-defined,那么程序會按照自由度的編號順序,編列每一個自由度,每一次遍歷都執行一次子程序,U(1)即代表該自由度。

  • 如果程序需要規定變量的偏微分,例如在動態分析中的速度、加速度等,du/dt必須在U(2)中定義,d2u/dt2在U(3)中定義。執行過程與U(1)類似。

被傳入的變量

名稱 描述
KSTEP 分析步編號
KINC 增量步編號
TIME(1) 當前分析步值中的時間
TIME(2) 當前總的分析時間
TIME(3) 當前時間增量
NODE 節點編號
如果子程序被用于描述連接運動或者接觸運動,該變量不可用
NOEL 單元編號
如果子程序被用于描述邊界條件,該變量不可用
JDOF 當前傳入變量的自由度編號
COORDS 荷載點當前坐標;如果考慮幾何非線性,該值是上一個增量步結束時的值;否則是原始的節點坐標值;如果子程序被用于描述連接運動或接觸運動,該變量不可用

4. 實例

建立一個長為10,橫截面為矩形的梁,截面高寬均為0.1,材料屬性為線彈性,E=2.06e5,v=0.3。梁兩端均施加全約束,梁體本身采用DISP定義約束。劃分100個單元。模型如下圖所示:
ABAQUS DISP二次開發(一)的圖2

使用如下代碼實現,一個三角波傳輸的過程。

      SUBROUTINE  DISP(U,KSTEP,KINC,TIME,NODE,NOEL,JDOF,COORDS)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION U(3),TIME(3),COORDS(3)
Real*8 xx
C
xx = KINC * 0.07
IF (COORDS(1)>=xx) then
U(1) = 0
else if ( COORDS(1)<xx .AND. COORDS(1)>= xx-1 ) then
U(1) = 0.5 * (xx-COORDS(1))
else if (COORDS(1)< xx-1 .and. COORDS(1)>=xx-2) then
U(1) = 0.5 * (COORDS(1)-xx+2)
else
U(1) = 0.0
end if
if (NODE == 1 .or. NODE == 101) then
U(1) = 0
end if
RETURN
END

計算結果如下:

ABAQUS DISP二次開發(一)的圖3

ABAQUS DISP二次開發(一)的圖4

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

28
22
29