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_AMOC.pro in branches/UKMO/r5518_INGV1_WAVE-coupling/NEMOGCM/CONFIG/ORCA2_SAS_LIM/IDL_scripts – NEMO

source: branches/UKMO/r5518_INGV1_WAVE-coupling/NEMOGCM/CONFIG/ORCA2_SAS_LIM/IDL_scripts/std_ts_AMOC.pro @ 7152

Last change on this file since 7152 was 7152, checked in by jcastill, 7 years ago

Initial implementation of wave coupling branch - INGV wave branch + UKMO wave coupling branch

File size: 4.8 KB
Line 
1PRO std_ts_read_AMOC, var_name, dt1, dt2, prefix, suffix, t45, t70, t50
2
3  compile_opt idl2, strictarrsubs
4 
5@common
6@std_common
7
8  list = rseries_ncdf(var_name, dt1, dt2, prefix, suffix, /fileslist)
9  nfiles = n_elements(list)
10
11  t45 = 0.
12  t70 = 0.
13  t50 = 0.
14  ts_Time = 0.
15
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
26; computation of max Atlatic Meridional Overturninc Circulation at 40°N and 50°N
27      indy = where(yaxis gt 40 and yaxis le 50)
28      domdef, 0, 3500
29      t45 = [t45, max(msftot[indy, firstzw:lastzw], /NaN)]
30     
31; computation of max atlantic Antarctic Bottom Water between 80°S and 65°S
32      indy = where(yaxis gt -80 and yaxis le -65)
33      domdef, 300, 3500
34      t70 = [t70, min(msftot[indy, firstzw:lastzw], /NaN)]
35
36;  computation of max Antarctic Abyssal Bottom Cell between 65°S and 30°N ,
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
54end
55
56pro 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
129   
130  return
131end
Note: See TracBrowser for help on using the repository browser.