CAE仿真 發表於 2021-01-02 10:33:00
本文以簡單的雙質量彈簧振子模型為例,介紹Simpack批處理運行的基本流程和操作方法,供大家參考。
1、建立Simpack模型
建立雙質量彈簧振子模型,包含2個body、2個豎直方向移動joint和2個彈簧力元。其中,彈簧屬性中的剛度和阻尼係數設置為參數化。模型保存為two_mass_oscillator.spck。
在Simpack Subvars窗口中,右鍵選擇SubVars項,在彈出的快捷菜單中選擇Export SubVar(s)命令,得到導出的參數化變量文件。
生成文件名稱為spring_factor.subvar。
該文件支持文本編輯,使用文本編輯器打開後顯示的內容為下圖所示。
上述操作主要是為了生成subvar參數變量文件,也可以手動或其它方法建立該文件。
2、導入參數化變量subvar文件
首先設置Search Path,路徑為.subvar文件的存放路徑。然後在模型樹中選擇SubVar Files並右鍵點擊選擇Edit命令,在彈出的對話框中,通過點擊+號,選擇之前生成的spring_factor.subvar文件。
注意,在Overwriting列中有兩個選項,Initial表示模型中的變量保持初始值,即不論導入subvar文件中的變量值如何變化,模型裡的變量值還保持原有值,沒有變化; Overwriting表示使用導入subvar文件中的變量值替換模型中原來的變量值。
一般情況下,為了快速修改模型參數,選擇Overwriting選項。本文也是選擇Overwriting選項。
這時,打開模型中的參數變量,發現其已經無法修改,且顯示該變量來源於導入的subvar文件。
在$SLV_SolverSettings中設置仿真時間和採樣頻率。
保存模型並關閉模型。
3、建立Simpack腳本和批處理文件
.sjs是Simpack前處理腳本文件,可以參考Simpack的相關幫助進行編寫。本例編寫的sjs腳本內容如下:
varmyModel = Spck.openModel("two_mass_oscillator.spck "); // 打開模型
Spck.Slv.integ(myModel); //時域積分
Spck.Slv.meas(myModel); //測量分析
myModel.close(); //關閉模型
把上述腳本保存為time_integration.sjs文件,並存放在與模型文件two_mass_oscillator.spck相同的文件夾中。
然後,建立一個名稱為runsimpack1.bat的批處理文件,內容為:
「D:ProgramFilesSIMPACK-9.9uninwin64simpack-slv.exe」 -s time_integration.sjs
該語句分為三部分,使用空格隔開,解釋為:
前面是Simpack 求解器的完整路徑(Simpack 9.9版本);
參數-s 表示使用script方式仿真;
後面是使用的sjs腳本文件。
注意:如果安裝路徑有空格,在路徑上添加引號,表示是一個完整的路徑。
現在,可以在文件夾中直接雙擊該批處理文件運行仿真,不需要預先打開Simpack軟體。
為方便起見,在計算機環境變量中設置Simpack安裝路徑。在系統變量Paht中添加Simpack安裝路徑,例如D:Program FilesSimpack-9.10.1uninwin64,見下圖所示。這樣可以在批處理語句中簡化Simpack的路徑。
把上述的runsimpack1.bat文件複製,並重命名為runsimpack2.bat,其內容修改為:
simpack-slv.exe -s time_integration.sjs
雙擊運行這個runsimpack2.bat文件,其結果和運行runsimpack1.bat完全一樣。
4、修改變量值
用文本編輯器打開spring_factor.subvar文件,並修改其中的變量數值,並保存。例如,本例修改為下圖所示數值(4個變量值都被修改)。
重新運行bat進行批處理仿真。這時Simpack模型就會使用修改後的變量值進行仿真。兩者的結果可在Simpack後處理中進行對比查看。
左圖:變量修改前的仿真結果 右圖:變量修改後的仿真結果
總結:
使用Simpack批處理仿真方法,可以大大提升模型建模和仿真效率,而且還可以與Isight軟體集成,進行最優化分析。
編輯:hfy
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴