1.模型设置
我用的是之前学习过程中创建的海州湾的案例
运行时间是从2012年的7月1日00:00:00至2012年7月15日00:00:00
经纬度大概是
北纬35°08’
东经119°10’ 东经119°37′
北纬34°42′
范围比较小 强迫项有潮汐 和风 本节主要回顾风场数据获取以及前处理的到风场强迫nc文件
2.数据获取
获取数据的网址有很多种 一般都是要注册账号的 邮箱很容易注册
比如:
Copernicus Climate Data Store |
我用的是https://cds.climate.copernicus.eu/#!/home
登录到这个界面点击数据集Datasets
一般气象上用的是ERA5数据 就在左上角搜索框查找 ERA5
选择适合的数据集 一般有月平均 天平均 逐小时的 我一般用逐小时的 后面就不用再扩展成逐小时的了
比如
选择你需要的数据项(10米高度的风 U10 V10 两个分量) 填好时间 年月日 注意下载的是从0点到23点的 这样算一天
坐标填写你感兴趣的范围 比如我一开始写的海州湾的坐标数据 转化成小数格式
提交下载即可 下载的是 NETCDF文件 (可在matlab中 使用命令 ncdisp filename.nc 查看里面数据信息 )
这样就得到一个这一时间段这一范围的风场数据文件
3.数据处理
我用的是matlab程序将风场数据读取 插值到我的网格 然后写成FVCOM需要的风场强迫NC文件
调用的程序包括 划分时间的jilian包 网格读取程序 等
代码如下 运行即可得到 FVCOM需要的 风场强迫NC 文件
%%
%读网格
clc;clear
Mobj = read_fvcom_mesh('grd.dat');
%%
%风场及网格中心点
u3=double(ncread('data.nc','u10'));
v3=double(ncread('data.nc','v10'));
longitude=double(ncread('data.nc','longitude'));
latitude=double(ncread('data.nc','latitude'));
lonc=double(ncread('hzw_0001.nc','lonc'));
latc=double(ncread('hzw_0001.nc','latc'));
u10=zeros(5,5,336);
v10=zeros(5,5,336);
for i=1:336
u10(:,:,i)=u3(:,:,1);
v10(:,:,i)=v3(:,:,1);
end
%插值计算
mttt=[];nttt=[];
for i=1:336%天数
ut=u10(:,:,i)';vt=v10(:,:,i)';
mt=griddata(longitude,latitude,ut,lonc,latc);%插值
% mtt=repmat(mt,1,24);%因为是逐天的,所以需要一小时乘以24就是一天了
mttt=[mttt,mt];
nt=griddata(longitude,latitude,vt,lonc,latc);
% ntt=repmat(nt,1,24);
nttt=[nttt,nt];
end
u10=[mttt,mt];%合并
v10=[nttt,nt];
tbeg = greg2mjulian(2012,7,1,0,0,0);
tend = greg2mjulian(2012,7,15,0,0,0);
time = tbeg:1/24:tend;
write_FVCOM_wind_ts_speed(Mobj, 'hzw_wind.nc', time, u10, v10);
刚开始写博客 有些问题可能描述的并不是很清楚 有问题可以私信联系我
后续操作会抽时间逐一发在博客上 欢迎使用FVCOM的各位前辈不吝赐教,互相学习。