SWAN模型編譯與波浪折射模擬(Test of the refraction formulation)
- 編譯過程
- 算例簡介
- 參數文件
- 文件頭(HEADING)
- 計算區域和網格
- 地形數據
- 邊界條件
- 物理模塊設置
- 輸出設置
- 執行參數
- 模擬結果
由于工作原因,最近開始接觸波浪模型,所以學習一下SWAN,順便做個記錄、
SWAN是由Delft大學開發的第三代波浪模型,它基于動譜平衡方程,考慮了波-波的非線性作用,對近海、
與模型原理相關的內容詳見以下論文:
- Booij, N., R.C. Ris and L.H. Holthuijsen, 1999, A third-generation wave model for coastal regions, Part I, Model description and validation, J. Geophys. Res. C4, 104, 7649-7666.1
- Ris, R.C., N. Booij and L.H. Holthuijsen, 1999, A third-generation wave model for coastal regions, Part II, Verification, J. Geophys. Res. C4, 104, 7667-7681.2
目前,SWAN模型支持結構化矩形網格、曲邊矩形網格、非結構化三角形網格。本人暫時從簡單的結構化矩形網格開始學習。
希望大家能留言,來相互交流!
SWAN主頁:https://swanmodel.sourceforge.io/
用戶手冊:https://swanmodel.sourceforge.io/online_doc/swanuse/swanuse.html
原理手冊:https://swanmodel.sourceforge.io/
編譯過程
這里主要介紹SWAN模型在windows系統下WSL子系統環境中的編譯過程。該過程與swash模型代碼的編譯過程類似(詳見在windows 11的WSL上上編譯SWASH模型)。
本次嘗試所使用的平臺是windows 11系統下的ubuntu 18.04.6 LTS子系統,代碼版本為swan41.45(下載鏈接)。
編譯代碼前我們需要安裝gfortran和MPI庫。安裝指令如下
sudo apt-get update
sudo apt-get install gcc
sudo apt-get install gfortransudo apt-get install mpich
之后,再安裝編譯代碼所需的make工具:
sudo apt-get install make
首先,解壓代碼包文件,并在wsl輸入指令以進入該文件夾。之后,輸入make config以形成新的macro.inc文件(暫不涉及NETCDF庫的運用)。
接下來,我們將通過make ser(串行)或make mpi(并行)生成可執行文件 swan.exe。
并行運行swan程序的指令格式如下:
./swanrun -input [inputfile] -mpi [n]
其中,[inputfile]表示.sws文件的名稱,n表示并行的線程數。
串行運行swan程序的指令格式如下:
./swashrun -input [inputfile]
算例簡介
該算例模擬了一個理想的方形區域中波浪觸壁折射等過程。該算例的輸入文件可在SWAN官網下載,下載連接是https://swanmodel.sourceforge.io/download/zip/refrac.tar.gz。
參數文件
參數文件或控制文件.swn包含文件頭(HEADING)、輸入(MODEL INPUT)和輸出(OUTPUT REQUESTS)這三部分,最終以STOP指令表示結束。$ 或 ! 符號表示注釋,即以 $ 或 ! 開頭的行不會被讀取,僅有注釋作用。
其中文件頭包含了算例的名稱;輸入部分包含了網格、初始條件、邊界條件、數值方法等;輸出部分定義了文件格式、輸出次數等。
文件頭(HEADING)
在本算例控制文件a11refr.swn中,文件頭如下:
PROJ 'a11refr' 'A11'
它表示了模擬算例的名稱為‘a11refr’,模擬的組次為A11。
此外,文件頭部通常還包括了SET、MODE等指令,用于設置模擬參數等,本例中暫不介紹,都采用默認值。值得注意的是,MODE指令設置了模擬的空間維度與運行模式,如下圖所示;在默認情況下,模擬是平面二維的穩態模擬。
計算區域和網格
設置計算區域與網格的指令如下:
CGRID 0. 0. 0. 20000. 4000. 25 100 SECTOR 80. 130. 100 0.05 0.25 40
模型采用結構化的矩形網格(默認REGular),前三個參數分別為表示計算域原點的坐標及計算域與x軸正方向的夾角;在本算例中,這三個參數均為零,即計算域的長寬方向分別于x、y軸正方向平行,且計算域原點于笛卡爾坐標系原點一致。
模型在x、y方向上的長度分別為xlenc = 20000.0 m和ylenc = 4000.0 m,x、y方向上的網格數分別是25和100個。
模型并未模擬全波向(CIRcle,即模擬了0 ~ 360°方向上所有波的譜)的波浪,而只考慮了部分波向上的波浪(SECtor);在本算例中,模型計算了80 ~ 130°方向上的波浪,并將該方向均分了mdc = 100個小份進行離散。在頻率上,模型考慮了頻率范圍在 0.05 ~ 0.25 Hz的波浪,msc = 40 表示頻域上離散的網格數。
值得注意的是,除頻域外,其余部分的離散方式都采用均勻離散,而頻域上采用等比數列的方式離散。以本算例為例,離散后的頻域為:
0.05000.05210.05420.05640.05870.06110.06370.06630.06900.07180.07480.07780.08100.08440.08780.09140.09520.09910.10320.10740.11180.11640.12120.12610.13130.13670.14230.14820.15430.16060.16720.17400.18120.18860.19640.20440.21280.22160.23070.24010.2500
地形數據
地形數據通過以下指令讀入:
INPGRID BOTTOM 0. 0. 0. 1 1 20000. 4000.
READINP BOTTOM 1. 'a11refr.bot' 1 0 FREE
首先通過INPGRID定義了一個地形數據的網格,這個網格區域的原點也是(0.0, 0.0),并且它的長度方向與x軸的夾角為0;地形數據在x、y方向上的范圍分別有20000 m、4000 m。
數據文件通過READINP指令從a11refr.bot文件中讀入,讀入數據都變成原數據的fac = 1.0倍,數據文件中不包含heading(nhedf = 0)。此外,數據格式的形式為第一類(idla = 1)。
結合.bot文件中的數據可知,本算例的地形如下圖所示。
邊界條件
設置模型邊界條件的指令如下:
BOU SHAPE GAUSS 0.01 PEAK DSPR POWER
BOUN SIDE S CCW CON PAR 1. 10. 120. 500.
設置模型邊界需要兩步。首先,指定邊界處的波浪譜,如下所示。本算例選擇了高斯譜(GAUSS),并指定了其中的參數σfr=0.01\sigma_{fr}=0.01σfr?=0.01,指定譜峰周期為波浪的特征周期,入射波在波向上的分布采用POWER形式。在此情況下,入射波的方向在一定范圍內呈擺動的狀態。
第二步是設置設置邊界條件的添加位置,如下圖所示。在本算例中,邊界被添加到南邊界上;邊界處的波浪參數設置為恒定狀態,并指定了特征波高為1.0 m,譜峰周期為10.0 s,譜峰波浪的方向為120°,POWER模式中的系數值m = 500。
物理模塊設置
OFF QUAD
OFF BREA
OFF WCAP
本算例關閉了三個模塊,即不考慮四波相互作用(QUAD)、不考慮水深變化所致波浪破碎(BREA)、 不考慮白浪耗散(WCAP)。
輸出設置
CURVE 'CTA11' 10000. 0. 100 10000. 4000.
TABLE 'CTA11' HEAD DIST HS TM01 DIR DEP RTP DSPR
TABLE 'CTA11' NOHEAD 'a11ref01.tab' DIST HS DIR DEP RTP
本次模擬將輸出一個a11ref01.tab文件,該文件將輸出在結束時刻,線段(10000,0) - (10000, 4000)上的101個100等分點上的物理量。這些物理量包含與(10000,0)的距離、特征波高、平均波周期(絕對)、平均波向、水深、峰值波高(相對值),共六列數據。
POINTS 'loc' FILE 'a11refr.loc'
SPEC 'loc' SPEC1D 'a11ref01.spc'
TABLE 'loc' HEAD 'a11ref01.tbl' HS RTP TM01 TM02 FSPR
本次模擬還將輸出一系列點上物理量的時間序列,這些點的坐標詳見a11refr.loc文件。輸出數據包括一個一維的譜數據文件a11ref01.spc、一個數據列表文件a11ref01.tbl,文件中包含了物理量有特征波高、峰值波高、平均波周期(基于波能譜)、平均波周期(基于上跨零點)、無量綱的頻譜范圍寬度。
執行參數
TEST 1,0
COMPUTE
STOP
由于本算例是恒定條件運行,因此沒有設置起止時間、時間步長等參數,僅寫入COMPUTE指令即可。
模擬結果
以下對比了模擬所得特征波高(Hs)、平均波向(Dir)結果與對應的解析解結果,如下圖所示。圖中的紅色圓圈表示模擬值,黑線表示解析值。解析解數據在輸入文件壓縮包中。
https://doi.org/10.1029/98JC02622 ??
https://doi.org/10.1029/1998JC900123 ??