跳至內容

Gerris

維基百科,自由的百科全書
Gerris Flow Solver
A screenshot of Gerris(GfsView)
Gerris 1.3.2 (GfsView: 0.5.0)
原作者Stéphane Popinet, NIWA (National Institute of Water and Atmospheric research), Institut Jean le Rond d'Alembert
當前版本20090721 (1.3)(2009年7月21日,​15年前​(2009-07-21
預覽版本20120326(2012年3月26日)
程式語言C
作業系統Unix-like, Mac OS X, Microsoft Windows(通過cygwin)
平台32位/64位
語言英文
類型計算流體力學
許可協議GNU通用公共許可證
網站http://gfs.sourceforge.net/

Gerris 是一個跨平台計算流體力學軟體, 並且是遵守GNU通用公共許可證自由軟體. 創建者是 Stéphane Popinet, 由 NIWA (National Institute of Water and Atmospheric research) 和 Institut Jean le Rond d'Alembert 進行維護. "Gerris" 是拉丁文(以及法文)中水黽的意思. [1]

歷史

2001年, Stéphane Popinet 從零開始編寫 Gerris. 第一個版本以 GNU通用公共許可證 於 2001 年 9 月發布. Gerris 是原創項目, 不是任何已有代碼的改編版. [2] 最近一個穩定版是 2009-07-21 發布的. Gerris 常以發布日期標註(特別是開發中的)版本, 雖然也有正規的版本號.

嚴格的說 Gerris 指的僅僅是一個命令行界面的非交互式程序. 該程序依據給定的模擬文件讀入各種模擬要用到的參數和物件, 並依據模擬文件的指示輸出數據(可以是指定位置的物理量也可以是圖形).

但通常提到 Gerris 的時候專門配合使用的計算結果查看器 GfsView 也會算在內. Gerris 計算時會自動生成離散八叉樹(octree)形式的網格資料結構, 而一般的可視化軟體沒法處理這種結構, 故作者自己開發了 GfsView 來實現這一功能.

雖說是跨平台軟體, 但在Windows平台需要使用cygwin進行編譯.

主要功能

  • 可計算 2D 或 3D 不可壓無粘/有粘流體.
  • 可在計算上述流體的同時求解對流擴散問題.
  • 支持固定邊界和運動邊界的計算.
  • 支持自由邊界以及表面張力的計算.
  • 流體中放置的物件可由其他 CAD 軟體(如 Blender [3]) 製作好後放入. 對於簡單的幾何體 Gerris 也提供了內置的模型供使用.
  • 全自動打網格(方形(2D)/立方體(3D)網格), 並且支持自適應網格. 疏密程度以及自適應判據可由用戶指定.(GfsAdapt)
  • 可直接輸出視頻文件(需要 FFmpeg 的支持).
  • 支持平行計算

計算精度

  • 在計算無粘流體時由於計算格式的數值粘性, 結果與理論無粘流會有些差別. 網格剖分加細6次時, 等價的雷諾數大致是 104 ~ 106. 該粘性會隨網格精細程度的提高而相應減小(雷諾數升高).[4]
  • 時間和空間都有二階精度 [5].

缺點

  • 不支持可壓流體的計算----適用範圍較小.
  • 僅支持立方形的網格.
  • 全程序使用無量綱化的物理量, 單位轉換不夠方便[6].

示例文件

參見教程 [7]

文件 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 文件.

參見

外部連結

參考文獻

  1. ^ Gerris FAQ. Gerris Development Team. http://gfs.sourceforge.net/. 2012-04-16 [2012-04-16]. (原始內容存檔於2018-06-12). 
  2. ^ FAQ:Where does Gerris come from?. Gerris Development Team. http://gfs.sourceforge.net/. [2012-06-14]. (原始內容存檔於2018-06-12). 
  3. ^ Using Blender to create solids for Gerris. Gerris Development Team. http://gfs.sourceforge.net/. 2012-04-16 [2012-04-16]. (原始內容存檔於2018-03-20). 
  4. ^ Estimation of the numerical viscosity. Gerris Development Team. http://gfs.sourceforge.net/. 2012-04-16 [2012-04-16]. (原始內容存檔於2020-02-20). 
  5. ^ Quadtree-adaptive tsunami modelling (PDF). Gerris Development Team. http://gfs.sourceforge.net/. 2012-04-16 [2012-04-16]. (原始內容存檔 (PDF)於2017-08-11). 
  6. ^ How would I redimensionalise U,V,W and P?. Gerris Development Team. http://gfs.sourceforge.net/. 2012-04-17 [2012-04-17]. (原始內容存檔於2018-06-12). 
  7. ^ The Gerris Tutorial. Gerris Development Team. http://gfs.sourceforge.net/. 2011-03-23 [2012-04-16]. (原始內容存檔於2018-04-27).