Changeset 8
- Timestamp:
- 05/04/11 18:07:12 (13 years ago)
- Location:
- Roms_tools
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
Roms_tools/Forecast_tools/download_ECCO_frcst.m
r1 r8 67 67 % first ecco time: 06-Jan-2006 (315696) 68 68 % first ecco time: 07-Jan-2006 (324456) !!! should be reset every year !!! 69 ecco_time_start_year=359520; 70 69 71 % 70 ecco_time_start= 324456/24+datenum(1970,1,1)-datenum(Yorig,1,1);72 ecco_time_start=ecco_time_start_year/24+datenum(1970,1,1)-datenum(Yorig,1,1); 71 73 ecco_times=[ecco_time_start:10:ecco_time_start+10000]; 72 74 %htime_ecco=24*(ecco_times+datenum(Yorig,1,1)-datenum(1970,1,1)); -
Roms_tools/Forecast_tools/download_GFS.m
r1 r8 121 121 radlw=tx; 122 122 radsw=tx; 123 radlw_in=tx; 124 uwnd=tx; 125 vwnd=tx; 123 126 % 124 127 n=0; … … 145 148 % Loop on GDAS analyses 146 149 % (starts hdays day ago 18Z, 1 analysis every 6h 147 % ends yesterday 06Z).150 % ends before yesterday 18Z). 148 151 % 149 152 gfs_run_time0=12; 150 153 gfs_date0=today-(hdays+1); 151 for frcst=1:4*hdays-3 % number of files until yesterday 06Z152 gfs_run_time0=gfs_run_time0+6; 154 for frcst=1:4*hdays-3 % number of files until before yesterday 18Z 155 gfs_run_time0=gfs_run_time0+6; 153 156 if gfs_run_time0>18 154 157 gfs_date0=gfs_date0+1; … … 161 164 gfs_date=gfs_date0; 162 165 t1=1; 166 t1dap=t1-1; 163 167 fname=get_GFS_fname(gfs_date,gfs_run_time,0); 164 168 warning off … … 187 191 n=n+1; 188 192 [gfstime(n),tx0,ty0,tair0,rhum0,... 189 prate0,wspd0,radlw0,radsw0]=... 190 get_GDAS(fname,mask,t1,jrange,i1min,i1max,i2min,i2max,... 191 i3min,i3max,missvalue); 193 prate0,wspd0,uwnd0,vwnd0,radlw0,radlw_in0,radsw0]=... 194 get_GDAS(fname,mask,t1dap,jrange,i1min,i1max,i2min,i2max,i3min,i3max,missvalue); 192 195 TX=interp2(lon,lat',tx0,LON,LAT'); 193 196 TY=interp2(lon,lat',ty0,LON,LAT'); … … 196 199 PRATE=interp2(lon,lat',prate0,LON,LAT'); 197 200 WSPD=interp2(lon,lat',wspd0,LON,LAT'); 201 UWND=interp2(lon,lat',uwnd0,LON,LAT'); 202 VWND=interp2(lon,lat',vwnd0,LON,LAT'); 198 203 RADLW=interp2(lon,lat',radlw0,LON,LAT'); 204 RADLW_IN=interp2(lon,lat',radlw_in0,LON,LAT'); 199 205 RADSW=interp2(lon,lat',radsw0,LON,LAT'); 200 206 tx(n,:,:)=TX; … … 204 210 prate(n,:,:)=PRATE; 205 211 wspd(n,:,:)=WSPD; 212 uwnd(n,:,:)=UWND; 213 vwnd(n,:,:)=VWND; 206 214 radlw(n,:,:)=RADLW; 215 radlw_in(n,:,:)=RADLW_IN; 207 216 radsw(n,:,:)=RADSW; 208 217 % … … 211 220 % 212 221 %================================================================== 213 % 2: Get the variables for Forecast starting yesterday 12Z222 % 2: Get the variables for Forecast starting yesterday 00Z 214 223 %================================================================== 215 224 gfs_run_time0=gfs_run_time1+6; … … 268 277 % 269 278 for tndx=t1:it:60 279 tndxdap=tndx-1; 270 280 n=n+1; 271 281 [gfstime(n),tx(n,:,:),ty(n,:,:),tair(n,:,:),rhum(n,:,:),... 272 prate(n,:,:),wspd(n,:,:),radlw(n,:,:),radsw(n,:,:)]=... 273 get_GFS(fname,mask,tndx,jrange,i1min,i1max,i2min,i2max,... 282 prate(n,:,:),wspd(n,:,:),uwnd(n,:,:),vwnd(n,:,:),... 283 radlw(n,:,:),radlw_in(n,:,:),... 284 radsw(n,:,:)]=... 285 get_GFS(fname,mask,tndxdap,jrange,i1min,i1max,i2min,i2max,... 274 286 i3min,i3max,missvalue); 275 287 end … … 284 296 prate=prate(1:n,:,:); 285 297 wspd=wspd(1:n,:,:); 298 uwnd=uwnd(1:n,:,:); 299 vwnd=vwnd(1:n,:,:); 286 300 radlw=radlw(1:n,:,:); 301 radlw_in=radlw_in(1:n,:,:); 287 302 radsw=radsw(1:n,:,:); 288 303 % … … 294 309 % 295 310 mask(isnan(mask))=0; 296 write_GFS(gfs_name,Yorig,lon,lat,mask,gfstime,tx,ty,tair,rhum,prate,wspd, radlw,radsw)311 write_GFS(gfs_name,Yorig,lon,lat,mask,gfstime,tx,ty,tair,rhum,prate,wspd,uwnd,vwnd,radlw,radlw_in,radsw) 297 312 % 298 313 disp('Download GFS: done') -
Roms_tools/Forecast_tools/get_GDAS.m
r1 r8 1 function [t,tx,ty,tair,rhum,prate,wspd, radlw,radsw]=...1 function [t,tx,ty,tair,rhum,prate,wspd,uwnd,vwnd,radlw,radlw_in,radsw]=... 2 2 get_GDAS(fname,mask,tndx,jrange,i1min,i1max,... 3 3 i2min,i2max,i3min,i3max,missvalue) … … 42 42 disp('===========================================') 43 43 %disp('time...') 44 %disp(['TNDX=',num2str(tndx)]) 45 %disp(['TRANGE=',num2str(trange)]) 44 46 t=readdap(fname,'time',trange); 45 %t=t+365; % put it in "matlab" time. 46 t=t+364.75; % put it in "matlab" time. PM 47 disp(['GDAS raw time=',sprintf('%5.3f',t)]) 48 %t=t+364.75; % put it in "matlab" time. PM 49 t=t+365 % put it in "matlab" time. GC 47 50 disp(['GDAS: ',datestr(t)]) 48 51 disp('===========================================') … … 55 58 i1min,i1max,i2min,i2max,i3min,i3max); 56 59 v(abs(v)>=missvalue)=NaN; 60 61 %disp('ty...') 62 ty=mask.*getdap('',fname,'vflxsfc',trange,'',jrange,... 63 i1min,i1max,i2min,i2max,i3min,i3max); 64 ty(abs(ty)>=missvalue)=NaN; 65 66 %disp('tx...') 67 tx=mask.*getdap('',fname,'uflxsfc',trange,'',jrange,... 68 i1min,i1max,i2min,i2max,i3min,i3max); 69 tx(abs(tx)>=missvalue)=NaN; 70 57 71 %disp('skt...') 58 72 skt=mask.*getdap('',fname,'tmpsfc',trange,'',jrange,... … … 71 85 i1min,i1max,i2min,i2max,i3min,i3max); 72 86 prate(abs(prate)>=missvalue)=NaN; 73 %disp('radlw...') 74 radlw=mask.*getdap('',fname,'dlwrfsfc',trange,'',jrange,... 87 88 %disp('down radlw...') 89 dradlw=mask.*getdap('',fname,'dlwrfsfc',trange,'',jrange,... 75 90 i1min,i1max,i2min,i2max,i3min,i3max); 76 radlw(abs(radlw)>=missvalue)=NaN; 77 %disp('radsw...') 78 radsw=mask.*getdap('',fname,'dswrfsfc',trange,'',jrange,... 91 dradlw(abs(dradlw)>=missvalue)=NaN; 92 93 %disp('up radlw...') 94 uradlw=mask.*getdap('',fname,'ulwrfsfc',trange,'',jrange,... 95 i1min,i1max,i2min,i2max,i3min,i3max); 96 uradlw(abs(uradlw)>=missvalue)=NaN; 97 98 %disp('down radsw...') 99 dradsw=mask.*getdap('',fname,'dswrfsfc',trange,'',jrange,... 79 100 i1min,i1max,i2min,i2max,i3min,i3max); 80 radsw(abs(radsw)>=missvalue)=NaN; 101 dradsw(abs(dradsw)>=missvalue)=NaN; 102 103 %disp('up radsw...') 104 uradsw=mask.*getdap('',fname,'uswrfsfc',trange,'',jrange,... 105 i1min,i1max,i2min,i2max,i3min,i3max); 106 uradsw(abs(uradsw)>=missvalue)=NaN; 107 81 108 % 82 109 % Transform the variables … … 98 125 % 4: Net shortwave flux: [W/m^2] 99 126 % ROMS convention: positive downward: same as GFS 100 % ?? albedo ?? 127 % ?? albedo ?? --> now with down - up we have the albedo taken into account 101 128 % 129 radsw=dradsw - uradsw; 102 130 radsw(radsw<1.e-10)=0; 103 131 % … … 108 136 % skin temperature. 109 137 % 110 skt=skt-273.15; 111 radlw=-lwhf(skt,radlw); 138 %skt=skt-273.15; 139 %radlw=-lwhf(skt,radlw); 140 radlw=uradlw - dradlw; 141 radlw_in=dradlw; 112 142 % 113 143 % 6: Wind speed 114 144 % 115 145 wspd=sqrt(u.^2+v.^2); 116 % 117 % 7: Compute the stress following large and pond 118 % 119 [Cd,uu]=cdnlp(wspd,10.); 120 rhoa=air_dens(tair,rhum*100); 121 tx=Cd.*rhoa.*u.*wspd; 122 ty=Cd.*rhoa.*v.*wspd; 146 % 7: Wind vectors 147 uwnd=u; % rho point 148 vwnd=v; % rho point 149 % % 150 % % 7: Compute the stress following large and pond 151 % % 152 % [Cd,uu]=cdnlp(wspd,10.); 153 % rhoa=air_dens(tair,rhum*100); 154 % tx=Cd.*rhoa.*u.*wspd; 155 % ty=Cd.*rhoa.*v.*wspd; 123 156 % 124 157 return -
Roms_tools/Forecast_tools/get_GFS.m
r1 r8 1 function [t,tx,ty,tair,rhum,prate,wspd, radlw,radsw]=...1 function [t,tx,ty,tair,rhum,prate,wspd,uwnd,vwnd,radlw,radlw_in,radsw]=... 2 2 get_GFS(fname,mask,tndx,jrange,i1min,i1max,... 3 3 i2min,i2max,i3min,i3max,missvalue) … … 42 42 disp('====================================================') 43 43 %disp('time...') 44 %disp(['TNDX=',num2str(tndx)]) 45 %disp(['TRANGE=',num2str(trange)]) 44 46 t=readdap(fname,'time',trange); 45 t=t+364.75; % put it in "matlab" time. 47 disp(['GFS raw time=',sprintf('%5.3f',t)]) 48 %t=t+364.75 % put it in "matlab" time. PM 49 t=t+365; % put it in "matlab" time. GC 46 50 disp(['GFS: ',datestr(t)]) 47 51 disp('====================================================') 52 48 53 %disp('u...') 49 54 u=mask.*getdap('',fname,'ugrd10m',trange,'',jrange,... 50 55 i1min,i1max,i2min,i2max,i3min,i3max); 51 56 u(abs(u)>=missvalue)=NaN; 57 52 58 %disp('v...') 53 59 v=mask.*getdap('',fname,'vgrd10m',trange,'',jrange,... 54 60 i1min,i1max,i2min,i2max,i3min,i3max); 55 61 v(abs(v)>=missvalue)=NaN; 62 63 %disp('ty...') 64 ty=mask.*getdap('',fname,'ovflxsfc',trange,'',jrange,... 65 i1min,i1max,i2min,i2max,i3min,i3max); 66 ty(abs(ty)>=missvalue)=NaN; 67 68 %disp('tx...') 69 tx=mask.*getdap('',fname,'ouflxsfc',trange,'',jrange,... 70 i1min,i1max,i2min,i2max,i3min,i3max); 71 tx(abs(tx)>=missvalue)=NaN; 72 73 56 74 %disp('skt...') 57 75 skt=mask.*getdap('',fname,'tmpsfc',trange,'',jrange,... 58 76 i1min,i1max,i2min,i2max,i3min,i3max); 59 77 skt(abs(skt)>=missvalue)=NaN; 78 60 79 %disp('tair...') 61 80 tair=mask.*getdap('',fname,'tmp2m',trange,'',jrange,... 62 81 i1min,i1max,i2min,i2max,i3min,i3max); 63 82 tair(abs(tair)>=missvalue)=NaN; 83 64 84 %disp('rhum...') 65 85 rhum=mask.*getdap('',fname,'rh2m',trange,'',jrange,... 66 86 i1min,i1max,i2min,i2max,i3min,i3max); 67 87 rhum(abs(rhum)>=missvalue)=NaN; 88 68 89 %disp('prate...') 69 90 prate=mask.*getdap('',fname,'opratesfc',trange,'',jrange,... 70 91 i1min,i1max,i2min,i2max,i3min,i3max); 71 92 prate(abs(prate)>=missvalue)=NaN; 72 %disp('radlw...') 73 radlw=mask.*getdap('',fname,'odlwrfsfc',trange,'',jrange,... 93 94 %disp('down radlw...') 95 dradlw=mask.*getdap('',fname,'odlwrfsfc',trange,'',jrange,... 74 96 i1min,i1max,i2min,i2max,i3min,i3max); 75 radlw(abs(radlw)>=missvalue)=NaN; 76 %disp('radsw...') 77 radsw=mask.*getdap('',fname,'odswrfsfc',trange,'',jrange,... 97 dradlw(abs(dradlw)>=missvalue)=NaN; 98 99 %disp('up radlw...') 100 uradlw=mask.*getdap('',fname,'oulwrfsfc',trange,'',jrange,... 78 101 i1min,i1max,i2min,i2max,i3min,i3max); 79 radsw(abs(radsw)>=missvalue)=NaN; 102 uradlw(abs(uradlw)>=missvalue)=NaN; 103 104 %disp('down radsw...') 105 dradsw=mask.*getdap('',fname,'odswrfsfc',trange,'',jrange,... 106 i1min,i1max,i2min,i2max,i3min,i3max); 107 dradsw(abs(dradsw)>=missvalue)=NaN; 108 109 %disp('up radsw...') 110 uradsw=mask.*getdap('',fname,'ouswrfsfc',trange,'',jrange,... 111 i1min,i1max,i2min,i2max,i3min,i3max); 112 uradsw(abs(uradsw)>=missvalue)=NaN; 80 113 % 81 114 % Transform the variables … … 99 132 % ?? albedo ?? 100 133 % 134 radsw=dradsw - uradsw; 101 135 radsw(radsw<1.e-10)=0; 102 136 % … … 107 141 % skin temperature. 108 142 % 109 skt=skt-273.15; 110 radlw=-lwhf(skt,radlw); 143 %skt=skt-273.15; 144 %radlw=-lwhf(skt,radlw); 145 radlw = uradlw - dradlw; 146 radlw_in=dradlw; 147 111 148 % 112 149 % 6: Wind speed 113 150 % 114 151 wspd=sqrt(u.^2+v.^2); 115 % 116 % 7: Compute the stress following large and pond 117 % 118 [Cd,uu]=cdnlp(wspd,10.); 119 rhoa=air_dens(tair,rhum*100); 120 tx=Cd.*rhoa.*u.*wspd; 121 ty=Cd.*rhoa.*v.*wspd; 152 % 7: Wind vectors 153 uwnd=u; % rho point 154 vwnd=v; % rho point 155 % % 156 % % 7: Compute the stress following large and pond 157 % % 158 % [Cd,uu]=cdnlp(wspd,10.); 159 % rhoa=air_dens(tair,rhum*100); 160 % tx=Cd.*rhoa.*u.*wspd; 161 % ty=Cd.*rhoa.*v.*wspd; 122 162 % 123 163 return -
Roms_tools/Forecast_tools/get_GFS_fname.m
r1 r8 34 34 % 35 35 %url='http://nomads6.ncdc.noaa.gov:9090'; 36 %url='http://nomad 3.ncep.noaa.gov:9090';36 %url='http://nomad5.ncep.noaa.gov:9090'; 37 37 url='http://nomad1.ncep.noaa.gov:9090'; 38 38 if gfstype==0 … … 40 40 gfsname1='gdas'; 41 41 else 42 %========nomad1=========== 42 43 gfsname='gfs_master/gfs'; 43 44 gfsname1='gfs_master'; 45 %========nomad5=========== 46 % gfsname='gfs/gfs'; 47 % gfsname1='gfs'; 44 48 end 45 49 % -
Roms_tools/Forecast_tools/make_GFS.m
r1 r8 131 131 % nc_frc{'svstr'}(l,:,:)=0; 132 132 % end 133 %134 %135 133 % Loop on time 136 134 % … … 139 137 for l=1:tlen 140 138 disp(['time index: ',num2str(l),' of total: ',num2str(tlen)]) 141 142 139 var=squeeze(nc{'tair'}(l,:,:)); 143 140 if mean(mean(isnan(var)~=1)) … … 151 148 152 149 var=squeeze(nc{'rhum'}(l,:,:)); 153 154 150 if mean(mean(isnan(var)~=1)) 155 151 var=get_missing_val(lon1,lat1,var,missval,Roa,default); … … 181 177 end 182 178 179 %Zonal wind speed 180 var=squeeze(nc{'uwnd'}(l,:,:)); 181 if mean(mean(isnan(var)~=1)) 182 uwnd=get_missing_val(lon1,lat1,var,missval,Roa,default); 183 uwnd=interp2(lon1,lat1,uwnd,lon,lat,interp_method); 184 else 185 var=squeeze(nc{'uwnd'}(l-1,:,:)); 186 uwnd=get_missing_val(lon1,lat1,uwnd,missval,Roa,default); 187 uwnd=interp2(lon1,lat1,uwnd,lon,lat,interp_method); 188 end 189 190 %Meridian wind speed 191 var=squeeze(nc{'vwnd'}(l,:,:)); 192 if mean(mean(isnan(var)~=1)) 193 vwnd=get_missing_val(lon1,lat1,var,missval,Roa,default); 194 vwnd=interp2(lon1,lat1,vwnd,lon,lat,interp_method); 195 else 196 var=squeeze(nc{'vwnd'}(l-1,:,:)); 197 vwnd=get_missing_val(lon1,lat1,var,missval,Roa,default); 198 vwnd=interp2(lon1,lat1,vwnd,lon,lat,interp_method); 199 end 200 201 nc_frc{'uwnd'}(l,:,:)=rho2u_2d(uwnd.*cosa+vwnd.*sina); 202 nc_frc{'vwnd'}(l,:,:)=rho2v_2d(vwnd.*cosa-uwnd.*sina); 203 204 nc_blk{'uwnd'}(l,:,:)=rho2u_2d(uwnd.*cosa+vwnd.*sina); 205 nc_blk{'vwnd'}(l,:,:)=rho2v_2d(vwnd.*cosa-uwnd.*sina); 206 207 208 %Net longwave flux 183 209 var=squeeze(nc{'radlw'}(l,:,:)); 184 210 if mean(mean(isnan(var)~=1)) … … 191 217 end 192 218 219 %Downward longwave flux 220 var=squeeze(nc{'radlw_in'}(l,:,:)); 221 if mean(mean(isnan(var)~=1)) 222 var=get_missing_val(lon1,lat1,var,missval,Roa,default); 223 nc_blk{'radlw_in'}(l,:,:)=interp2(lon1,lat1,var,lon,lat,interp_method); 224 else 225 var=squeeze(nc{'radlw_in'}(l-1,:,:)); 226 var=get_missing_val(lon1,lat1,var,missval,Roa,default); 227 nc_blk{'radlw_in'}(l,:,:)=interp2(lon1,lat1,var,lon,lat,interp_method); 228 end 229 230 %Net solar short wave radiation 193 231 var=squeeze(nc{'radsw'}(l,:,:)); 194 232 if mean(mean(isnan(var)~=1)) … … 200 238 nc_blk{'radsw'}(l,:,:)=interp2(lon1,lat1,var,lon,lat,interp_method); 201 239 end 240 202 241 var=squeeze(nc{'tx'}(l,:,:)); 203 242 if mean(mean(isnan(var)~=1)) … … 219 258 ty=interp2(lon1,lat1,ty,lon,lat,interp_method); 220 259 end 260 221 261 nc_frc{'sustr'}(l,:,:)=rho2u_2d(tx.*cosa+ty.*sina); 222 262 nc_frc{'svstr'}(l,:,:)=rho2v_2d(ty.*cosa-tx.*sina); 263 264 nc_blk{'sustr'}(l,:,:)=rho2u_2d(tx.*cosa+ty.*sina); 265 nc_blk{'svstr'}(l,:,:)=rho2v_2d(ty.*cosa-tx.*sina); 223 266 end 224 267 % … … 243 286 test_forcing(blkname,grdname,'radlw',slides,3,coastfileplot) 244 287 figure 288 test_forcing(blkname,grdname,'radlw_in',slides,3,coastfileplot) 289 figure 290 test_forcing(blkname,grdname,'sustr',slides,3,coastfileplot) 291 figure 292 test_forcing(blkname,grdname,'svstr',slides,3,coastfileplot) 293 figure 245 294 test_forcing(blkname,grdname,'radsw',slides,3,coastfileplot) 246 295 end -
Roms_tools/Forecast_tools/make_OGCM_frcst.m
r1 r8 49 49 clm_prefix = [ROMS_files_dir,'roms_clm_',OGCM,'_']; % generic climatology file name 50 50 ini_prefix = [ROMS_files_dir,'roms_ini_',OGCM,'_']; % generic initial file name 51 FRCST_prefix = [OGCM,'_']; % generic OGCM file name51 FRCST_prefix = [OGCM,'_']; % generic OGCM file name 52 52 % 53 53 % … … 58 58 % Kalman filter 59 59 % 60 url = 'http://ecco.jpl.nasa.gov/cgi-bin/nph-dods/datasets/kf066b/kf066b_'; 60 %%url = 'http://ecco.jpl.nasa.gov/cgi-bin/nph-dods/datasets/kf066b/kf066b_'; 61 url = 'http://ecco.jpl.nasa.gov/thredds/dodsC/las/kf080/kf080_'; 61 62 % 62 63 elseif strcmp(OGCM,'mercator') … … 66 67 % login/password can be entered here or in romstools params 67 68 % and should be asked to the MERCATOR team 68 % 69 %url=['http://',login,':',password,'@opendap.mercator-ocean.fr/thredds/dodsC/mercatorPsy3v1R1v_glo_mean_best_estimate'];69 % 70 % url=['http://',login,':',password,'@opendap.mercator-ocean.fr/thredds/dodsC/mercatorPsy3v1R1v_glo_mean_best_estimate']; 70 71 url=['http://',login,':',password,'@opendap.mercator-ocean.fr/thredds/dodsC/mercatorPsy3v2_glo_mean_best_estimate']; 71 72 % -
Roms_tools/Forecast_tools/write_GFS.m
r1 r8 1 function write_GFS(fname,Yorig,lon,lat,mask,time,tx,ty,tair,rhum,prate,wspd, radlw,radsw)1 function write_GFS(fname,Yorig,lon,lat,mask,time,tx,ty,tair,rhum,prate,wspd,uwnd,vwnd,radlw,radlw_in,radsw) 2 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3 3 % … … 39 39 nc('lon') = length(lon); 40 40 nc('lat') = length(lat); 41 % 42 % nc('latu') = length(lat); 43 % nc('latv') = length(lat)-1; 44 % nc('lonu') = length(lon)-1; 45 % nc('lonv') = length(lon); 46 % 41 47 nc('time') = length(time); 42 48 % … … 69 75 nc{'radlw'} = ncfloat('time','lat','lon'); 70 76 nc{'radsw'} = ncfloat('time','lat','lon'); 77 nc{'radlw_in'} = ncfloat('time','lat','lon'); 78 nc{'uwnd'} = ncfloat('time','lat','lon'); 79 nc{'vwnd'} = ncfloat('time','lat','lon'); 71 80 % 72 81 endef(nc); … … 82 91 nc{'prate'}(:)=prate; 83 92 nc{'wspd'}(:)=wspd; 93 nc{'uwnd'}(:)=uwnd; 94 nc{'vwnd'}(:)=vwnd; 84 95 nc{'radlw'}(:)=radlw; 96 nc{'radlw_in'}(:)=radlw_in; 85 97 nc{'radsw'}(:)=radsw; 86 98 % -
Roms_tools/Nesting_tools/change_sigma.m
r1 r8 63 63 data2d(isbad)=griddata(lon(isgood),lat(isgood),data2d(isgood),... 64 64 lon(isbad),lat(isbad),'nearest'); 65 data_z(k,:,:)=mask.*data2d; 65 % Gc remove the masking because in case of nesting 66 % It introduce some zero value 67 % data_z(k,:,:)=mask.*data2d; 68 data_z(k,:,:)=data2d; 66 69 end 67 70 end -
Roms_tools/Nesting_tools/nested_initial.m
r1 r8 36 36 Varnames = [ncnames(Vars)]; 37 37 nvar=length(Varnames); 38 % 39 38 isbiolfiles=0; 39 ispiscesfiles=0; 40 % 40 41 namebiol={''}; 41 42 unitbiol={''}; 42 43 namepisces={''}; 43 44 unitpisces={''}; 44 %45 46 45 % pisces 47 46 % biol 48 49 if nvar < 17 50 51 elseif ( nvar < 21 & biol) 52 disp('Compute Bio NPZD variables') 53 disp('==================') 54 elseif (pisces & nvar >= 21) 55 disp('Compute Pisces biogeochemical variables') 56 disp('=========================') 57 else 58 error(sprintf(['You don''t have the neccesary variables in the clim file \n',... 59 'or you didn''t choose the right bio. model. \n', ... 60 'Check roms_ini.nc parent file and make_ini.m'])) 61 end 62 % 47 if biol 48 %Name, units etc .. of the variables 49 namebiol={'NO3';'CHLA';'PHYTO';'ZOO'}; 50 unitbiol={'mMol N m-3';'mg C l-1';'mMol N m-3'}; 51 for i=1:length(namebiol) 52 aa=sum(strcmp(Varnames,namebiol(i))); 53 isbiolfiles=isbiolfiles+aa; 54 end 55 if isbiolfiles==length(namebiol) 56 disp('Compute Bio NPZD variables') 57 disp('==================') 58 else 59 disp(sprintf(['ERROR in NPZD Processing : ... \n', ... 60 'You don not have the neccesary variables in the clim file \n',... 61 'or you didn''t choose the right bio. model. \n', ... 62 'Check roms_ini.nc parent file and make_ini.m'])) 63 return 64 end 65 end 66 if pisces 67 namepisces={'NO3';'PO4';'Si';'O2';'DIC';'TALK';'DOC';'FER'}; 68 unitpisces={'mMol N m-3';'mMol P m-3';'mMol Si m-3';'mMol O m-3';'mMol C m-3';'mMol C m-3';'mMol C m-3';'uMol Fe m-3'}; 69 % 70 for i=1:length(namepisces) 71 aa=sum(strcmp(Varnames,namepisces(i))); 72 ispiscesfiles=ispiscesfiles+aa; 73 end 74 if ispiscesfiles==length(namepisces) 75 disp('Compute Pisces biogeochemical variables') 76 disp('==================') 77 else 78 disp(sprintf(['ERROR in PISCES Processing : \n', ... 79 'You don''t have the neccesary variables in the clim file \n',... 80 'or you didn''t choose the right bio. model. \n', ... 81 'Check roms_ini.nc parent file and make_ini.m'])) 82 return 83 end 84 end 63 85 if extrapmask==1 64 86 disp('Extrapolation under mask is on') … … 74 96 error(['Both Biol NPZD and Pisces are ON, not possible yet... !']) 75 97 end 76 % 77 %Name, units etc .. of the variables 78 namebiol={'NO3';'CHLA';'PHYTO'}; 79 unitbiol={'mMol N m-3';'mg C l-1';'mMol N m-3'}; 80 % 81 namepisces={'NO3';'PO4';'Si';'O2';'DIC';'TALK';'DOC';'FER'}; 82 unitpisces={'mMol N m-3';'mMol P m-3';'mMol Si m-3';'mMol O m-3';'mMol C m-3';'mMol C m-3';'mMol C m-3';'uMol Fe m-3'}; 83 % 98 84 99 85 100 % -
Roms_tools/Nesting_tools/nestgui.m
r1 r8 302 302 % Biologie switch 303 303 % 304 function varargout = getbiolbutton_Callback(h, eventdata, handles, varargin) 305 handles.biol=1-handles.biol; 304 function varargout = biol_Callback(h, eventdata, handles, varargin) 305 %handles.biol=1-handles.biol 306 handles=get_biolbutton(h,handles); 306 307 guidata(h,handles) 307 308 return 308 309 % 309 310 % Pisces switch 310 function varargout = getpiscesbutton_Callback(h, eventdata, handles, varargin) 311 handles.pisces=1-handles.pisces; 311 function varargout = pisces_Callback(h, eventdata, handles, varargin) 312 %handles.pisces=1-handles.pisces 313 handles=get_piscesbutton(h,handles); 312 314 guidata(h,handles) 313 315 return -
Roms_tools/Nesting_tools/reset_handle.m
r1 r8 62 62 handles.newtopo=0; 63 63 handles.matchvolume=0; 64 handles.vertical_correc= 0;65 handles.extrapmask= 0;64 handles.vertical_correc=1; 65 handles.extrapmask=1; 66 66 handles.biol=0; 67 67 handles.pisces=0; -
Roms_tools/Oforc_OGCM/Mydata_Specific/get_SODA_subgrid_Mydata.m
r1 r8 57 57 lon=cat(1,lon(i1)-360,lon(i2),lon(i3)+360); 58 58 % 59 % 60 % If we are in OpenDap (Get_My_Data=0) we need 61 % a shift of decal=1 because the indexes begin at 0 in OpenDap. 62 % Here in case of specific data, we don't need a shift 63 % then decal=0; 64 65 decal=0; 66 %decal=1; 67 59 68 if ~isempty(i1) 60 i1min=min(i1)- 1;61 i1max=max(i1)- 1;69 i1min=min(i1)-decal; 70 i1max=max(i1)-decal; 62 71 else 63 72 i1min=[]; … … 65 74 end 66 75 if ~isempty(i2) 67 i2min=min(i2)- 1;68 i2max=max(i2)- 1;76 i2min=min(i2)-decal; 77 i2max=max(i2)-decal; 69 78 else 70 79 i2min=[]; … … 72 81 end 73 82 if ~isempty(i3) 74 i3min=min(i3)- 1;75 i3max=max(i3)- 1;83 i3min=min(i3)-decal; 84 i3max=max(i3)-decal; 76 85 else 77 86 i3min=[]; … … 83 92 j=find(lat>=latmin & lat<=latmax); 84 93 lat=lat(j); 85 jmin=min(j)- 1;86 jmax=max(j)- 1;94 jmin=min(j)-decal; 95 jmax=max(j)-decal; 87 96 jrange=['[',num2str(jmin),':',num2str(jmax),']']; 88 97 % -
Roms_tools/Oforc_OGCM/interp_OGCM.m
r1 r8 2 2 lonU,latU,lonV,latV,lonT,latT,Z,tin,... 3 3 nc_clm,nc_bry,lon,lat,angle,h,tout,obc) 4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 5 5 % 6 6 % 7 7 % Read the local OGCM files and perform the interpolations 8 % 9 % Ok, I am lazy and I did not do something special for the bry files...8 % Adapted for reducing computationnal time for bry file 9 % by S. Illig, IRD-LEGOS 10 10 % 11 11 % … … 55 55 % Interpole data on the OGCM Z grid and ROMS horizontal grid 56 56 % 57 % 58 % Read and extrapole the 2D variables 59 % 57 % Get zeta because it is needed to compute vertical levels of ROMS grid 60 58 zeta=ext_data_OGCM(nc,lonT,latT,'ssh',tin,lon,lat,1,Roa,interp_method); 61 u2d=ext_data_OGCM(nc,lonU,latU,'ubar',tin,lon,lat,1,Roa,interp_method); 62 v2d=ext_data_OGCM(nc,lonV,latV,'vbar',tin,lon,lat,1,Roa,interp_method); 63 ubar=rho2u_2d(u2d.*cosa+v2d.*sina); 64 vbar=rho2v_2d(v2d.*cosa-u2d.*sina); 65 % 66 % Read and extrapole the 3D variables 67 % 68 NZ=length(Z); 69 [M,L]=size(lon); 70 dz=gradient(Z); 71 temp=zeros(NZ,M,L); 72 salt=zeros(NZ,M,L); 73 u=zeros(NZ,M,L-1); 74 v=zeros(NZ,M-1,L); 75 for k=1:NZ 76 if rem(k,10)==0 77 disp([' Level ',num2str(k),' of ',num2str(NZ)]) 78 end 79 u2d=ext_data_OGCM(nc,lonU,latU,'u',tin,lon,lat,... 80 k,Roa,interp_method); 81 v2d=ext_data_OGCM(nc,lonV,latV,'v',tin,lon,lat,... 82 k,Roa,interp_method); 83 u(k,:,:)=rho2u_2d(u2d.*cosa+v2d.*sina); 84 v(k,:,:)=rho2v_2d(v2d.*cosa-u2d.*sina); 85 temp(k,:,:)=ext_data_OGCM(nc,lonT,latT,'temp',tin,lon,lat,... 86 k,Roa,interp_method); 87 salt(k,:,:)=ext_data_OGCM(nc,lonT,latT,'salt',tin,lon,lat,... 88 k,Roa,interp_method); 59 % 60 if ~isempty(nc_clm) 61 % Read and extrapole the 2D variables 62 % 63 u2d=ext_data_OGCM(nc,lonU,latU,'ubar',tin,lon,lat,1,Roa,interp_method); 64 v2d=ext_data_OGCM(nc,lonV,latV,'vbar',tin,lon,lat,1,Roa,interp_method); 65 ubar=rho2u_2d(u2d.*cosa+v2d.*sina); 66 vbar=rho2v_2d(v2d.*cosa-u2d.*sina); 67 % 68 % Read and extrapole the 3D variables 69 NZ=length(Z); 70 [M,L]=size(lon); 71 dz=gradient(Z); 72 temp=zeros(NZ,M,L); 73 salt=zeros(NZ,M,L); 74 u=zeros(NZ,M,L-1); 75 v=zeros(NZ,M-1,L); 76 for k=1:NZ 77 if rem(k,10)==0 78 disp([' Level ',num2str(k),' of ',num2str(NZ)]) 79 end 80 u2d=ext_data_OGCM(nc,lonU,latU,'u',tin,lon,lat,k,Roa,interp_method); 81 v2d=ext_data_OGCM(nc,lonV,latV,'v',tin,lon,lat,k,Roa,interp_method); 82 u(k,:,:)=rho2u_2d(u2d.*cosa+v2d.*sina); 83 v(k,:,:)=rho2v_2d(v2d.*cosa-u2d.*sina); 84 temp(k,:,:)=ext_data_OGCM(nc,lonT,latT,'temp',tin,lon,lat,k,Roa,interp_method); 85 salt(k,:,:)=ext_data_OGCM(nc,lonT,latT,'salt',tin,lon,lat,k,Roa,interp_method); 86 end 87 end 88 % 89 %Initialisation in case of bry files 90 % 91 if ~isempty(nc_bry) 92 NZ=length(Z); 93 [M,L]=size(lon); 94 % Read and extrapole the 2D variables 95 if obc(1)==1 96 zeta_south=squeeze(zeta(1,:)); 97 ubar1d=ext_data_OGCM(nc,lonU,latU,'ubar',tin,squeeze(lon(1:2,:)),squeeze(lat(1:2,:)),1,Roa,interp_method); 98 vbar1d=ext_data_OGCM(nc,lonV,latV,'vbar',tin,squeeze(lon(1:2,:)),squeeze(lat(1:2,:)),1,Roa,interp_method); 99 ubar_south=squeeze(rho2u_2d(ubar1d(1,:).*cosa(1,:)+vbar1d(1,:).*sina(1,:))); 100 vbar_south=squeeze(rho2v_2d(vbar1d.*cosa(1:2,:)-ubar1d.*sina(1:2,:))); 101 end 102 if obc(2)==1 103 zeta_east=squeeze(zeta(:,end)); 104 ubar1d=ext_data_OGCM(nc,lonU,latU,'ubar',tin,squeeze(lon(:,end-1:end)),squeeze(lat(:,end-1:end)),1,Roa,interp_method); 105 vbar1d=ext_data_OGCM(nc,lonV,latV,'vbar',tin,squeeze(lon(:,end-1:end)),squeeze(lat(:,end-1:end)),1,Roa,interp_method); 106 ubar_east=squeeze(rho2u_2d(ubar1d.*cosa(:,end-1:end)+vbar1d.*sina(:,end-1:end))); 107 vbar_east=squeeze(rho2v_2d(vbar1d(:,end).*cosa(:,end)-ubar1d(:,end).*sina(:,end))); 108 end 109 if obc(3)==1 110 zeta_north=squeeze(zeta(end,:)); 111 ubar1d=ext_data_OGCM(nc,lonU,latU,'ubar',tin,squeeze(lon(end-1:end,:)),squeeze(lat(end-1:end,:)),1,Roa,interp_method); 112 vbar1d=ext_data_OGCM(nc,lonV,latV,'vbar',tin,squeeze(lon(end-1:end,:)),squeeze(lat(end-1:end,:)),1,Roa,interp_method); 113 ubar_north=squeeze(rho2u_2d(ubar1d(end,:).*cosa(end,:)+vbar1d(end,:).*sina(end,:))); 114 vbar_north=squeeze(rho2v_2d(vbar1d.*cosa(end-1:end,:)-ubar1d.*sina(end-1:end,:))); 115 end 116 if obc(4)==1 117 zeta_west=squeeze(zeta(:,1)); 118 ubar1d=ext_data_OGCM(nc,lonU,latU,'ubar',tin,squeeze(lon(:,1:2)),squeeze(lat(:,1:2)),1,Roa,interp_method); 119 vbar1d=ext_data_OGCM(nc,lonV,latV,'vbar',tin,squeeze(lon(:,1:2)),squeeze(lat(:,1:2)),1,Roa,interp_method); 120 ubar_west=squeeze(rho2u_2d(ubar1d.*cosa(:,1:2)+vbar1d.*sina(:,1:2))); 121 vbar_west=squeeze(rho2v_2d(vbar1d(:,1).*cosa(:,1)-ubar1d(:,1).*sina(:,1))); 122 end 123 % 124 % Read and extrapole the 3D variables 125 % 126 temp_south=zeros(NZ,L);temp_north=zeros(NZ,L);temp_east=zeros(NZ,M);temp_west=zeros(NZ,M); 127 salt_south=zeros(NZ,L);salt_north=zeros(NZ,L);salt_east=zeros(NZ,M);salt_west=zeros(NZ,M); 128 u_south=zeros(NZ,L-1);u_north=zeros(NZ,L-1);u_east=zeros(NZ,M);u_west=zeros(NZ,M); 129 v_south=zeros(NZ,L);v_north=zeros(NZ,L);v_east=zeros(NZ,M-1);v_west=zeros(NZ,M-1); 130 % 131 temp=zeros(NZ,M,L); 132 % 133 for k=1:NZ 134 if rem(k,10)==0 135 disp([' Level bry ',num2str(k),' of ',num2str(NZ)]) 136 end 137 %temp(k,:,:)=ext_data_OGCM(nc,lonT,latT,'temp',tin,lon,lat,k,Roa,interp_method); 138 if obc(1)==1 % Southern boundary 139 t1d=squeeze(ext_data_OGCM(nc,lonT,latT,'temp',tin,squeeze(lon(1:2,:)),squeeze(lat(1:2,:)),k,Roa,interp_method)); 140 s1d=squeeze(ext_data_OGCM(nc,lonT,latT,'salt',tin,squeeze(lon(1:2,:)),squeeze(lat(1:2,:)),k,Roa,interp_method)); 141 temp_south(k,:)=squeeze(t1d(1,:)); 142 salt_south(k,:)=squeeze(s1d(1,:)); 143 u1d=ext_data_OGCM(nc,lonU,latU,'u',tin,squeeze(lon(1:2,:)),squeeze(lat(1:2,:)),k,Roa,interp_method); 144 v1d=ext_data_OGCM(nc,lonV,latV,'v',tin,squeeze(lon(1:2,:)),squeeze(lat(1:2,:)),k,Roa,interp_method); 145 u_south(k,:)=squeeze(rho2u_2d(u1d(1,:).*cosa(1,:)+v1d(1,:).*sina(1,:))); 146 v_south(k,:)=squeeze(rho2v_2d(v1d.*cosa(1:2,:)-u1d.*sina(1:2,:))); 147 end 148 if obc(2)==1 % Eastern boundary 149 t1d=squeeze(ext_data_OGCM(nc,lonT,latT,'temp',tin,squeeze(lon(:,end-1:end)),squeeze(lat(:,end-1:end)),k,Roa,interp_method)); 150 s1d=squeeze(ext_data_OGCM(nc,lonT,latT,'salt',tin,squeeze(lon(:,end-1:end)),squeeze(lat(:,end-1:end)),k,Roa,interp_method)); 151 temp_east(k,:)=squeeze(t1d(:,end)); 152 salt_east(k,:)=squeeze(s1d(:,end)); 153 u1d=ext_data_OGCM(nc,lonU,latU,'u',tin,squeeze(lon(:,end-1:end)),squeeze(lat(:,end-1:end)),k,Roa,interp_method); 154 v1d=ext_data_OGCM(nc,lonV,latV,'v',tin,squeeze(lon(:,end-1:end)),squeeze(lat(:,end-1:end)),k,Roa,interp_method); 155 u_east(k,:)=squeeze(rho2u_2d(u1d.*cosa(:,end-1:end)+v1d.*sina(:,end-1:end))); 156 v_east(k,:)=squeeze(rho2v_2d(v1d(:,end).*cosa(:,end)-u1d(:,end).*sina(:,end))); 157 end 158 if obc(3)==1 % Northern boundary 159 t1d=squeeze(ext_data_OGCM(nc,lonT,latT,'temp',tin,squeeze(lon(end-1:end,:)),squeeze(lat(end-1:end,:)),k,Roa,interp_method)); 160 s1d=squeeze(ext_data_OGCM(nc,lonT,latT,'salt',tin,squeeze(lon(end-1:end,:)),squeeze(lat(end-1:end,:)),k,Roa,interp_method)); 161 temp_north(k,:)=squeeze(t1d(end,:)); 162 salt_north(k,:)=squeeze(s1d(end,:)); 163 u1d=ext_data_OGCM(nc,lonU,latU,'u',tin,squeeze(lon(end-1:end,:)),squeeze(lat(end-1:end,:)),k,Roa,interp_method); 164 v1d=ext_data_OGCM(nc,lonV,latV,'v',tin,squeeze(lon(end-1:end,:)),squeeze(lat(end-1:end,:)),k,Roa,interp_method); 165 u_north(k,:)=squeeze(rho2u_2d(u1d(end,:).*cosa(end,:)+v1d(end,:).*sina(end,:))); 166 v_north(k,:)=squeeze(rho2v_2d(v1d.*cosa(end-1:end,:)-u1d.*sina(end-1:end,:))); 167 end 168 if obc(4)==1 % Western boundary 169 t1d=squeeze(ext_data_OGCM(nc,lonT,latT,'temp',tin,squeeze(lon(:,1:2)),squeeze(lat(:,1:2)),k,Roa,interp_method)); 170 s1d=squeeze(ext_data_OGCM(nc,lonT,latT,'salt',tin,squeeze(lon(:,1:2)),squeeze(lat(:,1:2)),k,Roa,interp_method)); 171 temp_west(k,:)=squeeze(t1d(:,1)); 172 salt_west(k,:)=squeeze(s1d(:,1)); 173 u1d=ext_data_OGCM(nc,lonU,latU,'u',tin,squeeze(lon(:,1:2)),squeeze(lat(:,1:2)),k,Roa,interp_method); 174 v1d=ext_data_OGCM(nc,lonV,latV,'v',tin,squeeze(lon(:,1:2)),squeeze(lat(:,1:2)),k,Roa,interp_method); 175 u_west(k,:)=squeeze(rho2u_2d(u1d.*cosa(:,1:2)+v1d.*sina(:,1:2))); 176 v_west(k,:)=squeeze(rho2v_2d(v1d(:,1).*cosa(:,1)-u1d(:,1).*sina(:,1))); 177 end 178 end 89 179 end 90 180 % … … 93 183 close(nc) 94 184 % 95 %Initialisation in case of bry files96 %97 if ~isempty(nc_bry)98 if obc(1)==199 zeta_south=squeeze(zeta(1,:));100 ubar_south=squeeze(ubar(1,:));101 vbar_south=squeeze(vbar(1,:));102 u_south=squeeze(u(:,1,:));103 v_south=squeeze(v(:,1,:));104 temp_south=squeeze(temp(:,1,:));105 salt_south=squeeze(salt(:,1,:));106 end107 if obc(2)==1108 zeta_east=squeeze(zeta(:,end));109 ubar_east=squeeze(ubar(:,end));110 vbar_east=squeeze(vbar(:,end));111 u_east=squeeze(u(:,:,end));112 v_east=squeeze(v(:,:,end));113 temp_east=squeeze(temp(:,:,end));114 salt_east=squeeze(salt(:,:,end));115 end116 if obc(3)==1117 zeta_north=squeeze(zeta(end,:));118 ubar_north=squeeze(ubar(end,:));119 vbar_north=squeeze(vbar(end,:));120 u_north=squeeze(u(:,end,:));121 v_north=squeeze(v(:,end,:));122 temp_north=squeeze(temp(:,end,:));123 salt_north=squeeze(salt(:,end,:));124 end125 if obc(4)==1126 zeta_west=squeeze(zeta(:,1));127 ubar_west=squeeze(ubar(:,1));128 vbar_west=squeeze(vbar(:,1));129 u_west=squeeze(u(:,:,1));130 v_west=squeeze(v(:,:,1));131 temp_west=squeeze(temp(:,:,1));132 salt_west=squeeze(salt(:,:,1));133 end134 end135 136 185 % 137 186 % Get the ROMS vertical grid … … 213 262 % 214 263 if ~isempty(nc_bry) 215 %216 %South217 %218 264 if obc(1)==1 219 265 [u_south,v_south,ubar_south,vbar_south,... … … 224 270 N,Z,conserv); 225 271 end 226 if obc(2)==1 272 if obc(2)==1 227 273 [u_east,v_east,ubar_east,vbar_east,... 228 274 temp_east,salt_east]=vinterp_OGCM_bry(zr(:,:,end),zu(:,:,end),zv(:,:,end),... … … 240 286 N,Z,conserv); 241 287 end 242 if obc(4)==1 288 if obc(4)==1 243 289 [u_west,v_west,ubar_west,vbar_west,... 244 290 temp_west,salt_west]=vinterp_OGCM_bry(zr(:,:,1),zu(:,:,1),zv(:,:,1),... -
Roms_tools/Oforc_OGCM/make_OGCM.m
r1 r8 35 35 % 36 36 % Updated 6-Sep-2006 by Pierrick Penven 37 % Update 13 -Sep-2009 by Gildas Cambon 37 % Update 13 -Sep-2009 by Gildas Cambon (IRD) 38 % Update 14 -March-2011 by Gildas Cambon & Serena Illig (IRD) 38 39 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 39 40 %start % to be used in batch mode % … … 72 73 % url = 'http://ecco.jpl.nasa.gov/cgi-bin/nph-dods/datasets/kf049f/kf049f_'; 73 74 % url = 'http://ecco.jpl.nasa.gov/cgi-bin/nph-dods/datasets/kf066b/kf066b_'; 74 url = 'http://ecco.jpl.nasa.gov/thredds/dodsC/las/kf066b/kf066b_';75 % url = 'http://ecco.jpl.nasa.gov/thredds/dodsC/las/kf066b/kf066b_'; 75 76 % url = 'http://ecco.jpl.nasa.gov/thredds/dodsC/las/kf076/kf076_'; 77 url = 'http://ecco.jpl.nasa.gov/thredds/dodsC/las/kf080/kf080_'; 76 78 % 77 79 else
Note: See TracChangeset
for help on using the changeset viewer.