前言: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 中
/STATUS,SOLU ! 求解步骤,也可替换成其他步骤
SOLVE
*get,cputime2,active,0,time,cpu ! 将该时刻的 cpu 时间记录到 cputime2 中
! 最后在 mian => parameters => scaler parameters 中可查询到 cputime1 和 cputime2 的值,如需查询 WALL TIME,将 *get 中的 cpu 更换即可
本文采用 BY-NC-SA协议,转载请注明出处。
原文地址:https://www.cnblogs.com/LitBro/p/12516078.html
时间: 2024-10-14 01:34:22