OpenFOAM后台运行求解器的多种方式

OpenFOAM后台运行求解器的多种方式

严格说,这不是OpenFOAM的使用技巧,而是Linux系统的运行程序的技巧。

最简单的后台运行一个求解器可以通过在终端输入求解器名 &的方式进行,例如:

icoFoam &

注意,后台运行的命令不是不在控制台输出信息,而是指在求解器运行的时候还允许用户在同一个终端输入其它命令。这对于一般的求解器运行没有什么意义,因为OpenFOAM的计算信息输出过快,不可能再向输出的终端输入其它额外的命令。但对于paraview,不妨在运行的时候加上&, 这样可以释放paraview对当前终端的占用。
还可以通过下面这种方式进行后台运行:

nohup icoFoam

这种方式相比使用&,有以下两个特点:

  • 用户关闭终端之后程序不结束运行。
  • 不在终端输出求解器运行的信息,将所有输出信息保存为同目录下的nohup.out。
  • 使用nohup命令后不能够在当前终端输入其他命令。

第一个特点在远程登录服务器进行计算的时候特别有用(例如使用ssh访问)。我们可以在终端中用nohup运行之后就退出对远程服务器的登录,不需要长期打开登录终端,而如果不采用nohup,当你退出远程登录的时候极有可能就会终止求解器的运行。 当你使用nohup运行完程序准备关闭终端的时候,终端还会提示当前终端仍有程序运行,关闭终端将导致程序关闭。此时不用理会,直接关闭终端即可。
当使用nohup在远程服务器上运行求解器时,还可以使用nice命令调整运行求解器的优先级。例如下面的代码将设置在后台以第10优先级运行icoFoam:

nohup nice -n 10 icoFoam

nice也可以抛开nohup单独使用。
除去使用nohup可以将输出重定向为文件外,还可以使用> log 命令。例如下面的命令可以在后台运行icoFOAM并将输出信息保存为同目录下的log文件,同时cat命令可以将输出的log文件再此显示到终端上:

nohup nice -n 19 icoFoam > log &
cat log

如果使用

nohup nice -n 19 icoFoam | tee log

也可以起到类似的作用,在终端输出信息的同时将信息保存到log文件中。

tips:如何根据log文件确定当前模拟进度?

根据上述的方法,我们往往会生成一个大小惊人的log/nohup文件。而我们又时常需要获取模拟的实时信息,比如当前残差,时间步等。这时候如果打开动辄几GB的log文件来查看相关信息是不现实的,实际上,我们可以通过下面的命令进行对log文件的查看:

tail log

上述命令可以输出log文件的后十行,如果想要指定行数可以在tail后附加-n 5参数,其中5可以替换为想要输出的行数。(将tail替换为head可以输出log文件的前n行)

你可能感兴趣的:(OpenFOAM使用笔记)