2.3. 运行模拟

2.3.1. GUI运行

在进入GUI程序后,首先打开工作空间(工作目录 图 2.14 )。

../_images/Menu_013.png

图 2.14 打开工作目录

然后,在工作目录在编辑器中打开脚本 ( 图 2.15 )。

../_images/Selection_014.png

图 2.15 双击打开建模脚本

打开的脚本文件会在编辑器中处于显示状态( 图 2.16 )。

../_images/Selection_015.png

图 2.16 编辑器中显示的建模脚本

接下来,点击工具栏上的 运行此脚本 按钮即可自动在控制台中执行脚本( 图 2.17 )。运行此脚本 默认执行编辑器中处于当前编辑状态的脚本。

../_images/SudoSim_017.png

图 2.17 控制台运行脚本,初始化模型

最后,在控制台输入Python函数命令运行模拟 ( 图 2.18 ),

app.run(10000)
../_images/Selection_002.png

图 2.18 运行脚本,初始化模型

程序运行过程中可以实时显示 ( 图 2.19)。

../_images/SudoSim_019.png

图 2.19 运行模拟,实时显示更新

上述实时显示更新会频繁在CPU和GPU间传输数据,往往会影响计算效率。因此,建议显示的刷新时间设置长一些或者关闭实时显示更新 (见 视图设置 )。

2.3.2. 终端运行

SudoSim亦可以无需GUI直接在终端中运行,如 图 2.20 。注意:需要将SudoSim加入到环境变量PATH中方可直接运行,否在需要提供SudoSim可执行文件所在路径。

../_images/terminal.png

图 2.20 Linux/Ubuntu终端

我们在终端下进入一个工作目录,比如 ~/examples/CUDEM/public

1user@Dell-5820:~/examples/CUDEM/public$ ls
2column_collapse.py     debrisflow.py  pos_list.txt     tmp1.stl
3dc7_dem_1411slide.txt  packing.py     terrain_stl.stl

然后,可以开启交互Shell:

1user@Dell-5820:~/examples/CUDEM/public$ sudosim -i
2Welcome to SudoSim!
3Python 3.8.0 (default, Dec  9 2021, 17:53:27)
4[GCC 8.4.0] on linux
5
6>>>

可以在上述Shell中一行一行地执行模拟程序。当然,我们也可以直接运行一个建模脚本。需要注意的是,上述GUI中运行的脚本需要如下改动:

1import numpy as np
2gui = False
3sim = None

因此,我们将不需要调用GUI的任何程序。脚本运行如下:

 1user@Dell-5820:~/examples/CUDEM/public$ sudosim -i -f packing.py
 2Welcome to SudoSim!
 3Python 3.8.0 (default, Dec  9 2021, 17:53:27)
 4[GCC 8.4.0] on linux
 5
 6Using GPU 0 of acount:1
 7initializing Reorder...
 8init Neighborlist
 9CUDA version:11020
10walls initilized!
11>>>

随后,在Shell中执行运行脚本函数 sim.RunPthread(10000)

1>>> sim.RunPthread(10000)

注:因为我们不需要调用GUI的相关程序,因此,不再有 app 这个对象。需要指出的时,前述 app.run 函数是封装了这里的 sim.RunPthread。另外,我们也提供 sim.run 函数,但该函数是在同一个线程执行模拟,亦即采用该函数执行模拟后,模拟过程中用户无法通过Shell进行交互。

2.3.3. 远程运行

SudoSimGUI提供远程模拟计算,本地查看和执行程序。该功能仍然在测试中。SudoSimGUI会自动在本地监听网络端口,形成一个服务端。客户端可以执行连接服务端,从而客户端即可远程查看和干预服务端的模拟计算。

服务端程序

在命令行执行,

1sudosim -n -s hostname -p port -k key

其中’-n’为不采用gui运行服务端程序; ‘hostname’ 为服务器地址,默认为localhost;‘port’为服务器端口,默认为9091;’key’为客户端与服务端配对密钥。

客户端程序

  • 先在设置中的高级选项进行服务器地址和端口指定,默认分别为localhost和9091 ( 图 2.21 )。

../_images/remotesetting.png

图 2.21 客户端远程设置 (MacOS)

  • 点击连接服务器按钮,成功后可像运行本地模拟程序一样执行程序。

  • 点击remote view按钮,程序将自动从远程服务端下载数据并可视化显示 ( 图 2.22 )。

../_images/runscript.png

图 2.22 客户端执行模拟脚本

  • 按照本地设置的显示刷新频率,程序自动提取远程服务器数据实时更新 ( 图 2.23 )。

../_images/remoteview.png

图 2.23 客户端数据实时更新

注意事项

点击连接服务器后,本地程序自动变为客户端角色,在控制台内执行的命令全部发送到服务器端。为了在客户端模式查看本地程序,保留了lapp对象(表示local app),以该对象开头的命令不被发送到服务端执行。