这个LBM教学程序是用Fortran语言写的。应该可以用这个intel fortran或者gfortran编译器应该都是可以的。或者你干脆可以把它改写成其他语言的,如 C语言的程序。

 

这个LBM教学程序主要由anb.forbackupa.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子目录。否则运行的时候会遇到问题。因为他要写的这个子目录下,但是你没有这个子目录,他没法写入到磁盘。