将全球海洋模式数据存储于云端,并进行云计算是一项几乎不可能的任务。当前全球高分辨率模式数据的空间分辨率可到1/48°,时间分辨率为1小时,考虑深度分层,其数据量可以说是非常巨大,如一年LLC4320数据接近3P。
当前气象海洋云计算的先驱Pangeo已转码了ECCOv4r3低分模式全水深数据和LLC4320高分模式的表层数据,这两种模式均为全球海洋模式。近期,为推动云计算和开放共享,Pangeo物理海洋小组转码了8组海洋模式数据,并存储于云端,和Pangeo云计算无缝衔接。这其中包括FIO-COM海洋模式(First Institute of Oceanography Coupled Ocean Model)。这一批模式数据,主要集中在4个SWOT高度计定标对比区,具有丰富的亚中尺度信号,是研究海洋动力学的优秀数据集合。
关于这批数据的介绍可见:
相关论文:T. Uchida et al., “Cloud-based framework for inter-comparing submesoscale-permitting realistic ocean models,” Geosci. Model Dev., vol. 15, no. 14, pp. 5829–5856, Jul. 2022, doi: 10.5194/gmd-15-5829-2022.
Pangeo Forge
云计算依赖规范化的数据格式,为降低Pangeo社区的数据维护成本,特别提出了众包概念的Pangeo Forge。全世界任何人可以使用Pangeo Forge将开放模式产品转化为Zarr格式,形成统一规范的云数据,存储到云端,这其中的流量和计算费用已由Pangeo所获基金支付。
关于FIO-COM等模式数据的转码和存储,已经由上述论文作者完成。
读取
上述论文给了代码库地址,读者可以在GitHub找到该库,并fork到Pangeo。
8套海洋模式数据的元数据已经被归档,注意文件夹中有一个catalog.yaml
文件,里面保存模式信息,如
1 | FIO-COM32: |
这些信息给出了云端的FIO模式数据描述,比如共有四个区域(参考论文图片1),数据集中在春秋季节,数据时间采样主要为一小时。
因为数据稍微复杂,作者编写了validate_catalog模块,可以实现快速读取:
1 | from validate_catalog import all_params |
有一种模式由于版权问题,未存储云端。
dict_keys([‘GIGATL’, ‘HYCOM25’, ‘HYCOM50’, ‘eNATL60’, ‘FESOM’, ‘ORCA36’, ‘FIO-COM32’])
FIO
读取FIO模式:
1 | item = "FIO-COM32" |
这样我们选择了湾流区域的春季数据:
FIO-COM32 {‘region’: ‘1’, ‘datatype’: ‘surface_hourly’, ‘season’: ‘fma’}
将数据通过lazy模式读入,这批数据时间是2018-2-1至2018-5-1,参数包含海表温盐流和SSH:
1 | %%time |
载入一个时间点的温度,中尺度现象清晰可见:
1 | ds.surface_temp.sel(time='2018-05-01T10:00:00.000000000').plot(size=10) |
流场:
1 | ds.usurf.sel(time='2018-05-01T10:00:00.000000000').plot(size=10) |
KE动能
下面算一算春季这块海域的平均动能,云计算耗时仅2s:
1 | %%time |
计算平均海面高度,耗时1s:
1 | %%time |
绘图:
1 | import matplotlib.pyplot as plt |
锋面
通过温度场,分析这里的锋面(fronts)。主要使用滤波技巧,首先滑动平均,然后减去这个空间平均场,得到亚中尺度的温度变化信息:
1 | lwindow = 40 |
绘图对比,可见湾流特征清晰,锋面信息丰富,里面蕴含的科学还等待您的挖掘:
1 | plt.figure(figsize=(14,4)) |
小结
- 介绍了FIO海洋模式的读取和云计算
- 云端计算还是一如既往的方便快捷
- 介绍了一点物理海洋的知识:KE和锋面
下节重磅推出
- 云端运行ROMS