New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
std_plot_all_1Y.pro in branches/2014/dev_r4650_UKMO14.11_SETTE_OBSASM/NEMOGCM/CONFIG/ORCA2_LIM_OBS/IDL_scripts – NEMO

source: branches/2014/dev_r4650_UKMO14.11_SETTE_OBSASM/NEMOGCM/CONFIG/ORCA2_LIM_OBS/IDL_scripts/std_plot_all_1Y.pro @ 4751

Last change on this file since 4751 was 4751, checked in by djlea, 10 years ago

Changes to include an OBS test in SETTE. At the moment this uses an example profile observation.

File size: 25.9 KB
Line 
1pro std_plot_all_1Y, doplot = doplot, _extra = ex
2
3  compile_opt idl2, strictarrsubs
4
5@common
6@std_common
7                                ; scripts for nemo v3_2 and v3_3
8
9  PRINT, ''
10  PRINT, '  ############################################'
11  PRINT, ''
12  PRINT, '                    LAUNCH of std_plots'
13  PRINT, ''
14  PRINT, '  ############################################'
15  PRINT, ''
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
24; climatologies
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  std_file_ice       =  isafile(getenv('FILE_ICE'),        title = 'ICE', iodir = std_iodir_climato)
31  std_file_snow_arc  =  isafile(getenv('FILE_SNOW_ARC'),   title = 'SNOW_ARC', iodir = std_iodir_climato)
32  std_file_snow_ant  =  isafile(getenv('FILE_SNOW_ANT'),   title = 'SNOW_ANT', iodir = std_iodir_climato)
33
34  IF strlowcase(getenv('FILE_GEOHEAT')) EQ 'no' THEN std_file_geoheat = 'no' $
35  ELSE std_file_geoheat =  isafile(getenv('FILE_GEOHEAT'), title = 'Geothermal heating', iodir = std_iodir_climato)
36;
37  allrec =  1 - keyword_set(long(getenv('READ_ONLY_FIRST_RECORD')))
38; Output run experience1
39  std_file1_T     = isafile(getenv('FILE1_T'), title = 'exp1 grid T input file', iodir = std_iodir_data)
40  std_file1_U     = isafile(getenv('FILE1_U'), title = 'exp1 grid U input file', iodir = std_iodir_data)
41  std_file1_V     = isafile(getenv('FILE1_V'), title = 'exp1 grid V input file', iodir = std_iodir_data)
42  std_file1_I     = isafile(getenv('FILE1_I'), title = 'exp1 ice    input file', iodir = std_iodir_data)
43 
44; Output run experience2
45  std_file2_T     = isafile(getenv('FILE2_T'), title = 'exp2 grid T input file', iodir = std_iodir_data)
46  std_file2_U     = isafile(getenv('FILE2_U'), title = 'exp2 grid U input file', iodir = std_iodir_data)
47  std_file2_V     = isafile(getenv('FILE2_V'), title = 'exp2 grid V input file', iodir = std_iodir_data)
48  std_file2_I     = isafile(getenv('FILE2_I'), title = 'exp2 ice    input file', iodir = std_iodir_data)
49
50  PRINT, ''
51  PRINT, '  std_iodir_data : ' + std_iodir_data
52  PRINT, '  std_file1T : ' + std_file1_T
53  PRINT, '  std_file1U : ' + std_file1_U
54  PRINT, '  std_file1V : ' + std_file1_V
55;  PRINT, ' std_file1W : ' + std_file1_W
56  PRINT, '  std_file2I : ' + std_file1_I
57  PRINT, '  std_file2T : ' + std_file2_T
58  PRINT, '  std_file2U : ' + std_file2_U
59  PRINT, '  std_file2V : ' + std_file2_V
60;  PRINT, ' std_file2W : ' + std_file2_W
61  PRINT, '  std_file2I : ' + std_file2_I
62  PRINT, ''
63
64;#########################################################################
65;##########################  Load Grids   ################################
66;#########################################################################
67; load the grid
68  load_orca, std_file_mesh 
69; reading variables
70  masknp = read_ncdf('tmaskutil', file = std_file_mesh, /nostruct, /cont_nofill)
71;#########################################################################
72;############################  Read Data  ################################
73;#########################################################################
74;
75  allrec =  1; - keyword_set(long(getenv('READ_ONLY_FIRST_RECORD')))
76;
77;;; 3D ;;;
78; temperature
79  T1 = read_ncdf(getenv('VAR1_T'), allrecords = allrec, direc = 't', filename = std_file1_T )
80  IF std_file2_T NE std_file1_T THEN BEGIN
81    T2 = read_ncdf(getenv('VAR2_T'), allrecords = allrec, direc = 't', filename = std_file2_T )
82  ENDIF ELSE T2 = {arr:-1}
83  TLev = read_ncdf(getenv('VAR_TEMP_3D'), filename = std_file_Levitus_T )
84  TRey = read_ncdf(getenv('VAR_SST'), filename = std_file_reynolds )
85
86; salinity
87  S1 = read_ncdf(getenv('VAR1_S'), allrecords = allrec, direc = 't', filename = std_file1_T )
88  IF std_file2_T NE std_file1_T THEN BEGIN
89    S2 = read_ncdf(getenv('VAR2_S'), allrecords = allrec, direc = 't', filename = std_file2_T )
90  ENDIF ELSE S2 = {arr:-1}
91  SLev = read_ncdf(getenv('VAR_SAL_3D'), filename = std_file_Levitus_S )
92
93;;; 2D ;;;
94; Net Downward heat flux
95  Q1 = read_ncdf(getenv('VAR1_QNET'), allrecords = allrec, direc = 't', filename = std_file1_T )
96  IF std_file2_T NE std_file1_T THEN BEGIN
97    Q2 = read_ncdf(getenv('VAR2_QNET'), allrecords = allrec, direc = 't', filename = std_file2_T )
98  ENDIF ELSE Q2 = {arr:-1}
99; Geothermal heating
100  IF std_file_geoheat EQ 'no' THEN geo = {arr:float(getenv('VAR_GEOHEAT'))} $
101  ELSE geo = read_ncdf(getenv('VAR_GEOHEAT'), filename =  std_file_geoheat )
102  geo = geo.arr*1.e-3          ; convert into W/m2
103;climatology
104  QNET = read_ncdf(getenv('VAR_FLUX'), filename = std_file_oaflux )
105
106; erp (evaporation damping)
107  ERP1 = read_ncdf(getenv('VAR1_ERP'), allrecords = allrec, direc = 't', filename = std_file1_T )
108  ERP1 = {arr:ERP1.arr * 86400., unit:'mm/day', grid:'T'}
109  IF std_file2_T NE std_file1_T THEN BEGIN
110     ERP2 = read_ncdf(getenv('VAR2_ERP'), allrecords = allrec, direc = 't', filename = std_file2_T )
111     ERP2 = {arr:ERP2.arr * 86400., unit:'mm/day', grid:'T'}
112  ENDIF ELSE ERP2 = {arr:-1}
113 
114; emp (evaporation minus precipitation)
115  EMP1 = read_ncdf(getenv('VAR1_EMP'), allrecords = allrec, direc = 't', filename = std_file1_T )
116  EMP1 = {arr:EMP1.arr * 86400., unit:'mm/day', grid:'T'}
117   IF std_file2_T NE std_file1_T THEN BEGIN
118     EMP2 = read_ncdf(getenv('VAR2_EMP'), allrecords = allrec, direc = 't', filename = std_file2_T )
119     EMP2 = {arr:EMP2.arr * 86400., unit:'mm/day', grid:'T'}
120   ENDIF ELSE EMP2 = {arr:-1}
121   
122 ;mixed layer depth
123   MLD1 = read_ncdf(getenv('VAR1_MLD'), allrecords = allrec, direc = 't', filename = std_file1_T ) ; 10 m
124   IF std_file2_T NE std_file1_T THEN BEGIN
125     MLD2 = read_ncdf(getenv('VAR2_MLD'), allrecords = allrec, direc = 't', filename = std_file2_T ) ; 10 m
126   ENDIF ELSE MLD2 = {arr:-1}
127 ;climatology
128   MLD = read_ncdf(getenv('VAR_MLD'), filename = std_file_mld )
129
130 ; velocities
131   U1 = read_ncdf(getenv('VAR1_U'), allrecords = allrec, direc = 't', filename = std_file1_U )
132   ; old formulation: we tested variable name
133   ; IF strlowcase(getenv('VAR1_U')) EQ 'uocetr_eff' OR strlowcase(getenv('VAR1_U')) EQ 'vozoeftr' THEN BEGIN
134   IF strlowcase(U1.unit) EQ 'm3/s' THEN BEGIN
135     ;IF it is a transport it is transofrmed in velocity
136     U1.arr = U1.arr / e3u_3d(/e2) * umask()
137     U1.unit = 'm/s'
138   ENDIF
139   IF std_file2_U NE std_file1_U THEN BEGIN
140     U2 = read_ncdf(getenv('VAR2_U'), allrecords = allrec, direc = 't', filename = std_file2_U )
141     ; old formulation: we tested variable name
142     ; IF strlowcase(getenv('VAR2_U')) EQ 'uocetr_eff' OR strlowcase(getenv('VAR2_U')) EQ 'vozoeftr' THEN BEGIN
143     IF strlowcase(U2.unit) EQ 'm3/s' THEN BEGIN
144       U2.arr = U2.arr / e3u_3d(/e2) * umask()
145       U2.unit = 'm/s'
146     ENDIF
147   ENDIF ELSE U2 = {arr:-1}
148;
149   V1 = read_ncdf(getenv('VAR1_V'), allrecords = allrec, direc = 't', filename = std_file1_V )
150   ; old formulation: we tested variable name
151   ; IF strlowcase(getenv('VAR1_V')) EQ 'vocetr_eff' OR strlowcase(getenv('VAR1_V')) EQ 'vomeeftr' THEN BEGIN
152   IF strlowcase(V1.unit) EQ 'm3/s' THEN BEGIN ; test on unit to understand if it is a transport or velocity
153     ;IF it is a transport it is transofrmed in velocity
154     V1.arr = V1.arr / e3v_3d(/e1) * vmask()
155     V1.unit = 'm/s'
156   ENDIF
157   IF std_file2_V NE std_file1_V THEN BEGIN
158     V2 = read_ncdf(getenv('VAR2_V'), allrecords = allrec, direc = 't', filename = std_file2_V )
159     ; old formulation
160     ; IF strlowcase(getenv('VAR2_V')) EQ 'vocetr_eff' OR strlowcase(getenv('VAR2_V')) EQ 'vozoeftr' THEN BEGIN
161     IF strlowcase(V2.unit) EQ 'm3/s' THEN BEGIN
162       V2.arr = V2.arr / e3v_3d(/e1) * vmask()
163       V2.unit = 'm/s'
164     ENDIF
165   ENDIF ELSE V2 = {arr:-1}
166
167; ice
168  Ithi_1 = read_ncdf(getenv('VAR1_Ithick'), allrecords = allrec, filename = std_file1_I )
169  caldat, time, mm
170  april = where(mm EQ 4, cnt)
171  Ithi_april_1 = {arr:1./float(cnt) * total(reform(Ithi_1.arr[*, *, temporary(april)],nxt,nyt,cnt), 3), unit:Ithi_1.unit}
172  jan = where(mm EQ 1, cnt)
173  sept = where(mm EQ 9, cnt)
174  Ithi_jan_1 = {arr:1./float(cnt) * total(reform(Ithi_1.arr[*, *, temporary(jan)],nxt,nyt,cnt), 3), unit:Ithi_1.unit}
175  Ithi_sept_1 = {arr:1./float(cnt) * total(reform(Ithi_1.arr[*, *, temporary(sept)],nxt,nyt,cnt), 3), unit:Ithi_1.unit}
176  undefine, Ithi_1
177;
178  IF std_file2_I NE std_file1_I THEN BEGIN
179     Ithi_2 = read_ncdf(getenv('VAR2_Ithick'), allrecords = allrec, filename = std_file2_I )
180     caldat, time, mm
181     april = where(mm EQ 4, cnt)
182     Ithi_april_2 = {arr:1./float(cnt) * total(reform(Ithi_2.arr[*, *, temporary(april)],nxt,nyt,cnt), 3), unit:Ithi_2.unit}
183     jan = where(mm EQ 1, cnt)
184     sept = where(mm EQ 9, cnt)
185     Ithi_sept_2 = {arr:1./float(cnt) * total(reform(Ithi_2.arr[*, *, temporary(sept)],nxt,nyt,cnt), 3), unit:Ithi_2.unit}
186     Ithi_jan_2 = {arr:1./float(cnt) * total(reform(Ithi_2.arr[*, *, temporary(jan)],nxt,nyt,cnt), 3), unit:Ithi_2.unit}
187     undefine, Ithi_2
188  ENDIF ELSE BEGIN
189     Ithi_april_2 = {arr:-1}
190     Ithi_sept_2 = {arr:-1}
191     Ithi_jan_2 = {arr:-1}
192  ENDELSE
193;
194  Iage_1 = read_ncdf(getenv('VAR1_Iage'), allrecords = allrec, filename = std_file1_I )
195  caldat, time, mm
196  febr = where(mm EQ 2, cnt)
197  Iage_febr_1 = {arr:1./float(cnt) * total(reform(Iage_1.arr[*, *, temporary(febr)],nxt,nyt,cnt), 3), unit:Iage_1.unit}
198  march = where(mm EQ 3, cnt)
199  Iage_march_1 = {arr:1./float(cnt) * total(reform(Iage_1.arr[*, *, temporary(march)],nxt,nyt,cnt), 3), unit:Iage_1.unit}
200  sept = where(mm EQ 9, cnt)
201  Iage_sept_1 = {arr:1./float(cnt) * total(reform(Iage_1.arr[*, *, temporary(sept)],nxt,nyt,cnt), 3), unit:Iage_1.unit}
202  undefine, Iage_1
203;
204  IF std_file2_I NE std_file1_I THEN BEGIN
205     Iage_2 = read_ncdf(getenv('VAR2_Iage'), allrecords = allrec, filename = std_file2_I )
206     caldat, time, mm
207     febr = where(mm EQ 2, cnt)
208     Iage_febr_2 = {arr:1./float(cnt) * total(reform(Iage_2.arr[*, *, temporary(febr)],nxt,nyt,cnt), 3), unit:Iage_2.unit}
209     march = where(mm EQ 3, cnt)
210     Iage_march_2 = {arr:1./float(cnt) * total(reform(Iage_2.arr[*, *, temporary(march)],nxt,nyt,cnt), 3), unit:Iage_2.unit}
211     sept = where(mm EQ 9, cnt)
212     Iage_sept_2 = {arr:1./float(cnt) * total(reform(Iage_2.arr[*, *, temporary(sept)],nxt,nyt,cnt), 3), unit:Iage_2.unit}
213     undefine, Iage_2
214  ENDIF ELSE BEGIN
215     Iage_febr_2 = {arr:-1}
216     Iage_march_2 = {arr:-1}
217     Iage_sept_2 = {arr:-1}
218  ENDELSE
219;
220  Ifra_1 = read_ncdf(getenv('VAR1_Ifrac'), allrecords = allrec, filename = std_file1_I )
221  caldat, time, mm
222  febr = where(mm EQ 2, cnt)
223  Ifra_febr_1 = {arr:1./float(cnt) * total(reform(Ifra_1.arr[*, *, temporary(febr)],nxt,nyt,cnt), 3), unit:Ifra_1.unit}
224  march = where(mm EQ 3, cnt)
225  Ifra_march_1 = {arr:1./float(cnt) * total(reform(Ifra_1.arr[*, *, temporary(march)],nxt,nyt,cnt), 3), unit:Ifra_1.unit}
226  sept = where(mm EQ 9, cnt)
227  Ifra_sept_1 = {arr:1./float(cnt) * total(reform(Ifra_1.arr[*, *, temporary(sept)],nxt,nyt,cnt), 3), unit:Ifra_1.unit}
228  undefine, Ifra_1
229;
230  IF std_file2_I NE std_file1_I THEN BEGIN
231    Ifra_2 = read_ncdf(getenv('VAR2_Ifrac'), allrecords = allrec, filename = std_file2_I )
232    caldat, time, mm
233    febr = where(mm EQ 2, cnt)
234    Ifra_febr_2 = {arr:1./float(cnt) * total(reform(Ifra_2.arr[*, *, temporary(febr)],nxt,nyt,cnt), 3), unit:Ifra_2.unit}
235    march = where(mm EQ 3, cnt)
236    Ifra_march_2 = {arr:1./float(cnt) * total(reform(Ifra_2.arr[*, *, temporary(march)],nxt,nyt,cnt), 3), unit:Ifra_2.unit}
237    sept = where(mm EQ 9, cnt)
238    Ifra_sept_2 = {arr:1./float(cnt) * total(reform(Ifra_2.arr[*, *, temporary(sept)],nxt,nyt,cnt), 3), unit:Ifra_2.unit}
239    undefine, Ifra_2
240  ENDIF ELSE BEGIN
241    Ifra_febr_2 = {arr:-1}
242    Ifra_march_2 = {arr:-1}
243    Ifra_sept_2 = {arr:-1}
244  ENDELSE
245;
246   Isnow_1 = read_ncdf(getenv('VAR1_Isnow'), allrecords = allrec, filename = std_file1_I )
247   caldat, time, mm
248   febr = where(mm EQ 2, cnt)
249   Isnow_febr_1 = {arr:1./float(cnt) * total(reform(Isnow_1.arr[*, *, temporary(febr)],nxt,nyt,cnt), 3), unit:Isnow_1.unit}
250   march = where(mm EQ 3, cnt)
251   Isnow_march_1 = {arr:1./float(cnt) * total(reform(Isnow_1.arr[*, *, temporary(march)],nxt,nyt,cnt), 3), unit:Isnow_1.unit}
252   sept = where(mm EQ 9, cnt)
253   Isnow_sept_1 = {arr:1./float(cnt) * total(reform(Isnow_1.arr[*, *, temporary(sept)],nxt,nyt,cnt), 3), unit:Isnow_1.unit}
254   ;undefine, Isnow_1
255 ;
256   IF std_file2_I NE std_file1_I THEN BEGIN
257     Isnow_2 = read_ncdf(getenv('VAR2_Isnow'), allrecords = allrec, filename = std_file2_I )
258     caldat, time, mm
259     febr = where(mm EQ 2, cnt)
260     Isnow_febr_2 = {arr:1./float(cnt) * total(reform(Isnow_2.arr[*, *, temporary(febr)],nxt,nyt,cnt), 3), unit:Isnow_2.unit}
261     march = where(mm EQ 3, cnt)
262     Isnow_march_2 = {arr:1./float(cnt) * total(reform(Isnow_2.arr[*, *, temporary(march)],nxt,nyt,cnt), 3), unit:Isnow_2.unit}
263     sept = where(mm EQ 9, cnt)
264     Isnow_sept_2 = {arr:1./float(cnt) * total(reform(Isnow_2.arr[*, *, temporary(sept)],nxt,nyt,cnt), 3), unit:Isnow_2.unit}
265   ;  undefine, Isnow_2
266   ENDIF ELSE BEGIN
267     Isnow_febr_2 = {arr:-1}
268     Isnow_march_2 = {arr:-1}
269     Isnow_sept_2 = {arr:-1}
270   ENDELSE
271;
272   Isal_1 = read_ncdf(getenv('VAR1_Isal'), allrecords = allrec, filename = std_file1_I )
273   Ifra_1 = read_ncdf(getenv('VAR1_Ifrac'), allrecords = allrec, filename = std_file1_I )
274   msk = Ifra_1.arr gt 0.15 ; remove 0.15% for observations
275   caldat, time, mm
276   march = where(mm EQ 3, cnt)
277   febr = where(mm EQ 2, cnt)
278   ;SF  Isal_march_1 = {arr:1./float(cnt) * total(reform(Isal_1.arr[*, *, temporary(march)],nxt,nyt,cnt), 3), unit:Isal_1.unit}
279   Isal_1.arr = Isal_1.arr * msk
280   Isal_march_1 = {arr:1./float(cnt) * total(reform(Isal_1.arr[*, *, temporary(march)],nxt,nyt,cnt), 3), unit:Isal_1.unit}
281   Isal_febr_1 = {arr:1./float(cnt) * total(reform(Isal_1.arr[*, *, temporary(febr)],nxt,nyt,cnt), 3), unit:Isal_1.unit}
282   sept = where(mm EQ 9, cnt)
283   Isal_sept_1 = {arr:1./float(cnt) * total(reform(Isal_1.arr[*, *, temporary(sept)],nxt,nyt,cnt), 3), unit:Isal_1.unit}
284   ;undefine, Isal_1
285 ;
286   Isal_2 = read_ncdf(getenv('VAR2_Isal'), allrecords = allrec, filename = std_file2_I )
287   Ifra_2 = read_ncdf(getenv('VAR2_Ifrac'), allrecords = allrec, filename = std_file2_I )
288   msk = Ifra_2.arr gt 0.15 ; remove 0.15% for observations
289   IF std_file2_I NE std_file1_I THEN BEGIN
290     Isal_2 = read_ncdf(getenv('VAR2_Isal'), allrecords = allrec, filename = std_file2_I )
291     Isal_2.arr = Isal_2.arr * msk
292     caldat, time, mm
293     march = where(mm EQ 3, cnt)
294     febr = where(mm EQ 2, cnt)
295     Isal_march_2 = {arr:1./float(cnt) * total(reform(Isal_2.arr[*, *, temporary(march)],nxt,nyt,cnt), 3), unit:Isal_2.unit}
296     Isal_febr_2 = {arr:1./float(cnt) * total(reform(Isal_2.arr[*, *, temporary(febr)],nxt,nyt,cnt), 3), unit:Isal_2.unit}
297     sept = where(mm EQ 9, cnt)
298     Isal_sept_2 = {arr:1./float(cnt) * total(reform(Isal_2.arr[*, *, temporary(sept)],nxt,nyt,cnt), 3), unit:Isal_2.unit}
299   ;  undefine, Isal_2
300   ENDIF ELSE BEGIN
301     Isal_febr_2 = {arr:-1}
302     Isal_march_2 = {arr:-1}
303     Isal_sept_2 = {arr:-1}
304   ENDELSE
305;
306  jpt = 1
307;
308; shorter file names for legends...
309;
310  std_file1_T = file_basename(std_file1_T,'.nc')
311  std_file1_T = (strsplit(std_file1_T,'_grid_T',/extract,/regex))[0]
312  std_file2_T = file_basename(std_file2_T,'.nc')
313  std_file2_T = (strsplit(std_file2_T,'_grid_T',/extract,/regex))[0]
314  std_file1_U = file_basename(std_file1_U,'.nc')
315  std_file1_U = (strsplit(std_file1_U,'_grid_U',/extract,/regex))[0]
316  std_file2_U = file_basename(std_file2_U,'.nc')
317  std_file2_U = (strsplit(std_file2_U,'_grid_U',/extract,/regex))[0]
318  std_file1_V = file_basename(std_file1_V,'.nc')
319  std_file1_V = (strsplit(std_file1_V,'_grid_V',/extract,/regex))[0]
320  std_file2_V = file_basename(std_file2_V,'.nc')
321  std_file2_V = (strsplit(std_file2_V,'_grid_V',/extract,/regex))[0]
322  std_file1_I = file_basename(std_file1_I,'.nc')
323  std_file1_I = (strsplit(std_file1_I,'_icemod',/extract,/regex))[0]
324  std_file2_I = file_basename(std_file2_I,'.nc')
325  std_file2_I = (strsplit(std_file2_I,'_icemod',/extract,/regex))[0]
326
327;#########################################################################
328;######################  STANDARD PLOTS   ################################
329;#########################################################################
330
331  IF keyword_set(doplot) EQ 0 THEN doplot = 0
332
333; fixed color tabled
334  lct, 64
335  cnt = 0
336  htmltxt = ''
337;
338  cnt = cnt+1   &   blabla = 'Erp salinity damping term'
339  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_erp, ERP1, ERP2, _extra = ex
340;
341  cnt = cnt+1   &   blabla = 'Evaporation - Precipitation - Runoff term'
342  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_emp, EMP1, EMP2, _extra = ex
343;
344  cnt = cnt+1   &   blabla = 'Net heat flux'
345  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_qnet, Q1, Q2, QNET, _extra = ex
346;
347  cnt = cnt+1   &   blabla = 'Meridionnal Heat Transport'
348  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_mht, Q1.arr+geo, Q2.arr+geo, masknp, std_file_msksub, _extra = ex
349;
350  cnt = cnt+1   &   blabla = 'Global Barotropic stream Function'
351  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_bsf, U1, U2, _extra = ex
352;
353  cnt = cnt+1   &   blabla = 'mean Temperature diff with New Reynolds'
354  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_sst, T1, T2, TRey, _extra = ex
355;
356  cnt = cnt+1   &   blabla = 'mean Salinity diff with Levitus'
357  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_sss, S1, S2, SLev, _extra = ex
358;
359  cnt = cnt+1   &   blabla = 'Arctic mean Salinity diff with Levitus'
360  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_ArcSal, S1, SLev, _extra = ex       
361;
362  cnt = cnt+1   &   blabla = 'Arctic mean Salinity diff with Levitus and exp2'
363  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_ArcSal, S1, S2, SLev, _extra = ex
364;
365  cnt = cnt+1   &   blabla = 'Arctic mean Salinity diff with Levitus at z=100 meters'
366  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_ArcSal, S1, SLev, /z100, _extra = ex       
367;
368  cnt = cnt+1   &   blabla = 'Arctic mean Salinity diff with Levitus and exp2 at z=100 meters'
369  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_ArcSal, S1, S2, SLev, /z100, _extra = ex
370;
371  cnt = cnt+1   &   blabla = 'mean Temperature diff with Levitus at z=100 meters'
372  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_T100m, T1, T2, Tlev, _extra = ex
373
374  cnt = cnt+1   &   blabla = 'mean Salinity diff with Levitus at z=100 meters'
375  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_S100m, S1, S2, SLev, _extra = ex
376
377  cnt = cnt+1   &   blabla = 'Mixed layer depth'
378  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_mld, MLD1, MLD, _extra = ex
379;
380  cnt = cnt+1   &   blabla = 'Mixed layer depth differences'
381  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_mld, MLD1, MLD2, MLD, _extra = ex
382;
383  cnt = cnt+1   &   blabla = 'Zonal mean Mixed layer depth'
384  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_ZonMld, MLD1, MLD2, MLD, _extra = ex
385
386  cnt = cnt+1   &   blabla = 'Vertical Global mean T & S'
387  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_GlobMeanTS, T1, T2, TLev, S1, S2, SLev, _extra = ex
388;
389  cnt = cnt+1   &   blabla = 'Zonal mean Temperature diff with Levitus: Global'
390  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_zonal_T, T1, T2, TLev, _extra = ex
391;
392  cnt = cnt+1   &   blabla = 'Zonal mean Temperature diff with Levitus: Atlantic'
393  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_zonal_T, T1, T2, TLev, SUBBASIN = 'Atl', _extra = ex
394
395  cnt = cnt+1   &   blabla = 'Zonal mean Temperature diff with Levitus: Indian'
396  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_zonal_T, T1, T2, TLev, SUBBASIN = 'Ind', _extra = ex
397
398  cnt = cnt+1   &   blabla = 'Zonal mean Temperature diff with Levitus: Pacific'
399  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_zonal_T, T1, T2, TLev, SUBBASIN = 'Pac', _extra = ex
400;
401  cnt = cnt+1   &   blabla = 'Zonal mean Salinity diff with Levitus: Global'
402  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_zonal_S, S1, S2, SLev, _extra = ex
403;
404  cnt = cnt+1   &   blabla = 'Zonal mean Salinity diff with Levitus: Atlantic'
405  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_zonal_S, S1, S2, SLev, SUBBASIN = 'Atl', _extra = ex
406;
407  cnt = cnt+1   &   blabla = 'Zonal mean Salinity diff with Levitus: Indian'
408  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_zonal_S, S1, S2, SLev, SUBBASIN = 'Ind', _extra = ex
409;
410  cnt = cnt+1   &   blabla = 'Zonal mean Salinity diff with Levitus: Pacific'
411  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_zonal_S, S1, S2, SLev, SUBBASIN = 'Pac', _extra = ex
412
413  cnt = cnt+1   &   blabla = 'Meridional stream Function: Global (no Med)'
414  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_msf, V1, V2, SUBBASIN = 'GloNoMed', _extra = ex
415
416  cnt = cnt+1   &   blabla = 'Meridional stream Function: Atlantic'
417  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_msf, V1, V2, SUBBASIN = 'Atl', _extra = ex
418 ;
419  cnt = cnt+1   &   blabla = 'Meridional stream Function: Indian'
420  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_msf, V1, V2, SUBBASIN = 'Ind', _extra = ex
421 ;
422  cnt = cnt+1   &   blabla = 'Meridional stream Function: Indo-Pacific'
423  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_msf, V1, V2, SUBBASIN = 'IndoPac', _extra = ex
424;
425  cnt = cnt+1   &   blabla = 'Equatorial Temperature'
426  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_EqT, T1, T2, Tlev, _extra = ex
427;
428  cnt = cnt+1   &   blabla = 'Equatorial Salinity'
429  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_EqS, S1, S2, SLev, _extra = ex
430;
431  cnt = cnt+1   &   blabla = 'Equatorial zonal velocity'
432  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_EqU, U1, U2, _extra = ex
433;
434  cnt = cnt+1   &   blabla = 'Mediterranean salt tongue at depth=700'
435  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_Med_Sspread, S1, S2, SLev, 700, _extra = ex
436;
437  cnt = cnt+1   &   blabla = 'Mediterranean salt tongue at depth=1000'
438  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_Med_Sspread, S1, S2, SLev, 1000, _extra = ex
439;
440  cnt = cnt+1   &   blabla = 'Mediterranean water at lat=40°N'
441  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_Med_Sdepth, S1, S2, SLev, 40, _extra = ex
442;
443  cnt = cnt+1   &   blabla = 'Mediterranean water at lat=38°N'
444  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_Med_Sdepth, S1, S2, SLev, 38, _extra = ex
445;
446  cnt = cnt+1   &   blabla = 'Arctic Ice Thickness: JAN'
447  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceThick, Ithi_jan_1, Ithi_jan_2, /ARC, /JAN, _extra = ex
448;
449  cnt = cnt+1   &   blabla = 'Arctic Ice Thickness: APRIL'
450  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceThick, Ithi_april_1, Ithi_april_2, /ARC, /APRIL, _extra = ex
451
452  cnt = cnt+1   &   blabla = 'Antarctic Ice Thickness: APRIL'
453  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceThick, Ithi_april_1, Ithi_april_2, /ANT, /APRIL, _extra = ex
454;
455  cnt = cnt+1   &   blabla = 'Antarctic Ice Thickness: SEPT'
456  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceThick, Ithi_sept_1, Ithi_sept_2, /ANT, /SEPT, _extra = ex
457;
458  cnt = cnt+1   &   blabla = 'Arctic Ice Age: MARCH'
459  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceAge, Iage_march_1, Iage_march_2, /ARC, /MARCH, _extra = ex
460
461  cnt = cnt+1   &   blabla = 'Arctic Ice Age: SEPT'
462  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceAge, Iage_sept_1, Iage_sept_2, /ARC, /SEPT, _extra = ex
463
464  cnt = cnt+1   &   blabla = 'Antarctic Ice Age: MARCH'
465  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceAge, Iage_febr_1, Iage_febr_2, /ANT, /FEBR, _extra = ex
466;
467  cnt = cnt+1   &   blabla = 'Antarctic Ice Age: SEPT'
468  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceAge, Iage_sept_1, Iage_sept_2, /ANT, /SEPT, _extra = ex
469;
470  cnt = cnt+1   &   blabla = 'Arctic Ice Fraction: MARCH'
471  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceFrac, Ifra_march_1, Ifra_march_2, /ARC, /MARCH, _extra = ex
472
473  cnt = cnt+1   &   blabla = 'Arctic Ice Fraction: SEPT'
474  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceFrac, Ifra_sept_1, Ifra_sept_2, /ARC, /SEPT, _extra = ex
475
476  cnt = cnt+1   &   blabla = 'Antarctic Ice Fraction: MARCH'
477  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceFrac, Ifra_febr_1, Ifra_febr_2, /ANT, /FEBR, _extra = ex
478;
479  cnt = cnt+1   &   blabla = 'Antarctic Ice Fraction: SEPT'
480  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceFrac, Ifra_sept_1, Ifra_sept_2, /ANT, /SEPT, _extra = ex
481;
482  cnt = cnt+1   &   blabla = 'Arctic SNOW Thickness: MARCH'
483  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_SnowThick, Isnow_march_1, Isnow_march_2, /ARC, /MARCH, _extra = ex
484;
485  cnt = cnt+1   &   blabla = 'Arctic SNOW Thickness: SEPT'
486  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_SnowThick, Isnow_sept_1, Isnow_sept_2, /ARC, /SEPT, _extra = ex
487
488  cnt = cnt+1   &   blabla = 'Antarctic SNOW Thickness: MARCH'
489  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_SnowThick, Isnow_febr_1, Isnow_febr_2, /ANT, /FEBR, _extra = ex
490;
491  cnt = cnt+1   &   blabla = 'Antarctic SNOW Thickness: SEPT'
492  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_SnowThick, Isnow_sept_1, Isnow_sept_2, /ANT, /SEPT, _extra = ex
493;
494  cnt = cnt+1   &   blabla = 'Arctic Ice Salinity: MARCH'
495  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceSal, Isal_march_1, Isal_march_2, /ARC, /MARCH, _extra = ex
496;
497  cnt = cnt+1   &   blabla = 'Arctic Ice Salinity: SEPT'
498  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceSal, Isal_sept_1, Isal_sept_2, /ARC, /SEPT, _extra = ex
499
500  cnt = cnt+1   &   blabla = 'Antarctic Ice Salinity: FEBRUARY'
501  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceSal, Isal_febr_1, Isal_febr_2, /ANT, /FEBR, _extra = ex
502;
503  cnt = cnt+1   &   blabla = 'Antarctic Ice Salinity: SEPT'
504  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceSal, Isal_sept_1, Isal_sept_2, /ANT, /SEPT, _extra = ex
505;
506 
507  IF n_elements(htmltxt) GT 1 THEN putfile, psdir+'std_plot_html_body.txt', htmltxt[1:*]
508 
509  return
510END
Note: See TracBrowser for help on using the repository browser.