在 ANSYS/Ls-dyna 中實現物體按指定軌跡運動
作者:卿宇
1、 準備工作
1.1 確定施載入荷對象 確定欲施加位移載荷的實體,獲取實體的 part ID; 如果是多個實體,可以通過定義一個part 集,這樣在添載入荷時可以節省不少時間。如果位移載荷是作用在多個節點上,必須定義節點集,關於節點集的定義可以用命令 cm,具體請查閱 help。
1.2 確定軌跡。 首先分析你的運動類型,是一維運動問題,或者是二維平面運動問題,抑或三維空間運動問題。其次,獲取物體在不同時間段的位移。
第三,約束多餘的自由度。
一方面保證物體確實按設定軌跡運動,防止由於碰撞等改變物體的軌跡;另一方面節省存儲空間,提高求解速度。
1.3 適當簡化問題 如果對物體的變形、應力等不關心,可以將該物體定義為剛體,提高求解速度。定義剛體可以用命令 edmp,rigid,,具體用法請查閱 help。2、 定義數組 如果是一維運動問題,比如沿 x 軸運動,可以通過兩組參數來定義運動,並可以約束該物體在其他方向的自由度(包括轉動)。或者不約束其他方向的自由度,通過數組定義物體在其他方向的位移和轉動均為 0,即不隨時間變化。這個方法相比之下比約束自由度麻煩些。而且我認為比上一種方法的計算量要大,會導致計算速度變慢。
我們採用約束自由度,通過定義數組來實現物體的運動。兩個數組分別為時間數組和 x 軸方向的位移數組。 定義數組可以用如下命令。 *dim, time, ,LengthOfTime *dim, Xdisp, ,LengthOfXdisp Time(1)=0,1,2,3 Xdisp(1)=5,10,-5,2 其中 time 和 Xdisp 是數組名,可以根據各自喜好設定,最好是能表示數組的含義; LenthOfTime 和 LengthOfXdisp 分別是t ime 和 Xdisp 數組的長度,兩者必須相等,也就是說時間和位移是一一對應的關係。位移為負值表示物體運動方向與坐標軸方向相反。 如果是二維運動問題,需要再定義一個數組,即隨時間變化沿 Y 軸方向運動的軌跡。同樣可以通過與上面類似的命令來實現。時間數組可以與定義 x 軸運動時一致,也可以另外再定義。若採用相同的時間數組,y 軸方向的位移數組的長度就必須和 x 軸方向的一致。若兩者長度不一致,可以另外再定義一個時間數組。這裡採用與 x 軸運動一致的時間數組。
*dim,Ydisp ,LengthOfYdisp Ydisp(1)=0,8,-4,0 對於三維問題依次類推。 需要說明的幾點: 1 如果數組比較大,可以寫在另外的 txt 文件中,在定義數組名之後添載入荷曲線之前通過 /input,命令讀入 ansys 中就可以了。需要注意的是,定義的數組名稱和 txt 文件中的數組名稱必須一一對應; 2 如果位移變化比較複雜,比如說不斷來回方向運動,那麼時間數組的步長要儘可能的小。因為 lsdyna 會根據數組進行插值,如果時間數組步長較大,插值出來的位移數組不一定完全是你定義的載荷曲線,會有些偏差,可能會影響到物體運動跡。在定義其他曲線時也是一樣的道理,比如定義應力-應變關係曲線時,儘可能的使數組的步長小。
3、 添載入荷曲線 載荷曲線可以添加,也可以不添加。建議不添加,因為如果載荷曲線比較多,很容易混淆不同載荷曲線的意義,導致載荷添加錯誤。如果要添加,可以通過 Edcurve 命令實現,然後在施載入荷時指定載荷曲線就可以了。Edcurve 命令的具體用法請查閱 help 手冊。這裡不添載入荷曲線,載荷通過數組直接定義。4、 施載入荷
施載入荷是通過 edload 來實現。載荷類型分為兩大類:
(1) 一種是將載荷施加在剛體上。若前面定義了該物體為剛體,可以通過 EDLOAD, ADD, RBUX, , compont, TIME, XDISP 來實現。
其中:
RBUX 為剛體沿 x 軸方向的位移,類似的還有沿 y 軸方向的位移 RBUY,沿 z 軸方向的位移 RBUZ。
後面一項為載荷曲線的名稱。若定義了載荷曲線,就將相應載荷曲線的 id 填上,後面的數組就不需要填寫了。因為我們前面沒有定義載荷曲線,所以載荷曲線 id 空著不填,依次在後面填上時間數組名稱和 x 軸方向位移數組名稱。
Componnt 為欲施載入荷的 part 的 id 或者是節點集的名稱。 對於 y 軸方向和 z 軸方向的位移可以採取同樣處理方式,只需將 XDISP 替換為所定義的 y 軸或者 z 軸方向位移的數組名稱即可。 (2) 另一種是將載荷施加在非剛體上。操作基本類似。比如定義物體沿x 方向的位移,只需將RBUX 改為UX 即可。其他的依此類推。
5、 其他 在 lsdyna 中位移條件是當作載荷來處理的。對於施加其他載荷,比如轉動、速度、加速度、力和轉矩等也可以用類似的辦法添加,對於剛體也是用同樣的方法處理。順便提一句,在 abaqus/explicit 中,同樣可以實現物體按指定軌跡運動,不過在 abaqus/explicit 中位移條件是當邊界條件處理的。之後陸續更一些 ansys相關的帖子
查看原文推薦閱讀: