欢迎光临散文网 会员登陆 & 注册

如何用TPXO9全球潮模型做预测

2023-04-08 03:44 作者:北纬20杜  | 我要投稿

1. 下载数据和代码

下载TPXO9数据:https://www.tpxo.net/tpxo-products-and-registration

下载潮汐预报代码 TMD(基于matlab),或者用OTPS做预报(基于fortran & Linux):https://www.tpxo.net/otps

如果用TMD做预报,下载TPXO9数据时要选择binary格式

下载 tpxo_atlas2local.m 代码,用于将TPXO9生成的各分潮文件合并,合并的文件能用于TMD预测


2. 用 tpxo_atlas2local.m 处理TPXO9数据

该函数需要调用TMD里的程序,文件路径为:你的路径/TMD/FUNCTIONS/。所以,可以把 tpxo_atlas2local.m 放在该路径下,或者在 tpxo_atlas2local.m 里添加TMD函数的路径:

        addpath('D:\Code\TMD\FUNCTIONS')

tpxo_atlas2local.m 的调用方式:

        function []=tpxo_atlas2local(atlas_modfile,out_modfile,lat_lims,lon_lims);

atlas_modfile指向TPXO9数据的路径,例如,我的数据放在 ‘D:\Code\TMD\DATA\TPXO9_atlas_v5’ 文件夹下,为方便起见,我在‘D:\Code\TMD\DATA’ 文件夹下保存atlas_modfile文件(放哪都行)。创建atlas_modfile文件:新建一个txt文档,输入三行:

        D:\Code\TMD\DATA\TPXO9_atlas_v5\h_*_tpxo9_atlas_30_v5*

        D:\Code\TMD\DATA\TPXO9_atlas_v5\u_*_tpxo9_atlas_30_v5*

        D:\Code\TMD\DATA\TPXO9_atlas_v5\grid_tpxo9_atlas_30_v5

h是潮位文件,u是流速文件,grid是模型网格,*可以历遍所有相应文件。TPXO9有不同版本,最后的部分需要根据你的文件名修改,比如我的文件名带有v5。保存txt文件,然后去掉文件后缀,我保存的文件名是下图的 “Model_tpxo9_atlas"


接下来编辑out_modfile文件,指明tpxo_atlas2local.m生成的文件需要放在哪个路径下,这里我简单采用了函数提供的默认写法。首先,新建txt文件,写入以下三行:

        D:\Code\TMD\DATA\MyArea\h_MyArea

        D:\Code\TMD\DATA\MyArea\uv_MyArea

        D:\Code\TMD\DATA\MyArea\grid_MyArea

它表示tpxo_atlas2local.m生成的文件将储存在 ‘D:\Code\TMD\DATA\MyArea’文件夹下,生成的三个文件分别是:h_MyArea,uv_MyArea,grid_MyArea。我把txt文件命名为Jiangsu_coast,并去掉后缀名。注意:你需要先建好MyArea文件夹

文件路径:D:\Code\TMD\DATA

注意:上述提到的文件路径,尽量不要有中文,也避免空格、横线。我曾使用以下的文件路径,导致运行失败:

        D:My - code\Code\TMD\DATA\MyArea


完成上述准备工作后,可以在命令行窗口运行函数:

        tpxo_atlas2local('DATA\Model_tpxo9_atlas','DATA\Jiangsu_coast',[32.4,35],[120,124]);

最后两个参数是你需要的经纬度


3. 运行TMD进行预报

直接运行TMD.m文件,会提示你选择输入模型,这里我直接点击 ”Jiangsu_coast"(见上图),函数会自动定位到‘D:\Code\TMD\DATA\MyArea\’文件夹并读取上一步生成的h_MyArea,uv_MyArea,grid_MyArea文件。运行函数后得到GUI界面:

TMD GUI界面

这里我把所有分潮都点上,左下角可以选择predict tide(做预报)或者extract tidal constants(提取分潮常数)。你可以用鼠标在界面上点击选择想要研究的站位(不推荐),我会提前生成一个文件,从文件里读取经纬度坐标和时间(见下一小节):

从文件读取经纬度和时间

注意:全球潮模型用的是格林威治时间,如果你要预报北京时间(GMT+8),需要算好时差。比如你想预报北京时间 2018/10/15 14:00:00某个站位的潮位,起始时间应选为2018/10/15 06:00:00


上图中的文件夹“D:\Code\TMD\LAT_LON”里有TMD自带的坐标文件,你可以随便选一个玩玩


4. 创建坐标文件,用于TMD预报

下载OTPS或者OTPSnc:https://www.tpxo.net/otps

解压后在文件路径 ‘D:\OTPSnc\matlab’ 下可以找到mk_lltime.m。函数内容如下:

mk_lltime.m

lat和lon是匹配的经纬度,上图显示我有5个站点,其中一个的坐标是(34.4136,120.745)。dt是时间间隔,单位是小时。d1\d2分别是起始时间和结束时间,注意用的是格林威治时间。以上就是你需要根据自身情况修改的内容,直接运行即可得到五个文件,每个文件对应一个站点:

生成的坐标文件

文件里长这样(左边的行序号是软件显示的,文件里没有):

open in Visual studio code

生成的这些文件放在“D:\Code\TMD\LAT_LON”里,可在TMD的GUI页面里直接调用。


5. 用OTPS或OTPSnc做预报

这两个和TMD本质上是一样的,只不过这些是基于Fortran和Linux,OTPSnc会生成NetCDF格式的文件,需要 netcdf 和 netcdff。如果你会使用LInux系统,但不懂MATLAB,可以考虑用这些软件做预报。由于本人没成功运行OTPSnc,就不过多介绍了,主要是一直报错说我找不到 lnetcdf 或 lnetcdff。原因是这样的,我用的是学校的HPC系统,它已经安装了Netcdf和netcdf-fortran,lnetcdf.so在netcdf文件夹下,lnetcdff.so在nefcdf-fortran文件夹下,但我不懂怎么在makefile里同时添加两个文件夹:

需要在NCLIB里面指明netcdf/lib的路径,该路径下得有 lnetcdf.so和 lnetcdff.so,然而很遗憾,这两个文件分别在不同路径下,我不懂如何同时添加

如果你不需要用到NetCDF文件,那么可以用OTPS做预报!

如何用TPXO9全球潮模型做预测的评论 (共 条)

分享到微博请遵守国家法律