ABAQUS子程序技術文檔-UEL

ABAQUS子程序技術文檔

我們將有限元軟件(以ABAQUS爲例)分割來看,分爲:前處理,單元部分,求解器。在這三個模塊當中,每個主流商業軟件手冊中都會註明各個單元的理論採用了哪種理論公式,但是隻是提一下用什麼方法修正,很多沒有介紹具體實現的公式。這也會讓許多使用人員感覺在用黑盒子,對於分析問題的本質會造成很大的阻礙。下面我們主要講解UEL用戶子程序的使用方法。

UEL用戶子程序開發步驟

用戶子程序主要是用來實現特定的材料本構模型和單元算法的有效接口,便於商用軟件和求解器之間的交互迭代。

編程語言主要採用Fortran,當然也可以修改子程序接口,使用Matlab或者C++等語言進行實現。

1. UEL的關鍵輸入輸出參數

|關鍵參數名稱| 類型 |描述|
RHS輸出 第一列是殘餘力向量;第二列是節點外部載荷增量|
AMATRX 輸出 剛度/質量/阻尼矩陣,由LFLAGS決定
SVARS 輸入/輸出 狀態相關變量,大小爲NSVARS
ENERGY 輸入/輸出 單元能量
NDOFEL 輸入 單元自由度數量
NRHS 輸入 載荷向量個數RHS的列數,非線性算法一般爲1
NSVARS 輸入 單元狀態變量的數量
PROPS 輸入 用戶定義的單元屬性數據,浮點數組
NPROPS 輸入 用戶定義的單元屬性數據的數量
COORDS 輸入 單元節點的座標
MCRD 輸入 任意節點用戶所需定義的最大座標數的最大值
NNODE 輸入 單元節點數
U, DU 輸入 當前增量步單元節點的位移,位移增量
V 輸入 相關變量的時間變化率
A 輸入 相關變量的加速度
JTYPE 輸入 定義單元類型的整型值
TIME 輸入 當前分析步時間和時間總量
DTIME 輸入 時間增量
KSTEP 輸入 當前分析步的數
KINC 輸入 當前增量步數
JELEM 輸入 用戶指派的單元號
PARAMS 輸入 和求解過程相關的參數
NDLOAD 輸入 作用在當前單元上的熱力學力
JDLTYP 輸入 用來定義單元分佈載荷類型的整型數組
ADLMAG 輸入 當前增量步結束時分佈載荷相關數組
PREDEF 輸入 預定義場變量數組
NPREDF 輸入 預定義場變量的數目
LFLAGS 輸入 當前求解步的標識數組
MLVARX 輸入 當使用多個位移或右手邊向量時的量綱參數
DDLMAG 輸入 關於分佈載荷大小的增量
MDLOAD 輸入 單元上熱力學力的總數量
PNEWDT 輸入 建議的新時間增量與當前使用的時間增量之比
JPROPS 輸入 單元中的整型屬性值
NJPROP 輸入 整型屬性值的數量
PERIOD 輸入 當前分析步的時間段

2. 基於Fortran的UEL開發步驟

  1. 定義xxx.inp文件
    文本編輯器推薦使用Sublime Text3
    在inp中定義必要的單元參數,網格信息,分析步,輸出變量等信息
  2. 編寫
    文本編輯器推薦使用微軟推出的VS code
    子程序後綴爲.for格式
  3. 編譯
    採用ABAQUS6.14+Intel Fortran2013+Visual Studio2013的集成開發環境
    其餘版本也可匹配集成
    在環境配置完成之後,打開ABAQUS command,輸入命令Abaqus make Library=XXX.for,即開始編譯,編譯過程中的警告和錯誤都會打印在命令提示框內。(這一步爲非必要步驟)
  4. 運行
    一種方式是通過command輸入命令行,另一種方式則是GUI方式在創建job時進行選擇。
  5. 調試(debug)
    採用在程序中加入特定程序段的方式

3. 小結
UEL開發需要打下堅實的力學基礎,熟悉有限元分析過程,掌握一定的算法實現和編程能力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章