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日,​16年前​(2009-07-21
預覽版本20120326(2012年3月26日)
原始碼庫
  • {{URL|example.com|可选的显示文本}}
Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
程式語言C
引擎
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    作業系統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).