[2150] | 1 | pro fig_ht_fromQ, Q1, Q2, sEXP1, sEXP2, start_end, POSTSCRIPT = postscript, MASK_FILENAME = mask_filename, _extra = ex |
---|
| 2 | |
---|
| 3 | compile_opt idl2, strictarrsubs |
---|
| 4 | |
---|
| 5 | @common |
---|
| 6 | |
---|
| 7 | tmask_save = tmask |
---|
| 8 | ; suppress 1/2 north ligne dans TMASK |
---|
| 9 | tmask[jpi/2:jpi-1,jpj-1,0] = 0b ; 0 byte |
---|
| 10 | |
---|
| 11 | Qave1 = moyenne(Q1,'xy') |
---|
| 12 | Qave2 = moyenne(Q2,'xy') |
---|
| 13 | |
---|
| 14 | Qnet1 = Q1 - Qave1 |
---|
| 15 | Qnet2 = Q2 - Qave2 |
---|
| 16 | |
---|
| 17 | index=where(gphit eq max(gphit)) |
---|
| 18 | nx=index[0] mod jpi |
---|
| 19 | gphi_save=gphit |
---|
| 20 | gphit[0,*]=gphit[nx,*] |
---|
| 21 | ; |
---|
| 22 | msk = read_ncdf( 'atlmsk_nomed', filename = mask_filename, _extra = ex) |
---|
| 23 | |
---|
| 24 | ; from 2D array to 3D array |
---|
| 25 | msk = msk.arr[*]#replicate(1., nzt) |
---|
| 26 | |
---|
| 27 | ; x average (zonal mean) |
---|
| 28 | ; *1.E-15 to have PetaWatt |
---|
| 29 | Q1x = moyenne(Qnet1*e2t,'x',/integration)*1.E-15 |
---|
| 30 | Q2x = moyenne(Qnet2*e2t,'x',/integration)*1.E-15 |
---|
| 31 | Q1x_atl = moyenne(Qnet1*e2t*msk,'x',/integration)*1.E-15 |
---|
| 32 | Q2x_atl = moyenne(Qnet2*e2t*msk,'x',/integration)*1.E-15 |
---|
| 33 | ; northward heat flux transport from antartic |
---|
| 34 | htr1 = total(Q1x, /cumulative) |
---|
| 35 | htr2 = total(Q2x, /cumulative) |
---|
| 36 | htr1_atl = total(reverse(Q1x_atl), /cumulative) |
---|
| 37 | htr1_atl = -reverse(htr1_atl) |
---|
| 38 | htr2_atl = total(reverse(Q2x_atl), /cumulative) |
---|
| 39 | htr2_atl = -reverse(htr2_atl) |
---|
| 40 | |
---|
| 41 | bad_gphit = where(gphit[0,*] lt -30.) |
---|
| 42 | htr1_atl[bad_gphit] = !Values.F_NaN ; we take from values north till 30° South |
---|
| 43 | htr2_atl[bad_gphit] = !Values.F_NaN ; we take from values north till 30° South |
---|
| 44 | |
---|
| 45 | if KEYWORD_SET(POSTSCRIPT) then begin |
---|
| 46 | openps, '004_MHT_'+sEXP1+'-'+sEXP2+'_y'+start_end+ '.ps', /landscape |
---|
| 47 | endif |
---|
| 48 | |
---|
| 49 | ; update data informations |
---|
| 50 | varname = 'MHT' |
---|
| 51 | varunit = 'Pw' |
---|
| 52 | vargrid = 'T' |
---|
| 53 | |
---|
| 54 | ibce1 = STRTRIM(Qave1, 1) |
---|
| 55 | ibce2 = STRTRIM(Qave2, 1) |
---|
| 56 | |
---|
| 57 | title = sEXP1+' (Red) MHT (PetaW) - (Blue) Atlantic MHT (PetaW) / year '+start_end |
---|
| 58 | subtitle = sEXP1+' (Qnet='+ibce1+' W/m2) - (Qnet='+ibce2+' W/m2)' |
---|
| 59 | |
---|
| 60 | plt1d, htr1,'y',min = -2., max = 2.5, TITLE=title, SUBTITLE = subtitle $ |
---|
| 61 | , SMALL = [2,2,1], YTITLE = 'PW', XGRIDSTYLE = 2, TICKLEN = 1, YGRIDSTYLE = 2, _extra = ex |
---|
| 62 | plt1d, htr1_atl,'y', COLOR = 50, /ov1d, _extra = ex |
---|
| 63 | |
---|
| 64 | if sEXP1 ne sEXP2 then begin |
---|
| 65 | |
---|
| 66 | title = sEXP1+' - '+sEXP2+' MHT (TeraW) differences / year '+start_end |
---|
| 67 | plt1d, (htr1-htr2)*1.e3,'y',min = 0., max = 500., TITLE = title $ |
---|
| 68 | , SMALL = [2,2,3], TICKLEN = 1, XGRIDSTYLE = 2 $ |
---|
| 69 | , YTITLE = 'PW', YGRIDSTYLE = 2, /NOERASE, _extra = ex |
---|
| 70 | plt1d, (htr1_atl - htr2_atl),'y', COLOR = 50, /ov1d, _extra = ex |
---|
| 71 | |
---|
| 72 | endif |
---|
| 73 | |
---|
| 74 | title = 'Qnet' |
---|
| 75 | text = [ title, '<img width="80%" src=/Users/sflod/TOOLS/my_IDL/PS/v32colib_v32colib/ps/004_MHT_'+sEXP1+'-'+sEXP2+'_y'+start_end+ '.png /> ' ] |
---|
| 76 | putfile, '/tmp/prova.txt', text |
---|
| 77 | |
---|
| 78 | if KEYWORD_SET(POSTSCRIPT) then begin |
---|
| 79 | closeps |
---|
| 80 | endif |
---|
| 81 | |
---|
| 82 | tmask=tmask_save |
---|
| 83 | gphit=gphi_save |
---|
| 84 | |
---|
| 85 | return |
---|
| 86 | end |
---|