这个LBM教学程序是用Fortran语言写的。应该可以用这个intel fortran或者gfortran编译器应该都是可以的。或者你干脆可以把它改写成其他语言的,如 C语言的程序。
这个LBM教学程序主要由anb.for和backupa.for这两个文件组成,还有一个头文件head.inc,这个头文件是定义公用变量数据模块。
将这三个文件放在同一个目录下,然后进行编译链接,它就最后可以生成一个可执行的文件。
输入文件是anb.par
其中的输入变量值的含义是:
0.000025d0 ! dx空间分辨率,一个网格代表多少米
0.0000208333333d0 ! dt 时间分辨率,一个时间步代表多少秒
60000 ! max time step允许的最大迭代次数,即使没收敛程序也停下来。
1000.0 !density流体的密度多少千克每立方米
9.8 !accel重力加速度。
0.6 ! tau> 0.5
格子波尔兹曼方程当中的碰撞松弛因子,它与流体的粘度密度密切相关。你用$\nu=c_s^2 (\tau-0.5)dt$
算出来就是流体的运动粘性系数。
80 !为计算雷诺数自己指定的特征长度,这里并没有特别的意义,可以不用管。
输入的格式与上面fortran程序中读入的变量及其顺序要一致。
重力加速度 | 渠道宽度 | N(grid) | dx | kinematic vis | \tau | dt | u(0) | Re |
9.8 | 0.001 | 40 | 0.000025 | 1.00E-06 | 0.6 | 2.08333E-05 | 1.225 | 9.90E+01 |
上表中渠道的总的宽度假定为0.001米,也就是说用40个网格来分辨这个渠道的宽度。然后水的运动粘性系数大概是1×10的-6次方。这样的话如果你指定\tau的值的话,你就可以算出dt来。
根据平面Poiseuille流的公式,你可以计算出渠道中心的速度,应该是1.225米每秒。
输出文件都指定写在你当前工作目录的子目录./out中。所以你应该在当前的工作目录下先建好这个out子目录。否则运行的时候会遇到问题。因为他要写的这个子目录下,但是你没有这个子目录,他没法写入到磁盘。