ParaView 的远程模式

OpenFOAM 用户肯定都用过ParaView可视化软件,这款软件可以方便地读取 OpenFOAM 的数据进行种类丰富的可视化操作。用 ParaView 可视化 OpenFOAM数据很简单,只需要在算例目录下运行paraFoam即可(注一)。但是,如果你不是在本地机器上运行 OpenFOAM,而是在远程机器上运行,这时候想在本地直接用 ParaView 来可视化远程机器上的数据,该怎么办呢?这个问题要分情况讨论:

  1. 远程机器没有禁止远程开启GUI
    • 本地机器安装的是Linux系统,那么可以这样做:ssh -X your_remote_machine 登录到远程机器,注意这里加了-X选项,正常的话,应该直接在终端里运行paraFoam就可以远程启动 ParaView。
    • 本地机器安装的是 Windows,这种情况下可以通过安装一个 Xserver,比如Xming,然后用一个支持 X11 Forwarding 的 SSH 客户端(比如 putty)用ssh -X登录到远程机器,正常的话,直接运行paraFoam可以远程启动 ParaView。但根据我的使用经验,这种方法稳定性很差,容易崩溃。
  2. 远程机器设置了禁止远程开启GUI程序
    这种情况下上面提到的两种方法就都不奏效了。这时,下面要介绍的 ParaView 远程模式就能派上用场了。

ParaView 远程模式基本的使用方法是,在远程机器上启动一个pvserver,然后用本地机器安装的 ParaView 连接到这个 server上(Client/Server 模式),或者反过来,本地机器开启一个 server,然后让远程机器连接到本地的 server(Client/Server(reverse connection) 模式),以下将一一介绍。

Client/Server 模式

建立方法如下:

  1. 在远程机器上运行pvserver;
  2. 运行本地机器上的 ParaView,点击菜单栏左上角的“Connect”,出来如下界面:
  3. 选择 “Add server”,然后在如下界面中设置 server:

    “Server Type”选择”Client/Server”,”Host”填写远程的机器的 IP,”Port”默认即可。点”configure”,便添加了一个 server,这个设置会自动保存下来,下次再打开 “Connect”时,默认就会看到保存的 server 列表。
  4. 双击列表中需要连接的 server,正常地话便连接到远程机器了,这时候点打开文件,看到的便是远程机器上的文件了!

注意事项:本地机器和远程机器的必须安装同一个版本的ParaView,否则会报错。此外,这种连接方式不能使用”PointSprite_Plugin”插件来显示颗粒。

Client/Server(reverse connection) 模式

有时候,远程机器上无法正常运行pvserver, 比如报如下错误:

1
2
3
4
5
6
7
Waiting for client… 
Connection URL: cs://A402:11111
ERROR: In /home/utkarsh/Dashboards/MyTests/NightlyMaster/ParaViewSuperbuild-Release/paraview/src/paraview/VTK/Common/System/vtkSocket.cxx, line 206
vtkServerSocket (0x1a1206e0): Socket error in call to bind. Address already in use.
ERROR: In /home/utkarsh/Dashboards/MyTests/NightlyMaster/ParaViewSuperbuild-Release/paraview/src/paraview/ParaViewCore/ClientServerCore/Core/vtkTCPNetworkAccessManager.cxx, line 355
vtkTCPNetworkAccessManager (0x1983fa00): Failed to set up server socket.
Exiting…

这时,可以采用Client/Server(reverse connection) 模式,这种模式是在本地机器上开启一个 server,然后让远程机器连上它,具体做法如下:

  1. 先在本地机器上启动 ParaView,并按照上面所述的方法建立一个server,注意这里”Server Type” 要选择 “Client/Server(reverse connection)”,如下图:
  2. 连接上这个新建的 server:

    连上以后,显示”waiting for server to connect”,如下
  3. 在远程机器上运行

    1
    pvserver -rc -ch=192.168.1.34

    注意这里用选项-rc开启reverse connection 模式,-ch选项指定本地机器的 IP。这样就建立了从远程机器到本地机器的连接。

  4. 连接建立以后,点打开文件,看到的便是远程机器上的文件了,跟 Client/Server 模式一样。

一个细节值得注意:当用 Client/Server 模式或Client/Server(reverse connection) 模式建立起本地机器与远程机器的连接以后,”Save Screenshot”, “Save Animation”, “Export Scene” 以及”Save state”会输出到本地机器,而”Save Data”和”Save Geometry”将仍然输出到远程机器。

注一:paraFoam的正常运行依赖于 libPV3reader.so 等几个库,有时候这几个库不能正常编译生成。ParaView 自从 4.0 版本以后,不需要使用paraFoam直接就能读取 OpenFOAM的数据,用户只需要在算例下新建一个.foam结尾的空文件,然后用 ParaView打开这个空文件即可。