- Timestamp:
- 2011-04-26T10:45:52+02:00 (13 years ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/CONFIG/ORCA2_LIM/IDL_scripts/std_plot_all.pro
r2740 r2751 1 pro std_plots, std_EXP1, std_EXP2, ystart, _extra=ex 2 3 ; scripts for nemo v3_3 4 5 6 PRINT, 'usage: postscript ' 7 PRINT, '========================================================================' 8 PRINT, 'std_plots, ''std_EXP1'', ''std_EXP2'', ystart, /postscript' 9 PRINT, '========================================================================' 10 PRINT, 'std_plots, ''core2000'', ''core2000'', 1991, /postscript' 11 PRINT, '========================================================================' 12 1 pro std_plot_all, doplot = doplot, _extra = ex 13 2 14 3 compile_opt idl2, strictarrsubs 15 4 5 @common 6 @std_common 7 ; scripts for nemo v3_2 and v3_3 8 16 9 PRINT, '' 17 10 PRINT, ' ############################################' … … 21 14 PRINT, ' ############################################' 22 15 PRINT, '' 23 24 25 @common 26 @initorca2 27 @std_com 28 29 year_start = ystart * 10000L + 101L ; year of start (corresponding to filename) 30 year_end = (ystart + 9L) * 10000L + 1231L ; year of end (corresponding to filename) 31 start_end = string(year_start,format= '(I08)')+'_'+string(year_end,format ='(I08)') ; variable string for filename 32 ; std_iodir_data = '/Users/sflod/idl_PLOTS/DATA_STORE/RUN_INTERAN/brodie/' ; path of data in NetCdf format 33 std_iodir_data = '/Users/sflod/idl_PLOTS/DATA_STORE/RUN_CLIMATO/brodie/' ; path of data in NetCdf format 34 std_iodir_climato = '/Users/sflod/idl_PLOTS/CLIMATOLOGIES/' ; path of climatological data 35 std_iodir_mask = '/Users/sflod/idl_PLOTS/MASK/' ; path of mask files (ex: subbasins) 36 37 ;;;;; ==================================================== WARNING ================================================================= ;;;;;;;;;; 38 d1 = (ystart + 9L) * 10000L + 101L ; date to select last record of file with 10 years of record 39 d2 = year_end ; date to select last record of file with 10 years of record 40 id1 = (ystart + 9L) * 10000L + 1201L ; date to select starting date for (monthly) ice output 41 id2 = d2 ; date to select last record for (monthly) ice output 42 id_mars_1 = (ystart + 9L) * 10000L + 301L ; date to select mars ice output 43 id_mars_2 = (ystart + 9L) * 10000L + 331L ; date to select mars ice output 44 id_sept_1 = (ystart + 9L) * 10000L + 901L ; date to select september ice output 45 id_sept_2 = (ystart + 9L) * 10000L + 930L ; date to select september ice output 46 ; 16 ; 17 std_iodir_data = isadirectory(getenv('DIR_DATA'), title = 'path of data in NetCdf format') 18 std_iodir_climato = isadirectory(getenv('DIR_CLIMATO'), title = 'path of climatological data') 19 std_iodir_mask = isadirectory(getenv('DIR_MASK'), title = 'path of mask files (ex: subbasins)') 20 ; meshmask 21 std_file_mesh = isafile(getenv('FILE_MESH_MASK'), title = 'mesh_mask', iodir = std_iodir_mask) 22 std_file_msksub = isafile(getenv('FILE_MASK_SUBDOMAIN'), title = 'sub-bassin masks', iodir = std_iodir_mask) 23 47 24 ; Levitus 98 48 std_file_Levitus_T = 'data_1y_potential_temperature_nomask.nc' 49 std_file_Levitus_S = 'data_1y_salinity_nomask.nc' 50 25 std_file_Levitus_T = isafile(getenv('FILE_TEMP_3D'), title = 'Levitus_T', iodir = std_iodir_climato) 26 std_file_Levitus_S = isafile(getenv('FILE_SAL_3D'), title = 'Levitus_S', iodir = std_iodir_climato) 27 std_file_reynolds = isafile(getenv('FILE_SST'), title = 'Reynolds', iodir = std_iodir_climato) 28 std_file_oaflux = isafile(getenv('FILE_FLUX'), title = 'oaflux', iodir = std_iodir_climato) 29 std_file_mld = isafile(getenv('FILE_MLD'), title = 'Mixed layer depth', iodir = std_iodir_climato) 30 31 IF strlowcase(getenv('FILE_GEOHEAT')) EQ 'no' THEN std_file_geoheat = 'no' $ 32 ELSE std_file_geoheat = isafile(getenv('FILE_GEOHEAT'), title = 'Geothermal heating', iodir = std_iodir_climato) 33 ; 34 allrec = 1 - keyword_set(long(getenv('READ_ONLY_FIRST_RECORD'))) 51 35 ; Output run experience1 52 std_file1_T = std_EXP1+'_'+start_end+'_1Y_grid_T.nc' ; grid T input file 53 std_file1_U = std_EXP1+'_'+start_end+'_1Y_grid_U.nc' ; grid U input file 54 std_file1_V = std_EXP1+'_'+start_end+'_1Y_grid_V.nc' ; grid V input file 55 ; std_file1_W = std_EXP1+'_'+start_end+'_1Y_grid_W.nc' ; grid W input file 56 std_file1_I = std_EXP1+'_'+start_end+'_1M_icemod.nc' ; ice input file 36 std_file1_T = isafile(getenv('FILE1_T'), title = 'exp1 grid T input file', iodir = std_iodir_data) 37 std_file1_U = isafile(getenv('FILE1_U'), title = 'exp1 grid U input file', iodir = std_iodir_data) 38 std_file1_V = isafile(getenv('FILE1_V'), title = 'exp1 grid V input file', iodir = std_iodir_data) 39 std_file1_I = isafile(getenv('FILE1_I'), title = 'exp1 ice input file', iodir = std_iodir_data) 57 40 58 41 ; Output run experience2 59 std_file2_T = std_EXP2+'_'+start_end+'_1Y_grid_T.nc' ; grid T input file60 std_file2_U = std_EXP2+'_'+start_end+'_1Y_grid_U.nc' ; grid U input file61 std_file2_V = std_EXP2+'_'+start_end+'_1Y_grid_V.nc' ; grid V input file62 ; std_file2_W = std_EXP2+'_'+start_end+'_1Y_grid_W.nc' ; grid W 63 std_file2_I = std_EXP2+'_'+start_end+'_1M_icemod.nc' ; ice input file 64 65 66 PRINT, ' '67 PRINT, ' std_ EXP1 : ', std_EXP168 PRINT, ' std_ EXP2 : ', std_EXP269 PRINT, ' std_iodir_data : ', std_iodir_data 70 PRINT, ' std_file 1T : ', std_file1_T71 PRINT, ' std_file 1U : ', std_file1_U72 PRINT, ' std_file 1V : ', std_file1_V73 ; PRINT, ' std_file1W : ', std_file1_W 74 PRINT, ' std_file2I : ', std_file1_I 75 PRINT, ' std_file2 T : ', std_file2_T76 PRINT, ' std_file2U : ', std_file2_U77 PRINT, ' std_file2V : ', std_file2_V 78 ; PRINT, ' std_file2W : ', std_file2_W79 PRINT, ' std_file2I : ', std_file2_I 80 PRINT, '' 81 82 ;######################################################################### 42 std_file2_T = isafile(getenv('FILE2_T'), title = 'exp2 grid T input file', iodir = std_iodir_data) 43 std_file2_U = isafile(getenv('FILE2_U'), title = 'exp2 grid U input file', iodir = std_iodir_data) 44 std_file2_V = isafile(getenv('FILE2_V'), title = 'exp2 grid V input file', iodir = std_iodir_data) 45 std_file2_I = isafile(getenv('FILE2_I'), title = 'exp2 ice input file', iodir = std_iodir_data) 46 47 PRINT, '' 48 PRINT, ' std_iodir_data : ' + std_iodir_data 49 PRINT, ' std_file1T : ' + std_file1_T 50 PRINT, ' std_file1U : ' + std_file1_U 51 PRINT, ' std_file1V : ' + std_file1_V 52 ; PRINT, ' std_file1W : ' + std_file1_W 53 PRINT, ' std_file2I : ' + std_file1_I 54 PRINT, ' std_file2T : ' + std_file2_T 55 PRINT, ' std_file2U : ' + std_file2_U 56 PRINT, ' std_file2V : ' + std_file2_V 57 ; PRINT, ' std_file2W : ' + std_file2_W 58 PRINT, ' std_file2I : ' + std_file2_I 59 PRINT, '' 60 61 ;######################################################################### 62 ;########################## Load Grids ################################ 63 ;######################################################################### 64 ; load the grid 65 load_orca, std_file_mesh 83 66 ; reading variables 84 67 masknp = read_ncdf('tmaskutil', file = std_file_mesh, /nostruct, /cont_nofill) 68 ;######################################################################### 69 ;############################ Read Data ################################ 70 ;######################################################################### 71 ; 72 allrec = 1; - keyword_set(long(getenv('READ_ONLY_FIRST_RECORD'))) 73 ; 85 74 ;;; 3D ;;; 86 75 ; temperature 87 T1 = read_ncdf('thetao', d1, d2, filename = std_iodir_data+std_file1_T)88 T2 = read_ncdf('thetao', d1, d2, filename = std_iodir_data+std_file2_T )89 TLev = read_ncdf('votemper', filename = std_iodir_climato+std_file_Levitus_T)90 TRey = read_ncdf('sst' , filename = std_iodir_climato+'NewREY_ORCA2_1991_2000_1y.nc' )91 92 help,T1,T2,TLev,TRey 76 T1 = read_ncdf(getenv('VAR1_T'), allrecords = allrec, direc = 't', filename = std_file1_T ) 77 IF std_file2_T NE std_file1_T THEN BEGIN 78 T2 = read_ncdf(getenv('VAR2_T'), allrecords = allrec, direc = 't', filename = std_file2_T ) 79 ENDIF ELSE T2 = {arr:-1} 80 TLev = read_ncdf(getenv('VAR_TEMP_3D'), filename = std_file_Levitus_T ) 81 TRey = read_ncdf(getenv('VAR_SST'), filename = std_file_reynolds ) 93 82 94 83 ; salinity 95 S1 = read_ncdf('so', d1, d2, filename = std_iodir_data+std_file1_T ) 96 S2 = read_ncdf('so', d1, d2, filename = std_iodir_data+std_file2_T ) 97 SLev = read_ncdf('vosaline', filename = std_iodir_climato+std_file_Levitus_S ) 98 84 S1 = read_ncdf(getenv('VAR1_S'), allrecords = allrec, direc = 't', filename = std_file1_T ) 85 IF std_file2_T NE std_file1_T THEN BEGIN 86 S2 = read_ncdf(getenv('VAR2_S'), allrecords = allrec, direc = 't', filename = std_file2_T ) 87 ENDIF ELSE S2 = {arr:-1} 88 SLev = read_ncdf(getenv('VAR_SAL_3D'), filename = std_file_Levitus_S ) 89 90 ;;; 2D ;;; 99 91 ; Net Downward heat flux 100 Q1 = read_ncdf('qt', d1, d2, filename = std_iodir_data+std_file1_T ) 101 Q2 = read_ncdf('qt', d1, d2, filename = std_iodir_data+std_file2_T ) 102 geo = read_ncdf('heatflow', filename= std_iodir_climato+'geothermal_heating.nc' ) 103 geo = geo.arr*1.e-3 ; convert into W/m2 104 92 Q1 = read_ncdf(getenv('VAR1_QNET'), allrecords = allrec, direc = 't', filename = std_file1_T ) 93 IF std_file2_T NE std_file1_T THEN BEGIN 94 Q2 = read_ncdf(getenv('VAR2_QNET'), allrecords = allrec, direc = 't', filename = std_file2_T ) 95 ENDIF ELSE Q2 = {arr:-1} 96 ; Geothermal heating 97 IF std_file_geoheat EQ 'no' THEN geo = {arr:float(getenv('VAR_GEOHEAT'))} $ 98 ELSE geo = read_ncdf(getenv('VAR_GEOHEAT'), filename = std_file_geoheat ) 99 geo = geo.arr*1.e-3 ; convert into W/m2 105 100 ;climatology 106 QNET = read_ncdf('qnet', filename = std_iodir_climato+'OAFlux_1my_01_12_1984_2004_orca2_qnet.nc')101 QNET = read_ncdf(getenv('VAR_FLUX'), filename = std_file_oaflux ) 107 102 108 103 ; erp (evaporation damping) 109 ERP1 = read_ncdf('wfcorr', d1, d2, filename = std_iodir_data+std_file1_T ) 110 ERP2 = read_ncdf('wfcorr', d1, d2, filename = std_iodir_data+std_file2_T ) 111 ERP1 = ERP1.arr * 86400 112 ERP2 = ERP2.arr * 86400 104 ERP1 = read_ncdf(getenv('VAR1_ERP'), allrecords = allrec, direc = 't', filename = std_file1_T ) 105 ERP1 = {arr:ERP1.arr * 86400., unit:'mm/day', grid:'T'} 106 IF std_file2_T NE std_file1_T THEN BEGIN 107 ERP2 = read_ncdf(getenv('VAR2_ERP'), allrecords = allrec, direc = 't', filename = std_file2_T ) 108 ERP2 = {arr:ERP2.arr * 86400., unit:'mm/day', grid:'T'} 109 ENDIF ELSE ERP2 = {arr:-1} 113 110 114 111 ; emp (evaporation minus precipitation) 115 EMP1 = read_ncdf('wfo', d1, d2, filename = std_iodir_data+std_file1_T ) 116 EMP2 = read_ncdf('wfo', d1, d2, filename = std_iodir_data+std_file2_T ) 117 EMP1 = EMP1.arr * 86400 118 EMP2 = EMP2.arr * 86400 112 EMP1 = read_ncdf(getenv('VAR1_EMP'), allrecords = allrec, direc = 't', filename = std_file1_T ) 113 EMP1 = {arr:EMP1.arr * 86400., unit:'mm/day', grid:'T'} 114 IF std_file2_T NE std_file1_T THEN BEGIN 115 EMP2 = read_ncdf(getenv('VAR2_EMP'), allrecords = allrec, direc = 't', filename = std_file2_T ) 116 EMP2 = {arr:EMP2.arr * 86400., unit:'mm/day', grid:'T'} 117 ENDIF ELSE EMP2 = {arr:-1} 118 119 ;mixed layer depth 120 MLD1 = read_ncdf(getenv('VAR1_MLD'), allrecords = allrec, direc = 't', filename = std_file1_T ) ; 10 m 121 IF std_file2_T NE std_file1_T THEN BEGIN 122 MLD2 = read_ncdf(getenv('VAR2_MLD'), allrecords = allrec, direc = 't', filename = std_file2_T ) ; 10 m 123 ENDIF ELSE MLD2 = {arr:-1} 124 ;climatology 125 MLD = read_ncdf(getenv('VAR_MLD'), filename = std_file_mld ) 126 127 ; velocities 128 U1 = read_ncdf(getenv('VAR1_U'), allrecords = allrec, direc = 't', filename = std_file1_U ) 129 IF strlowcase(getenv('VAR1_U')) EQ 'uocetr_eff' THEN BEGIN 130 U1.arr = U1.arr / e3u_3d(/e2) * umask() 131 U1.unit = 'm/s' 132 ENDIF 133 IF std_file2_U NE std_file1_U THEN BEGIN 134 U2 = read_ncdf(getenv('VAR2_U'), allrecords = allrec, direc = 't', filename = std_file2_U ) 135 IF strlowcase(getenv('VAR2_U')) EQ 'uocetr_eff' THEN BEGIN 136 U2.arr = U2.arr / e3u_3d(/e2) * umask() 137 U2.unit = 'm/s' 138 ENDIF 139 ENDIF ELSE U2 = {arr:-1} 140 ; 141 V1 = read_ncdf(getenv('VAR1_V'), allrecords = allrec, direc = 't', filename = std_file1_V ) 142 IF strlowcase(getenv('VAR1_V')) EQ 'vocetr_eff' THEN BEGIN 143 V1.arr = V1.arr / e3v_3d(/e1) * vmask() 144 V1.unit = 'm/s' 145 ENDIF 146 IF std_file2_V NE std_file1_V THEN BEGIN 147 V2 = read_ncdf(getenv('VAR2_V'), allrecords = allrec, direc = 't', filename = std_file2_V ) 148 IF strlowcase(getenv('VAR2_V')) EQ 'vocetr_eff' THEN BEGIN 149 V2.arr = V2.arr / e3v_3d(/e1) * vmask() 150 V2.unit = 'm/s' 151 ENDIF 152 ENDIF ELSE V2 = {arr:-1} 153 154 ; ice 155 Ithi_1 = read_ncdf(getenv('VAR1_Ithick'), allrecords = allrec, filename = std_file1_I ) 156 caldat, time, mm 157 march = where(mm EQ 3, cnt) 158 Ithi_march_1 = {arr:1./float(cnt) * total(Ithi_1.arr[*, *, temporary(march)], 3), unit:Ithi_1.unit} 159 sept = where(mm EQ 3, cnt) 160 Ithi_sept_1 = {arr:1./float(cnt) * total(Ithi_1.arr[*, *, temporary(sept)], 3), unit:Ithi_1.unit} 161 undefine, Ithi_1 162 ; 163 IF std_file2_I NE std_file1_I THEN BEGIN 164 Ithi_2 = read_ncdf(getenv('VAR2_Ithick'), allrecords = allrec, filename = std_file2_I ) 165 caldat, time, mm 166 march = where(mm EQ 3, cnt) 167 Ithi_march_2 = {arr:1./float(cnt) * total(Ithi_2.arr[*, *, temporary(march)], 3), unit:Ithi_2.unit} 168 sept = where(mm EQ 3, cnt) 169 Ithi_sept_2 = {arr:1./float(cnt) * total(Ithi_2.arr[*, *, temporary(sept)], 3), unit:Ithi_2.unit} 170 undefine, Ithi_2 171 ENDIF ELSE BEGIN 172 Ithi_march_2 = {arr:-1} 173 Ithi_sept_2 = {arr:-1} 174 ENDELSE 175 ; 176 Ifra_1 = read_ncdf(getenv('VAR1_Ifrac'), allrecords = allrec, filename = std_file1_I ) 177 caldat, time, mm 178 march = where(mm EQ 3, cnt) 179 Ifra_march_1 = {arr:1./float(cnt) * total(Ifra_1.arr[*, *, temporary(march)], 3), unit:Ifra_1.unit} 180 sept = where(mm EQ 9, cnt) 181 Ifra_sept_1 = {arr:1./float(cnt) * total(Ifra_1.arr[*, *, temporary(sept)], 3), unit:Ifra_1.unit} 182 undefine, Ifra_1 183 ; 184 IF std_file2_I NE std_file1_I THEN BEGIN 185 Ifra_2 = read_ncdf(getenv('VAR2_Ifrac'), allrecords = allrec, filename = std_file2_I ) 186 caldat, time, mm 187 march = where(mm EQ 3, cnt) 188 Ifra_march_2 = {arr:1./float(cnt) * total(Ifra_2.arr[*, *, temporary(march)], 3), unit:Ifra_2.unit} 189 sept = where(mm EQ 9, cnt) 190 Ifra_sept_2 = {arr:1./float(cnt) * total(Ifra_2.arr[*, *, temporary(sept)], 3), unit:Ifra_2.unit} 191 undefine, Ifra_2 192 ENDIF ELSE BEGIN 193 Ifra_march_2 = {arr:-1} 194 Ifra_sept_2 = {arr:-1} 195 ENDELSE 196 ; 197 jpt = 1 198 ; 199 ; shorter file names for legends... 200 ; 201 std_file1_T = file_basename(std_file1_T,'.nc') 202 std_file1_T = (strsplit(std_file1_T,'_grid_T',/extract,/regex))[0] 203 std_file2_T = file_basename(std_file2_T,'.nc') 204 std_file2_T = (strsplit(std_file2_T,'_grid_T',/extract,/regex))[0] 205 std_file1_U = file_basename(std_file1_U,'.nc') 206 std_file1_U = (strsplit(std_file1_U,'_grid_U',/extract,/regex))[0] 207 std_file2_U = file_basename(std_file2_U,'.nc') 208 std_file2_U = (strsplit(std_file2_U,'_grid_U',/extract,/regex))[0] 209 std_file1_V = file_basename(std_file1_V,'.nc') 210 std_file1_V = (strsplit(std_file1_V,'_grid_V',/extract,/regex))[0] 211 std_file2_V = file_basename(std_file2_V,'.nc') 212 std_file2_V = (strsplit(std_file2_V,'_grid_V',/extract,/regex))[0] 213 std_file1_I = file_basename(std_file1_I,'.nc') 214 std_file1_I = (strsplit(std_file1_I,'_icemod',/extract,/regex))[0] 215 std_file2_I = file_basename(std_file2_I,'.nc') 216 std_file2_I = (strsplit(std_file2_I,'_icemod',/extract,/regex))[0] 217 218 ;######################################################################### 219 ;###################### STANDARD PLOTS ################################ 220 ;######################################################################### 221 222 IF keyword_set(doplot) EQ 0 THEN doplot = 0 223 224 ; fixed color tabled 225 lct, 64 226 cnt = 0 227 htmltxt = '' 228 ; 229 cnt = cnt+1 & blabla = 'Erp salinity damping term' 230 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_erp, ERP1, ERP2, _extra = ex 231 232 cnt = cnt+1 & blabla = 'Evaporation - Precipitation - Runoff term' 233 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_emp, EMP1, EMP2, _extra = ex 234 235 cnt = cnt+1 & blabla = 'Net heat flux' 236 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_qnet, Q1, Q2, QNET, _extra = ex 237 238 cnt = cnt+1 & blabla = 'Meridionnal Heat Transport' 239 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_mht, Q1.arr+geo, Q2.arr+geo, masknp, std_file_msksub, _extra = ex 240 241 cnt = cnt+1 & blabla = 'Global Barotropic stream Function' 242 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_bsf, U1, U2, _extra = ex 243 244 cnt = cnt+1 & blabla = 'mean Temperature diff with New Reynolds' 245 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_sst, T1, T2, TRey, _extra = ex 246 247 cnt = cnt+1 & blabla = 'mean Salinity diff with Levitus' 248 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_sss, S1, S2, SLev, _extra = ex 249 250 cnt = cnt+1 & blabla = 'Arctic mean Salinity diff with Levitus' 251 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_ArcSal, S1, SLev, _extra = ex 252 253 cnt = cnt+1 & blabla = 'Arctic mean Salinity diff with Levitus and exp2' 254 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_ArcSal, S1, S2, SLev, _extra = ex 255 256 cnt = cnt+1 & blabla = 'Arctic mean Salinity diff with Levitus at z=100 meters' 257 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_ArcSal, S1, SLev, /z100, _extra = ex 119 258 120 ;mixed layer depth 121 MXL1 = read_ncdf('mldr10_1', d1, d2, filename = std_iodir_data+std_file1_T ) ; 10 m 122 MXL2 = read_ncdf('mldr10_1', d1, d2, filename = std_iodir_data+std_file2_T ) ; 10 m 123 ;climatology 124 MLD = read_ncdf('mld', filename = std_iodir_climato+'mld_DR003_c1m_ORCA2_1y.nc' ) 125 126 ; velocities 127 U1 = read_ncdf('uocetr_eff', d1, d2, filename = std_iodir_data+std_file1_U ) 128 U2 = read_ncdf('uocetr_eff', d1, d2, filename = std_iodir_data+std_file2_U ) 129 e23 = e3u_3d(/e2) 130 e23 = e23[*]#replicate(1., jpt) 131 U1.arr = U1.arr /e23 132 U2.arr = U2.arr /temporary(e23) 133 U1.unit = 'm/s' 134 U2.unit = 'm/s' 135 ; 136 V1 = read_ncdf('vocetr_eff', d1, d2, filename = std_iodir_data+std_file1_V ) 137 V2 = read_ncdf('vocetr_eff', d1, d2, filename = std_iodir_data+std_file2_V ) 138 e13 = e3u_3d(/e1) 139 e13 = e13[*]#replicate(1., jpt) 140 V1.arr = V1.arr /e13 141 V2.arr = V2.arr /temporary(e13) 142 V1.unit = 'm/s' 143 V2.unit = 'm/s' 144 145 ; Take into account the Gent & McWilliams "Eddy Induced velocity" 146 ; Veiv1 = read_ncdf('vomeeivv', filename = std_iodir_data+std_file2_V ) 147 ; Veiv2 = read_ncdf('vomeeivv', filename = std_iodir_data+std_file2_V ) 148 149 ; ice 150 Ithi_mars_1 = read_ncdf('sit', id_mars_1, id_mars_2, filename = std_iodir_data+std_file1_I ) 151 Ithi_mars_2 = read_ncdf('sit', id_mars_1, id_mars_2, filename = std_iodir_data+std_file2_I ) 152 153 Ithi_sept_1 = read_ncdf('sit', id_sept_1, id_sept_2, filename = std_iodir_data+std_file1_I ) 154 Ithi_sept_2 = read_ncdf('sit', id_sept_1, id_sept_2, filename = std_iodir_data+std_file2_I ) 155 156 Ifra_mars_1 = read_ncdf('sic', id_mars_1, id_mars_2, filename = std_iodir_data+std_file1_I ) 157 Ifra_mars_2 = read_ncdf('sic', id_mars_1, id_mars_2, filename = std_iodir_data+std_file2_I ) 158 159 Ifra_sept_1 = read_ncdf('sic', id_sept_1, id_sept_2, filename = std_iodir_data+std_file1_I ) 160 Ifra_sept_2 = read_ncdf('sic', id_sept_1, id_sept_2, filename = std_iodir_data+std_file2_I ) 161 162 163 ;######################################################################### 164 165 ;######################################################################### 166 ;###################### STANDARD PLOTS ################################ 167 ;######################################################################### 168 169 ; fixed color tabled 170 lct,64 171 172 PRINT, ' ' 173 PRINT, ' Experience treated:', std_EXP1 174 PRINT, ' ' 175 PRINT, ' ' 176 PRINT, ' ' 177 178 ;;;;;;;; ErP & Emp salinity damping term 179 ;;;;;;;; ============================================= 180 PRINT, '============================================= ' 181 PRINT, ' PLOTS 2D ' 182 PRINT, '============================================= ' 183 PRINT, ' ErP salinity damping term' 184 PRINT, '1' 185 xxx_Erp, ERP1, ERP2, std_EXP1, std_EXP2, start_end, _extra = ex 186 PRINT, '2' 187 xxx_Emp, EMP1, EMP2, std_EXP1, std_EXP2, start_end, _extra = ex 188 189 ;;;;; Net heat flux 190 ;;;;; ============= 191 PRINT, ' ' 192 PRINT, ' Net heat flux' 193 PRINT, '3 ' 194 xxx_Qnet, Q1, Q2, QNET, std_EXP1, std_EXP2, start_end, _extra = ex 195 196 ;;; Meridionnal Heat Transport 197 ;;; =========================== 198 PRINT, ' ' 199 PRINT, ' Meridionnal Heat Transport' 200 PRINT, '4 ' 201 fig_ht_fromQ, Q1.arr+geo, Q2.arr+geo, std_EXP1, std_EXP2, start_end, MASK_FILENAME = std_iodir_mask+'subbasins_orca21_nored.nc', _extra = ex 202 203 ;;; Global Barotropic Function 204 ;;; =========================== 205 PRINT, ' ' 206 PRINT, ' Global Barotropic Function ' 207 PRINT, '5 ' 208 plt_bsf, U1, U2, std_EXP1, std_EXP2, start_end, _extra=ex 209 210 ;; mean Temperature diff with New Reynolds 211 ;; ======================================= 212 PRINT, ' ' 213 PRINT, ' mean Temperature diff with New Reynolds' 214 PRINT, '6 ' 215 xxx_SST, T1[*,*,0], T2[*,*,0], TRey, std_EXP1, std_EXP2, start_end, _extra=ex 216 217 218 ;;;; mean Salinity diff with Levitus 219 ;;;; =============================== 220 PRINT, ' ' 221 PRINT, ' mean Salinity diff with Levitus' 222 PRINT, '7 ' 223 xxx_SSS, S1[*,*,0], S2[*,*,0], SLev[*,*,0], std_EXP1, std_EXP2, start_end, _extra=ex 224 225 ;;;;;;; Arctic mean Salinity diff with Levitus at z=105 meters 226 ;;;;;;; ====================================================== 227 PRINT, ' ' 228 PRINT, ' Arctic mean Salinity diff with Levitus at z=105 meters' 229 PRINT, '8 exp1-levitus' 230 xxx_EXP1_S_ARC, S1, SLev, std_EXP1, std_EXP2, start_end, _extra = ex 231 PRINT, '9 exp2-levitus' 232 xxx_EXP2_S_ARC, S1, S2, SLev, std_EXP1, std_EXP2, start_end, _extra = ex 233 PRINT, '10 exp1-levitus at 105 meters' 234 xxx_EXP1_S_ARC_z105, S1, SLev, std_EXP1, std_EXP2, start_end, _extra = ex 235 PRINT, '11 exp2-levitus at 105 meters' 236 xxx_EXP2_S_ARC_z105, S1, S2, SLev, std_EXP1, std_EXP2, start_end, _extra = ex 237 238 239 ;;;;;;;; mean Temperature diff with Levitus at z=105 meters 240 ;;;;;;;; ================================================== 241 PRINT, ' ' 242 PRINT, ' mean Temperature diff with Levitus at z=105 meters' 243 PRINT, '12' 244 xxx_T_z105, T1, T2, TRey, std_EXP1, std_EXP2, start_end, _extra=ex 245 246 247 ;;;;;;;; mean Salinity diff with Levitus at z=105 meters 248 ;;;;;;;; ================================================== 249 PRINT, ' ' 250 PRINT, ' mean Salinity diff with Levitus at z=105 meters' 251 PRINT, '13' 252 xxx_S_z105, S1, S2, SLev, std_EXP1, std_EXP2, start_end, _extra=ex 253 254 255 PRINT, '============================================= ' 256 PRINT, ' PLOTS 3D ' 257 PRINT, '============================================= ' 258 259 PRINT, ' Mixed layer depth' 260 PRINT, '14 ' 261 xxx_mxl10, MXL1, MXL2, MLD, std_EXP1, std_EXP2, start_end, _extra = ex 262 PRINT, '15' 263 xxx_ZonMxl, MXL1, MXL2, MLD, std_EXP1, std_EXP2, start_end, _extra = ex 264 265 266 ;;;;;;;;; Zonal mean Temperature diff with Levitus 267 ;;;;;;;;; ======================================== 268 PRINT, ' ' 269 PRINT, ' Zonal mean Temperature diff with Levitus' 270 PRINT, '16 ' 271 xxx_zonal_T, T1, T2, TLev, std_EXP1, std_EXP2, start_end, MASK_FILENAME = std_iodir_mask+'subbasins_orca21_nored.nc', _extra = ex 272 273 PRINT, '16 ' 274 xxx_zonal_T, T1, T2, TLev, std_EXP1, std_EXP2, start_end, SUBBASIN = 'Atl', MASK_FILENAME = std_iodir_mask+'subbasins_orca21_nored.nc', _extra = ex 275 276 PRINT, '16 ' 277 xxx_zonal_T, T1, T2, TLev, std_EXP1, std_EXP2, start_end, SUBBASIN = 'Ind', MASK_FILENAME = std_iodir_mask+'subbasins_orca21_nored.nc', _extra = ex 278 279 PRINT, '16 ' 280 xxx_zonal_T, T1, T2, TLev, std_EXP1, std_EXP2, start_end, SUBBASIN = 'Pac', MASK_FILENAME = std_iodir_mask+'subbasins_orca21_nored.nc', _extra = ex 281 282 283 ;;;;;;;;;; Zonal mean Salinity diff with Levitus 284 ;;;;;;;;;; ======================================== 285 PRINT, ' ' 286 PRINT, ' Zonal mean Salinity diff with Levitus' 287 PRINT, '17 ' 288 xxx_zonal_S, S1, S2, SLev, std_EXP1, std_EXP2, start_end, MASK_FILENAME = std_iodir_mask+'subbasins_orca21_nored.nc', _extra = ex 289 290 PRINT, '17 ' 291 xxx_zonal_S, S1, S2, SLev, std_EXP1, std_EXP2, start_end, SUBBASIN = 'Atl', MASK_FILENAME = std_iodir_mask+'subbasins_orca21_nored.nc', _extra = ex 292 293 PRINT, '17 ' 294 xxx_zonal_S, S1, S2, SLev, std_EXP1, std_EXP2, start_end, SUBBASIN = 'Ind', MASK_FILENAME = std_iodir_mask+'subbasins_orca21_nored.nc', _extra = ex 295 296 PRINT, '17 ' 297 xxx_zonal_S, S1, S2, SLev, std_EXP1, std_EXP2, start_end, SUBBASIN = 'Pac', MASK_FILENAME = std_iodir_mask+'subbasins_orca21_nored.nc', _extra = ex 298 299 ;;;;;;; Seasonal & Annual mean Arctic/Antarctic Ice Thickness & Ice Concentration 300 ;;;;;; ========================================================================== 301 PRINT, ' ' 302 PRINT, ' Arctic/Antarctic Ice Thickness' 303 PRINT, ' 18' 304 xxx_ARC_Icethick_MARS, Ithi_mars_1, Ithi_mars_2, std_EXP1, std_EXP2, start_end, _extra = ex 305 306 PRINT, ' 19' 307 xxx_ARC_Icethick_SEPT, Ithi_sept_1, Ithi_sept_2, std_EXP1, std_EXP2, start_end, _extra = ex 308 309 PRINT, ' 20' 310 xxx_ANT_Icethick_MARS, Ithi_mars_1, Ithi_mars_2, std_EXP1, std_EXP2, start_end, _extra = ex 311 312 PRINT, ' 21' 313 xxx_ANT_Icethick_SEPT, Ithi_sept_1, Ithi_sept_2, std_EXP1, std_EXP2, start_end, _extra = ex 314 315 PRINT, ' Arctic/Antarctic Ice Concentration (area of sea-ice per grid cell area' 316 PRINT, ' 22' 317 xxx_Iceleadfrac_MARS, Ifra_mars_1, Ifra_mars_2, std_EXP1, std_EXP2, start_end, _extra = ex 318 319 PRINT, ' 23' 320 xxx_Iceleadfrac_SEPT, Ifra_sept_1, Ifra_sept_2, std_EXP1, std_EXP2, start_end, _extra = ex 321 322 323 ;;; Global and Atlantic Meridional Function 324 ;;; ======================================= 325 PRINT, ' ' 326 PRINT, ' Global and Atlantic Meridional Function' 327 PRINT, ' 24 ' 328 plt_msf, V1, V2, std_EXP1, std_EXP2, start_end, SUBBASIN = 'Glo', MASK_FILENAME = std_iodir_mask+'subbasins_orca21_nored.nc', _extra = ex 329 PRINT, ' 24 ' 330 plt_msf, V1, V2, std_EXP1, std_EXP2, start_end, SUBBASIN = 'Atl', MASK_FILENAME = std_iodir_mask+'subbasins_orca21_nored.nc', _extra = ex 331 PRINT, ' 24 ' 332 plt_msf, V1, V2, std_EXP1, std_EXP2, start_end, SUBBASIN = 'Ind', MASK_FILENAME = std_iodir_mask+'subbasins_orca21_nored.nc', _extra = ex 333 PRINT, ' 24 ' 334 plt_msf, V1, V2, std_EXP1, std_EXP2, start_end, SUBBASIN = 'Pac', MASK_FILENAME = std_iodir_mask+'subbasins_orca21_nored.nc', _extra = ex 335 336 337 PRINT, '============================================= ' 338 PRINT, ' Local PLOTS ' 339 PRINT, '============================================= ' 340 341 ;;;;;;;;; Equatorial Temperature 342 ;;;;;;;;; ====================== 343 PRINT, ' ' 344 PRINT, ' Equatorial Temperature' 345 PRINT, ' ' 346 PRINT, ' 25 ' 347 xxx_Eq_T, T1, T2, Tlev, std_EXP1, std_EXP2, start_end, _extra = ex 348 349 ;;;;;;;; Equatorial Salinity 350 ;;;;;;;; =================== 351 PRINT, ' ' 352 PRINT, ' Equatorial Salinity' 353 PRINT, ' 26 ' 354 xxx_Eq_S, S1, S2, SLev, std_EXP1, std_EXP2, start_end, _extra = ex 355 356 ;;; Equatorial zonal velocity 357 ;;; ========================= 358 PRINT, ' ' 359 PRINT, ' Equatorial zonal velocity' 360 PRINT, ' 27 ' 361 xxx_Eq_U, U1, U2, std_EXP1, std_EXP2, start_end, _extra = ex 362 363 ;;;;;;;;;;;; Mediterranean salt tongue 364 ;;;;;;;;;;;; =============================================== 365 366 PRINT, ' ' 367 PRINT, ' Mediterranean salt tongue at depth=700 and lat 40°N' 368 PRINT, ' 28 ' 369 xxx_Med_S_tongue, S1, S2, SLev, std_EXP1, std_EXP2, start_end, DEPTH = 700, LAT = 40, _extra = ex 370 ; 371 PRINT, ' Mediterranean salt tongue at depth=1000 and lat 38°N' 372 PRINT, ' 28 ' 373 xxx_Med_S_tongue, S1, S2, SLev, std_EXP1, std_EXP2, start_end, DEPTH = 1000, LAT = 38, _extra = ex 374 375 ;;;;;;;;; Mediterranean 376 ;;;;;;;;; =============================================== 377 PRINT, ' ' 378 PRINT, ' Mediterranean water at 38°N' 379 PRINT, ' 29 ' 380 xxx_Med_S_depth, S1, S2, SLev, std_EXP1, std_EXP2, start_end, DEPTH = 1000, LAT = 38, _extra = ex 381 PRINT, ' Mediterranean water at 38°N' 382 PRINT, ' 29 ' 383 xxx_Med_S_depth, S1, S2, SLev, std_EXP1, std_EXP2, start_end, DEPTH = 700, LAT = 40, _extra = ex 384 385 ; 386 387 ;;;;;;;;;;; Vertical Global mean T & S 388 ;;;;;;;;;;; =========================== 389 PRINT, ' ' 390 PRINT, ' Vertical Global mean T & S' 391 PRINT, ' 30 ' 392 xxx_TS_ZGlobm, T1, T2, TLev, S1, S2, SLev, std_EXP1, std_EXP2, start_end, _extra = ex 393 394 259 cnt = cnt+1 & blabla = 'Arctic mean Salinity diff with Levitus and exp2 at z=100 meters' 260 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_ArcSal, S1, S2, SLev, /z100, _extra = ex 261 262 cnt = cnt+1 & blabla = 'mean Temperature diff with Levitus at z=100 meters' 263 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_T100m, T1, T2, Tlev, _extra = ex 264 265 cnt = cnt+1 & blabla = 'mean Salinity diff with Levitus at z=100 meters' 266 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_S100m, S1, S2, SLev, _extra = ex 267 268 cnt = cnt+1 & blabla = 'Mixed layer depth' 269 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_mld, MLD1, MLD, _extra = ex 270 271 cnt = cnt+1 & blabla = 'Mixed layer depth differences' 272 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_mld, MLD1, MLD2, MLD, _extra = ex 273 274 cnt = cnt+1 & blabla = 'Zonal mean Mixed layer depth' 275 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_ZonMld, MLD1, MLD2, MLD, _extra = ex 276 277 cnt = cnt+1 & blabla = 'Zonal mean Temperature diff with Levitus: Global' 278 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_zonal_T, T1, T2, TLev, _extra = ex 279 280 cnt = cnt+1 & blabla = 'Zonal mean Temperature diff with Levitus: Atlantic' 281 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_zonal_T, T1, T2, TLev, SUBBASIN = 'Atl', _extra = ex 282 283 cnt = cnt+1 & blabla = 'Zonal mean Temperature diff with Levitus: Indian' 284 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_zonal_T, T1, T2, TLev, SUBBASIN = 'Ind', _extra = ex 285 286 cnt = cnt+1 & blabla = 'Zonal mean Temperature diff with Levitus: Pacific' 287 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_zonal_T, T1, T2, TLev, SUBBASIN = 'Pac', _extra = ex 288 289 cnt = cnt+1 & blabla = 'Zonal mean Salinity diff with Levitus: Global' 290 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_zonal_S, S1, S2, SLev, _extra = ex 291 292 cnt = cnt+1 & blabla = 'Zonal mean Salinity diff with Levitus: Atlantic' 293 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_zonal_S, S1, S2, SLev, SUBBASIN = 'Atl', _extra = ex 294 295 cnt = cnt+1 & blabla = 'Zonal mean Salinity diff with Levitus: Indian' 296 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_zonal_S, S1, S2, SLev, SUBBASIN = 'Ind', _extra = ex 297 298 cnt = cnt+1 & blabla = 'Zonal mean Salinity diff with Levitus: Pacific' 299 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_zonal_S, S1, S2, SLev, SUBBASIN = 'Pac', _extra = ex 300 301 cnt = cnt+1 & blabla = 'Arctic Ice Thickness: MARCH' 302 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceThick, Ithi_march_1, Ithi_march_2, /ARC, /MARCH, _extra = ex 303 304 cnt = cnt+1 & blabla = 'Arctic Ice Thickness: SEPT' 305 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceThick, Ithi_sept_1, Ithi_sept_2, /ARC, /SEPT, _extra = ex 306 307 cnt = cnt+1 & blabla = 'Antarctic Ice Thickness: MARCH' 308 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceThick, Ithi_march_1, Ithi_march_2, /ANT, /MARCH, _extra = ex 309 310 cnt = cnt+1 & blabla = 'Antarctic Ice Thickness: SEPT' 311 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceThick, Ithi_sept_1, Ithi_sept_2, /ANT, /SEPT, _extra = ex 312 313 cnt = cnt+1 & blabla = 'Arctic Ice Fraction: MARCH' 314 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceFrac, Ifra_march_1, Ifra_march_2, /ARC, /MARCH, _extra = ex 315 316 cnt = cnt+1 & blabla = 'Arctic Ice Fraction: SEPT' 317 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceFrac, Ifra_sept_1, Ifra_sept_2, /ARC, /SEPT, _extra = ex 318 319 cnt = cnt+1 & blabla = 'Antarctic Ice Fraction: MARCH' 320 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceFrac, Ifra_march_1, Ifra_march_2, /ANT, /MARCH, _extra = ex 321 322 cnt = cnt+1 & blabla = 'Antarctic Ice Fraction: SEPT' 323 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceFrac, Ifra_sept_1, Ifra_sept_2, /ANT, /SEPT, _extra = ex 324 325 cnt = cnt+1 & blabla = 'Meridional stream Function: Global (no Med)' 326 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_msf, V1, V2, SUBBASIN = 'GloNoMed', _extra = ex 327 328 cnt = cnt+1 & blabla = 'Meridional stream Function: Atlantic' 329 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_msf, V1, V2, SUBBASIN = 'Atl', _extra = ex 330 331 cnt = cnt+1 & blabla = 'Meridional stream Function: Indian' 332 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_msf, V1, V2, SUBBASIN = 'Ind', _extra = ex 333 334 cnt = cnt+1 & blabla = 'Meridional stream Function: Indo-Pacific' 335 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_msf, V1, V2, SUBBASIN = 'IndoPac', _extra = ex 336 337 cnt = cnt+1 & blabla = 'Equatorial Temperature' 338 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_EqT, T1, T2, Tlev, _extra = ex 339 340 cnt = cnt+1 & blabla = 'Equatorial Salinity' 341 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_EqS, S1, S2, SLev, _extra = ex 342 343 cnt = cnt+1 & blabla = 'Equatorial zonal velocity' 344 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_EqU, U1, U2, _extra = ex 345 346 cnt = cnt+1 & blabla = 'Mediterranean salt tongue at depth=700' 347 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_Med_Sspread, S1, S2, SLev, 700, _extra = ex 348 349 cnt = cnt+1 & blabla = 'Mediterranean salt tongue at depth=1000' 350 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_Med_Sspread, S1, S2, SLev, 1000, _extra = ex 351 352 cnt = cnt+1 & blabla = 'Mediterranean water at lat=40°N' 353 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_Med_Sdepth, S1, S2, SLev, 40, _extra = ex 354 355 cnt = cnt+1 & blabla = 'Mediterranean water at lat=38°N' 356 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_Med_Sdepth, S1, S2, SLev, 38, _extra = ex 357 358 cnt = cnt+1 & blabla = 'Vertical Global mean T & S' 359 IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_GlobMeanTS, T1, T2, TLev, S1, S2, SLev, _extra = ex 360 361 IF n_elements(htmltxt) GT 1 THEN putfile, psdir+'std_plot_html_body.txt', htmltxt[1:*] 362 395 363 return 396 364 END
Note: See TracChangeset
for help on using the changeset viewer.