ABAQUS DISP二次開發(一)
瀏覽:4620 評論:22 收藏:29
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值。
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個單元。模型如下圖所示:
使用如下代碼實現,一個三角波傳輸的過程。
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
計算結果如下:
技術鄰APP
工程師必備
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP
28
22
29




















