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_ts_ICE.pro in branches/2013/dev_MERGE_2013/NEMOGCM/CONFIG/ORCA2_LIM/IDL_scripts – NEMO

source: branches/2013/dev_MERGE_2013/NEMOGCM/CONFIG/ORCA2_LIM/IDL_scripts/std_ts_ICE.pro @ 4498

Last change on this file since 4498 was 4497, checked in by flavoni, 10 years ago

update idl scripts, see ticket #724

File size: 10.0 KB
Line 
1function read_arr2d, filename, varname, t1, t2
2;; function that read input file and return 2d array with monthly timecounter
3nyear = (t2-t1+1)/12
4arr2d = ncdf_lec(filename, VAR=varname)
5arr2d = arr2d[t1:t2]
6arr2d = reform(arr2d,12,nyear) ; put in 2D array
7arr2d = total(arr2d,2)/nyear ; total over 2th dimension (i.e.years)
8
9return, arr2d
10end
11
12;; here start procedure that use function read_arr2d 
13pro std_ts_ICE, masknp, s_iodir_data,  POSTSCRIPT = postscript, _extra = ex
14
15  compile_opt idl2, strictarrsubs
16 
17@common
18@std_common
19
20; get exp1 info
21  vICE1 = getenv('VAR1_ICE')   &   prefix = getenv('V1ICE_PREF')    &   suffix = getenv('V1ICE_SUFF')
22; get exp2 info
23  vICE2 = getenv('VAR2_ICE')   &   prefix2 = getenv('V2ICE_PREF')   &   suffix2 = getenv('V2ICE_SUFF')
24; get ice climatology info
25  std_file_ice =  isafile(getenv('FILE_ICE'), title = 'ICE Extent Climatology', iodir = std_iodir_climato)
26;
27  time_ice = ncdf_lec( std_file_ice, VAR='time' )
28  time_ice = (time_ice - FLOOR(time_ice) ) * 12
29  time_ice = (round(time_ice) + 11) mod 12; round to nearest integer
30  t1 = where(time_ice eq 0)
31  t1 = t1[0] ;  january
32  t2 = where(time_ice eq 11, count)
33  t2 = t2[count-1] ; last day of december
34
35  vICE_ext_NH = read_arr2d(std_file_ice, getenv('VAR_ICE_EXT_NH'), t1, t2 )
36  vICE_ext_SH = read_arr2d(std_file_ice, getenv('VAR_ICE_EXT_SH'), t1, t2 )
37;
38  vICE_area_NH = read_arr2d(std_file_ice, getenv('VAR_ICE_area_NH'), t1, t2 )
39  vICE_area_SH = read_arr2d(std_file_ice, getenv('VAR_ICE_area_SH'), t1, t2 )
40
41  cdti3 = string(cnt, format = '(i3.3)')
42  print, cdti3 + ') ' + blabla
43  filename = cdti3 + '_ts_ICE_'+prefix
44  if prefix NE prefix2 then filename = filename + '_'+prefix2
45  if KEYWORD_SET(postscript) then openps, filename+'.ps', portrait = 1
46;
47  d1_d2 = '('+strtrim(date1, 1)+' - '+strtrim(date2, 1)+')'
48;
49  iodir = std_iodir_data
50  ; ICE Area in NORTH Hemisphere
51  domdef, 0, jpi-1, 30, 90, /xindex
52  ICE_N = rseries_ncdf(vICE1, date1, date2, prefix, suffix, FIRSTONLY = 1 - allrec)
53  ICE_N = grossemoyenne(ICE_N.arr, 'xy', /integration, mask2d = masknp)
54
55  if jpt mod 12 ne 0 then stop
56  nyr=jpt/12.
57  ICE_N = reform(ice_n, 12,nyr)
58  ICE_n = total(ice_n,2)/nyr
59  ICE_N = {arr:ICE_N * 1.e-12, unit : '10^12 m^2'}
60
61  ; ICE EXTENT (Area minus 15%) in NORTH Hemisphere
62  ICE_N_15 = rseries_ncdf(vICE1, date1, date2, prefix, suffix, FIRSTONLY = 1 - allrec)
63  msk = ICE_N_15.arr gt 0.15 ; remove 0.15% for observations
64  ICE_N_15 = grossemoyenne( msk, 'xy', /integration, mask2d = masknp)
65  if jpt mod 12 ne 0 then stop
66  nyr=jpt/12.
67  ICE_N_15 = reform(ice_n_15, 12,nyr)
68  ICE_n_15 = total(ice_n_15,2)/nyr
69  ICE_N_15 = {arr:ICE_N_15 * 1.e-12, unit : '10^12 m^2'}
70  ;
71  ;ICE Area in SOUTH Hemisphere
72  domdef, 0, jpi-1, -90, -30, /xindex
73  ICE_S = rseries_ncdf(vICE1, date1, date2, prefix, suffix, FIRSTONLY = 1 - allrec)
74  ICE_S = grossemoyenne(ICE_S.arr, 'xy', /integration, mask2d = masknp)
75  if jpt mod 12 ne 0 then stop
76  nyr=jpt/12.
77  ICE_S = reform(ice_S, 12,nyr)
78  ICE_S = total(ice_S,2)/nyr
79  ICE_S = {arr:ICE_S * 1.e-12, unit : '10^12 m^2'}
80  ; ICE EXTENT (Area minus 15%) in SOUTH Hemisphere
81  ICE_S_15 = rseries_ncdf(vICE1, date1, date2, prefix, suffix, FIRSTONLY = 1 - allrec)
82  msk = ICE_S_15.arr gt 0.15 ; remove 0.15% for observations
83  ICE_S_15 = grossemoyenne(msk, 'xy', /integration, mask2d = masknp)
84  if jpt mod 12 ne 0 then stop
85  nyr=jpt/12.
86  ICE_S_15 = reform(ice_S_15, 12,nyr)
87  ICE_S_15 = total(ice_S_15,2)/nyr
88  ICE_S_15 = {arr:ICE_S_15 * 1.e-12, unit : '10^12 m^2'}
89  ;
90  title = 'Northern Hemisphere'+'!C'+prefix+' (BLACK) '+d1_d2+'!C'+'OBSERVATION (light blue) '+'!C'+' Global Annual Mean Ice Area (CONTINUOUS) '+'!C'+ 'and Extend minus 15% (DASHED)'
91  jpt=12
92  time=julday(1,15,1900)+30*lindgen(12)
93  pltt, ICE_N, 't', MIN = 4., MAX = 16., /REMPLI, /PORTRAIT, XGRIDSTYLE = 1, DATE_FORMAT = '%M' $
94       , COLOR = 000 , small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
95  pltt, ICE_N_15, 't', /REMPLI, /PORTRAIT, LINESTYLE=2 $       ;;; dashed lines is LINESTYLE=2  $
96        , /ov1d, COLOR = 000, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
97  pltt, vICE_area_NH, 't',  /REMPLI, /PORTRAIT  $
98        , /ov1d, COLOR = 100, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
99  pltt, vICE_ext_NH, 't', /REMPLI, /PORTRAIT, LINESTYLE=2 $   ;;; dashed lines is LINESTYLE=2  $
100        , /ov1d, COLOR = 100, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
101;
102  title = 'Southern Hemisphere'+'!C'+prefix+' (BLACK) '+d1_d2+'!C'+'OBSERVATION (light blue) '+'!C'+' Global Annual Mean Ice Area (CONTINUOUS) '+'!C'+ 'and Extend minus 15% (DASHED)'
103  pltt, ICE_S, 't', MIN = 0., MAX = 20., /REMPLI, /NOERASE , XGRIDSTYLE = 1 , DATE_FORMAT = '%M' $
104        ,COLOR = 000, small = [1, 2, 2], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
105  pltt, ICE_S_15, 't', /REMPLI, /PORTRAIT, LINESTYLE=2 $
106        , /ov1d, COLOR = 000, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
107  pltt,  vICE_area_SH, 't', /REMPLI, /PORTRAIT  $
108         , /ov1d, COLOR = 100, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
109  pltt,  vICE_ext_SH, 't', /REMPLI, /PORTRAIT, LINESTYLE=2 $
110        , /ov1d, COLOR = 100, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
111;
112  htmltxt = [ htmltxt, '<hr>'+blabla, '<br><img width="80%" src='+filename+'.png  />  ' ]
113  if KEYWORD_SET(postscript) then closeps
114
115  if prefix NE prefix2 then BEGIN
116
117    d1_d2_2 = '('+strtrim(date1_2, 1)+' - '+strtrim(date2_2, 1)+')'
118    tsave = time
119    domdef, 0, jpi-1, 30, 90, /xindex
120    ;ICE Extent in NORTH Hemisphere
121    ICE_N2 = rseries_ncdf(vICE2, date1_2, date2_2, prefix2, suffix2, FIRSTONLY = 1 - allrec)
122    ICE_N2 = grossemoyenne(ICE_N2.arr, 'xy', /integration, mask2d = masknp)
123    if jpt mod 12 ne 0 then stop
124    nyr=jpt/12.
125    ICE_N2 = reform(ICE_N2, 12,nyr)
126    ICE_N2 = total(ICE_N2,2)/nyr
127    ICE_N2 = {arr:ICE_N2 * 1.e-12, unit : '10^12 m^2'}
128    ;ICE Extent minus 15% in NORTH Hemisphere
129    ICE_N2_15 = rseries_ncdf(vICE2, date1_2, date2_2, prefix2, suffix2, FIRSTONLY = 1 - allrec)
130    msk = ICE_N2_15.arr gt 0.15  ; remove 0.15% for observations
131    ICE_N2_15 = grossemoyenne( msk, 'xy', /integration, mask2d = masknp)
132    if jpt mod 12 ne 0 then stop
133    nyr=jpt/12.
134    ICE_N2_15 = reform(ICE_N2_15, 12,nyr)
135    ICE_N2_15 = total(ICE_N2_15,2)/nyr
136    ICE_N2_15 = {arr:ICE_N2_15 * 1.e-12, unit : '10^12 m^2'}
137    ;ICE Extent in SOUTH Hemisphere
138    domdef, 0, jpi-1, -90, -30, /xindex
139    ICE_S2 = rseries_ncdf(vICE2, date1_2, date2_2, prefix2, suffix2, FIRSTONLY = 1 - allrec)
140    ICE_S2 = grossemoyenne(ICE_S2.arr, 'xy', /integration, mask2d = masknp)
141    if jpt mod 12 ne 0 then stop
142    nyr=jpt/12.
143    ICE_S2 = reform(ICE_S2, 12,nyr)
144    ICE_S2 = total(ICE_S2,2)/nyr
145    ICE_S2 = {arr:ICE_S2 * 1.e-12, unit : '10^12 m^2'}
146    ;ICE Extent minus 15% in SOUTH Hemisphere
147    ICE_S2_15 = rseries_ncdf(vICE2, date1_2, date2_2, prefix2, suffix2, FIRSTONLY = 1 - allrec)
148    msk = ICE_S2_15.arr gt 0.15  ; remove 0.15% for observations
149    ICE_S2_15 = grossemoyenne(msk, 'xy', /integration, mask2d = masknp)
150    if jpt mod 12 ne 0 then stop
151    nyr=jpt/12.
152    ICE_S2_15 = reform(ICE_S2_15, 12,nyr)
153    ICE_S2_15 = total(ICE_S2_15,2)/nyr
154    ICE_S2_15 = {arr:ICE_S2_15 * 1.e-12, unit : '10^12 m^2'}
155  ;
156 ;   time = tsave   &   IF n_elements(time) NE jpt THEN stop
157
158    if KEYWORD_SET(postscript) then openps, filename+'_2.ps', portrait = 1
159
160
161  title = 'Northern Hemisphere'+'!C'+prefix+' (BLACK) - '+prefix2+' (RED) '+d1_d2_2+'!C'+'OBSERVATION (light blue) '+'!C'+' Global Annual Mean Ice Area (CONTINUOUS) '+'!C'+ 'and Extend minus 15% (DASHED)'
162  jpt=12
163  time=julday(1,15,1900)+30*lindgen(12)
164  pltt, ICE_N, 't', MIN = 4, MAX = 16,  /REMPLI, /PORTRAIT, XGRIDSTYLE = 1, window = 2, DATE_FORMAT = '%M' $
165        , COLOR = 000, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex ; BLACK
166  pltt, ICE_N2, 't', /REMPLI, /PORTRAIT  $
167        , /ov1d, COLOR = 250, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex  ; RED
168  pltt, ICE_N_15, 't', /REMPLI, /PORTRAIT, LINESTYLE=2  $ ; linee tratteggiate LINESTYLE=2  $
169        , /ov1d, COLOR = 000, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
170  pltt, ICE_N2_15, 't', /REMPLI, /PORTRAIT, LINESTYLE=2 $ ; linee tratteggiate LINESTYLE=2  $
171        , /ov1d, COLOR = 250, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
172  pltt, vICE_area_NH, 't', /REMPLI, /PORTRAIT  $
173        , /ov1d, COLOR = 100, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex  ; light blue
174  pltt, vICE_ext_NH, 't', /REMPLI, /PORTRAIT, LINESTYLE=2 $
175        , /ov1d, COLOR = 100, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex  ; blu scuro
176;
177  title ='Southern Hemisphere'+'!C'+prefix+' (BLACK) - '+prefix2+' (RED) '+d1_d2_2+'!C'+'OBSERVATION (light blue) '+'!C'+'Global Annual Mean Ice Area (CONTINUS)'+'!C'+ 'and Extend minus 15% (DASHED)'
178;  title ='Southern Hemisphere'+'!C'
179  pltt, ICE_S, 't', MIN = 0., MAX = 20.,  /REMPLI, /NOERASE, XGRIDSTYLE = 1, DATE_FORMAT = '%M' $
180         , COLOR = 000, small = [1, 2, 2], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
181  pltt, ICE_S2, 't', /REMPLI, /NOERASE $
182        , /ov1d, COLOR = 250, small = [1, 2, 2], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
183  pltt, ICE_S_15 , 't', /REMPLI, /PORTRAIT, LINESTYLE=2 $ ; linee tratteggiate LINESTYLE=2  $
184        , /ov1d, COLOR = 000, small = [1, 2, 2], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
185  pltt, ICE_S2_15, 't', /REMPLI, /PORTRAIT, LINESTYLE=2 $ ; linee tratteggiate LINESTYLE=2  $
186        , /ov1d, COLOR = 250, small = [1, 2, 2], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
187  pltt,  vICE_area_SH, 't', /REMPLI, /PORTRAIT $
188          , /ov1d, COLOR = 100, small = [1, 2, 2], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
189  pltt,  vICE_ext_SH, 't', /REMPLI, /PORTRAIT, LINESTYLE=2 $
190        , /ov1d, COLOR = 100, small = [1, 2, 2], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
191;
192
193    htmltxt = [ htmltxt, '<hr>'+blabla, '<br><img width="80%" src='+filename+'_2.png  />  ' ]
194    if KEYWORD_SET(postscript) then closeps
195
196  endif
197
198  domdef
199 
200
201  return
202end
Note: See TracBrowser for help on using the repository browser.