Gerris

历史

2001年, Stéphane Popinet 从零开始编写Gerris. 第一个版本以GNU通用公共许可证 于 2001 年 9 月发布. Gerris 是原创项目, 不是任何已有代码的改编版.

最近一个稳定版是 2009-07-21 发布的. Gerris 常以发布日期标注(特别是开发中的)版本, 虽然也有正规的版本号.
严格的说Gerris 指的仅仅是一个命令行界面的非交互式程序. 该程序依据给定的模拟文件读入各种模拟要用到的参数和物件, 并依据模拟文件的指示输出数据(可以是指定位置的物理量也可以是图形).
但通常提到Gerris 的时候专门配合使用的计算结果查看器GfsView 也会算在内. Gerris 计算时会自动生成离散八叉树(octree)形式的网格数据结构, 而一般的可视化软件没法处理这种结构, 故作者自己开发了GfsView 来实现这一功能.
虽说是跨平台软件, 但在Windows平台需要使用cygwin进行编译.

示例文件

参见教程
文件 vorticity.gfs:
# 空间由两个单位立方体组成1 2 GfsSimulation GfsBox GfsGEdge {} {
  # 模拟时间从t=0 到 50
  GfsTime { end = 50 }
  # 网格剖分加细6 次, 即是平面分成2^6 * 2^6 个网格.
  GfsRefine 6
  # 流场的初态由随机数指定GfsInit {} {
    U = (0.5 - rand()/(double)RAND_MAX)
    V = (0.5 - rand()/(double)RAND_MAX)
  }  
  # 每计算10步在屏幕上输出一次时间, 以及计算误差相关的信息GfsOutputTime            { istep = 10  } stdout
  GfsOutputProjectionStats { istep = 10  } stdout
  # 每过1 单位时间, 添加一帧涡量的ppm 格式的图像到vorticity.ppm
  GfsOutputPPM             { step = 1 } vorticity.ppm { v = Vorticity }
}
# 两个单位立方体的连接关系GfsBox {}
1 1 right
1 1 top
开始计算
gerris2D vorticity.gfs
计算完后当前文件夹下将生成一个.ppm 文件, 保存有各时刻的涡量大小(以颜色表示)的图像.
如在Linux 下, 可以使用以下命令转化图像序列为视频(需要安装ImageMagick)
convert vorticity.ppm vorticity.mpg
也可修改模拟文件使其直接输出.mpg 文件.