前言:ANSYS 中記錄時間有好多種辦法,具體網上都有,或者可查閱 help 文件。但本文只針對 APDL 操作下,利用命令流對某一操作或求解步驟的時間統計。目前我使用的是 ANSYS 14.0 版本,相應的信息也都是在其 help 文件中獲得,整理如下
我在統計計算數據時,需要得知 ANSYS 求解的時間來進行效率對比,由於之前的模型都是由命令流控制,而且 MATLAB 里面可以通過 tic toc 來記錄間隔時間,因此聯想是否同樣有相關命令流操作可以記錄 ANSYS 中的計算間隔時間,於是去查閱 help 文件。ANSYS 中對時間有兩個概念:CPU TIME 和 WALL TIME,在 help 文件中是這樣解釋的:
As reported in the solver output, CPU time generally refers to the time that a processor spends on the user's application; it excludes system and I/O wait time and other idle time. For parallel systems, CPU time >means different things on different systems. Some systems report CPU time summed across all threads, while others do not. It is best to use “elapsed” or “wall” time for parallel applications.
翻譯:如求解器輸出中所報告的,CPU時間通常是指處理器花費在用戶應用程序上的時間。 它不包括系統和I / O等待時間以及其他空閑時間。 對於並行系統,CPU時間在不同的系統上意味着不同的事情。 一些系統報告所有線程的CPU時間總和,而其他系統則沒有。 對於並行應用程序,最好使用“經過”或“隔離”時間。
很明顯,CPU TIME 指的是電腦 CPU 對目前應用的處理時間,對於多核並行計算時,還可能是指所有線程的 CPU 時間總和,這個並不是通俗意義上的計算時間。我想要的時間:某一操作開始的同時按下秒表,計算結束停止秒表。因此, WALL TIME 才是我的選擇。
在 GET 命令中 :
終於,記錄時間的命令流操作找到了,現有如下命令流:
*get,cputime1,active,0,time,cpu ! 將該時刻的 cpu 時間記錄到 cputime1 中
SOLVE ! 求解步驟,也可替換成其他步驟
*get,cputime2,active,0,time,cpu ! 將該時刻的 cpu 時間記錄到 cputime2 中
! 最后在 main => parameters => scaler parameters 中可查詢到 cputime1 和 cputime2 的值,如需查詢 WALL TIME,將 *get 中的 cpu 更換即可
Researchgate 也有相關解答傳送門
最后更新於 2020年4月22日 --- 最初發表於 2020年3月18日
原創作者:LitBro
關於作者:咕咕咕
本文鏈接: [https://www.cnblogs.com/LitBro/p/12516078.html]
版權聲明:本文采用 BY-NC-SA協議,轉載或引用請注明出處!
關於后續:礙於學業不精,如有描述不當,還請見諒並非常感謝指出