【二次開發】VUAMP子程序_網球隨機發射模擬

【二次開發】VUAMP子程序_網球隨機發射模擬的圖1

還記得上次我們撿了幾個網球,今天用一個網球發射器來發射它們。


網球發射器建模

【二次開發】VUAMP子程序_網球隨機發射模擬的圖2

01

這個網球發射器可以左右、上下搖擺,以控制發球的側偏和俯仰角度,兩個滾輪通過轉動將網球加速,拋射出去。


在Abaqus中,這些機構的運動可以通過Connector來建模。

【二次開發】VUAMP子程序_網球隨機發射模擬的圖3

側偏和俯仰角度


儲球桶內的帶孔擋板以一定的角速度轉動,擋板的孔洞與桶底的孔洞重合時,網球落下,這樣保證定時落球。

【二次開發】VUAMP子程序_網球隨機發射模擬的圖4

定時落球機構


網球的氣體-結構(球皮)耦合行為通過Fluid Cavity來表征,需要創建一個氣動型流體腔,指定模型的通用氣體常數、設置內部空氣的摩爾質量等參數。


【二次開發】VUAMP子程序_網球隨機發射模擬的圖5

網球的流體腔模型


初始化之后,網球陸續落入滑道,通過滾輪發射出去。


【二次開發】VUAMP子程序_網球隨機發射模擬的圖6

網球發射器發球模型


這個時候,任務還沒完成,我們希望發球器每次拋出的球具有不同的落點,還要做些二次開發工作。


仿真中隨機性的引入

【二次開發】VUAMP子程序_網球隨機發射模擬的圖7

02


關于有限元仿真中是否有隨機性的問題我們之前討論過了,正常情況下,顯然是沒有的,同一個模型不改變參數,每一次的仿真結果必然都會一樣。


那么如何將隨機性引入仿真中呢?


一種方法是通過VUAMP子程序來實現,就是下面我用的方法。


需要注意的是,在子程序中調用隨機數時不能只考慮random_number,因為這樣只能生成偽隨機數,為了讓每一次仿真的結果都不同,比如讓Abaqus模擬擲骰子時每次運行都有新的點數,還要考慮用于生成隨機數的種子。


這部分Fortran代碼如下:


real :: t
call random_seed ()
call random_number(t)

【二次開發】VUAMP子程序_網球隨機發射模擬的圖8

Abaqus模擬擲骰子

為驗證這個模型是否具有隨機性,我寫了2個Python腳本,將同一個模型跑100次job、并批量處理了生成的100個odb文件,每個結果輸出一個渲染后的點數圖。

【二次開發】VUAMP子程序_網球隨機發射模擬的圖9

利用Python自動處理結果


結果表明,同一個模型運行100次,每次計算的結果都不一樣(100次模擬總有幾次點數一樣,但即使點數一樣,骰子最終落點的位置也不一樣,因此每一次的結果都不一樣),在不嚴格的意義下,可以認為這個有限元模型具備了一定的隨機性。

下面是從輸出的100張圖片中隨便選出的4個點數圖。

【二次開發】VUAMP子程序_網球隨機發射模擬的圖10

模擬結果點數圖


網球隨機發球器

【二次開發】VUAMP子程序_網球隨機發射模擬的圖11

03


現在,我們把擲骰子的模擬思路用在網球發射器模型上,通過VUAMP子程序定義滾輪在某個速度區間內的隨機轉動,每次拋球、每次仿真都有新的落點。


【二次開發】VUAMP子程序_網球隨機發射模擬的圖12

隨機發球


【二次開發】VUAMP子程序_網球隨機發射模擬的圖13

每次發射落點不一樣


【二次開發】VUAMP子程序_網球隨機發射模擬的圖14

次運行結果不一樣

【二次開發】VUAMP子程序_網球隨機發射模擬的圖15

往期推薦



Abaqus纖維纏繞模擬之“草木皆可為劍”

如何理解應力三軸度?Abaqus怎么輸出Stress Triaxiality

Abaqus DEM進階技術,指定顆粒級配

Abaqus與聽覺,聽到仿真的聲音

為啥你總是抓不到娃娃?暴利娃娃機揭秘


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

TOP

31
19
13