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

source: branches/2013/dev_r3918_CNRS_idl_plots/NEMOGCM/CONFIG/ORCA2_LIM/IDL_scripts/std_ts_ICE_Vol.pro @ 3929

Last change on this file since 3929 was 3929, checked in by flavoni, 11 years ago

add Ice volume in IDL scripts, see ticket: #1115

File size: 6.6 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;
13;
14pro std_ts_ICE_Vol, masknp, s_iodir_data,  POSTSCRIPT = postscript, _extra = ex
15
16  compile_opt idl2, strictarrsubs
17 
18@common
19@std_common
20
21; get exp1 info
22  vICE1     = getenv('VAR1_ICE')     &   prefix = getenv('V1ICE_PREF')  &   suffix = getenv('V1ICE_SUFF')
23  v1_Ithick = getenv('VAR1_Ithick')  &   prefix = getenv('V1It_PREF')   &   suffix = getenv('V1It_SUFF')
24; get exp2 info
25  vICE2     = getenv('VAR2_ICE')     &   prefix2 = getenv('V2ICE_PREF')   &   suffix2 = getenv('V2ICE_SUFF')
26  v2_Ithick = getenv('VAR2_Ithick')  &   prefix2 = getenv('V2It_PREF')    &   suffix2 = getenv('V2It_SUFF')
27
28; get ice VOLUME climatology info
29;;
30;  std_file_ice =  isafile(getenv('FILE_ICE'), title = 'ICE Extent Climatology', iodir = std_iodir_climato)
31;
32;  time_ice = ncdf_lec( std_file_ice, VAR='time' )
33;  time_ice = (time_ice - FLOOR(time_ice) ) * 12
34;  time_ice = round(time_ice) ; round to nearest integer
35;  t1 = where(time_ice eq 0)
36;  t1 = t1[0] ;  jannuary
37;  t2 = where(time_ice eq 11, count)
38;  t2 = t2[count-1] ; last day of december
39;  nyear = (t2-t1+1)/12
40;  vICE_Ithick_NH = read_arr2d(std_file_ice, getenv('VAR1_Ithick'), t1, t2 )
41;  vICE_Ithick_SH = read_arr2d(std_file_ice, getenv('VAR_ICE_EXT_SH'), t1, t2 )
42;
43;  vICE_area_NH = read_arr2d(std_file_ice, getenv('VAR_ICE_area_NH'), t1, t2 )
44;  vICE_area_SH = read_arr2d(std_file_ice, getenv('VAR_ICE_area_SH'), t1, t2 )
45
46  cdti3 = string(cnt, format = '(i3.3)')
47  print, cdti3 + ') ' + blabla
48  filename = cdti3 + '_ts_ICE_'+prefix
49  if prefix NE prefix2 then filename = filename + '_'+prefix2
50  if KEYWORD_SET(postscript) then openps, filename+'.ps', portrait = 1
51  d1_d2 = '('+strtrim(date1, 1)+' - '+strtrim(date2, 1)+')'
52  iodir = std_iodir_data
53  ; ICE Area(=Surface) in NORTH Hemisphere
54  domdef, 0, jpi-1, 30, 90, /xindex
55  ICE_N = rseries_ncdf(vICE1, date1, date2, prefix, suffix, FIRSTONLY = 1 - allrec)
56  ICE_thick = rseries_ncdf(v1_Ithick, date1, date2, prefix, suffix, FIRSTONLY = 1 - allrec)
57  ; Volume = Area(=Surface) * Thickness
58  ICE_vol_N = (ICE_N.arr < 1.e10 ) * ( ICE_thick.arr < 1.e10)  ; limited mask value of 1.e20, because 1.e20 * 1.e20 = inf for idl
59  ICE_vol_N = grossemoyenne(ICE_vol_N, 'xy', /integration, mask2d = masknp)
60  if jpt mod 12 ne 0 then stop
61  nyr=jpt/12.
62  ICE_vol_N = reform(ICE_vol_N, 12, nyr)
63  ICE_vol_N = total(ICE_vol_N,2)/nyr
64  ICE_vol_N = {arr:ICE_vol_N * 1.e-9, unit : '10^9 Km^3'}
65  ;ICE Area(=Surface) in SOUTH Hemisphere
66  domdef, 0, jpi-1, -90, -30, /xindex
67  ICE_S = rseries_ncdf(vICE1, date1, date2, prefix, suffix, FIRSTONLY = 1 - allrec)
68  ICE_thick = rseries_ncdf(v1_Ithick, date1, date2, prefix, suffix, FIRSTONLY = 1 - allrec)
69  ; Volume = Area(=Surface) * Thickness
70  ICE_vol_S = (ICE_S.arr < 1.e10 ) * ( ICE_thick.arr < 1.e10)  ; limited mask value of 1.e20, because 1.e20 * 1.e20 = inf for idl
71  ICE_vol_S = grossemoyenne(ICE_vol_S, 'xy', /integration, mask2d = masknp)
72  if jpt mod 12 ne 0 then stop
73  nyr=jpt/12.
74  ICE_vol_S = reform(ICE_vol_S, 12, nyr)
75  ICE_vol_S = total(ICE_vol_S,2)/nyr
76  ICE_vol_S = {arr:ICE_vol_S * 1.e-9, unit : '10^9 Km^3'}
77  ;
78  title = 'Northern Hemisphere'+'!C'+prefix+' '+d1_d2+'!C'+'Global Annual Mean Ice Volume (Black SOLID simulation) + Observation (dashed)'
79  jpt=12
80  time=julday(1,15,1900)+30*lindgen(12)
81  pltt, ICE_vol_N, 't', 0., 15., 19000101, 19001231, /REMPLI, /PORTRAIT,MIN = 0., MAX = 30000. $
82        , small = [1, 2, 1], YTITLE = '10^9 Km^3 ', TITLE = title, _extra = ex
83;
84  title ='Southern Hemisphere' +'!C'+prefix+' '+d1_d2+' - '+'!C'+'Global Annual Mean Ice Volume (Black SOLID simulation) + Observation (dashed)'
85  pltt, ICE_vol_S, 't', 0., 15.,19000101 ,19001231 , /REMPLI, /NOERASE , MIN = 0., MAX = 11000. $
86        , small = [1, 2, 2], YTITLE = '10^9 Km^3 ', TITLE = title, _extra = ex
87;
88
89  htmltxt = [ htmltxt, '<hr>'+blabla, '<br><img width="80%" src='+filename+'.png  />  ' ]
90  if KEYWORD_SET(postscript) then closeps
91
92  if prefix NE prefix2 then BEGIN
93
94    d1_d2_2 = '('+strtrim(date1_2, 1)+' - '+strtrim(date2_2, 1)+')'
95    tsave = time
96    domdef, 0, jpi-1, 30, 90, /xindex
97    ;ICE Area(=Surface) in NORTH Hemisphere
98    ICE_N2 = rseries_ncdf(vICE2, date1, date2, prefix, suffix, FIRSTONLY = 1 - allrec)
99    ICE_thick2 = rseries_ncdf(v2_Ithick, date1, date2, prefix, suffix, FIRSTONLY = 1 - allrec)
100    ; Volume = Area(=Surface) * Thickness
101    ICE_vol_N2 = (ICE_N2.arr < 1.e10 ) * ( ICE_thick2.arr < 1.e10) ; limited mask value of 1.e20, because 1.e20 * 1.e20 = inf for idl
102    ICE_vol_N2 = grossemoyenne(ICE_vol_N2, 'xy', /integration, mask2d = masknp)
103    if jpt mod 12 ne 0 then stop
104    nyr=jpt/12.
105    ICE_vol_N2 = reform(ICE_vol_N2, 12, nyr)
106    ICE_vol_N2 = total(ICE_vol_N2,2)/nyr
107    ICE_vol_N2 = {arr:ICE_vol_N2 * 1.e-9, unit : '10^3 Km^3'}
108
109    ;ICE Area(=Surface) in SOUTH Hemisphere
110    domdef, 0, jpi-1, -90, -30, /xindex
111    ICE_S2 = rseries_ncdf(vICE2, date1, date2, prefix, suffix, FIRSTONLY = 1 - allrec)
112    ICE_thick2 = rseries_ncdf(v2_Ithick, date1, date2, prefix, suffix, FIRSTONLY = 1 - allrec)
113    ; Volume = Area(=Surface) * Thickness
114    ICE_vol_S2 = (ICE_S2.arr < 1.e10 ) * ( ICE_thick.arr < 1.e10) ; limited mask value of 1.e20, because 1.e20 * 1.e20 = inf for idl
115    ICE_vol_S2 = grossemoyenne(ICE_vol_S2, 'xy', /integration, mask2d = masknp)
116    if jpt mod 12 ne 0 then stop
117    nyr=jpt/12.
118    ICE_vol_S2 = reform(ICE_vol_S2, 12, nyr)
119    ICE_vol_S2 = total(ICE_vol_S2,2)/nyr
120    ICE_vol_S2 = {arr:ICE_vol_S2 * 1.e-9, unit : '10^3 Km^3'}
121
122    time = tsave   &   IF n_elements(time) NE jpt THEN stop
123
124    if KEYWORD_SET(postscript) then openps, filename+'.ps', portrait = 1
125
126    title = prefix+' '+d1_d2+' - '+prefix2+' '+d1_d2_2+'!C'+'Global Annual Mean Ice Volume (North. Hemisp.)'
127    pltt, ICE_vol_N.arr - ICE_vol_N2.arr, 't', -2., 2., date1, date2, /REMPLI, /PORTRAIT, window = 2 $
128          , COLOR = 250, small = [1, 2, 1], YTITLE = '10^9 Km^3 ', TITLE = title, _extra = ex
129   ;
130    title = prefix+' '+d1_d2+' - '+prefix2+' '+d1_d2_2+'!C'+'Global Annual Mean Ice Area (South. Hemisp.)'
131    pltt, ICE_vol_S.arr - ICE_vol_S2.arr, 't', -2., 2., date1, date2, /REMPLI, /NOERASE $
132          , COLOR = 250, small = [1, 2, 2], YTITLE = '10^9 Km^3 ', TITLE = title, _extra = ex   
133
134    htmltxt = [ htmltxt, '<hr>'+blabla, '<br><img width="80%" src='+filename+'.png  />  ' ]
135    if KEYWORD_SET(postscript) then closeps
136
137  endif
138
139  domdef
140 
141
142  return
143end
Note: See TracBrowser for help on using the repository browser.