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.pro in NEMO/branches/2019/dev_r11842_SI3-10_EAP/cfgs/ORCA2_ICE_PISCES/IDL_scripts – NEMO

source: NEMO/branches/2019/dev_r11842_SI3-10_EAP/cfgs/ORCA2_ICE_PISCES/IDL_scripts/std_plot_all.pro @ 11878

Last change on this file since 11878 was 7732, checked in by flavoni, 7 years ago

commit idl scripts deleted

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