👨🎓个人主页:研学社的博客
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
MetCoOp是芬兰气象研究所(FMI)、挪威气象局和瑞典气象水文研究所(SMHI)之间的业务数值天气预报(NWP)气象合作。
北欧合作正在扩大
MET和SMHI (MetCoOp)的合作始于2010年,自2014年以来,这两个部门都受益于同一天气模型的预报。2017年,(FMI)也加入MetCoOp。许多国家都对这一合作感兴趣,从长远来看,七个北欧国家也将加入这一合作。
从2022年起,波罗的海国家爱沙尼亚、拉脱维亚和立陶宛也将加入,届时可能被称为UWC- east (UWC =联合气象中心)。同样从2022年起,UWC-West (KNMI, DMI, Met Éireann和ve - urstofa Islands)将开始联合运营生产。
从2027年起,UWC-East和UWC-West将在一个共同的数据中心进行联合生产。
结果是,数值气象研究所(NMSs)可以联合起来做任何一方都无法做到的事情:确保北欧社会做好天气准备,加强高影响天气警报,加强安全,确保公民的生命和财产安全。
电脑要求
联合天气中心(UWC)项目背后的十个北方国家有一个主要目标:创建一个共同的天气预报模型,以提供尽可能最好的短期天气预报。
天气预报需要大量昂贵的计算能力、天气观测和研究。新技术正在改变气象服务的环境和机遇。有足够资金投资于高性能计算机(hpc)和人工智能研究的全球公司能够挑战现有的NMSs。十个北方国家不再单独行动,而是同意联合起来。
天气预报系统MEPS
MET、SMHI和FMI使用一个天气模型进行天气预报,我们称之为MEPS (MetCoOp集合预报系统)。天气模式作整体预报。这意味着,人们可以从几个预报的组合开始,量化可能的天气发展的结果空间,这取决于天气本身,而不是只看一个预报。这样的预报汇编使得计算极端天气的概率变得更加容易。
📚2 运行结果
部分代码:
% Outputs:
% * data: structure with the following fields
% - time: [1x1] datetime
% - LAF: [Nlon x Nlat] double: land_area_fraction
% - U: [Nlon x Nlat] double: wind_speed at 10m above the surface in
% m/s
% - DD: [Nlon x Nlat] double: wind_direction at 10m above the surface
% in deg
% - RH: [Nlon x Nlat] double: relative_humidity 2m above the surface
% - PA: [Nlon x Nlat] double: precipitation_amount in kg/m^2
% - I: [Nlon x Nlat] double:
% integral_of_surface_downwelling_shortwave_flux_in_air_wrt_time in W s/m^2
% - P: [Nlon x Nlat] double: air_pressure_at_sea_level in Pa
% - T: [Nlon x Nlat] double: air_temperature_2m in K
% - CAF: [Nlon x Nlat] double: cloud_area_fraction
%
%
% Author: E. Cheynet - UiB, Norway - last modified: 14-04-2021
%%
if strcmpi(type,'rerun version 2')
typeA = 'metpparchivev2';
elseif strcmpi(type,'rerun version 1')
typeA = 'metpparchivev1';
elseif strcmpi(type,'Operational')
typeA = 'metpparchive';
else
error('type unknown');
end
%% Definition of the grid
[lon,lat] = ndgrid(targetLon(1):resolution:targetLon(end),targetLat(1):resolution:targetLat(end));
%% Check month and day number + transform date into string
if targetMonth<10
myMonth = ['0',num2str(targetMonth)];
else
myMonth = num2str(targetMonth);
end
if targetDay<10
myDay = ['0',num2str(targetDay)];
else
myDay = num2str(targetDay);
end
if targetHour<10
myHour = ['0',num2str(targetHour)];
else
myHour = num2str(targetHour);
end
myYear = num2str(targetYear);
%% Preallocation and initalisation
data = struct('time',[],'LAF',[],'U',[],'DD',[],'RH',[],'PA',[],'I',[],...
'P',[],'T',[],'CAF',[]);
urldat= ['https://thredds.met.no/thredds/dodsC/',typeA,'/',myYear,'/',myMonth,'/',myDay,'/met_analysis_1_0km_nordic_',myYear,myMonth,myDay,'T',myHour,'Z.nc'];
time0 = ncread(urldat,'time')./86400+datenum('1970-01-01 00:00:00');
data.time = datetime(datestr(double(time0)));
lon00 = ncread(urldat,'longitude');
lat00 = ncread(urldat,'latitude');
dummyLat = lat00(:);
dummyLon = lon00(:);
ind = find(dummyLat>=min(targetLat(:)-0.1) & dummyLat <= max(targetLat(:)+0.1) & dummyLon>=min(targetLon(:)-0.1) & dummyLon <= max(targetLon(:)+0.1));
%% Read the data in a for loop for each selected output
% Data are resampled spatially as gridded data
Nout = numel(output);
for ii=1:Nout
myVar0 = ncread(urldat,output{ii});
dummyVar = double(myVar0(:));
if strcmpi(output{ii},'wind_direction_10m')
meanU = ncread(urldat,'wind_speed_10m');
un = double(meanU(:)).*cosd(dummyVar);
ue = double(meanU(:)).*sind(dummyVar);
F_ue = scatteredInterpolant(dummyLat(ind),dummyLon(ind),un(ind),'linear','none');
F_un = scatteredInterpolant(dummyLat(ind),dummyLon(ind),ue(ind),'linear','none');
newUe = F_ue(lat,lon);
newUn = F_un(lat,lon);
data.DD = atan2(newUn,newUe).*180/pi;
else
F_Var = scatteredInterpolant(dummyLat(ind),dummyLon(ind),dummyVar(ind),'linear','none');
end
if strcmpi(output{ii},'land_area_fraction')
data.LAF = F_Var(lat,lon);
elseif strcmpi(output{ii},'wind_speed_10m')
data.U = F_Var(lat,lon);
elseif strcmpi(output{ii},'relative_humidity_2m')
data.RH = F_Var(lat,lon);
elseif strcmpi(output{ii},'precipitation_amount')
data.PA = F_Var(lat,lon);
elseif strcmpi(output{ii},'integral_of_surface_downwelling_shortwave_flux_in_air_wrt_time')
data.I = F_Var(lat,lon);
elseif strcmpi(output{ii},'air_pressure_at_sea_level')
data.P = F_Var(lat,lon);
elseif strcmpi(output{ii},'air_temperature_2m')
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1] MetCoOp