- Timestamp:
- 2011-04-26T10:45:52+02:00 (13 years ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/CONFIG/ORCA2_LIM/IDL_scripts/std_ts_AMOC.pro
r2740 r2751 1 pro ts_mean_V, sEXP1, sEXP2, year1, year2, s_iodir_data, POSTSCRIPT = postscript, _extra = ex 1 PRO std_ts_read_AMOC, var_name, dt1, dt2, prefix, suffix, t45, t70, t50 2 2 3 4 3 compile_opt idl2, strictarrsubs 5 4 6 @common 7 8 @initorca2 9 5 @common 6 @std_common 10 7 11 if KEYWORD_SET(POSTSCRIPT) then begin 12 openps, sEXP1+'_V_mean.ps', portrait = 1 13 endif 14 15 ; inizialization of vectors (for experience 1 and 2) 16 ts_mAMOC45 = 0. 17 ts_mAABW70 = 0. 18 ts_mAABC50 = 0. 19 ts_mAMOC45_2 = 0. 20 ts_mAABW70_2 = 0. 21 ts_mAABC50_2 = 0. 8 list = rseries_ncdf(var_name, dt1, dt2, prefix, suffix, /fileslist) 9 nfiles = n_elements(list) 22 10 23 ts_Time = 0. 24 25 for year=year1,year2 do begin 26 27 date1 = year * 10000L + 101 28 date2 = year * 10000L + 1231 29 filename = getname(s_iodir_data,sEXP1,'1Y','grid_V',date1) 30 filename2 = getname(s_iodir_data,sEXP2,'1Y','grid_V',date1) 31 32 if filename eq '' then stop 33 34 domdef, 0, jpk-1,/zindex 11 t45 = 0. 12 t70 = 0. 13 t50 = 0. 14 ts_Time = 0. 35 15 36 V1 = read_ncdf('vocetr_eff',date1 ,date2 , filename = filename, /nostruct) 37 V2 = read_ncdf('vocetr_eff',date1 ,date2 , filename = filename2, /nostruct) 38 39 msf_tot = msf(V1, indexboxzoom = ind) 40 msf2_tot = msf(V2, indexboxzoom = ind) 41 42 yaxis = gphit[ind[0], ind[2]:ind[3]] 43 16 trans = strlowcase(var_name) EQ 'vocetr_eff' 17 18 FOR i = 0, nfiles-1 DO BEGIN 19 var = read_ncdf(var_name, allrecords = allrec, filename = list[i], /nostruct) 20 ts_Time = [ ts_Time, Time] 21 ; 22 FOR t = 0, jpt-1 DO BEGIN 23 msftot = msf(var[*, *, *, t], TRANSPORT = trans, /nostruct, indexboxzoom = ind) 24 yaxis = gphit[ind[0], ind[2]:ind[3]] 25 44 26 ; computation of max Atlatic Meridional Overturninc Circulation at 40°N and 50°N 45 ;; see plot msf global 46 indy = where(yaxis gt 40 and yaxis le 50) 47 domdef, 0, 3500 48 49 mAMOC45 = max(msf_tot.arr[indy, firstzw:lastzw],/NaN) 50 mAMOC45_2 = max(msf2_tot.arr[indy, firstzw:lastzw],/NaN) 51 27 indy = where(yaxis gt 40 and yaxis le 50) 28 domdef, 0, 3500 29 t45 = [t45, max(msftot[indy, firstzw:lastzw], /NaN)] 30 52 31 ; computation of max atlantic Antarctic Bottom Water between 80°S and 65°S 53 ;; see plot msf global 54 indy = where(yaxis gt -80 and yaxis le -65) 55 domdef, 300, 3500 56 57 mAABW70 = min(msf_tot.arr[indy, firstzw:lastzw],/NaN) 58 mAABW70_2 = min(msf2_tot.arr[indy, firstzw:lastzw],/NaN) 32 indy = where(yaxis gt -80 and yaxis le -65) 33 domdef, 300, 3500 34 t70 = [t70, min(msftot[indy, firstzw:lastzw], /NaN)] 59 35 60 36 ; computation of max Antarctic Abyssal Bottom Cell between 65°S and 30°N , 61 ;; see plot msf global 62 indy = where(yaxis gt -65 and yaxis le 30) 63 domdef, 2500, 5000 37 indy = where(yaxis gt -65 and yaxis le 30) 38 domdef, 2500, 5000 39 t50 = [t50, min(msftot[indy, firstzw:lastzw], /NaN)] 40 41 domdef, 0, jpk-1, /zindex 42 ENDFOR 43 44 ENDFOR 45 46 time = ts_Time[1:*] ; remove first record of 0 47 jpt = n_elements(time) 48 49 t45 = t45[1:*] ; remove first record of 0 50 t70 = t70[1:*] ; remove first record of 0 51 t50 = t50[1:*] ; remove first record of 0 52 53 return 54 end 55 56 pro std_ts_AMOC, masknp, s_iodir_data, POSTSCRIPT = postscript, _extra = ex 57 58 compile_opt idl2, strictarrsubs 59 60 @common 61 @std_common 62 63 ; get exp1 info 64 vV1 = getenv('VAR1_V') & prefix = getenv('V1V_PREF') & suffix = getenv('V1V_SUFF') 65 ; get exp2 info 66 vV2 = getenv('VAR2_V') & prefix2 = getenv('V2V_PREF') & suffix2 = getenv('V2V_SUFF') 67 ; 68 cdti3 = string(cnt, format = '(i3.3)') 69 print, cdti3 + ') ' + blabla 70 filename = cdti3 + '_ts_AMOC_'+prefix 71 if prefix NE prefix2 then filename = filename + '_'+prefix2 72 if KEYWORD_SET(postscript) then openps, filename+'_1.ps', portrait = 1 73 ; 74 d1_d2 = '('+strtrim(date1, 1)+' - '+strtrim(date2, 1)+')' 75 d1_d2_2 = '('+strtrim(date1_2, 1)+' - '+strtrim(date2_2, 1)+')' 76 ; 77 iodir = std_iodir_data 78 79 ; compute the MSF 80 81 std_ts_read_AMOC, vV1, date1, date2, prefix, suffix, t45, t70, t50 82 if prefix NE prefix2 then begin 83 tsave = time 84 std_ts_read_AMOC, vV2, date1_2, date2_2, prefix2, suffix2, t45_2, t70_2, t50_2 85 time = tsave & IF n_elements(time) NE jpt THEN stop 86 ENDIF 87 88 ; plots... 89 90 title = prefix+' '+d1_d2+'!C'+'Max Atlantic MOC between 40N and 50N' 91 pltt, t45, 't', 0., 30., date1, date2, /REMPLI, /PORTRAIT $ 92 , small = [1, 2, 1], TITLE = title, YTITLE = varunit, _extra = ex 93 IF prefix NE prefix2 then begin 94 title = prefix+' '+d1_d2+' - '+prefix2+' '+d1_d2_2+'!C'+'Max Atlantic MOC between 40N and 50N' 95 pltt, t45 - t45_2, 't', -9., 9., date1, date2, /REMPLI, /NOERASE $ 96 , COLOR = 250, small = [1, 2, 2], TITLE = title, YTITLE = varunit, _extra = ex 97 endif 98 99 htmltxt = [ htmltxt, '<hr>'+blabla, '<br><img width="80%" src='+filename+'_1.png /> ' ] 100 if KEYWORD_SET(postscript) then closeps 101 if KEYWORD_SET(postscript) then openps, filename+'_2.ps', portrait = 1 102 103 title = prefix+' '+d1_d2+'!C'+'Max AntArctic Bottom Water between 80S and 65S '+d1_d2 104 pltt, -t70, 't', 0., 20., date1, date2, /REMPLI, /PORTRAIT, window = 2 $ 105 , small = [1, 2, 1], TITLE = title, YTITLE = varunit, _extra = ex 106 if prefix NE prefix2 then begin 107 title = prefix+' '+d1_d2+' - '+prefix2+' '+d1_d2_2+'!C'+'Max AntArctic Bottom Water between 80S and 65S' 108 pltt, -t70 + t70_2, 't', -5., 5., date1, date2, /REMPLI, /NOERASE $ 109 , COLOR = 250, small = [1, 2, 2], TITLE = title, YTITLE = varunit, _extra = ex 110 endif 111 112 htmltxt = [ htmltxt, '<hr>'+blabla, '<br><img width="80%" src='+filename+'_2.png /> ' ] 113 if KEYWORD_SET(postscript) then closeps 114 if KEYWORD_SET(postscript) then openps, filename+'_3.ps', portrait = 1 115 116 title = prefix+' '+d1_d2+'!C'+'Max AntArctic Bottom Cell between 65S and 30N '+d1_d2 117 pltt, -t50, 't', 5., 30., date1, date2, /REMPLI, /PORTRAIT, window = 3 $ 118 , small = [1, 2, 1], TITLE = title, YTITLE = varunit, _extra = ex 119 if prefix NE prefix2 then begin 120 title = prefix+' '+d1_d2+' - '+prefix2+' '+d1_d2_2+'!C'+'Max AntArctic Bottom Cell between 65S and 30N' 121 pltt, -t50 + t50_2, 't', -5., 5., date1, date2, /REMPLI, /NOERASE $ 122 , COLOR = 250, small = [1, 2, 2], TITLE = title, YTITLE = varunit, _extra = ex 123 endif 124 125 domdef, 0, jpk-1, /zindex 126 127 htmltxt = [ htmltxt, '<hr>'+blabla, '<br><img width="80%" src='+filename+'_3.png /> ' ] 128 if KEYWORD_SET(postscript) then closeps 64 129 65 mAABC50 = min(msf_tot.arr[indy, firstzw:lastzw],/NaN) 66 mAABC50_2 = min(msf2_tot.arr[indy, firstzw:lastzw],/NaN) 67 68 ; creation of Time Series 69 ; for EXPERIENCE 1 70 ts_mAMOC45 = [ ts_mAMOC45, mAMOC45 ] 71 ts_mAABW70 = [ ts_mAABW70, mAABW70 ] 72 ts_mAABC50 = [ ts_mAABC50, mAABC50 ] 73 74 ; for EXPERIENCE 2 75 ts_mAMOC45_2 = [ ts_mAMOC45_2, mAMOC45_2 ] 76 ts_mAABW70_2 = [ ts_mAABW70_2, mAABW70_2 ] 77 ts_mAABC50_2 = [ ts_mAABC50_2, mAABC50_2 ] 78 79 ts_Time = [ ts_Time, Time] ; Time = date 80 81 endfor 82 83 ts_mAMOC45 = ts_mAMOC45[1:*] ; remove first record of 0 84 ts_mAABW70 = ts_mAABW70[1:*] ; remove first record of 0 85 ts_mAABC50 = ts_mAABC50[1:*] ; remove first record of 0 86 87 ts_mAMOC45_2 = ts_mAMOC45_2[1:*] ; remove first record of 0 88 ts_mAABW70_2 = ts_mAABW70_2[1:*] ; remove first record of 0 89 ts_mAABC50_2 = ts_mAABC50_2[1:*] ; remove first record of 0 90 91 Time = ts_Time[1:*] ; remove first record of 0 92 93 jpt = n_elements(Time) 94 95 title = sEXP1+' Max Atlantic MOC between 40N and 50N --- year '+strtrim(year1,1)+' - '+strtrim(year2,1) 96 pltt, ts_mAMOC45,'t', 0., 30., year1 * 10000L + 101, year2 * 10000L + 1231 , /REMPLI $ 97 , small = [1,2,1], TITLE = title, YTITLE='Sv', FORMAT = '(I3)', /PORTRAIT, _extra = ex 98 99 if sEXP2 ne sEXP1 then begin 100 title = sEXP1+' - '+sEXP2+' Max Atlantic MOC between 40N and 50N --- year '+strtrim(year1,1)+' - '+strtrim(year2,1) 101 pltt, ts_mAMOC45 - ts_mAMOC45_2,'t', -9., 9., year1 * 10000L + 101, year2 * 10000L + 1231 , /REMPLI, /NOERASE $ 102 , COLOR = 250, small = [1,2,2], TITLE = title, YTITLE='Sv', FORMAT = '(I3)', /PORTRAIT, _extra = ex 103 endif 104 105 title = sEXP1+' Max AntArctic Bottom Water between 80S and 65S --- year '+strtrim(year1,1)+' - '+strtrim(year2,1) 106 pltt,-ts_mAABW70,'t', 0., 20., year1 * 10000L + 101, year2 * 10000L + 1231 , /REMPLI $ 107 , small = [1,2,1], TITLE = title, YTITLE='Sv', FORMAT = '(I3)', /PORTRAIT, _extra = ex 108 109 if sEXP2 ne sEXP1 then begin 110 title = sEXP1+' - '+sEXP2+' Max AntArctic Bottom Water between 80S and 65S --- year '+strtrim(year1,1)+' - '+strtrim(year2,1) 111 pltt,-ts_mAABW70 + ts_mAABW70_2 ,'t', -5., 5., year1 * 10000L + 101, year2 * 10000L + 1231 , /REMPLI, /NOERASE $ 112 , COLOR = 250, small = [1,2,2], TITLE = title, YTITLE='Sv', FORMAT = '(I3)', /PORTRAIT, _extra = ex 113 endif 114 115 title = sEXP1+' Max AntArctic Bottom Cell between 65S and 30N --- year '+strtrim(year1,1)+' - '+strtrim(year2,1) 116 pltt,-ts_mAABC50,'t', 5., 30., year1 * 10000L + 101, year2 * 10000L + 1231 , /REMPLI $ 117 , small = [1,2,1], TITLE = title, YTITLE='Sv', FORMAT = '(I3)', /PORTRAIT, _extra = ex 118 119 if sEXP2 ne sEXP1 then begin 120 121 title = sEXP1+' - '+sEXP2+' Max AntArctic Bottom Cell between 65S and 30N --- year '+strtrim(year1,1)+' - '+strtrim(year2,1) 122 pltt,-ts_mAABC50 + ts_mAABC50_2,'t', -5., 5., year1 * 10000L + 101, year2 * 10000L + 1231 , /REMPLI,/NOERASE $ 123 , COLOR = 250, small = [1,2,2], TITLE = title, YTITLE='Sv', FORMAT = '(I3)', /PORTRAIT, _extra = ex 124 endif 125 126 if KEYWORD_SET(POSTSCRIPT) then begin 127 closeps 128 endif 129 130 131 return 130 return 132 131 end
Note: See TracChangeset
for help on using the changeset viewer.