---
title: 运行和验证
description: "1. 使用PuTTY工具，以root用户登录服务器。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpcindapp/prtg-osc/kunpengopenfoam_02_0008.html
sourcePath: /source/zh/kunpenghpcs/hpcindapp/prtg-osc/kunpengopenfoam_02_0008.html
indexId: ab7d5f25f55aec93866c62bdc704646bb4b2d2c4479c84006b5ff37f471cf57870
---
# 运行和验证

1. 使用PuTTY工具，以root用户登录服务器。
2. 执行以下命令加载环境变量。

```
export PATH=
/path/to/OPENMPI
/bin:$PATH
export LD_LIBRARY_PATH=
/path/to/OPENMPI
/
lib:$LD_LIBRARY_PATH
```


  该步骤为声明MPI环境变量，如果前面已经声明，可跳过该步骤。

3. 执行以下命令创建“hostfile”文件并添加节点信息。

```
echo
-e 'node1\nnode2\n…\nnodex' >
/
path/to/HOSTFILE
```


  “node1、node2、…、nodex”分别为各节点的主机名，可通过命令“hostname”查询各主机名，“\n”为换行符。 该步骤在多节点运行时为必须执行，单节点可跳过。

4. 执行以下命令加载OpenFOAM应用程序。

```
Node_list=$(cat
/path/to/HOSTFILE
| xargs | tr ' ' ',')
clush -w ${Node_list} "cp /root/.bashrc /root/.bashrc_bak;echo source
/path/to/OPENFOAM
/OpenFOAM-v1906/etc/bashrc >> /root/.bashrc"
```


5. 执行以下命令在计算环境中任意位置复制算例文件。

```
cp -r
/path/to/OPENFOAM
/OpenFOAM-v1906/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike ./
```


6. 执行以下命令修改“RunFunctions”文件。

  a. 打开“RunFunctions”文件。

```
vi
/path/to/OPENFOAM
/OpenFOAM-v1906/bin/tools/RunFunctions
```


  b. 按“i”进入编辑模式。

    - 多节点运行时修改如下：
      在mpirun命令后加上“--allow-run-as-root -x PATH -x LD_LIBRARY_PATH --hostfile /path/to/HOSTFILE”。

      修改前：

```
$mpirun -n $nProcs $appRun $appArgs "$@" </dev/null >> $logFile 2>&1
```


      修改后：

```
$mpirun --allow-run-as-root -x PATH -x LD_LIBRARY_PATH --hostfile
/path/to/HOSTFILE
-n $nProcs $appRun $appArgs "$@" </dev/null >> $logFile 2>&1
```


    - 单节点修改如下：
      在mpirun命令后加上“--allow-run-as-root”。

      修改前：

```
$mpirun -n $nProcs $appRun $appArgs "$@" </dev/null >> $logFile 2>&1
```


      修改后：

```
$mpirun  --allow-run-as-root -n $nProcs $appRun $appArgs "$@" </dev/null >> $logFile 2>&1
```


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
7. 执行以下命令修改配置文件。

```
sed -ri "s/\(20 8 8\)/\(64 12 8\)/" motorBike/system/blockMeshDict
```


  - 两节点场景。

```
sed -ri "s/8/256/" motorBike/system/{decomposeParDict,decomposeParDict.hierarchical,decomposeParDict.ptscotch}
sed -ri "s/\(4 2 1\)/\(32 4 2\)/"  motorBike/system/{decomposeParDict,decomposeParDict.hierarchical,decomposeParDict.ptscotch}
```


  - 单节点场景。

```
sed -ri "s/8/128/" motorBike/system/{decomposeParDict,decomposeParDict.hierarchical,decomposeParDict.ptscotch}
sed -ri "s/\(4 2 1\)/\(16 4 2\)/"  motorBike/system/{decomposeParDict,decomposeParDict.hierarchical,decomposeParDict.ptscotch}
```


- 若执行节点为两节点，每个节点128个任务并行，128*2=256，32*4*2=256。
- 若执行节点为单节点，128个任务并行，128*1=128，16*4*2=128。
- 单节点的任务并行个数（即128）可通过  lscpu |grep ^CPU\(s\)
命令查看，并根据执行节点的实际配置进行修改。


8. 执行以下命令进入算例文件夹执行计算脚本。

```
cd motorBike
./Allrun
```


  计算过程中屏幕打印信息如下：

```
Running blockMesh on /hpcstore/ysf/openfoam-test/1020_motorBike
Running decomposePar on /hpcstore/ysf/openfoam-test/1020_motorBike
Running snappyHexMesh (256 processes) on /hpcstore/ysf/openfoam-test/1020_motorBike
Restore 0/ from 0.orig/ for processor directories
Running renumberMesh (256 processes) on /hpcstore/ysf/openfoam-test/1020_motorBike
Running potentialFoam (256 processes) on /hpcstore/ysf/openfoam-test/1020_motorBike
Running checkMesh (256 processes) on /hpcstore/ysf/openfoam-test/1020_motorBike
Running simpleFoam (256 processes) on /hpcstore/ysf/openfoam-test/1020_motorBike
```


9. 计算结束正常退出后，生成计算日志文件，可执行以下命令进行查看。

```
vi log.simpleFoam
```

```
forceCoeffs forceCoeffs1 execute:
Coefficients
Cd       : 0.413353     (pressure: 0.398578     viscous: 0.0147753)
Cs       : 0.0100002    (pressure: 0.00999416   viscous: 6.01357e-06)
Cl       : 0.0683827    (pressure: 0.0683764    viscous: 6.2544e-06)
CmRoll       : -0.0101679       (pressure: -0.0102318   viscous: 6.39234e-05)
CmPitch       : 0.15315 (pressure: 0.146948     viscous: 0.00620151)
CmYaw       : 0.0118663 (pressure: 0.0120074    viscous: -0.000141087)
Cd(f)    : 0.196509
Cd(r)    : 0.216844
Cs(f)    : 0.0168664
Cs(r)    : -0.00686619
Cl(f)    : 0.187341
Cl(r)    : -0.118959
ensightWrite ensightWrite write: ( k omega p U )
End
Finalising parallel run
```
