source: palm/trunk/SCRIPTS/NCL/timeseries.ncl @ 247

Last change on this file since 247 was 218, checked in by letzel, 16 years ago
  • User can check user parameters and deduce further quantities in user_check_parameters
  • Topography definition according to new user parameter topography_grid_convention (init_grid, modules, user_header, user_init_grid, user_parin)
  • New subdirectory trunk/EXAMPLES with two examples highlighting the topography_grid_convention
File size: 49.2 KB
Line 
1load "$NCARG_ROOT/lib/ncarg/nclex/gsun/gsn_code.ncl"
2load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
3load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
4load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl"
5 
6;***************************************************
7; load ncl_preferences.ncl
8;***************************************************
9
10function which_script()
11local script
12begin
13   script="timeseries"
14   return(script)
15end
16   
17if (isfilepresent("~/ncl_preferences.ncl")) then
18   loadscript("~/ncl_preferences.ncl")
19else
20  if (isfilepresent("~/palm/current_version/trunk/SCRIPTS/NCL/ncl_preferences.ncl")) then
21     loadscript( "~/palm/current_version/trunk/SCRIPTS/NCL/ncl_preferences.ncl")
22  else
23      print(" ")
24      print("'ncl_preferences.ncl' does not exist in $home or $home/palm/current_version/trunk/SCRIPTS/NCL/")
25      print(" ")
26      exit
27   end if
28end if
29   
30begin
31
32   ;***************************************************
33   ; set up default parameter values and strings
34   ;***************************************************
35   
36   if (file_1 .EQ. "File in") then
37      print(" ")
38      print("Declare input file 'file_1=' in 'ncl_preferences.ncl' or prompt")
39      print(" ")
40      exit
41   else
42      file_in = file_1   
43   end if
44
45   if (format_out .NE. "x11" .AND. format_out .NE. "pdf" .AND. format_out .NE. "eps" .AND. format_out .NE. "ps" .AND. format_out .NE. "epsi" .AND. format_out .NE. "ncgm")then
46      print(" ")
47      print("'format_out = "+format_out+"' is invalid and set to'x11'")
48      print(" ")
49      format_out="x11"
50   end if 
51
52   if (over .NE. 0 .AND. over .NE. 1) then
53      print(" ")
54      print("'over'= "+over+" is invalid and set to 0")
55      print(" ")
56      over = 0
57   end if 
58   
59   if (norm_t .EQ. 0) then
60      print(" ")
61      print("Normalising with 0 is not allowed, 'norm_t' is set to 1.0")
62      print(" ")
63      norm_t = 1.0
64   end if
65 
66
67   ;***************************************************
68   ; open input file
69   ;***************************************************
70   
71   file_in_1 = False
72   if (isStrSubset(file_in, ".nc"))then
73      start_f = -2
74      end_f = -2
75      file_in_1 = True     
76   end if
77
78   if (start_f .EQ. -1)then
79      print(" ")
80      print("'start_f' must be one of the cyclic numbers (at least 0) of your input file(s)")
81      print(" ") 
82      exit
83   end if
84   if (end_f .EQ. -1)then
85      print(" ")
86      print("'end_f' must be one of the cyclic numbers (at least 0) of your input file(s)")
87      print(" ") 
88      exit
89   end if
90
91   files=new(end_f-start_f+1,string)
92
93   if (file_in_1)then
94      if (isfilepresent(file_in))then
95         files(0)=file_in
96      else
97         print(" ")
98         print("1st input file: '"+file_in+"' does not exist")
99         print(" ")
100         exit
101      end if
102   else   
103      if (start_f .EQ. 0)then
104         if (isfilepresent(file_in+".nc"))then
105            files(0)=file_in+".nc"
106            do i=1,end_f
107               if (isfilepresent(file_in+"."+i+".nc"))then   
108                  files(i)=file_in+"."+i+".nc"
109               else
110                  print(" ")
111                  print("Input file: '"+file_in+"."+i+".nc' does not exist")
112                  print(" ")
113                  exit 
114               end if       
115            end do         
116         else
117            print(" ")
118            print("Input file: '"+file_in+".nc' does not exist")
119            print(" ")
120            exit
121         end if
122      else
123         do i=start_f,end_f
124            if (isfilepresent(file_in+"."+i+".nc"))then   
125               files(i-start_f)=file_in+"."+i+".nc"
126            else
127               print(" ")
128               print("Input file: '"+file_in+"."+i+".nc' does not exist")
129               print(" ")
130               exit 
131            end if
132         end do
133      end if
134   end if
135
136   f=addfiles(files,"r")
137   f_att=addfile(files(0),"r")
138   ListSetType(f,"cat")
139
140   vNam=getfilevarnames(f_att)
141
142   print(" ")
143   print("Variables in input file:")
144   print("- "+ vNam)
145   print(" ")
146   dim = dimsizes(vNam)
147   if (dim .EQ. 0) then
148      print(" ")
149      print("There are no data on file")
150      print(" ")
151   end if
152
153   t_all = f[:]->time
154   nt  = dimsizes(t_all)
155   delta_t=t_all(nt-1)/nt
156
157   ;****************************************************       
158   ; start of time step and different types of mistakes that could be done
159   ;****************************************************
160
161   if (start_time_step .EQ. -1.) then           
162      start_time_step=t_all(0)/3600     
163   else
164      if (start_time_step .GE. t_all(nt-1)/3600)
165         print(" ")
166         print("'start_time_step' = "+ start_time_step +"h is equal or greater than last time step = " + t_all(nt-1)+"s = "+t_all(nt-1)/3600+"h")
167         print(" ")
168         print("Select another 'start_time_step'")
169         print(" ")
170         exit
171      end if
172      if (start_time_step .LT. t_all(0)/3600)
173         print(" ")
174         print("'start_time_step' = "+ start_time_step +"h is lower than first time step = " + t_all(0)+"s = "+t_all(0)/3600+"h")
175         print(" ")
176         print("Select another 'start_time_step'")
177         print(" ")
178         exit
179      end if
180   end if
181   do i=0,nt-2     
182      if (start_time_step .GE. (t_all(i)-delta_t/2)/3600 .AND. start_time_step .LT. (t_all(i)+delta_t/2)/3600)then
183         st=i
184         break
185      end if
186   end do
187   if (start_time_step .GE. t_all(nt-1)-delta_t/2 .AND. start_time_step .LT. t_all(nt-1)) then
188      st=nt-2   
189   end if
190   if (.not. isvar("st"))then
191      print(" ")
192      print("'start_time_step' = "+ start_time_step +"h is invalid")
193      print(" ")
194      print("Select another 'start_time_step'")
195      print(" ")
196      exit
197   end if
198     
199   ;****************************************************
200   ; end of time step and different types of mistakes that could be done
201   ;****************************************************
202
203   if (end_time_step .EQ. -1.) then             
204      end_time_step = t_all(nt-1)/3600 
205   else
206      if (end_time_step .LE. t_all(0)/3600)
207         print(" ")
208         print("'end_time_step' = "+end_time_step+ "h is lower or equal than first time step = " + t_all(0)+"s = "+t_all(0)/3600+"h")
209         print(" ")
210         print("Select another 'end_time_step'")
211         print(" ")
212         exit
213      end if
214      if (end_time_step .GT. t_all(nt-1)/3600)
215         print(" ")
216         print("'end_time_step' = "+ end_time_step +"h is greater than last time step = " + t_all(nt-1)+"s = "+t_all(nt-1)/3600+"h")
217         print(" ")
218         print("Select another 'end_time_step'") 
219         print(" ")
220         exit
221      end if
222      if (end_time_step .LE. start_time_step/3600)
223         print(" ")
224         print("'end_time_step' = "+ end_time_step +"h is equal or lower than 'start_time_step' = "+start_time_step+"h")
225         print(" ")
226         print("Select another 'start_time_step' or 'end_time_step'")
227         print(" ")
228         exit
229      end if
230   end if
231   do i=0,nt-1     
232      if (end_time_step .GE. (t_all(i)-delta_t/2)/3600 .AND. end_time_step .LT. (t_all(i)+delta_t/2)/3600)then
233         et=i
234         break
235      end if
236   end do
237   
238   if (.not. isvar("et"))then
239      print(" ")
240      print("'end_time_step' = "+ end_time_step +"h is invalid")
241      print(" ")
242      print("Select another 'end_time_step'")
243      print(" ")
244      exit
245   end if
246 
247   delete(start_time_step)
248   start_time_step=round(st,3)
249   delete(end_time_step)
250   end_time_step=round(et,3)
251
252   print(" ")
253   print("Output of time steps from "+t_all(start_time_step)/3600+" h = "+t_all(start_time_step)+" s => index = "+start_time_step)
254   print("                     till "+t_all(end_time_step)/3600+" h = "+t_all(end_time_step)+" s => index = "+end_time_step)
255   print(" ")
256
257   t = t_all(start_time_step:end_time_step)/norm_t
258 
259   ; ***************************************************
260   ; set up recourses
261   ; ***************************************************
262
263   res                         = True
264   res@gsnDraw                 = False
265   res@gsnFrame                = False
266   res@gsnPaperOrientation     = "portrait"
267   res@gsnPaperWidth           = 8.27
268   res@gsnPaperHeight          = 11.69
269   res@gsnPaperMargin          = 0.79
270   res@tmXBMode                = True
271   res@tmYLMode                = True
272   res@txFont                  = "helvetica"
273   res@tiMainFont              = "helvetica"
274   res@tiXAxisFont             = "helvetica"
275   res@tiYAxisFont             = "helvetica"
276   res@tmXBLabelFont           = "helvetica"
277   res@tmYLLabelFont           = "helvetica"
278   res@xyLineColors            = (/237/)
279   
280   res@lgLabelFontHeightF     = 0.02
281
282   resP                        = True
283   resP@txFont                 = "helvetica"
284   resP@txString               = f_att@title+" time series "
285   resP@txFuncCode             = "~"
286   resP@txFontHeightF          = 0.015
287
288   res@tmXBMinorPerMajor = 4
289   res@tmYLMinorPerMajor = 4
290
291   res@vpWidthF=4
292
293   txres = True
294
295   ; ***************************************************
296   ; read data and create plots
297   ; ***************************************************
298   
299   wks_ps = gsn_open_wks(format_out,file_out)           
300   gsn_define_colormap(wks_ps,"rainbow+white")
301   plot_ps=new(dim,graphic)
302                                 
303   n=0
304   minE=1.E27
305   maxE=-1.E27
306   minus=1.E27
307   maxus=-1.E27
308   minu=1.E27
309   maxu=-1.E27
310   minz=1.E27
311   maxz=-1.E27
312   minw=1.E27
313   maxw=-1.E27
314   minp=1.E27
315   maxp=-1.E27
316   mins=1.E27
317   maxs=-1.E27
318
319   data   = new((/dim,(end_time_step-start_time_step)+1/),float)
320   unit   = new(dim,string)
321   data_0 = new((end_time_step-start_time_step)+1,float)
322   data_0 = 0.0
323   mini   = new(dim,float)
324   maxi   = new(dim,float)
325   
326   if (over .EQ. 1) then
327      plot_E       = gsn_csm_xy(wks_ps,t,data_0(:),res)
328      plot_Es      = gsn_csm_xy(wks_ps,t,data_0(:),res)
329      plot_us      = gsn_csm_xy(wks_ps,t,data_0(:),res)
330      plot_ws      = gsn_csm_xy(wks_ps,t,data_0(:),res)
331      plot_umax    = gsn_csm_xy(wks_ps,t,data_0(:),res)
332      plot_vmax    = gsn_csm_xy(wks_ps,t,data_0(:),res)
333      plot_wmax    = gsn_csm_xy(wks_ps,t,data_0(:),res)
334      plot_z_i_wpt = gsn_csm_xy(wks_ps,t,data_0(:),res)
335      plot_z_i_pt  = gsn_csm_xy(wks_ps,t,data_0(:),res)
336      plot_wpptp0  = gsn_csm_xy(wks_ps,t,data_0(:),res)
337      plot_wpptp   = gsn_csm_xy(wks_ps,t,data_0(:),res)
338      plot_wpt     = gsn_csm_xy(wks_ps,t,data_0(:),res)
339      plot_pt_0_   = gsn_csm_xy(wks_ps,t,data_0(:),res)
340      plot_pt_zp_  = gsn_csm_xy(wks_ps,t,data_0(:),res)
341      plot_splptx  = gsn_csm_xy(wks_ps,t,data_0(:),res)
342      plot_splpty  = gsn_csm_xy(wks_ps,t,data_0(:),res)
343      plot_splptz  = gsn_csm_xy(wks_ps,t,data_0(:),res)
344   end if
345
346   count_var=0
347   do varn = dim-1,0,1
348
349      if( isStrSubset (vNam(varn), "time") )
350         check = False
351      else
352         check = True
353      end if
354 
355      if (var .NE. "all") then
356         check = isStrSubset( var,","+vNam(varn)+"," )
357      end if
358   
359     
360      if(check) then
361         count_var=count_var+1
362
363         data_all = f[:]->$vNam(varn)$
364         data_att = f_att->$vNam(varn)$
365         unit(varn) = data_att@units
366               
367         data(varn,:)=data_all(start_time_step:end_time_step)
368         
369         if (over .EQ. 1) then
370
371            mini(varn) = min(data(varn,:))
372            maxi(varn) = max(data(varn,:))
373           
374            if (vNam(varn) .EQ. "E" .OR. vNam(varn) .EQ. "Es") then
375               if (mini(varn) .EQ. maxi(varn)) then
376                  if (min(data(varn,:)) .EQ. 0)then
377                     mini(varn)= mini(varn)-0.1
378                     maxi(varn)= maxi(varn)+0.1
379                  end if
380                  if (min(data(varn,:)) .LT. 0)then
381                     mini(varn)= mini(varn)-1.+(mini(varn))/2
382                     maxi(varn)= maxi(varn)+1.-(maxi(varn))/2
383                  end if
384                  if (min(data(varn,:)) .GT. 0)then
385                     mini(varn)= mini(varn)-1.-(mini(varn))/2
386                     maxi(varn)= maxi(varn)+1.+(maxi(varn))/2
387                  end if
388               end if
389               minE=min((/minE,mini(varn)/))
390               maxE=max((/maxE,maxi(varn)/))
391            end if
392
393            if (vNam(varn) .EQ. "us" .OR. vNam(varn) .EQ. "ws") then
394               if (mini(varn) .EQ. maxi(varn)) then
395                  if (min(data(varn,:)) .EQ. 0)then
396                     mini(varn)= mini(varn)-0.1
397                     maxi(varn)= maxi(varn)+0.1
398                  end if
399                  if (min(data(varn,:)) .LT. 0)then
400                     mini(varn)= mini(varn)-1.+(mini(varn))/2
401                     maxi(varn)= maxi(varn)+1.-(maxi(varn))/2
402                  end if
403                  if (min(data(varn,:)) .GT. 0)then
404                     mini(varn)= mini(varn)-1.-(mini(varn))/2
405                     maxi(varn)= maxi(varn)+1.+(maxi(varn))/2
406                  end if
407               end if
408               minus=min((/minus,mini(varn)/))
409               maxus=max((/maxus,maxi(varn)/))
410            end if
411
412            if (vNam(varn) .EQ. "umax" .OR. vNam(varn) .EQ. "vmax" .OR. vNam(varn) .EQ. "wmax") then
413               if (mini(varn) .EQ. maxi(varn)) then
414                  if (mini(varn) .EQ. 0)then
415                     mini(varn)= mini(varn)-0.1
416                     maxi(varn)= maxi(varn)+0.1
417                  end if
418                  if (mini(varn) .LT. 0)then
419                     mini(varn)= mini(varn)-1.+(mini(varn))/2
420                     maxi(varn)= maxi(varn)+1.-(maxi(varn))/2
421                  end if
422                  if (mini(varn) .GT. 0)then
423                     mini(varn)= mini(varn)-1.-(mini(varn))/2
424                     maxi(varn)= maxi(varn)+1.+(maxi(varn))/2
425                  end if
426               end if
427               minu=min((/minu,mini(varn)/))
428               maxu=max((/maxu,maxi(varn)/))
429            end if
430
431            if (vNam(varn) .EQ. "z_i_wpt" .OR. vNam(varn) .EQ. "z_i_pt") then
432               if (mini(varn) .EQ. maxi(varn)) then
433                  if (min(data(varn,:)) .EQ. 0)then
434                     mini(varn)= mini(varn)-0.1
435                     maxi(varn)= maxi(varn)+0.1
436                  end if
437                  if (min(data(varn,:)) .LT. 0)then
438                     mini(varn)= mini(varn)-1.+(mini(varn))/2
439                     maxi(varn)= maxi(varn)+1.-(maxi(varn))/2
440                  end if
441                  if (min(data(varn,:)) .GT. 0)then
442                     mini(varn)= mini(varn)-1.-(mini(varn))/2
443                     maxi(varn)= maxi(varn)+1.+(maxi(varn))/2
444                  end if
445               end if
446               minz=min((/minz,mini(varn)/))
447               maxz=max((/maxz,maxi(varn)/))
448            end if
449
450            if (vNam(varn) .EQ. "wpptp0" .OR. vNam(varn) .EQ. "wpptp" .OR. vNam(varn) .EQ. "wpt") then
451               if (mini(varn) .EQ. maxi(varn)) then
452                  if (min(data(varn,:)) .EQ. 0)then
453                     mini(varn)= mini(varn)-0.1
454                     maxi(varn)= maxi(varn)+0.1
455                  end if
456                  if (min(data(varn,:)) .LT. 0)then
457                     mini(varn)= mini(varn)-1.+(mini(varn))/2
458                     maxi(varn)= maxi(varn)+1.-(maxi(varn))/2
459                  end if
460                  if (min(data(varn,:)) .GT. 0)then
461                     mini(varn)= mini(varn)-1.-(mini(varn))/2
462                     maxi(varn)= maxi(varn)+1.+(maxi(varn))/2
463                  end if
464               end if
465               minw=min((/minw,mini(varn)/))
466               maxw=max((/maxw,maxi(varn)/))
467            end if
468
469            if (vNam(varn) .EQ. "pt_0_" .OR. vNam(varn) .EQ. "pt_zp_") then
470               if (mini(varn) .EQ. maxi(varn)) then
471                  if (min(data(varn,:)) .EQ. 0)then
472                     mini(varn)= mini(varn)-0.1
473                     maxi(varn)= maxi(varn)+0.1
474                  end if
475                  if (min(data(varn,:)) .LT. 0)then
476                     mini(varn)= mini(varn)-1.+(mini(varn))/2
477                     maxi(varn)= maxi(varn)+1.-(maxi(varn))/2
478                  end if
479                  if (min(data(varn,:)) .GT. 0)then
480                     mini(varn)= mini(varn)-1.-(mini(varn))/2
481                     maxi(varn)= maxi(varn)+1.+(maxi(varn))/2
482                  end if
483               end if
484               minp=min((/minp,mini(varn)/))
485               maxp=max((/maxp,maxi(varn)/))
486            end if
487
488            if (vNam(varn) .EQ. "splptx" .OR. vNam(varn) .EQ. "splpty" .OR. vNam(varn) .EQ. "splptz") then
489               if (mini(varn) .EQ. maxi(varn)) then
490                  if (min(data(varn,:)) .EQ. 0)then
491                     mini(varn)= mini(varn)-0.1
492                     maxi(varn)= maxi(varn)+0.1
493                  end if
494                  if (min(data(varn,:)) .LT. 0)then
495                     mini(varn)= mini(varn)-1.+(mini(varn))/2
496                     maxi(varn)= maxi(varn)+1.-(maxi(varn))/2
497                  end if
498                  if (min(data(varn,:)) .GT. 0)then
499                     mini(varn)= mini(varn)-1.-(mini(varn))/2
500                     maxi(varn)= maxi(varn)+1.+(maxi(varn))/2
501                  end if
502               end if
503               mins=min((/mins,mini(varn)/))
504               maxs=max((/maxs,maxi(varn)/))
505            end if
506           
507         end if
508      end if
509   end do
510
511   if (count_var .EQ. 0) then
512      print(" ")
513      print("The variables 'var="+var+"' do not exist on your input file;")
514      print("be sure to have one comma berfore and after each variable")
515      print(" ")
516      exit
517   end if
518
519   do varn = dim-1,0,1
520     
521      if( isStrSubset (vNam(varn), "time") )
522         check = False
523      else
524         check = True
525      end if     
526   
527      if (var .NE. "all") then
528         check = isStrSubset( var,","+vNam(varn)+"," )
529      end if
530 
531      if(check) then
532
533        if (isStrSubset(vNam(varn),"_0 " ))then
534            print(" ")
535            print("If you have Outputs of statistic regions you cannot overlay variables; 'over' is set to 0")
536            print(" ")
537            over = 0
538         end if
539
540        if (over .EQ. 1) then
541 
542            res@gsnLeftString       = "overlayed plot"
543            res@gsnRightString      = unit(varn)
544            if (norm_t .NE. 1.)then
545               res@tiXAxisString        = "t ["+unit_t+"]"
546            else
547               res@tiXAxisString        = "t [s]"
548            end if
549            res@tiYAxisString = " "
550            res@tiXAxisFontHeightF   = font_size
551            res@txFontHeightF        = font_size
552            res@tiYAxisFontHeightF   = font_size           
553
554            if (vNam(varn) .EQ. "E")
555               E=0
556               res@xyLineColors     = (/237/)
557               res@xyLineLabelFontHeightF = 0.05
558               res@xyLineLabelFontColor   = 237
559               res@trYMaxF           = minE
560               res@trYMinF           = maxE
561               plot_E = gsn_csm_xy(wks_ps,t,data(varn,:),res)
562            end if
563            if (vNam(varn) .EQ. "Es")
564               Es=0
565               res@xyLineColors            = (/144/)
566               res@xyLineLabelFontHeightF = 0.05
567               res@xyLineLabelFontColor   = 144
568               plot_Es = gsn_csm_xy(wks_ps,t,data(varn,:),res)
569            end if
570             
571            if (vNam(varn) .EQ. "us")
572               us=0
573               res@xyLineColors            = (/237/)
574               res@xyLineLabelFontHeightF = 0.05
575               res@xyLineLabelFontColor   = 237
576               res@trYMaxF           = minus
577               res@trYMinF           = maxus
578               plot_us = gsn_csm_xy(wks_ps,t,data(varn,:),res)
579            end if             
580            if (vNam(varn) .EQ. "ws")
581               ws=0
582               res@xyLineColors            = (/144/)
583               res@xyLineLabelFontHeightF = 0.05
584               res@xyLineLabelFontColor   = 144
585               plot_ws = gsn_csm_xy(wks_ps,t,data(varn,:),res)
586            end if
587             
588            if (vNam(varn) .EQ. "umax")
589               u=0
590               res@xyLineColors            = (/237/)
591               res@xyLineLabelFontHeightF = 0.05
592               res@xyLineLabelFontColor   = 237
593               res@trYMaxF           = minu
594               res@trYMinF           = maxu
595               plot_umax = gsn_csm_xy(wks_ps,t,data(varn,:),res)
596            end if
597            if (vNam(varn) .EQ. "vmax")
598               v=0
599               res@xyLineColors            = (/144/)
600               res@xyLineLabelFontHeightF = 0.05
601               res@xyLineLabelFontColor   = 144
602               plot_vmax = gsn_csm_xy(wks_ps,t,data(varn,:),res)
603            end if
604            if (vNam(varn) .EQ. "wmax")
605               w=0
606               res@xyLineColors            = (/80/)
607               res@xyLineLabelFontHeightF = 0.05
608               res@xyLineLabelFontColor   = 80
609               plot_wmax = gsn_csm_xy(wks_ps,t,data(varn,:),res)
610            end if
611   
612            if (vNam(varn) .EQ. "z_i_wpt")
613               zw=0
614               res@xyLineColors            = (/237/)
615               res@xyLineLabelFontHeightF = 0.05
616               res@xyLineLabelFontColor   = 237
617               res@trYMaxF           = minz
618               res@trYMinF           = maxz
619               plot_z_i_wpt = gsn_csm_xy(wks_ps,t,data(varn,:),res)
620            end if
621            if (vNam(varn) .EQ. "z_i_pt")
622               z=0
623               res@xyLineColors            = (/144/) 
624               res@xyLineLabelFontHeightF = 0.05
625               res@xyLineLabelFontColor   = 144
626               plot_z_i_pt = gsn_csm_xy(wks_ps,t,data(varn,:),res)
627            end if
628
629            if (vNam(varn) .EQ. "wpptp0")
630               w0=0
631               res@xyLineColors            = (/237/)
632               res@xyLineLabelFontHeightF = 0.05
633               res@xyLineLabelFontColor   = 237
634               res@trYMaxF           = minw
635               res@trYMinF           = maxw
636               plot_wpptp0 = gsn_csm_xy(wks_ps,t,data(varn,:),res)
637            end if
638            if (vNam(varn) .EQ. "wpptp")
639               wp=0
640               res@xyLineColors            = (/144/)
641               res@xyLineLabelFontHeightF = 0.05
642               res@xyLineLabelFontColor   = 144
643               plot_wpptp = gsn_csm_xy(wks_ps,t,data(varn,:),res) 
644            end if
645            if (vNam(varn) .EQ. "wpt")
646               wt=0
647               res@xyLineColors            = (/80/)
648               res@xyLineLabelFontHeightF = 0.05
649               res@xyLineLabelFontColor   = 80
650               plot_wpt = gsn_csm_xy(wks_ps,t,data(varn,:),res)
651            end if
652
653            if (vNam(varn) .EQ. "pt_0_")
654               p=0
655               res@xyLineColors            = (/237/)
656               res@xyLineLabelFontHeightF = 0.05
657               res@xyLineLabelFontColor   = 237
658               res@trYMaxF           = minp
659               res@trYMinF           = maxp
660               plot_pt_0_ = gsn_csm_xy(wks_ps,t,data(varn,:),res) 
661            end if
662            if (vNam(varn) .EQ. "pt_zp_")
663               pz=0
664               res@xyLineColors            = (/144/)
665               res@xyLineLabelFontHeightF = 0.05
666               res@xyLineLabelFontColor   = 144
667               plot_pt_zp_ = gsn_csm_xy(wks_ps,t,data(varn,:),res)
668            end if
669
670            if (vNam(varn) .EQ. "splptx")
671               x=0
672               res@xyLineColors            = (/237/)
673               res@xyLineLabelFontHeightF = 0.05
674               res@xyLineLabelFontColor   = 237
675               res@trYMaxF           = mins
676               res@trYMinF           = maxs
677               plot_splptx = gsn_csm_xy(wks_ps,t,data(varn,:),res)   
678            end if
679            if (vNam(varn) .EQ. "splpty")
680               y=0
681               res@xyLineColors            = (/144/)
682               res@xyLineLabelFontHeightF = 0.05
683               res@xyLineLabelFontColor   = 144
684               plot_splpty = gsn_csm_xy(wks_ps,t,data(varn,:),res)
685            end if
686            if (vNam(varn) .EQ. "splptz")
687               z=0
688               res@xyLineColors            = (/80/)
689               res@xyLineLabelFontHeightF = 0.05
690               res@xyLineLabelFontColor   = 80
691               plot_splptz = gsn_csm_xy(wks_ps,t,data(varn,:),res)         
692            end if
693
694         end if
695      end if
696   end do
697   
698   do varn = dim-1,0,1
699 
700      if( isStrSubset (vNam(varn), "time") )
701         check = False
702      else
703         check = True
704      end if   
705 
706      if (var.NE. "all") then
707         check = isStrSubset( var,","+vNam(varn)+"," )
708      end if
709   
710      if(check) then
711       
712         if (over .EQ. 1) then       
713       
714            if (vNam(varn) .EQ. "E" .AND. Es .NE. 1) then
715               E=1   
716               overlay(plot_E,plot_Es)
717               n=n+1
718               plot_ps(n) = plot_E   
719
720               ; ***************************************************
721               ; legend for combined plot
722               ; ***************************************************
723     
724               lgres                    = True
725               lgMonoDashIndex          = False
726               lgres@lgLabelFont        = "helvetica"   
727               lgres@lgLabelFontHeightF = .1           
728               lgres@vpWidthF           = 0.4           
729               lgres@vpHeightF          = 0.4         
730               lgres@lgDashIndexes      = (/0,0,0/)
731               lgres@lgLineColors       = (/237,144,80/)
732               lbid = gsn_create_legend(wks_ps,2,(/"E","Es"/),lgres)       
733
734               amres = True
735               amres@amParallelPosF   = 0.6                 
736               amres@amOrthogonalPosF = -0.2           
737               annoid1 = gsn_add_annotation(plot_ps(n),lbid,amres)           
738            end if
739            if (vNam(varn) .EQ. "Es" .AND. E .NE. 1) then
740               Es=1
741               overlay(plot_E,plot_Es)
742               n=n+1
743               plot_ps(n) = plot_E 
744
745               ; ***************************************************
746               ; legend for combined plot
747               ; ***************************************************
748     
749               lgres                    = True
750               lgMonoDashIndex          = False
751               lgres@lgLabelFont        = "helvetica"   
752               lgres@lgLabelFontHeightF = .1           
753               lgres@vpWidthF           = 0.4           
754               lgres@vpHeightF          = 0.4         
755               lgres@lgDashIndexes      = (/0,0,0/)
756               lgres@lgLineColors       = (/237,144,80/)
757               lbid = gsn_create_legend(wks_ps,2,(/"E","Es"/),lgres)       
758
759               amres = True
760               amres@amParallelPosF   = 0.6                 
761               amres@amOrthogonalPosF = -0.2           
762               annoid1 = gsn_add_annotation(plot_ps(n),lbid,amres)         
763            end if
764
765            if (vNam(varn) .EQ. "us" .AND. ws .NE. 1) then
766               us=1
767               overlay(plot_us,plot_ws)
768               n=n+1
769               plot_ps(n) = plot_us
770
771               ; ***************************************************
772               ; legend for combined plot
773               ; ***************************************************
774     
775               lgres                    = True
776               lgMonoDashIndex          = False
777               lgres@lgLabelFont        = "helvetica"   
778               lgres@lgLabelFontHeightF = .1           
779               lgres@vpWidthF           = 0.4           
780               lgres@vpHeightF          = 0.4         
781               lgres@lgDashIndexes      = (/0,0,0/)
782               lgres@lgLineColors       = (/237,144,80/)
783               lbid = gsn_create_legend(wks_ps,2,(/"us","ws"/),lgres)       
784
785               amres = True
786               amres@amParallelPosF   = 0.6                 
787               amres@amOrthogonalPosF = -0.2           
788               annoid1 = gsn_add_annotation(plot_ps(n),lbid,amres)
789            end if
790            if (vNam(varn) .EQ. "ws" .AND. us .NE. 1) then
791               ws=1
792               overlay(plot_us,plot_ws)
793               n=n+1
794               plot_ps(n) = plot_us
795
796               ; ***************************************************
797               ; legend for combined plot
798               ; ***************************************************
799     
800               lgres                    = True
801               lgMonoDashIndex          = False
802               lgres@lgLabelFont        = "helvetica"   
803               lgres@lgLabelFontHeightF = .1           
804               lgres@vpWidthF           = 0.4           
805               lgres@vpHeightF          = 0.4         
806               lgres@lgDashIndexes      = (/0,0,0/)
807               lgres@lgLineColors       = (/237,144,80/)
808               lbid = gsn_create_legend(wks_ps,2,(/"us","ws"/),lgres)       
809
810               amres = True
811               amres@amParallelPosF   = 0.6                 
812               amres@amOrthogonalPosF = -0.2           
813               annoid1 = gsn_add_annotation(plot_ps(n),lbid,amres)
814            end if
815         
816            if (vNam(varn) .EQ. "umax" .AND. v .NE. 1)
817               if (w .NE. 1) then
818                  u=1         
819                  overlay(plot_umax,plot_vmax)
820                  overlay(plot_umax,plot_wmax)
821                  n=n+1
822                  plot_ps(n) = plot_umax
823
824                  ; ***************************************************
825                  ; legend for combined plot
826                  ; ***************************************************
827     
828                  lgres                    = True
829                  lgMonoDashIndex          = False
830                  lgres@lgLabelFont        = "helvetica"   
831                  lgres@lgLabelFontHeightF = .1           
832                  lgres@vpWidthF           = 0.4           
833                  lgres@vpHeightF          = 0.4         
834                  lgres@lgDashIndexes      = (/0,0,0/)
835                  lgres@lgLineColors       = (/237,144,80/)
836                  lbid = gsn_create_legend(wks_ps,3,(/"umax","vmax","wmax"/),lgres)       
837
838                  amres = True
839                  amres@amParallelPosF   = 0.6             
840                  amres@amOrthogonalPosF = -0.2           
841                  annoid1 = gsn_add_annotation(plot_ps(n),lbid,amres)
842               end if
843            end if
844            if (vNam(varn) .EQ. "vmax" .AND. u .NE. 1)
845               if (w .NE. 1) then
846                  v=1 
847                  overlay(plot_umax,plot_vmax)
848                  overlay(plot_umax,plot_wmax)
849                  n=n+1
850                  plot_ps(n) = plot_umax
851
852                  ; ***************************************************
853                  ; legend for combined plot
854                  ; ***************************************************
855     
856                  lgres                    = True
857                  lgMonoDashIndex          = False
858                  lgres@lgLabelFont        = "helvetica"   
859                  lgres@lgLabelFontHeightF = .1         
860                  lgres@vpWidthF           = 0.4           
861                  lgres@vpHeightF          = 0.4         
862                  lgres@lgDashIndexes      = (/0,0,0/)
863                  lgres@lgLineColors       = (/237,144,80/)
864                  lbid = gsn_create_legend(wks_ps,3,(/"umax","vmax","wmax"/),lgres)       
865
866                  amres = True
867                  amres@amParallelPosF   = 0.6             
868                  amres@amOrthogonalPosF = -0.2           
869                  annoid1 = gsn_add_annotation(plot_ps(n),lbid,amres)
870               end if
871            end if
872            if (vNam(varn) .EQ. "wmax" .AND. v .NE. 1)
873               if(u .NE. 1) then 
874                  w=1       
875                  overlay(plot_umax,plot_vmax)
876                  overlay(plot_umax,plot_wmax)
877                  n=n+1
878                  plot_ps(n) = plot_umax
879
880                  ; ***************************************************
881                  ; legend for combined plot
882                  ; ***************************************************
883     
884                  lgres                    = True
885                  lgMonoDashIndex          = False
886                  lgres@lgLabelFont        = "helvetica"   
887                  lgres@lgLabelFontHeightF = .1           
888                  lgres@vpWidthF           = 0.4           
889                  lgres@vpHeightF          = 0.4         
890                  lgres@lgDashIndexes      = (/0,0,0/)
891                  lgres@lgLineColors       = (/237,144,80/)
892                  lbid = gsn_create_legend(wks_ps,3,(/"umax","vmax","wmax"/),lgres)       
893
894                  amres = True
895                  amres@amParallelPosF   = 0.6             
896                  amres@amOrthogonalPosF = -0.2           
897                  annoid1 = gsn_add_annotation(plot_ps(n),lbid,amres)
898               end if
899            end if
900           
901            if (vNam(varn) .EQ. "z_i_wpt" .AND. z .NE. 1) then
902               zw=1       
903               overlay(plot_z_i_wpt,plot_z_i_pt)
904               n=n+1
905               plot_ps(n) = plot_z_i_wpt
906       
907               ; ***************************************************
908               ; legend for combined plot
909               ; ***************************************************
910     
911               lgres                    = True
912               lgMonoDashIndex          = False
913               lgres@lgLabelFont        = "helvetica"   
914               lgres@lgLabelFontHeightF = .1           
915               lgres@vpWidthF           = 0.4           
916               lgres@vpHeightF          = 0.4         
917               lgres@lgDashIndexes      = (/0,0,0/)
918               lgres@lgLineColors       = (/237,144,80/)
919               lbid = gsn_create_legend(wks_ps,2,(/"z_i_wpt","z_i_pt"/),lgres)       
920
921               amres = True
922               amres@amParallelPosF   = 0.6                 
923               amres@amOrthogonalPosF = -0.2           
924               annoid1 = gsn_add_annotation(plot_ps(n),lbid,amres)         
925            end if
926            if (vNam(varn) .EQ. "z_i_pt" .AND. zw .NE. 1) then
927               z=1     
928               overlay(plot_z_i_wpt,plot_z_i_pt)
929               n=n+1
930               plot_ps(n) = plot_z_i_wpt
931
932               ; ***************************************************
933               ; legend for combined plot
934               ; ***************************************************
935     
936               lgres                    = True
937               lgMonoDashIndex          = False
938               lgres@lgLabelFont        = "helvetica"   
939               lgres@lgLabelFontHeightF = .1           
940               lgres@vpWidthF           = 0.4           
941               lgres@vpHeightF          = 0.4         
942               lgres@lgDashIndexes      = (/0,0,0/)
943               lgres@lgLineColors       = (/237,144,80/)
944               lbid = gsn_create_legend(wks_ps,2,(/"z_i_wpt","z_i_pt"/),lgres)       
945
946               amres = True
947               amres@amParallelPosF   = 0.6                 
948               amres@amOrthogonalPosF = -0.2           
949               annoid1 = gsn_add_annotation(plot_ps(n),lbid,amres)           
950            end if   
951         
952            if (vNam(varn) .EQ. "wpptp0" .AND. wp .NE. 1)
953               if (wt .NE. 1) then
954                  w0=1
955                  overlay(plot_wpptp0,plot_wpptp)
956                  overlay(plot_wpptp0,plot_wpt)
957                  n=n+1
958                  plot_ps(n) = plot_wpptp0
959
960                  ; ***************************************************
961                  ; legend for combined plot
962                  ; ***************************************************
963     
964                  lgres                    = True
965                  lgMonoDashIndex          = False
966                  lgres@lgLabelFont        = "helvetica"   
967                  lgres@lgLabelFontHeightF = .1           
968                  lgres@vpWidthF           = 0.4           
969                  lgres@vpHeightF          = 0.4         
970                  lgres@lgDashIndexes      = (/0,0,0/)
971                  lgres@lgLineColors       = (/237,144,80/)
972                  lbid = gsn_create_legend(wks_ps,3,(/"wpptp0","wpptp","wpt"/),lgres)       
973
974                  amres = True
975                  amres@amParallelPosF   = 0.6             
976                  amres@amOrthogonalPosF = -0.2           
977                  annoid1 = gsn_add_annotation(plot_ps(n),lbid,amres)
978               end if           
979            end if
980            if (vNam(varn) .EQ. "wpptp" .AND. w0 .NE. 1)
981               if (wt .NE. 1) then
982                 wp=1
983                 overlay(plot_wpptp0,plot_wpptp)
984                 overlay(plot_wpptp0,plot_wpt)
985                 n=n+1
986                 plot_ps(n) = plot_wpptp0
987                 
988                 ; ***************************************************
989                  ; legend for combined plot
990                  ; ***************************************************
991     
992                  lgres                    = True
993                  lgMonoDashIndex          = False
994                  lgres@lgLabelFont        = "helvetica"   
995                  lgres@lgLabelFontHeightF = .1           
996                  lgres@vpWidthF           = 0.4           
997                  lgres@vpHeightF          = 0.4         
998                  lgres@lgDashIndexes      = (/0,0,0/)
999                  lgres@lgLineColors       = (/237,144,80/)
1000                  lbid = gsn_create_legend(wks_ps,3,(/"wpptp0","wpptp","wpt"/),lgres)       
1001
1002                  amres = True
1003                  amres@amParallelPosF   = 0.6             
1004                  amres@amOrthogonalPosF = -0.2           
1005                  annoid1 = gsn_add_annotation(plot_ps(n),lbid,amres) 
1006               end if           
1007            end if
1008            if (vNam(varn) .EQ. "wpt" .AND. wp .NE. 1)
1009               if (w0 .NE. 1) then
1010                  wt=1
1011                  overlay(plot_wpptp0,plot_wpptp)
1012                  overlay(plot_wpptp0,plot_wpt)
1013                  n=n+1
1014                  plot_ps(n) = plot_wpptp0
1015
1016                  ; ***************************************************
1017                  ; legend for combined plot
1018                  ; ***************************************************
1019     
1020                  lgres                    = True
1021                  lgMonoDashIndex          = False
1022                  lgres@lgLabelFont        = "helvetica"   
1023                  lgres@lgLabelFontHeightF = .1           
1024                  lgres@vpWidthF           = 0.4           
1025                  lgres@vpHeightF          = 0.4         
1026                  lgres@lgDashIndexes      = (/0,0,0/)
1027                  lgres@lgLineColors       = (/237,144,80/)
1028                  lbid = gsn_create_legend(wks_ps,3,(/"wpptp0","wpptp","wpt"/),lgres)       
1029
1030                  amres = True
1031                  amres@amParallelPosF   = 0.6             
1032                  amres@amOrthogonalPosF = -0.2           
1033                  annoid1 = gsn_add_annotation(plot_ps(n),lbid,amres)
1034               end if
1035            end if
1036
1037            if (vNam(varn) .EQ. "pt_0_" .AND. pz .NE. 1) then
1038               p=1     
1039               overlay(plot_pt_0_,plot_pt_zp_)
1040               n=n+1
1041               plot_ps(n) = plot_pt_0_ 
1042     
1043               ; ***************************************************
1044               ; legend for combined plot
1045               ; ***************************************************
1046     
1047               lgres                    = True
1048               lgMonoDashIndex          = False
1049               lgres@lgLabelFont        = "helvetica"   
1050               lgres@lgLabelFontHeightF = .1           
1051               lgres@vpWidthF           = 0.4           
1052               lgres@vpHeightF          = 0.4         
1053               lgres@lgDashIndexes      = (/0,0,0/)
1054               lgres@lgLineColors       = (/237,144,80/)
1055               lbid = gsn_create_legend(wks_ps,2,(/"pt_0_","pt_zp_"/),lgres)       
1056
1057               amres = True
1058               amres@amParallelPosF   = 0.6                 
1059               amres@amOrthogonalPosF = -0.2           
1060               annoid1 = gsn_add_annotation(plot_ps(n),lbid,amres)
1061            end if
1062            if (vNam(varn) .EQ. "pt_zp_" .AND. p .NE. 1) then
1063               pz=1       
1064               overlay(plot_pt_0_,plot_pt_zp_)
1065               n=n+1
1066               plot_ps(n) = plot_pt_0_   
1067
1068               ; ***************************************************
1069               ; legend for combined plot
1070               ; ***************************************************
1071     
1072               lgres                    = True
1073               lgMonoDashIndex          = False
1074               lgres@lgLabelFont        = "helvetica"   
1075               lgres@lgLabelFontHeightF = .1           
1076               lgres@vpWidthF           = 0.4           
1077               lgres@vpHeightF          = 0.4         
1078               lgres@lgDashIndexes      = (/0,0,0/)
1079               lgres@lgLineColors       = (/237,144,80/)
1080               lbid = gsn_create_legend(wks_ps,2,(/"pt_0_","pt_zp_"/),lgres)       
1081
1082               amres = True
1083               amres@amParallelPosF   = 0.6                 
1084               amres@amOrthogonalPosF = -0.2           
1085               annoid1 = gsn_add_annotation(plot_ps(n),lbid,amres)
1086            end if
1087           
1088            if (vNam(varn) .EQ. "splptx" .AND. y .NE. 1)
1089               if (z .NE.1 ) then
1090                  x=1     
1091                  overlay(plot_splptx,plot_splpty)
1092                  overlay(plot_splptx,plot_splptz)
1093                  n=n+1
1094                  plot_ps(n) = plot_splptx   
1095
1096                  ; ***************************************************
1097                  ; legend for combined plot
1098                  ; ***************************************************
1099     
1100                  lgres                    = True
1101                  lgMonoDashIndex          = False
1102                  lgres@lgLabelFont        = "helvetica"   
1103                  lgres@lgLabelFontHeightF = .1           
1104                  lgres@vpWidthF           = 0.4           
1105                  lgres@vpHeightF          = 0.4         
1106                  lgres@lgDashIndexes      = (/0,0,0/)
1107                  lgres@lgLineColors       = (/237,144,80/)
1108                  lbid = gsn_create_legend(wks_ps,3,(/"splptx","splpty","splptz"/),lgres)       
1109
1110                  amres = True
1111                  amres@amParallelPosF   = 0.6             
1112                  amres@amOrthogonalPosF = -0.2           
1113                  annoid1 = gsn_add_annotation(plot_ps(n),lbid,amres)
1114               end if
1115            end if
1116            if (vNam(varn) .EQ. "splpty" .AND. x .NE. 1)
1117               if(z .NE.1 ) then
1118                  y=1         
1119                  overlay(plot_splptx,plot_splpty)
1120                  overlay(plot_splptx,plot_splptz)
1121                  n=n+1
1122                  plot_ps(n) = plot_splptx
1123
1124                  ; ***************************************************
1125                  ; legend for combined plot
1126                  ; ***************************************************
1127     
1128                  lgres                    = True
1129                  lgMonoDashIndex          = False
1130                  lgres@lgLabelFont        = "helvetica"   
1131                  lgres@lgLabelFontHeightF = .1           
1132                  lgres@vpWidthF           = 0.4           
1133                  lgres@vpHeightF          = 0.4         
1134                  lgres@lgDashIndexes      = (/0,0,0/)
1135                  lgres@lgLineColors       = (/237,144,80/)
1136                  lbid = gsn_create_legend(wks_ps,3,(/"splptx","splpty","splptz"/),lgres)       
1137
1138                  amres = True
1139                  amres@amParallelPosF   = 0.6             
1140                  amres@amOrthogonalPosF = -0.2           
1141                  annoid1 = gsn_add_annotation(plot_ps(n),lbid,amres)
1142               end if           
1143            end if
1144            if (vNam(varn) .EQ. "splptz" .AND. y .NE. 1)
1145               if(x .NE.1 ) then
1146                  z=1         
1147                  overlay(plot_splptx,plot_splpty)
1148                  overlay(plot_splptx,plot_splptz)
1149                  n=n+1
1150                  plot_ps(n) = plot_splptx 
1151
1152                  ; ***************************************************
1153                  ; legend for combined plot
1154                  ; ***************************************************
1155     
1156                  lgres                    = True
1157                  lgMonoDashIndex          = False
1158                  lgres@lgLabelFont        = "helvetica"   
1159                  lgres@lgLabelFontHeightF = .1           
1160                  lgres@vpWidthF           = 0.4           
1161                  lgres@vpHeightF          = 0.4         
1162                  lgres@lgDashIndexes      = (/0,0,0/)
1163                  lgres@lgLineColors       = (/237,144,80/)
1164                  lbid = gsn_create_legend(wks_ps,3,(/"splptx","splpty","splptz"/),lgres)       
1165
1166                  amres = True
1167                  amres@amParallelPosF   = 0.6             
1168                  amres@amOrthogonalPosF = -0.2           
1169                  annoid1 = gsn_add_annotation(plot_ps(n),lbid,amres)
1170               end if       
1171            end if
1172
1173            if(vNam(varn) .NE. "splptz" .AND. vNam(varn) .NE. "splpty" .AND. vNam(varn) .NE. "splptx" .AND. vNam(varn) .NE. "pt_zp_" .AND. vNam(varn) .NE. "pt_0_" .AND. vNam(varn) .NE. "wpt" .AND. vNam(varn) .NE. "wpptp" .AND. vNam(varn) .NE. "wpptp0" .AND. vNam(varn) .NE. "z_i_pt" .AND. vNam(varn) .NE. "z_i_wpt" .AND. vNam(varn) .NE. "wmax" .AND. vNam(varn) .NE. "vmax" .AND. vNam(varn) .NE. "umax" .AND. vNam(varn) .NE. "ws" .AND.  vNam(varn) .NE. "us" .AND. vNam(varn) .NE. "Es" .AND. vNam(varn) .NE. "E") then
1174               n=n+1
1175               res@xyLineColors   = (/237/)
1176               res@xyLabelMode    = False
1177               res@gsnLeftString  = vNam(varn)
1178               res@gsnRightString = unit(varn)
1179               res@trYMaxF        = min(data(varn,:))
1180               res@trYMinF        = max(data(varn,:))
1181               if (min(data(varn,:)) .EQ. max(data(varn,:))) then
1182                  if (min(data(varn,:)) .EQ. 0)then
1183                     res@trYMaxF = min(data(varn,:))-0.1
1184                     res@trYMinF = max(data(varn,:))+0.1
1185                  end if
1186                  if (min(data(varn,:)) .LT. 0)then
1187                     res@trYMaxF = min(data(varn,:))+(min(data(varn,:)))/2
1188                     res@trYMinF = max(data(varn,:))-(max(data(varn,:)))/2
1189                  end if
1190                  if (min(data(varn,:)) .GT. 0)then
1191                     res@trYMaxF = min(data(varn,:))-(min(data(varn,:)))/2
1192                     res@trYMinF = max(data(varn,:))+(max(data(varn,:)))/2
1193                  end if
1194               end if
1195               plot_ps(n) = gsn_csm_xy(wks_ps,t,data(varn,:),res) 
1196            end if
1197       
1198         else
1199           
1200            print("plot of " + vNam(varn))
1201           
1202            n=n+1
1203            res@xyLineColors            = (/237/)
1204            res@gsnLeftString       = vNam(varn)
1205            res@gsnRightString      = unit(varn)
1206            if (norm_t .NE. 1.)then
1207               res@tiXAxisString        = "t ["+unit_t+"]"
1208            else
1209               res@tiXAxisString        = "t [s]"
1210            end if
1211            res@tiYAxisString = " "
1212            res@tiXAxisFontHeightF   = font_size
1213            res@txFontHeightF        = font_size
1214            res@tiYAxisFontHeightF   = font_size
1215            res@tmXBLabelFontHeightF = font_size
1216            res@tmYLLabelFontHeightF = font_size
1217            res@trYMaxF        = min(data(varn,:))
1218            res@trYMinF        = max(data(varn,:))
1219            if (min(data(varn,:)) .EQ. max(data(varn,:))) then
1220               if (min(data(varn,:)) .EQ. 0)then
1221                     res@trYMaxF = min(data(varn,:))-0.1
1222                     res@trYMinF = max(data(varn,:))+0.1
1223                  end if
1224                  if (min(data(varn,:)) .LT. 0)then
1225                     res@trYMaxF = min(data(varn,:))+(min(data(varn,:)))/2
1226                     res@trYMinF = max(data(varn,:))-(max(data(varn,:)))/2
1227                  end if
1228                  if (min(data(varn,:)) .GT. 0)then
1229                     res@trYMaxF = min(data(varn,:))-(min(data(varn,:)))/2
1230                     res@trYMinF = max(data(varn,:))+(max(data(varn,:)))/2
1231                  end if
1232            end if
1233            plot_ps(n) = gsn_csm_xy(wks_ps,t,data(varn,:),res)
1234           
1235         end if     
1236      end if
1237   end do
1238 
1239   ; ***************************************************
1240   ; merge plots onto one page
1241   ; ***************************************************
1242 
1243   if (format_out .EQ. "eps" .OR. format_out .EQ. "epsi") then
1244      gsn_panel(wks_ps,plot_ps(1:n),(/n,1/),resP)
1245   else
1246      do np = 1,n,no_rows*no_columns   
1247         if ( np + no_rows*no_columns .gt. n) then   
1248            gsn_panel(wks_ps, plot_ps(np:n),(/no_rows,no_columns/),resP)
1249         else
1250            gsn_panel(wks_ps, plot_ps(np:np+no_rows*no_columns-1),(/no_rows,no_columns/),resP)
1251         end if
1252      end do
1253   end if
1254
1255   print(" ")
1256   print("Output to: " + file_out +"."+ format_out)
1257   print(" ")
1258 
1259end
Note: See TracBrowser for help on using the repository browser.