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/2014/dev_r4650_UKMO14.5_SST_BIAS_CORRECTION/NEMOGCM/CONFIG/ORCA2_LIM/IDL_scripts – NEMO

source: branches/2014/dev_r4650_UKMO14.5_SST_BIAS_CORRECTION/NEMOGCM/CONFIG/ORCA2_LIM/IDL_scripts/std_ts_ICE.pro @ 5967

Last change on this file since 5967 was 5967, checked in by timgraham, 8 years ago

Reset keywords before merging with head of trunk

  • Property svn:keywords set to Id
File size: 10.4 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  title = 'Northern Hemisphere'+'!C'+prefix+' (BLACK) '+d1_d2+'!C'+'OBSERVATION (light blue) '+'!C'+' Global Annual Mean Ice Area (DASHED) '+'!C'+ 'and Extend minus 15% (CONTINUOUS)'
92  jpt=12
93  time=julday(1,15,1900)+30*lindgen(12)
94  pltt, ICE_N, 't', MIN = 4., MAX = 16., /REMPLI, /PORTRAIT, LINESTYLE=2, XGRIDSTYLE = 1, DATE_FORMAT = '%M' $
95       , COLOR = 000 , small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
96  pltt, ICE_N_15, 't', /REMPLI, /PORTRAIT $       ;;; dashed lines is LINESTYLE=2  $
97        , /ov1d, COLOR = 000, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
98  pltt, vICE_area_NH, 't',  /REMPLI, /PORTRAIT, LINESTYLE=2  $
99        , /ov1d, COLOR = 100, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
100  pltt, vICE_ext_NH, 't', /REMPLI, /PORTRAIT $   ;;; dashed lines is LINESTYLE=2  $
101        , /ov1d, COLOR = 100, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
102;
103  title = 'Southern Hemisphere'+'!C'+prefix+' (BLACK) '+d1_d2+'!C'+'OBSERVATION (light blue) '+'!C'+' Global Annual Mean Ice Area (DASHED) '+'!C'+ 'and Extend minus 15% (CONTINUOUS)'
104  pltt, ICE_S, 't', MIN = 0., MAX = 20., /REMPLI, LINESTYLE=2, /NOERASE , XGRIDSTYLE = 1 , DATE_FORMAT = '%M' $
105        ,COLOR = 000, small = [1, 2, 2], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
106  pltt, ICE_S_15, 't', /REMPLI, /PORTRAIT $
107        , /ov1d, COLOR = 000, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
108  pltt,  vICE_area_SH, 't', /REMPLI, /PORTRAIT, LINESTYLE=2  $
109         , /ov1d, COLOR = 100, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
110  pltt,  vICE_ext_SH, 't', /REMPLI, /PORTRAIT $
111        , /ov1d, COLOR = 100, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
112;
113  htmltxt = [ htmltxt, '<hr>'+blabla, '<br><img width="80%" src='+filename+'.png  />  ' ]
114  if KEYWORD_SET(postscript) then closeps
115
116  if prefix NE prefix2 then BEGIN
117
118    d1_d2_2 = '('+strtrim(date1_2, 1)+' - '+strtrim(date2_2, 1)+')'
119    tsave = time
120    domdef, 0, jpi-1, 30, 90, /xindex
121    ;ICE Extent in NORTH Hemisphere
122    ICE_N2 = rseries_ncdf(vICE2, date1_2, date2_2, prefix2, suffix2, FIRSTONLY = 1 - allrec)
123    ICE_N2 = grossemoyenne(ICE_N2.arr, 'xy', /integration, mask2d = masknp)
124    if jpt mod 12 ne 0 then stop
125    nyr=jpt/12.
126    ICE_N2 = reform(ICE_N2, 12,nyr)
127    ICE_N2 = total(ICE_N2,2)/nyr
128    ICE_N2 = {arr:ICE_N2 * 1.e-12, unit : '10^12 m^2'}
129    ;ICE Extent minus 15% in NORTH Hemisphere
130    ICE_N2_15 = rseries_ncdf(vICE2, date1_2, date2_2, prefix2, suffix2, FIRSTONLY = 1 - allrec)
131    msk = ICE_N2_15.arr gt 0.15  ; remove 0.15% for observations
132    ICE_N2_15 = grossemoyenne( msk, 'xy', /integration, mask2d = masknp)
133    if jpt mod 12 ne 0 then stop
134    nyr=jpt/12.
135    ICE_N2_15 = reform(ICE_N2_15, 12,nyr)
136    ICE_N2_15 = total(ICE_N2_15,2)/nyr
137    ICE_N2_15 = {arr:ICE_N2_15 * 1.e-12, unit : '10^12 m^2'}
138    ;ICE Extent in SOUTH Hemisphere
139    domdef, 0, jpi-1, -90, -30, /xindex
140    ICE_S2 = rseries_ncdf(vICE2, date1_2, date2_2, prefix2, suffix2, FIRSTONLY = 1 - allrec)
141    ICE_S2 = grossemoyenne(ICE_S2.arr, 'xy', /integration, mask2d = masknp)
142    if jpt mod 12 ne 0 then stop
143    nyr=jpt/12.
144    ICE_S2 = reform(ICE_S2, 12,nyr)
145    ICE_S2 = total(ICE_S2,2)/nyr
146    ICE_S2 = {arr:ICE_S2 * 1.e-12, unit : '10^12 m^2'}
147    ;ICE Extent minus 15% in SOUTH Hemisphere
148    ICE_S2_15 = rseries_ncdf(vICE2, date1_2, date2_2, prefix2, suffix2, FIRSTONLY = 1 - allrec)
149    msk = ICE_S2_15.arr gt 0.15  ; remove 0.15% for observations
150    ICE_S2_15 = grossemoyenne(msk, 'xy', /integration, mask2d = masknp)
151    if jpt mod 12 ne 0 then stop
152    nyr=jpt/12.
153    ICE_S2_15 = reform(ICE_S2_15, 12,nyr)
154    ICE_S2_15 = total(ICE_S2_15,2)/nyr
155    ICE_S2_15 = {arr:ICE_S2_15 * 1.e-12, unit : '10^12 m^2'}
156  ;
157 ;   time = tsave   &   IF n_elements(time) NE jpt THEN stop
158
159    if KEYWORD_SET(postscript) then openps, filename+'_2.ps', portrait = 1
160
161
162  ;;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)'
163  title = 'Northern Hemisphere'+'!C'+prefix+' (BLACK) - '+prefix2+' (RED) '+d1_d2_2+'!C'+'OBSERVATION (light blue) '+'!C'+' Global Annual Mean Ice Area (DASHED) '+'!C'+ 'and Extend minus 15% (CONTINUOUS)'
164  jpt=12
165  time=julday(1,15,1900)+30*lindgen(12)
166  pltt, ICE_N, 't', MIN = 4, MAX = 16,  /REMPLI, /PORTRAIT, LINESTYLE=2, XGRIDSTYLE = 1, window = 2, DATE_FORMAT = '%M' $
167        , COLOR = 000, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex ; BLACK
168  pltt, ICE_N2, 't', /REMPLI, /PORTRAIT , LINESTYLE=2 $
169        , /ov1d, COLOR = 250, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex  ; RED
170  pltt, ICE_N_15, 't', /REMPLI, /PORTRAIT $ ; linee tratteggiate LINESTYLE=2  $
171        , /ov1d, COLOR = 000, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
172  pltt, ICE_N2_15, 't', /REMPLI, /PORTRAIT $ ; linee tratteggiate LINESTYLE=2  $
173        , /ov1d, COLOR = 250, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
174  pltt, vICE_area_NH, 't', /REMPLI, /PORTRAIT, LINESTYLE=2  $
175        , /ov1d, COLOR = 100, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex  ; light blue
176  pltt, vICE_ext_NH, 't', /REMPLI, /PORTRAIT $
177        , /ov1d, COLOR = 100, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex  ; blu scuro
178;
179  title ='Southern Hemisphere'+'!C'+prefix+' (BLACK) - '+prefix2+' (RED) '+d1_d2_2+'!C'+'OBSERVATION (light blue) '+'!C'+'Global Annual Mean Ice Area (DASHED)'+'!C'+ 'and Extend minus 15% (CONTINUOUS)'
180;  title ='Southern Hemisphere'+'!C'
181  pltt, ICE_S, 't', MIN = 0., MAX = 20., /REMPLI, LINESTYLE=2, /NOERASE, XGRIDSTYLE = 1, DATE_FORMAT = '%M' $
182         , COLOR = 000, small = [1, 2, 2], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
183  pltt, ICE_S2, 't', /REMPLI, /NOERASE, LINESTYLE=2 $
184        , /ov1d, COLOR = 250, small = [1, 2, 2], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
185  pltt, ICE_S_15 , 't', /REMPLI, /PORTRAIT $ ; linee tratteggiate LINESTYLE=2  $
186        , /ov1d, COLOR = 000, small = [1, 2, 2], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
187  pltt, ICE_S2_15, 't', /REMPLI, /PORTRAIT $ ; linee tratteggiate LINESTYLE=2  $
188        , /ov1d, COLOR = 250, small = [1, 2, 2], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
189  pltt,  vICE_area_SH, 't', /REMPLI, /PORTRAIT, LINESTYLE=2 $
190          , /ov1d, COLOR = 100, small = [1, 2, 2], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
191  pltt,  vICE_ext_SH, 't', /REMPLI, /PORTRAIT $
192        , /ov1d, COLOR = 100, small = [1, 2, 2], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex
193;
194
195    htmltxt = [ htmltxt, '<hr>'+blabla, '<br><img width="80%" src='+filename+'_2.png  />  ' ]
196    if KEYWORD_SET(postscript) then closeps
197
198  endif
199
200  domdef
201 
202
203  return
204end
Note: See TracBrowser for help on using the repository browser.