1 |
gforget |
1.1 |
function [mystruct_out]=core_load_fields(ycur,hcur); |
2 |
|
|
%loads the fields and does the interpolation to the 1x1 ECCO grid |
3 |
|
|
domaine_global_def; |
4 |
|
|
|
5 |
|
|
mask=squeeze(tmask3D(:,:,1)); |
6 |
|
|
|
7 |
|
|
rep_in='/net/ross/raid0/gforget/DATAbin/forcing/CORE/fromWebDec07/interannual_data/'; |
8 |
|
|
|
9 |
|
|
files_core=strvcat('q_10.','t_10.','u_10.','v_10.','slp.','ncar_rad.','ncar_precip.'); |
10 |
|
|
nbfields_core=[1460*ones(1,5) 365 12]; |
11 |
|
|
|
12 |
|
|
|
13 |
|
|
ncload /net/ross/raid0/gforget/DATAbin/forcing/CORE/fromWebDec07/main_data/t_10.2004_08_30.nc LON LAT; lon2D_g=LON*ones(1,94); lat2D_g=ones(192,1)*LAT'; |
14 |
|
|
[x1,y1] = meshgrid([-1.875 lon2D_g(:,1)' 360 361.875],lat2D_g(1,:)); |
15 |
|
|
[x2,y2] = meshgrid(lon2D_t(:,1),lat2D_t(1,:)); |
16 |
|
|
|
17 |
|
|
|
18 |
|
|
for fcur=1:7 |
19 |
|
|
|
20 |
|
|
switch fcur |
21 |
|
|
case 1; var_core=strvcat('Q_10_MOD'); var_ecco='aqh'; |
22 |
|
|
case 2; var_core=strvcat('T_10_MOD'); var_ecco='atemp'; |
23 |
|
|
case 3; var_core=strvcat('U_10_MOD'); var_ecco='uwind'; |
24 |
|
|
case 4; var_core=strvcat('V_10_MOD'); var_ecco='vwind'; |
25 |
|
|
case 5; var_core=strvcat('SLP'); var_ecco='slp'; |
26 |
|
|
case 6; var_core=strvcat('SWDN_MOD','LWDN_MOD'); var_ecco=strvcat('swdn','lwdn'); |
27 |
|
|
case 7; var_core=strvcat('RAIN','SNOW'); var_ecco=strvcat('rain','snow'); |
28 |
|
|
end |
29 |
|
|
|
30 |
|
|
for ecur=1:size(var_core,1) |
31 |
|
|
|
32 |
|
|
if nbfields_core(fcur)==1460; |
33 |
|
|
%load the 6 hourly field: |
34 |
|
|
if ycur<2001; suff_file='2004_08_03'; else; suff_file='2006_04_06'; end; |
35 |
|
|
nc = netcdf([rep_in deblank(files_core(fcur,:)) num2str(ycur) '.' suff_file '.nc'], 'nowrite'); |
36 |
|
|
field_cur=nc{deblank(var_core(ecur,:))}(hcur,:,:); nc = close(nc); |
37 |
|
|
elseif nbfields_core(fcur)==365; |
38 |
|
|
%load the daily field: |
39 |
|
|
if ycur<2001; suff_file='2004_08_03'; else; suff_file='2006_04_06'; end; |
40 |
|
|
nc = netcdf([rep_in deblank(files_core(fcur,:)) num2str(ycur) '.' suff_file '.nc'], 'nowrite'); |
41 |
|
|
field_cur=nc{deblank(var_core(ecur,:))}(ceil(hcur/4),:,:); nc = close(nc); |
42 |
|
|
else |
43 |
|
|
%interpolate from the monthly field: |
44 |
|
|
% coeffs etc: |
45 |
|
|
dcur=ceil((hcur)/4); [mcur,mcurW]=coeff_MonthlyAtlasInterp(dcur); |
46 |
|
|
ycur2=[ycur ycur]; |
47 |
|
|
if ~isempty(find(mcur==1))&dcur>300; ycur2(find(mcur==1))=ycur+1; end; |
48 |
|
|
if ~isempty(find(mcur==12))&dcur<100; ycur2(find(mcur==12))=ycur-1; end; |
49 |
|
|
tmp1=find(ycur2==1991); ycur2(tmp1)=1992; mcur(tmp1)=1; |
50 |
|
|
tmp1=find(ycur2==2005); ycur2(tmp1)=2004; mcur(tmp1)=12; |
51 |
|
|
% load the two fields: |
52 |
|
|
if ycur2(1)<2001; suff_file='2004_08_03'; else; suff_file='2006_04_06'; end; |
53 |
|
|
nc2 = netcdf([rep_in deblank(files_core(fcur,:)) num2str(ycur2(1)) '.' suff_file '.nc'], 'nowrite'); |
54 |
|
|
field1=nc2{deblank(var_core(ecur,:))}(mcur(1),:,:); nc2 = close(nc2); |
55 |
|
|
if ycur2(2)<2001; suff_file='2004_08_03'; else; suff_file='2006_04_06'; end; |
56 |
|
|
nc2 = netcdf([rep_in deblank(files_core(fcur,:)) num2str(ycur2(2)) '.' suff_file '.nc'], 'nowrite'); |
57 |
|
|
field2=nc2{deblank(var_core(ecur,:))}(mcur(2),:,:); nc2 = close(nc2); |
58 |
|
|
% weighted average -> time interpolation |
59 |
|
|
field_cur=(1-mcurW)*field1+mcurW*field2; |
60 |
|
|
end |
61 |
|
|
|
62 |
|
|
%spatial interpolation: |
63 |
|
|
field_cur=field_cur'; |
64 |
|
|
tmp1=[field_cur(end,:);field_cur;field_cur(1,:);field_cur(2,:)]'; |
65 |
|
|
field_cur=interp2(x1,y1,tmp1,x2,y2)'; |
66 |
|
|
|
67 |
|
|
eval([deblank(var_ecco(ecur,:)) '=field_cur.*mask;']); |
68 |
|
|
|
69 |
|
|
end |
70 |
|
|
|
71 |
|
|
end%for fcur=1:7 |
72 |
|
|
|
73 |
|
|
rhoConstFresh=999.8; |
74 |
|
|
slp=slp/100; %in pascal -> /100 => mbar |
75 |
|
|
precip=(rain+snow)/1000*rhoConstFresh; %mm/s->m/s->kg/m^2/s |
76 |
|
|
|
77 |
|
|
mystruct_out=struct('aqh',aqh,'atemp',atemp,'uwind',uwind,'vwind',vwind,'swdn',swdn,'lwdn',lwdn,'precip',precip,'slp',slp); |
78 |
|
|
|