当前位置: 首页 > 工具软件 > Swan > 使用案例 >

SWAN学习笔记——安装与模拟实例

舒赞
2023-12-01

本文将安装海浪模式SWAN并模拟2012年10月底飓风桑迪经过美国西海岸时大西洋的海浪变化,参考了知乎用户模式小站的文章https://zhuanlan.zhihu.com/p/393743862,使用了其分享的文件

1、下载地址

https://swanmodel.sourceforge.io/

2、选择合适的编译器,更改macro.inc中的变量

# 在命令行输入
module load mpi/intelmpi/2017.4.239
module load mathlib/netcdf/4.4.1
cd swan4131
make clean
make config

# 在macro.inc中更改
F90_MPI = mpiifort
NETCDFROOT=`nc-config --prefix`

# 在命令行输入
make mpi

3、准备输入文件 Sandy.swn

# 项目名称和标记
PROJECT 'Sandy' '1'
# 标题
'Sandy 2012'

# 以时间变化、二维方式运行
MODE NONSTATIONARY TWODIMENSIONAL
# 深度的最小值,按照真实能量输出,按照航海习惯定义风和浪的方向,尾部高频的参数
SET DEPMIN 0.05 INRHOG 1 NAUTICAL PWTAIL 5
# 使用球坐标系
COORDINATES SPHERICAL

# 定义计算网格:曲坐标,x方向和y方向格点数-1,被排除格点的x坐标和y坐标,θ方向格点数,最低和最高的频率间隔,频率个数
CGRID CURVILINEAR 86 64 EXC 9.999000e+003 9.999000e+003 CIRCLE 36 0.04 1.0 24
# 读取计算网格:深度值比例,文件名,文件格式,文件头行数,每一个时间层的文件头行数,读取方式
READGRID COORDINATES 1 'Atlantic_EW.grd' 4 0 0 FREE 

# 定义地形网格:曲坐标,x方向和y方向交错率,x方向和y方向格点数-1,被排除格点的x坐标和y坐标
INPGRID BOTTOM CURVILINEAR 0 0 90 46 EXC 9.999000e+003
# 读取计算网格:深度值比例,文件名,文件格式,文件头行数,读取方式
READINP BOTTOM 1 './data/Atlantic_EW.bot' 4 0 FREE 

# 定义输入场网格:风场,矩形网格,x方向和y方向坐标初始值,x轴方向,x方向和y方向格点数
INPGRID WIND REGULAR 0 -90 0 1440 721 1 1 &
#   时间变化,开始时间,时间间隔,结束时间
    NONSTATIONARY 20121028.000000 3 HR 20121029.000000
#读取输入场:风场,风速值比例,文件名,文件格式,头文件格式,读取方式
READINP WIND 1 'global_wind.dat' 4 0 FREE

# 边界条件:通过两点坐标定义三边上恒定的波参数,有效波高,能量谱周期,峰值方向,方向传播系数
BOUNDSPEC SEGMENT IJ   0   0   0  45 CONSTANT PAR 0.5 14.0 180. 20.
BOUNDSPEC SEGMENT IJ   0   0  89   0 CONSTANT PAR 0.5 14.0 180. 20.
BOUNDSPEC SEGMENT IJ  89   0  89  45 CONSTANT PAR 0.5 14.0 0. 20.

# 默认方式初始化
INIT

# 物理过程的参数化方案选择与参数设置
# 在浅水中深度导致的波破碎
BREAKING CONSTANT 1.0 0.73
# 底部摩擦
FRICTION MADSEN 0.05
# 线性增长模型
GEN3 KOMEN
# 白冠破碎
WCAP KOM 2.36E-5 3.02E-3 2.0 1.0 1.0

# 计算方案
PROP BSBT

# 输出空间分布,名称,无文件头,文件名,输出方式,变量,数值比例,输出时间
BLOCK 'COMPGRID' NOHEADER 'Sandy_hsig.mat'   LAY 4 HSIGN 1.  OUTPUT 20121028.000000 1 HR
BLOCK 'COMPGRID' NOHEADER 'NP_bot.mat'       LAY 4 BOTLEV 1.

BLOCK 'COMPGRID' NOHEADER 'Sandy_xp.mat'     LAY 4 XP 1.
BLOCK 'COMPGRID' NOHEADER 'Sandy_yp.mat'     LAY 4 YP 1.
BLOCK 'COMPGRID' NOHEADER 'Sandy_wind.mat'   LAY 4 WIND 1.   OUTPUT 20121028.000000 1 HR
BLOCK 'COMPGRID' NOHEADER 'Sandy_hsig.nc'    LAY 4 HSIGN 1.   OUTPUT 20121028.000000 1 HR

# 计算:时间变化,开始时间,时间步长,单位,结束时间
COMPUTE NONSTAT 20121028.000000 3600 SEC 20121029.000000

# 输出hotfile用于以后计算
HOTFILE 'Sandy_init.hot'

# 结束
STOP

4、准备计算网格文件 Atlantic_EW.grd

Atlantic_EW.grd是描述网格坐标的文本文件,将每一纬度的经向坐标从西向东写入,按照从南到北的顺序写入各个纬度上的数值,每个数值单独占一行。写完经向坐标后,再写纬向坐标。此处使用空间分辨率为0.5°×0.5°的网格,时间分辨率是1小时,空间范围是85W~40W,27N~50N。

数据来源 ETOPO5 https://www.ngdc.noaa.gov/mgg/global/etopo5.HTML

5、准备风场文件 global_wind.dat

global_wind.dat是描述风速的文本文件,将每一纬度的纬向风速(向东为正)从西向东写入,按照从南到北的顺序写入各个纬度上的数值,每个数值单独占一行。写完纬向风速后,再写经向风速(向北为正),全部写完后再写下一个时刻的风速值。此处使用空间分辨率为0.25°×0.25°的网格,时间分辨率是1小时,空间范围是0E~180W,-78.375S~78.375N。

数据来源 ERA5 hourly data on single levels from 1979 to present https://cds.climate.copernicus.eu/cdsapp#!/dataset/reanalysis-era5-single-levels?tab=overview

6、运行

export  PATH=...../swan/swan4131:$PATH
rm -f machinefile
echo $SLURM_JOB_NODELIST > machinefile

../../swan4131/swanrun -input swan_sandy -mpi 2
 类似资料: