source: palm/trunk/SCRIPTS/NCL/profiles.ncl @ 353

Last change on this file since 353 was 353, checked in by heinze, 15 years ago

small adjustments of plotting area

File size: 155.0 KB
RevLine 
[154]1load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
2load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
3load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
[190]4
5;***************************************************
6; load ncl_preferences.ncl
7;***************************************************
[194]8
9function which_script()
10local script
11begin
12   script="profiles"
13   return(script)
14end
[190]15   
16if (isfilepresent("~/ncl_preferences.ncl")) then
17   loadscript("~/ncl_preferences.ncl")
18else
19  if (isfilepresent("~/palm/current_version/trunk/SCRIPTS/NCL/ncl_preferences.ncl")) then
20     loadscript( "~/palm/current_version/trunk/SCRIPTS/NCL/ncl_preferences.ncl")
21  else
22      print(" ")
23      print("'ncl_preferences.ncl' does not exist in $home or $home/palm/current_version/trunk/SCRIPTS/NCL/")
24      print(" ")
25      exit
26   end if
27end if
28   
[154]29begin
30
[190]31   ;***************************************************
32   ; set up default parameter values and strings
33   ;***************************************************
34
[218]35   if (no_files .LT. 1 .OR. no_files .GT. 6) then
[190]36      print(" ")
[218]37      print("Assign 'no_files' between 1 and 6") 
[190]38      print(" ")
39      exit
[175]40   end if
[190]41   
[218]42   file_in   = new(no_files,string)
43   file_in_1 = new(no_files,logical)
44   start_f   = new(no_files,integer)
45   end_f = new(no_files,integer)
46   
[190]47   if (file_1 .EQ. "File in") then
48      print(" ")
[218]49      print("Declare 1st input file 'file_1=' in 'ncl_preferences.ncl' or prompt")
[190]50      print(" ")
51      exit
[175]52   else
53      file_in(0) = file_1   
[218]54   end if     
55   file_in_1(0) = False
56   if (isStrSubset(file_in(0), ".nc"))then
57      start_f_1 = -2
58      end_f_1 = -2
59      file_in_1(0) = True     
60   end if 
61   if (start_f_1 .EQ. -1)then
[175]62      print(" ")
[218]63      print("'start_f_1' must be one of the cyclic numbers (at least 0) of your input file(s)")
64      print(" ") 
65      exit
66   end if
67   if (end_f_1 .EQ. -1)then
[175]68      print(" ")
[218]69      print("'end_f_1' must be one of the cyclic numbers (at least 0) of your input file(s)")
70      print(" ") 
[175]71      exit
[218]72   end if           
73   start_f(0) = start_f_1
74   end_f(0) = end_f_1   
[190]75 
[175]76   if (no_files .GT. 1) then
[190]77      if (file_2 .EQ. "File in") then
78         print(" ")
[218]79         print("Declare 2nd input file 'file_2=' in 'ncl_preferences.ncl' or prompt")
[190]80         print(" ")
81         exit
[175]82      else
[190]83         file_in(1) = file_2   
[218]84      end if     
85      file_in_1(1) = False
86      if (isStrSubset(file_in(1), ".nc"))then
[219]87         start_f_2 = -2
88         end_f_2 = -2
[218]89         file_in_1(1) = True     
[175]90      end if
[218]91      if (start_f_2 .EQ. -1)then
[175]92         print(" ")
[218]93         print("'start_f_2' must be one of the cyclic numbers (at least 0) of your input file(s)")
94         print(" ") 
95         exit
96      end if
97      if (end_f_2 .EQ. -1)then
[175]98         print(" ")
[218]99         print("'end_f_2' must be one of the cyclic numbers (at least 0) of your input file(s)")
100         print(" ") 
[175]101         exit
[218]102      end if     
103      start_f(1) = start_f_2
104      end_f(1) = end_f_2   
105   end if   
[190]106   
[175]107   if (no_files .GT. 2) then
[190]108      if (file_3 .EQ. "File in") then
109         print(" ")
[218]110         print("Declare 3rd input file 'file_3=' in 'ncl_preferences.ncl' or prompt")
[190]111         print(" ")
112         exit
[175]113      else
[190]114         file_in(2) = file_3   
[218]115      end if     
116      file_in_1(2) = False
117      if (isStrSubset(file_in(2), ".nc"))then
[219]118         start_f_3 = -2
119         end_f_3 = -2
[218]120         file_in_1(2) = True     
[175]121      end if
[218]122      if (start_f_3 .EQ. -1)then
[175]123         print(" ")
[218]124         print("'start_f_3' must be one of the cyclic numbers (at least 0) of your input file(s)")
125         print(" ") 
126         exit
127      end if
128      if (end_f_3 .EQ. -1)then
[175]129         print(" ")
[218]130         print("'end_f_3' must be one of the cyclic numbers (at least 0) of your input file(s)")
131         print(" ") 
[175]132         exit
[218]133      end if     
134      start_f(2) = start_f_3
135      end_f(2) = end_f_3 
[175]136   end if
[190]137   
[175]138   if (no_files .GT. 3) then
[190]139      if (file_4 .EQ. "File in") then
140         print(" ")
[218]141         print("Declare 4th input file 'file_4=' in 'ncl_preferences.ncl' or prompt")
[190]142         print(" ")
143         exit
[175]144      else
[190]145         file_in(3) = file_4   
[218]146      end if     
147      file_in_1(3) = False
148      if (isStrSubset(file_in(3), ".nc"))then
[219]149         start_f_4 = -2
150         end_f_4 = -2
[218]151         file_in_1(3) = True     
[175]152      end if
[218]153      if (start_f_4 .EQ. -1)then
[175]154         print(" ")
[218]155         print("'start_f_4' must be one of the cyclic numbers (at least 0) of your input file(s)")
156         print(" ") 
157         exit
158      end if
159      if (end_f_4 .EQ. -1)then
[175]160         print(" ")
[218]161         print("'end_f_4' must be one of the cyclic numbers (at least 0) of your input file(s)")
162         print(" ") 
[175]163         exit
[218]164      end if     
165      start_f(3) = start_f_4
166      end_f(3) = end_f_4
[175]167   end if
[190]168   
[175]169   if (no_files .GT. 4) then
[190]170      if (file_5 .EQ. "File in") then
171         print(" ")
[218]172         print("Declare 5th input file 'file_5=' in 'ncl_preferences.ncl' or prompt")
[190]173         print(" ")
174         exit
[175]175      else
[190]176         file_in(4) = file_5   
[218]177      end if     
178      file_in_1(4) = False
179      if (isStrSubset(file_in(4), ".nc"))then
[219]180         start_f_5 = -2
181         end_f_5 = -2
[218]182         file_in_1(4) = True     
[175]183      end if
[218]184      if (start_f_5 .EQ. -1)then
[175]185         print(" ")
[218]186         print("'start_f_5' must be one of the cyclic numbers (at least 0) of your input file(s)")
187         print(" ") 
188         exit
189      end if
190      if (end_f_5 .EQ. -1)then
[175]191         print(" ")
[218]192         print("'end_f_5' must be one of the cyclic numbers (at least 0) of your input file(s)")
193         print(" ") 
[175]194         exit
[218]195      end if     
196      start_f(4) = start_f_5
197      end_f(4) = end_f_5   
[175]198   end if
[218]199   
[175]200   if (no_files .GT. 5) then
[190]201      if (file_6 .EQ. "File in") then
202         print(" ")
[218]203         print("Declare 6th input file 'file_6=' in 'ncl_preferences.ncl' or prompt")
[190]204         print(" ")
205         exit
[175]206      else
[190]207         file_in(5) = file_6   
[218]208      end if     
209      file_in_1(5) = False
210      if (isStrSubset(file_in(5), ".nc"))then
[219]211         start_f_6 = -2
212         end_f_6 = -2
[218]213         file_in_1(5) = True     
[175]214      end if
[218]215      if (start_f_6 .EQ. -1)then
[175]216         print(" ")
[218]217         print("'start_f_6' must be one of the cyclic numbers (at least 0) of your input file(s)")
218         print(" ") 
[175]219         exit
[218]220      end if
221      if (end_f_6 .EQ. -1)then
[190]222         print(" ")
[218]223         print("'end_f_6' must be one of the cyclic numbers (at least 0) of your input file(s)")
224         print(" ") 
[175]225         exit
[218]226      end if     
227      start_f(5) = start_f_6
228      end_f(5) = end_f_6   
[175]229   end if
[218]230
[190]231   
232   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
233      print(" ")
234      print("'format_out = "+format_out+"' is invalid and set to'x11'")
235      print(" ")
236      format_out="x11"
237   end if 
[175]238
[190]239   if (over .NE. 0 .AND. over .NE. 1) then
240      print(" ")
241      print("'over'= "+over+" is invalid and set to 0")
242      print(" ")
243      over = 0
[154]244   end if
[190]245   if (no_files .GT. 1) then
246      over = 0
247      print(" ")
248      print("If you have more than one input file - you cannot overlay variables: over is set to 0")
249      print(" ")
[154]250   end if
[190]251   
252   if (combine .NE. 0 .AND. combine .NE. 1)then
253      print(" ")
254      print("Your 'combine'= "+combine+" is invalid and set to 0")
255      print(" ")
256      combine = 0
[154]257   end if
[190]258   if (no_files .GT. 1) then
259      combine = 0
260      print(" ")
261      print("If you have more than one input file you cannot combine variables: combine is set to 0")
262      print(" ")
263   end if   
264   if (combine .EQ. 1 .AND. number_comb .EQ. -1) then
265      print(" ")
[218]266      print("Set 'number_comb' to 2 or 3 or combine to 0")
[190]267      print(" ")
268      exit
[154]269   end if
[190]270   if (combine .EQ. 1)then
271      if (number_comb .EQ. -1) then
272         print(" ")
[218]273         print("Set 'number_comb' to 2 or 3 or combine to 0")
[175]274         print(" ")
[190]275         exit
[175]276      end if
[190]277      if (number_comb .NE. 2 .AND. number_comb .NE. 3) then
278         print(" ")
[218]279         print("Set 'number_comb' to 2 or 3 or combine to 0")
[175]280         print(" ")
281         exit
282      end if
[190]283   end if 
284   if (combine .EQ. 1 .AND. c_var .EQ. "c_variables") then
285      print(" ")
[218]286      print("Select variables for overlaying ('c_var') or set combine to 0")
[190]287      print(" ")
288      exit
[174]289   end if
[175]290
[218]291   if (log_z .NE. 0 .AND. log_z .NE. 1)then
[190]292      print(" ")
[218]293      print("'log_z'= "+log_z+" is invalid and set to 0")
[190]294      print(" ")
[218]295      log_z = 0
[190]296   end if   
297 
[218]298   if (norm_z .EQ. 0) then
[190]299      print(" ")
[218]300      print("Normalising with 0 is not allowed, 'norm_z' is set to 1.0")
[190]301      print(" ")
[218]302      norm_z = 1.0
[175]303   end if
304
[190]305   ;***************************************************
[154]306   ; open input file
[190]307   ;***************************************************
[154]308
[175]309   do nof=0,no_files-1
[174]310
[218]311   files=new(end_f(nof)-start_f(nof)+1,string)
312   if (file_in_1(nof))then
313      if (isfilepresent(file_in(nof)))then
[219]314         files(0)=file_in(nof)
[218]315      else
316         print(" ")
[219]317         print("1st input file: '"+file_in(nof)+"' does not exist")
[218]318         print(" ")
319         exit
320      end if
321   else
322      if (start_f(nof) .EQ. 0)then
323         if (isfilepresent(file_in(nof)+".nc"))then
324            files(0)=file_in(nof)+".nc"
325            do i=1,end_f(nof)
[324]326               if (isfilepresent(file_in(nof)+"."+i+".nc"))then   
327                  files(i)=file_in(nof)+"."+i+".nc"
328               else
329                  print(" ")
330                  print("Input file: '"+file_in(nof)+"."+i+".nc' does not exist")
331                  print(" ")
332                  exit 
333               end if       
334            end do         
[218]335         else
336            print(" ")
337            print("Input file: '"+file_in(nof)+".nc' does not exist")
338            print(" ")
339            exit
340         end if
341      else
342         do i=start_f(nof),end_f(nof)
343            if (isfilepresent(file_in(nof)+"."+i+".nc"))then   
344               files(i-start_f(nof))=file_in(nof)+"."+i+".nc"
345            else
346               print(" ")
347               print("Input file: '"+file_in(nof)+"."+i+".nc' does not exist")
348               print(" ")
349               exit 
350            end if
351         end do
352      end if
353   end if
354
355   f=addfiles(files,"r")
356   f_att=addfile(files(0),"r")
357   ListSetType(f,"cat")
[175]358   
[342]359   vNam = getfilevarnames(f_att)   
[267]360   
[175]361   if (nof .EQ. 0)then
362      vNam0=vNam
363   end if
364   if (nof .NE. 0)then
365      if (dim0 .NE. dim)then
366         print(" ")
[190]367         print("There are 'no_files'="+no_files+" input files but they do not contain the same variables")
[175]368         print(" ")
369         exit
370      else
371         do i=0,dim0-1
372            if (vNam0(i) .NE. vNam(i))then
373               print(" ")
[190]374               print("There are 'no_files'="+no_files+" input files but they do not contain the same variables")
[175]375               print(" ")
376               exit
377            end if
378         end do
379      end if
380   end if
381   nof=nof+1
[154]382   print(" ")
[190]383   print("Variables in input file "+nof+":")
384   print("- "+ vNam)
[154]385   print(" ")
[175]386   nof=nof-1
[161]387   dim = dimsizes(vNam)
[175]388   dim0=dim
[174]389 
[161]390   if (dim .EQ. 0) then
391      print(" ")
[218]392      print("There is no data on file")
[161]393      print(" ")
394   end if
[267]395   
396   prof3d = 0
397   do varn = dim-1,0,1
398      if ( isStrSubset( vNam(varn), "zu_3d") .OR. isStrSubset( vNam(varn), "zw_3d")) then
399         prof3d = 1
400         break
401      end if
402   end do
[342]403 
404   if (var .NE. "all") then
405      ;rearrange the order of the variables in vNam so that the variables
406      ;specified by "var" are in the top of vNam
[161]407
[342]408      vNam_static = new((/dim/),string)
409      vNam_temp   = new((/dim/),string)
[347]410
[342]411      var_char    = stringtocharacter(var)
412      no_char     = dimsizes(var_char)
413      comma       = 0
414       
415      do j=0,no_char-1
416         if(var_char(j) .eq. ",")
417            comma = comma + 1
418         end if
419      end do
420
421      if(comma .le. 1)
422          print(" ")
423          print("The variables 'var="+var+"'" )
424          print("do not exist on your input file;")
425          print("be sure to have one comma before and after each variable")
426          print(" ")
427          exit
428      end if
429
430      indices = new((/comma/),integer)
431      comma   = 0
432       
433      do j=0,no_char-1
434         if(var_char(j) .eq. ",")
435           indices(comma) = j
436           comma          = comma + 1
437         end if
438      end do
439
440      do j=0,comma-2
441         vNam_temp(j) = charactertostring(var_char(indices(j)+1:indices(j+1)-1))
442      end do
443
444      do j=0,comma-2
[347]445        count_check = 0
446        do varn=0,dim-1
447           if(vNam_temp(j) .ne. vNam(varn))
448             count_check=count_check+1
449           end if
450        end do   
451
452        if(count_check .eq. dim)
453            print(" ")
454            print("The variables 'var="+var+"'" )
455            print("do not exist on your input file;")
456            print("be sure to have one comma before and after each variable")
457            print(" ")
458            exit
459        end if
460
461        vNam_static(j) = vNam_temp(comma - 2 - j)
[342]462      end do
463
464      vNam_temp   = vNam_static
465      vNam_static = ""
466
467      if (prof3d .EQ. 0) then
468         i = 0
469         do j=0,dim-1,2
470            vNam_static(j)   = vNam_temp(i)
471            vNam_static(j+1) = "z" + vNam_static(j)
472            i = i+1
473            if(i .eq. comma-1)
474                break
475            end if
476         end do
477
478         delete(vNam_temp)
479         count_variable = 2*(comma-1)
480      else
481         i = 0
482          do j=0,dim-1,1
483             vNam_static(j) = vNam_temp(i)
484             i = i+1
485             if(i .eq. comma-1)
486                 break
487             end if
488          end do
489
490          delete(vNam_temp)
491          count_variable = comma-1
492      end if
493
494      counter  = 0
495      counter2 = 0
496      do j=0,dim-1
497         counter = 0
498         do i = 0, count_variable - 1       
499            if(vNam_static(i) .ne. vNam(j))
500               counter = counter + 1
501            end if
502         end do
503     
504         if (counter .eq. count_variable)
505            vNam_static(count_variable + counter2) = vNam(j)
506            counter2 = counter2 + 1
507         end if
508      end do
509     
510      vNam = vNam_static
511      delete(vNam_static)
512    end if
513
[175]514   ;-----------------------------------------------------below steps only for first file -> nof=0
515   if (nof .EQ. 0) then
516
517      plot = new(dim,graphic)
518      plot_ = new(dim,graphic)
519      if (no_files .GT. 1) then
520         multi_plot = new((/no_files,dim/),graphic)
521         max_nof = new((/no_files,dim/),float)
522         min_nof = new((/no_files,dim/),float)
523         name    = new((/no_files,dim/),string)
524         unit_   = new((/no_files,dim/),string)
525      end if
526
[174]527   if (prof3d .EQ. 0) then
[175]528 
[342]529   do varn=0,dim-1
[161]530      if ( isStrSubset( vNam(varn), "time") .OR. isStrSubset( vNam(varn), "NORM")) then
531         continue
532      end if
[175]533      if (vNam(varn) .EQ. "u" .OR. isStrSubset(vNam(varn), "u_"))then
[218]534         z_u = f_att->$vNam(varn+1)$
[161]535         break
536      else
[190]537         if (vNam(varn) .EQ. "v" .OR. isStrSubset(vNam(varn), "v_"))then 
[218]538            z_u = f_att->$vNam(varn+1)$
[161]539            break
540         else
[174]541            if(vNam(varn) .EQ. "pt" .OR. isStrSubset(vNam(varn), "pt_"))then
[218]542               z_u = f_att->$vNam(varn+1)$
[161]543               break
544            else
[174]545               if(vNam(varn) .EQ. "vpt" .OR. isStrSubset(vNam(varn), "vpt_"))then
[250]546                  z_u = f_att->$vNam(varn+1)$
[161]547                  break
548               else
[174]549                  if(vNam(varn) .EQ. "lpt" .OR. isStrSubset(vNam(varn), "lpt_"))then
[218]550                     z_u = f_att->$vNam(varn+1)$
[161]551                     break
552                  else   
[174]553                     if(vNam(varn) .EQ. "q" .OR. isStrSubset(vNam(varn), "q_") )then
[218]554                        z_u = f_att->$vNam(varn+1)$
[161]555                        break
556                     else
[174]557                        if(vNam(varn) .EQ. "qv" .OR. isStrSubset(vNam(varn), "qv_"))then
[218]558                           z_u = f_att->$vNam(varn+1)$
[161]559                           break
560                        else
[174]561                           if(vNam(varn) .EQ. "ql" .OR. isStrSubset(vNam(varn), "ql_"))then
[218]562                              z_u = f_att->$vNam(varn+1)$
[161]563                              break
564                           else
[174]565                              if(vNam(varn) .EQ. "rho" .OR. isStrSubset(vNam(varn), "rho_"))then
[218]566                                 z_u = f_att->$vNam(varn+1)$
[161]567                                 break
568                              else
[174]569                                 if(vNam(varn) .EQ. "s" .OR. isStrSubset(vNam(varn), "s_") )then
[218]570                                    z_u = f_att->$vNam(varn+1)$
[161]571                                    break
572                                 else
[174]573                                    if(vNam(varn) .EQ. "sa" .OR. isStrSubset(vNam(varn), "sa_"))then
[218]574                                       z_u = f_att->$vNam(varn+1)$
[161]575                                       break
576                                    else
[174]577                                       if(vNam(varn) .EQ. "e" .OR. isStrSubset(vNam(varn), "e_"))then
[218]578                                          z_u = f_att->$vNam(varn+1)$
[161]579                                          break
580                                       else
[174]581                                          if(vNam(varn) .EQ. "es" .OR. isStrSubset(vNam(varn), "es_"))then
[218]582                                             z_u = f_att->$vNam(varn+1)$
[161]583                                             break
584                                          else
[174]585                                             if(vNam(varn) .EQ. "km" .OR. isStrSubset(vNam(varn), "km_"))then
[218]586                                                z_u = f_att->$vNam(varn+1)$
[161]587                                                break
588                                             else
[174]589                                                if(vNam(varn) .EQ. "kh" .OR. isStrSubset(vNam(varn), "kh_"))then
[218]590                                                   z_u = f_att->$vNam(varn+1)$
[161]591                                                   break
592                                                else
[174]593                                                   if(vNam(varn) .EQ. "l" .OR. isStrSubset(vNam(varn), "l_"))then
[218]594                                                      z_u = f_att->$vNam(varn+1)$
[161]595                                                      break
596                                                   else
[174]597                                                      if(vNam(varn) .EQ. "us2" .OR. isStrSubset(vNam(varn), "us2_"))then
[218]598                                                         z_u = f_att->$vNam(varn+1)$
[161]599                                                         break
600                                                      else
[174]601                                                         if(vNam(varn) .EQ. "vs2" .OR. isStrSubset(vNam(varn), "vs2_") )then
[218]602                                                            z_u = f_att->$vNam(varn+1)$
[161]603                                                            break
604                                                         else
[174]605                                                            if(vNam(varn) .EQ. "pts2" .OR. isStrSubset(vNam(varn), "pts2_"))then
[218]606                                                               z_u = f_att->$vNam(varn+1)$
[161]607                                                               break
608                                                            else
[174]609                                                               if(vNam(varn) .EQ. "wsususodz" .OR. isStrSubset(vNam(varn), "wsususodz_"))then
[218]610                                                                  z_u = f_att->$vNam(varn+1)$
[161]611                                                                  break
612                                                               else
[174]613                                                                  if(vNam(varn) .EQ. "wspsodz" .OR. isStrSubset(vNam(varn), "wspsodz_"))then
[218]614                                                                     z_u = f_att->$vNam(varn+1)$
[161]615                                                                     break
616                                                                  else
[174]617                                                                     if(vNam(varn) .EQ. "wpeodz" .OR. isStrSubset(vNam(varn), "wpeodz_"))then
[218]618                                                                        z_u = f_att->$vNam(varn+1)$
[161]619                                                                        break                                                                       
620                                                                     end if
621                                                                  end if
622                                                               end if
623                                                            end if
624                                                         end if
625                                                      end if
626                                                   end if
627                                                end if
628                                             end if
629                                          end if
630                                       end if
631                                    end if
632                                 end if
633                              end if
634                           end if
635                        end if
636                     end if
637                  end if
638               end if
639            end if
640         end if
641      end if
642   end do
643
[342]644   do varn=0,dim-1
[161]645      if ( isStrSubset( vNam(varn), "time") .OR. isStrSubset( vNam(varn), "NORM")) then
646         continue
647      end if
[175]648      if (vNam(varn) .EQ. "w" .OR. isStrSubset(vNam(varn), "w_"))then
[218]649         z_w = f_att->$vNam(varn+1)$
[161]650         break
651      else
[174]652         if (vNam(varn) .EQ. "wpup" .OR. isStrSubset(vNam(varn), "wpup_"))then
[218]653            z_w = f_att->$vNam(varn+1)$
[161]654            break
655         else
[174]656            if(vNam(varn) .EQ. "wsus" .OR. isStrSubset(vNam(varn), "wsus_"))then
[218]657               z_w = f_att->$vNam(varn+1)$
[161]658               break
659            else
[174]660               if(vNam(varn) .EQ. "wu" .OR. isStrSubset(vNam(varn), "wu_"))then
[218]661                  z_w = f_att->$vNam(varn+1)$
[161]662                  break
663               else
[174]664                  if(vNam(varn) .EQ. "wpvp" .OR. isStrSubset(vNam(varn), "wpvp_"))then
[218]665                     z_w = f_att->$vNam(varn+1)$
[161]666                     break
667                  else   
[174]668                     if(vNam(varn) .EQ. "wsvs" .OR. isStrSubset(vNam(varn), "wsvs_"))then
[218]669                        z_w = f_att->$vNam(varn+1)$
[161]670                        break
671                     else
[174]672                        if(vNam(varn) .EQ. "wv" .OR. isStrSubset(vNam(varn), "wv_"))then
[218]673                           z_w = f_att->$vNam(varn+1)$
[161]674                           break
675                        else
[174]676                           if(vNam(varn) .EQ. "wptpp" .OR. isStrSubset(vNam(varn), "wptpp_"))then
[218]677                              z_w = f_att->$vNam(varn+1)$
[161]678                              break
679                           else
[174]680                              if(vNam(varn) .EQ. "wspts" .OR. isStrSubset(vNam(varn), "wspts_"))then
[218]681                                 z_w = f_att->$vNam(varn+1)$
[161]682                                 break
683                              else
[174]684                                 if(vNam(varn) .EQ. "wpt" .OR. isStrSubset(vNam(varn), "wpz_"))then
[218]685                                    z_w = f_att->$vNam(varn+1)$
[161]686                                    break
687                                 else
[174]688                                    if(vNam(varn) .EQ. "wsptsBC" .OR. isStrSubset(vNam(varn), "wsptsBC_"))then
[218]689                                       z_w = f_att->$vNam(varn+1)$
[161]690                                       break
691                                    else
[174]692                                       if(vNam(varn) .EQ. "wptBC" .OR. isStrSubset(vNam(varn), "wptBC_"))then
[218]693                                          z_w = f_att->$vNam(varn+1)$
[161]694                                          break
695                                       else
[174]696                                          if(vNam(varn) .EQ. "wpvptp" .OR. isStrSubset(vNam(varn), "wpvptp_"))then
[218]697                                             z_w = f_att->$vNam(varn+1)$
[161]698                                             break
699                                          else
[174]700                                             if(vNam(varn) .EQ. "wsvpts" .OR. isStrSubset(vNam(varn), "wsvpts_"))then
[218]701                                                z_w = f_att->$vNam(varn+1)$
[161]702                                                break
703                                             else
[174]704                                                if(vNam(varn) .EQ. "wvpt" .OR. isStrSubset(vNam(varn), "wvpt_"))then
[218]705                                                   z_w = f_att->$vNam(varn+1)$
[161]706                                                   break
707                                                else
[174]708                                                   if(vNam(varn) .EQ. "wpqp" .OR. isStrSubset(vNam(varn), "wpqp_"))then
[218]709                                                      z_w = f_att->$vNam(varn+1)$
[161]710                                                      break
711                                                   else
[174]712                                                      if(vNam(varn) .EQ. "wsqs" .OR. isStrSubset(vNam(varn), "wsqs_"))then
[218]713                                                         z_w = f_att->$vNam(varn+1)$
[161]714                                                         break
715                                                      else
[174]716                                                         if(vNam(varn) .EQ. "wq" .OR. isStrSubset(vNam(varn), "wq_"))then
[218]717                                                            z_w = f_att->$vNam(varn+1)$
[161]718                                                            break
719                                                         else
[174]720                                                            if(vNam(varn) .EQ. "wpqvp" .OR. isStrSubset(vNam(varn), "wpqvp_"))then
[218]721                                                               z_w = f_att->$vNam(varn+1)$
[161]722                                                               break
723                                                            else
[174]724                                                               if(vNam(varn) .EQ. "wsqvs" .OR. isStrSubset(vNam(varn), "wsqvs_"))then
[218]725                                                                  z_w = f_att->$vNam(varn+1)$
[161]726                                                                  break
727                                                               else
[174]728                                                                  if(vNam(varn) .EQ. "wqv" .OR. isStrSubset(vNam(varn), "wqv_"))then
[218]729                                                                     z_w = f_att->$vNam(varn+1)$
[161]730                                                                     break
731                                                                  else
[174]732                                                                     if(vNam(varn) .EQ. "wpsp" .OR. isStrSubset(vNam(varn), "wpsp_"))then
[218]733                                                                        z_w = f_att->$vNam(varn+1)$
[161]734                                                                        break
735                                                                     else
[174]736                                                                        if(vNam(varn) .EQ. "wsss" .OR. isStrSubset(vNam(varn), "wsss_"))then
[218]737                                                                           z_w = f_att->$vNam(varn+1)$
[161]738                                                                           break
739                                                                        else
[174]740                                                                           if(vNam(varn) .EQ. "ws" .OR. isStrSubset(vNam(varn), "ws_"))then
[218]741                                                                              z_w = f_att->$vNam(varn+1)$
[161]742                                                                              break
743                                                                           else
[174]744                                                                              if(vNam(varn) .EQ. "wpsap" .OR. isStrSubset(vNam(varn), "wpsap_"))then
[218]745                                                                                 z_w = f_att->$vNam(varn+1)$
[161]746                                                                                 break
747                                                                              else
[174]748                                                                                 if(vNam(varn) .EQ. "wssas" .OR. isStrSubset(vNam(varn), "wssas_") )then
[218]749                                                                                    z_w = f_att->$vNam(varn+1)$
[161]750                                                                                    break
751                                                                                 else
[174]752                                                                                    if(vNam(varn) .EQ. "wsa" .OR. isStrSubset(vNam(varn), "wsa_"))then
[218]753                                                                                       z_w = f_att->$vNam(varn+1)$
[161]754                                                                                       break
755                                                                                    else
[174]756                                                                                       if(vNam(varn) .EQ. "wses" .OR. isStrSubset(vNam(varn), "wses_"))then
[218]757                                                                                          z_w = f_att->$vNam(varn+1)$
[161]758                                                                                          break
759                                                                                       else
[174]760                                                                                          if(vNam(varn) .EQ. "ws2" .OR. isStrSubset(vNam(varn), "ws2_"))then
[218]761                                                                                             z_w = f_att->$vNam(varn+1)$
[161]762                                                                                             break
763                                                                                          else
[174]764                                                                                             if(vNam(varn) .EQ. "ws3" .OR. isStrSubset(vNam(varn), "ws3_"))then
[218]765                                                                                                z_w = f_att->$vNam(varn+1)$
[161]766                                                                                                break
767                                                                                             else
[174]768                                                                                                if(vNam(varn) .EQ. "Sw" .OR. isStrSubset(vNam(varn), "Sw_"))then
[218]769                                                                                                   z_w = f_att->$vNam(varn+1)$
[161]770                                                                                                   break
771                                                                                                else
[174]772                                                                                                   if(vNam(varn) .EQ. "ws2pts".OR. isStrSubset(vNam(varn), "ws2pts_") )then
[218]773                                                                                                      z_w = f_att->$vNam(varn+1)$
[161]774                                                                                                      break
775                                                                                                   else
[174]776                                                                                                      if(vNam(varn) .EQ. "wspts2" .OR. isStrSubset(vNam(varn), "wspts2_"))then
[218]777                                                                                                         z_w = f_att->$vNam(varn+1)$
[161]778                                                                                                         break                                           
779                                                                                                      end if
780                                                                                                   end if
781                                                                                                end if
782                                                                                             end if
783                                                                                          end if
784                                                                                       end if
785                                                                                    end if
786                                                                                 end if
787                                                                              end if
788                                                                           end if
789                                                                        end if   
790                                                                     end if
791                                                                  end if
792                                                               end if
793                                                            end if
794                                                         end if
795                                                      end if
796                                                   end if
797                                                end if
798                                             end if
799                                          end if
800                                       end if
801                                    end if
802                                 end if
803                              end if
804                           end if
805                        end if
806                     end if
807                  end if
808               end if
809            end if
810         end if
811      end if
812   end do
[190]813   
814   if (.not. isvar("z_u") .AND. .not. isvar ("z_w")) then
[175]815      co=0
[161]816      do varn=0,dim-1     
817         if ( isStrSubset( vNam(varn), "time") .OR. isStrSubset( vNam(varn), "NORM")) then
818            check = False
819         else
[190]820            check = True
821            if (var .NE. "all") then
[161]822               check = isStrSubset( var,","+vNam(varn)+"," )
[190]823            end if         
[161]824         end if
[175]825         if (check)then
826            co=co+1
[218]827            z = f_att->$vNam(varn+1)$
[190]828            if (getvardims(z) .EQ. "zu")then
829               z_u = z
830            else
831               if (getvardims(z) .EQ. "zw")then
832                  z_w = z
833               end if
834            end if
[161]835            dimz = dimsizes(z)
836            break
837         end if   
838      end do
[175]839      if (co .EQ. 0) then
840         print(" ")
[342]841         print("The variables 'var="+var+"'" )
842         print("do not exist on your input file;")
843         print("be sure to have one comma before and after each variable")
[175]844         print(" ")
[342]845         exit           
[175]846      end if
[161]847   end if
[175]848
[162]849   if (isvar("z_u") ) then
850      dimz  = dimsizes(z_u)
851   else
852      if (isvar("z_w"))then
853         dimz  = dimsizes(z_w)
854      end if
855   end if
[174]856
857   else
858
859      do varn = dim-1,0,1
[175]860         if (vNam(varn) .EQ. "zu_3d")then
[218]861            z_u = f_att->zu_3d 
[174]862            dimz  = dimsizes(z_u)         
863         else
[175]864            if (vNam(varn) .EQ. "zw_3d")then
[218]865               z_w = f_att->zw_3d
[174]866               dimz  = dimsizes(z_w)
867            end if
868         end if
[218]869         if (vNam(varn) .EQ. "x")then
870            x = f_att->x
871            dimx=dimsizes(x)
872         else
873            if (vNam(varn) .EQ. "xu")then
874               x = f_att->xu
875               dimx=dimsizes(x)
876            end if
877         end if
878         if (vNam(varn) .EQ. "y")then
879            y = f_att->y
880            dimy=dimsizes(y)
881         else
882            if (vNam(varn) .EQ. "yv")then
883               y = f_att->yv
884               dimy=dimsizes(y)
885            end if
886         end if
[174]887      end do
888
889   end if
890   
[190]891   if(.not. isvar("z_u") .AND. .not. isvar("z_w"))then
892      print(" ")
893      print("Program aborts - there are no z-variables available")
[218]894      print("Be sure if 'plot_3d' is set correctly")
[190]895      print(" ")
896      exit
897   end if
[342]898 
[347]899
900   t_all = f[:]->time
901   nt    = dimsizes(t_all)
902
[236]903   
[324]904   if (nt .EQ. 1)then
905      delta_t=t_all(nt-1)/nt
906   else
907      delta_t=(t_all(nt-1)-t_all(0))/(nt-1)
908   end if
[174]909
[154]910   ; ****************************************************       
911   ; start of time step and different types of mistakes that could be done
912   ; ****************************************************
[175]913   
[190]914   if (start_time_step .EQ. -1.) then           
915      start_time_step=t_all(0)/3600     
[154]916   else
[175]917      if (start_time_step .GT. t_all(nt-1)/3600)then
[154]918         print(" ")
[162]919         print("'start_time_step' = "+ start_time_step +"h is greater than last time step = " + t_all(nt-1)+"s = "+t_all(nt-1)/3600+"h")
[154]920         print(" ")
[218]921         print("Select another 'start_time_step'")
[162]922         print(" ")
[154]923         exit
924      end if
[175]925      if (start_time_step .LT. t_all(0)/3600)then
[154]926         print(" ")
[174]927         print("'start_time_step' = "+ start_time_step +"h is lower than first time step = " + t_all(0)+"s = "+t_all(0)/3600+"h")
[190]928         print(" ")
[154]929         exit
930      end if
931   end if
[175]932
[218]933   do i=0,nt-1   
[190]934      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
[162]935         st=i
936         break
937      end if
938   end do
[190]939   if (.not. isvar("st"))then
940      print(" ")
941      print("'start_time_step' = "+ start_time_step +"h is invalid")
942      print(" ")
[218]943      print("Select another 'start_time_step'")
[190]944      print(" ")
945      exit
946   end if
[174]947   
[154]948   ; ****************************************************
949   ; end of time step and different types of mistakes that could be done
950   ; ****************************************************
951
[190]952   if (end_time_step .EQ. -1.) then             
953      end_time_step = t_all(nt-1)/3600 
[154]954   else
[175]955      if (end_time_step .GT. t_all(nt-1)/3600)then
[154]956         print(" ")
[162]957         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")
[154]958         print(" ")
[218]959         print("Select another 'end_time_step'") 
[162]960         print(" ")
[154]961         exit
962      end if
[175]963      if (end_time_step .LT. start_time_step/3600)then
[154]964         print(" ")
[162]965         print("'end_time_step' = "+ end_time_step +"h is lower than 'start_time_step' = "+start_time_step+"h")
[154]966         print(" ")
[218]967         print("Select another 'start_time_step' or 'end_time_step'")
[162]968         print(" ")
[154]969         exit
970      end if
[162]971   end if
[175]972
[174]973   do i=0,nt-1     
[190]974      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
[162]975         et=i
976         break
[154]977      end if
[162]978   end do
[190]979   if (.not. isvar("et"))then
980      print(" ")
981      print("'end_time_step' = "+ end_time_step +"h is invalid")
982      print(" ")
[218]983      print("Select another 'end_time_step'")
[190]984      print(" ")
985      exit
[324]986   end if   
[154]987
[162]988   delete(start_time_step)
989   start_time_step=round(st,3)
990   delete(end_time_step)
991   end_time_step=round(et,3)
[351]992
993   no_time = end_time_step-start_time_step+1
[324]994   
[351]995   ; ****************************************************
996   ; time_stride and different types of mistakes that could be done
997   ; ****************************************************
998 
999   if(time_stride .LT. 1)
1000      print(" ")
1001      print("'time_stride' has to be positive and is set to 1")
1002      print(" ")
1003      time_stride = 1
1004   end if
1005
1006   if(time_stride .GE. no_time)
1007      print(" ")
1008      print("'time_stride' is greater equal than number of available time steps,")
1009      print("only start time step will be plotted then")
1010      print(" ")
1011      time_stride = no_time
1012   end if
1013
1014   ti_in = ispan(start_time_step,end_time_step,time_stride) ;ti_in contents the time indices to plot
1015   np    = dimsizes(ti_in) 
1016
[175]1017   print(" ")
1018   print("Output of time steps from "+t_all(start_time_step)/3600+" h = "+t_all(start_time_step)+" s => index = "+start_time_step)
[351]1019   print("                     till "+t_all(ti_in(np-1))/3600+" h = "+t_all(ti_in(np-1))+" s => index = "+end_time_step)
1020   print("                     with temporal stride = "+time_stride)
[175]1021   print(" ")
1022
[351]1023
[154]1024   ; ****************************************************
1025   ; set up legend and colors
1026   ; ****************************************************
1027   
[351]1028   legend_label=new(np,double)
1029   do p=0, np-1
1030      legend_label(p)=decimalPlaces(t_all(ti_in(p))/3600,3,True)         
[154]1031   end do
1032   
1033
1034   ; ***************************************************
1035   ; set up recourses
1036   ; ***************************************************
1037
[175]1038   res                         = True
[154]1039   res@gsnDraw                 = False
1040   res@gsnFrame                = False
1041   res@gsnPaperOrientation     = "portrait"
1042   res@gsnPaperWidth           = 8.27
1043   res@gsnPaperHeight          = 11.69
1044   res@gsnPaperMargin          = 0.79
1045   res@txFont                  = "helvetica"
1046   res@tiMainFont              = "helvetica"
1047   res@tiXAxisFont             = "helvetica"
1048   res@tiYAxisFont             = "helvetica"
1049   res@tmXBLabelFont           = "helvetica"
1050   res@tmYLLabelFont           = "helvetica"
1051   res@lgLabelFont             = "helvetica"
1052   res@tmLabelAutoStride       = True
[219]1053   if (legend .EQ. 1)then
1054      res@pmLegendDisplayMode     = "Always"
1055   end if
[154]1056   res@pmLegendSide            = "Top"
1057   res@xyExplicitLegendLabels  = legend_label
[161]1058   res@pmLegendParallelPosF    = 1.15
1059   res@pmLegendOrthogonalPosF  = -1.0
[154]1060   res@pmLegendWidthF          = 0.12
[351]1061   res@pmLegendHeightF         = 0.05*np
[218]1062   res@lgLabelFontHeightF     = font_size
[190]1063   res@lgTitleString      = "Time [h]"
[218]1064   res@lgTitleFontHeightF = font_size   
1065   res@txFontHeightF      = font_size
1066   res@tiXAxisFontHeightF = font_size
1067   res@tiYAxisFontHeightF = font_size
1068   res@tmXBLabelFontHeightF = font_size
1069   res@tmYLLabelFontHeightF = font_size
[175]1070   res@tiXAxisString      = " "
1071   if ( black .eq. 0 ) then 
[250]1072      res@xyLineColors = -(ispan(-237,-2,235/np))
[175]1073   end if
[218]1074   if (norm_z .EQ. 1)then
[175]1075      res@tiYAxisString      = "Height [m]"
1076   else   
[218]1077      res@tiYAxisString      = "Height / "+norm_z+" [m]"
[175]1078   end if
1079   
[218]1080   if (log_z .EQ. 1) then
[175]1081      res@trYLog = True
1082   end if
1083
[190]1084   if (dash .EQ. 0 ) then
[175]1085      res@xyMonoDashPattern       = True
1086   else
[250]1087      res@xyMonoDashPattern       = False
[175]1088      if (no_files .GT. 1)
[219]1089         res@xyMonoDashPattern       = True 
[175]1090         print(" ")
1091         print("If you use more than one file, patterns for different timesteps cannot be used")
1092         print(" ")
[190]1093      end if       
[154]1094   end if
[250]1095
[218]1096   res@tmXBMinorPerMajor = 4
1097   res@tmYLMinorPerMajor = 4
[154]1098
1099   resP                        = True
1100   resP@txFont                 = "helvetica"
[218]1101   resP@txString               = f_att@title
[154]1102   resP@txFuncCode             = "~"
[218]1103   resP@txFontHeightF          = 0.015
[154]1104
1105   ; ***************************************************
[161]1106   ; set up graphics for plot
[154]1107   ; ***************************************************
[161]1108
[154]1109   if (combine .EQ. 1) then
[190]1110      plot_o = new(number_comb,graphic)   
[161]1111      label=new(number_comb,string)
1112      color_o=new(number_comb,integer)
1113      mini=new(number_comb,float)
1114      maxi=new(number_comb,float)
[154]1115   end if
[190]1116 
[154]1117   wks=gsn_open_wks(format_out,file_out)
1118   gsn_define_colormap(wks,"rainbow+white")
[161]1119
[154]1120   ; ***************************************************
1121   ; set up minimum and maximum height
[175]1122   ; ***************************************************
[154]1123
[218]1124   if (log_z .EQ. 1)then
[190]1125      if (min_z .EQ. -1)then
[175]1126         if (isvar("z_u"))then
1127            min_z=z_u(1)
1128         else
1129            min_z=z_w(1)
[190]1130         end if       
[175]1131      else
[190]1132         if (isvar("z_w"))then
1133            if (min_z .GE. max(z_w) ) then
[175]1134               print(" ")
[190]1135               print("Minimum of height ('min_z'="+min_z+") is greater than available heights (="+max(z_w)+")")
[175]1136               print(" ")
1137               exit
[190]1138            end if         
1139         else
1140            if (min_z .GE. max(z_u) ) then
1141               print(" ")
1142               print("Minimum of height ('min_z'="+min_z+") is greater than available heights (="+max(z_u)+")")
1143               print(" ")
1144               exit
1145            end if
1146         end if
1147         if (isvar("z_u"))then   
1148            if (min_z .LT. z_u(1) ) then
1149               print(" ")
1150               print("Begin height 'min_z' at least at level k=1 (="+z_u(1)+"m) due to the logarithmic scale of the y-axis")
1151               print(" ")
1152               exit
[175]1153            end if
[190]1154         else
1155            if (min_z .LT. z_w(1) ) then
[175]1156               print(" ")
[190]1157               print("Begin height 'min_z' at least at level k=1 (="+z_w(1)+"m) due to the logarithmic scale of the y-axis")
[175]1158               print(" ")
1159               exit
[190]1160            end if   
[175]1161         end if
[190]1162      end if
1163   else
1164      if (isvar("z_u"))then
1165         if (min_z .EQ. -1)then
1166            min_z=z_u(0)
1167         end if
[175]1168      else
[190]1169         if (min_z .EQ. -1)then
1170            min_z=z_w(0)
1171         end if   
1172      end if
[342]1173   
[190]1174      if (isvar("z_w"))then
1175         if (min_z .GE. max(z_w) ) then
[175]1176            print(" ")
[190]1177            print("Minimum of height ('min_z'="+min_z+") is greater than available heights (="+max(z_w)+")")
[175]1178            print(" ")
1179            exit
1180         end if
[190]1181      else
1182         if (min_z .EQ. -1)then
1183            min_z=z_u(0)
[175]1184         end if
[190]1185         if (min_z .GE. max(z_u) ) then
[154]1186            print(" ")
[190]1187            print("Minimum of height ('min_z'="+min_z+") is greater than available heights (="+max(z_u)+")")
[154]1188            print(" ")
1189            exit
1190         end if
1191      end if
[190]1192   end if
1193   
1194   if (isvar("z_w"))then
1195      if (max_z .EQ. -1)then
1196         max_z=max(z_w)
1197      end if
[154]1198   else
[190]1199      if (max_z .EQ. -1)then
1200         max_z=max(z_u)
1201      end if   
1202   end if
1203   
1204   if (isvar("z_w"))then
1205      if (max_z .GT. max(z_w) ) then
[154]1206         print(" ")
[190]1207         print("Maximum of height ('max_z'="+max_z+") is greater than available heights (="+max(z_w)+")")
[154]1208         print(" ")
1209         exit
1210      end if
1211   end if
1212
[218]1213   min_z=min_z/norm_z
1214   max_z=max_z/norm_z
[175]1215
[154]1216   ; ***************************************************
1217   ; read data and create plots
1218   ; ***************************************************
1219     
[351]1220   do ti =0,np-1
1221      if( t_all(ti_in(ti)) .lt. 10^36) then
[154]1222         start_time_step = ti
1223         break
1224      end if
1225   end do 
[175]1226   
[218]1227   if (log_z .EQ. 1) then
[351]1228      data   = new((/dim,np,dimz-1/),float)
[347]1229      data@_FillValue=9.96921e+36
[351]1230      data_0 = new((/np,dimz-1/),float)
[175]1231      data_0 = 0.1
[351]1232      t      = new((/np,dimz-1/),float)
[175]1233      t      = 0.0
1234      unit   = new(dim,string)
1235      if (isvar("z_u"))then
1236         if (typeof(z_u) .EQ. "double")then
1237            z_v    = new((/dim,dimz/),double)
1238            z_     = new((/dim,dimz-1/),double)
1239         else
1240            if (typeof(z_u) .EQ. "float")then
1241               z_v    = new((/dim,dimz/),float)
1242               z_     = new((/dim,dimz-1/),float)
1243            end if
1244         end if
1245      else
1246         if (isvar("z_w"))then
1247            if (typeof(z_w) .EQ. "double")then
1248               z_v    = new((/dim,dimz/),double)
1249               z_     = new((/dim,dimz-1/),double)
1250            else
1251               if (typeof(z_w) .EQ. "float")then
1252                  z_v    = new((/dim,dimz/),float)
1253                  z_     = new((/dim,dimz-1/),float)
1254               end if
1255            end if
1256         end if
1257      end if
1258   else
[351]1259      data   = new((/dim,np,dimz/),float)
[347]1260      data@_FillValue=9.96921e+36
[351]1261      data_0 = new((/np,dimz/),float)
[175]1262      data_0 = 0.0
[351]1263      t      = new((/np,dimz/),float)
[175]1264      t      = 0.0
1265      unit   = new(dim,string)
1266      if (isvar("z_u"))then
1267         if (typeof(z_u) .EQ. "double")then
1268            z_v    = new((/dim,dimz/),double)
1269            z_     = new((/dim,dimz/),double)
1270         else
1271            if (typeof(z_u) .EQ. "float")then
1272               z_v    = new((/dim,dimz/),float)
1273               z_     = new((/dim,dimz/),float)
1274            end if
1275         end if
1276      else
1277         if (isvar("z_w"))then
1278            if (typeof(z_w) .EQ. "double")then
1279               z_v    = new((/dim,dimz/),double)
1280               z_     = new((/dim,dimz/),double)
1281            else
1282               if (typeof(z_w) .EQ. "float")then
1283                  z_v    = new((/dim,dimz/),float)
1284                  z_     = new((/dim,dimz/),float)
1285               end if
1286            end if
1287         end if
1288      end if
1289   end if
[157]1290
[175]1291   end if
1292   ;------------------------------------------------------ above steps only for first file
1293
1294   ; ***************************************************
1295   ; indicate plot number
1296   ; ***************************************************
1297   
1298   if (combine .EQ. 1) then
1299      n = 1
1300   else
1301      n = 0
1302   end if
1303
[161]1304   if (over .EQ. 1) then
1305      plot_u         = gsn_csm_xy(wks,t,data_0(:,:),res)
1306      miniu = 1.E27
1307      maxiu =-1.E27
1308      plot_v         = gsn_csm_xy(wks,t,data_0(:,:),res)
1309      miniv = 1.E27
1310      maxiv =-1.E27
1311      plot_w         = gsn_csm_xy(wks,t,data_0(:,:),res)
1312      miniw = 1.E27
1313      maxiw =-1.E27
1314      plot_pt        = gsn_csm_xy(wks,t,data_0(:,:),res)
1315      minipt = 1.E27
1316      maxipt =-1.E27
1317      plot_vpt       = gsn_csm_xy(wks,t,data_0(:,:),res)
1318      minivpt = 1.E27
1319      maxivpt =-1.E27
1320      plot_lpt       = gsn_csm_xy(wks,t,data_0(:,:),res)
1321      minilpt = 1.E27
1322      maxilpt =-1.E27
1323      plot_q         = gsn_csm_xy(wks,t,data_0(:,:),res)
1324      miniq = 1.E27
1325      maxiq =-1.E27
1326      plot_qv        = gsn_csm_xy(wks,t,data_0(:,:),res)
1327      miniqv = 1.E27
1328      maxiqv =-1.E27
1329      plot_ql        = gsn_csm_xy(wks,t,data_0(:,:),res)
1330      miniql = 1.E27
1331      maxiql =-1.E27
1332      plot_rho       = gsn_csm_xy(wks,t,data_0(:,:),res)
1333      plot_s         = gsn_csm_xy(wks,t,data_0(:,:),res)
1334      plot_sa        = gsn_csm_xy(wks,t,data_0(:,:),res)
1335      plot_e         = gsn_csm_xy(wks,t,data_0(:,:),res)
1336      minie = 1.E27
1337      maxie =-1.E27
1338      plot_es        = gsn_csm_xy(wks,t,data_0(:,:),res)
1339      minie = 1.E27
1340      maxie =-1.E27
1341      plot_km        = gsn_csm_xy(wks,t,data_0(:,:),res)
1342      minie = 1.E27
1343      maxie =-1.E27
1344      plot_kh        = gsn_csm_xy(wks,t,data_0(:,:),res)
1345      minie = 1.E27
1346      maxie =-1.E27
1347      plot_l         = gsn_csm_xy(wks,t,data_0(:,:),res)     
1348      plot_wpup      = gsn_csm_xy(wks,t,data_0(:,:),res)
1349      miniwpup = 1.E27
1350      maxiwpup =-1.E27
1351      plot_wsus      = gsn_csm_xy(wks,t,data_0(:,:),res)
1352      miniwsus = 1.E27
1353      maxiwsus =-1.E27
1354      plot_wu        = gsn_csm_xy(wks,t,data_0(:,:),res)
1355      miniwu = 1.E27
1356      maxiwu =-1.E27
1357      plot_wpvp      = gsn_csm_xy(wks,t,data_0(:,:),res)
1358      miniwpvp = 1.E27
1359      maxiwpvp =-1.E27
1360      plot_wsvs      = gsn_csm_xy(wks,t,data_0(:,:),res)
1361      miniwsvs = 1.E27
1362      maxiwsvs =-1.E27
1363      plot_wv        = gsn_csm_xy(wks,t,data_0(:,:),res)
1364      miniwv = 1.E27
1365      maxiwv =-1.E27
1366      plot_wpptp     = gsn_csm_xy(wks,t,data_0(:,:),res)
1367      miniwpptp = 1.E27
1368      maxiwpptp =-1.E27
1369      plot_wspts     = gsn_csm_xy(wks,t,data_0(:,:),res)
1370      miniwspts = 1.E27
1371      maxiwspts =-1.E27
1372      plot_wpt       = gsn_csm_xy(wks,t,data_0(:,:),res)
1373      miniwpt = 1.E27
1374      maxiwpt =-1.E27
1375      plot_wsptsBC   = gsn_csm_xy(wks,t,data_0(:,:),res)
1376      miniwsptsBC = 1.E27
1377      maxiwsptsBC =-1.E27
1378      plot_wptBC     = gsn_csm_xy(wks,t,data_0(:,:),res)
1379      miniwptBC = 1.E27
1380      maxiwptBC =-1.E27
1381      plot_wpvptp    = gsn_csm_xy(wks,t,data_0(:,:),res)
1382      miniwpvptp = 1.E27
1383      maxiwpvptp =-1.E27
1384      plot_wsvpts    = gsn_csm_xy(wks,t,data_0(:,:),res)
1385      miniwsvpts = 1.E27
1386      maxiewsvpts=-1.E27
1387      plot_wvpt      = gsn_csm_xy(wks,t,data_0(:,:),res)
1388      miniwvpt = 1.E27
1389      maxiwvpt =-1.E27
1390      plot_wpqp      = gsn_csm_xy(wks,t,data_0(:,:),res)
1391      miniwpqp = 1.E27
1392      maxiwpqp =-1.E27
1393      plot_wsqs      = gsn_csm_xy(wks,t,data_0(:,:),res)
1394      miniwsqs = 1.E27
1395      maxiwsqs =-1.E27
1396      plot_wq        = gsn_csm_xy(wks,t,data_0(:,:),res)
1397      miniwq = 1.E27
1398      maxiwq =-1.E27
1399      plot_wpqvp     = gsn_csm_xy(wks,t,data_0(:,:),res)
1400      miniwpqvp = 1.E27
1401      maxiwpqvp =-1.E27
1402      plot_wsqvs     = gsn_csm_xy(wks,t,data_0(:,:),res)
1403      miniwsqvs = 1.E27
1404      maxiwsqvs =-1.E27
1405      plot_wqv       = gsn_csm_xy(wks,t,data_0(:,:),res)
1406      miniwqv = 1.E27
1407      maxiwqv =-1.E27
1408      plot_wpsp      = gsn_csm_xy(wks,t,data_0(:,:),res)
1409      miniwpsp = 1.E27
1410      maxiwpsp =-1.E27
1411      plot_wsss      = gsn_csm_xy(wks,t,data_0(:,:),res)
1412      miniwsss = 1.E27
1413      maxiwsss =-1.E27
1414      plot_ws        = gsn_csm_xy(wks,t,data_0(:,:),res)
1415      miniws = 1.E27
1416      maxiws =-1.E27
1417      plot_wpsap     = gsn_csm_xy(wks,t,data_0(:,:),res)
1418      miniwpsap = 1.E27
1419      maxiwpsap =-1.E27
1420      plot_wssas     = gsn_csm_xy(wks,t,data_0(:,:),res)
1421      miniwssas = 1.E27
1422      maxiwssas =-1.E27
1423      plot_wsa       = gsn_csm_xy(wks,t,data_0(:,:),res)
1424      miniwsa = 1.E27
1425      maxiwsa =-1.E27
1426      plot_wses      = gsn_csm_xy(wks,t,data_0(:,:),res)
1427      plot_us2       = gsn_csm_xy(wks,t,data_0(:,:),res)
1428      minius2 = 1.E27
1429      maxius2 =-1.E27
1430      plot_vs2       = gsn_csm_xy(wks,t,data_0(:,:),res)
1431      minivs2 = 1.E27
1432      maxivs2 =-1.E27
1433      plot_ws2       = gsn_csm_xy(wks,t,data_0(:,:),res)
1434      miniws2 = 1.E27
1435      maxiws2 =-1.E27
1436      plot_pts2      = gsn_csm_xy(wks,t,data_0(:,:),res)
1437      plot_ws3       = gsn_csm_xy(wks,t,data_0(:,:),res)
1438      plot_Sw        = gsn_csm_xy(wks,t,data_0(:,:),res)
1439      plot_ws2pts    = gsn_csm_xy(wks,t,data_0(:,:),res)
1440      plot_wspts2    = gsn_csm_xy(wks,t,data_0(:,:),res)
1441      plot_wsususodz = gsn_csm_xy(wks,t,data_0(:,:),res)
1442      miniwsususodz = 1.E27
1443      maxiwsususodz =-1.E27
1444      plot_wspsodz   = gsn_csm_xy(wks,t,data_0(:,:),res)
1445      miniwspsodz = 1.E27
1446      maxiwspsodz =-1.E27
1447      plot_wpeodz    = gsn_csm_xy(wks,t,data_0(:,:),res)
1448      miniwpeodz = 1.E27
1449      maxiwpeodz =-1.E27
1450   end if
[218]1451
1452   if (prof3d .EQ. 1)then
1453
1454   if (end_x .EQ. -1) then
1455      end_x=dimx-2
1456   end if
1457   if (end_y .EQ. -1)then
1458      end_y=dimy-2
1459   end if
1460   if (start_x .LT. 0)then
1461      print(" ")
1462      print("'start_x' is lower than 0 and set to 0")
1463      print(" ")
1464      start_x=0
1465   end if
1466   if (start_x .GT. dimx-1)then
1467      print(" ")
1468      print("'start_x' is greater than available x-range and set to maximum of x-range (excluding ghostpoint)")
1469      print(" ")
1470      start_x=dimx-2
1471   end if
1472   if (end_x .EQ. dimx-1)then
1473      print(" ")
1474      print("'end_x' = "+end_x+" and includes the ghostpoint")
1475      print(" ")
1476   end if
1477   if (end_x .GT. dimx-1)then
1478      print(" ")
1479      print("'end_x' = "+end_x+" is greater than available x-range and set to maximum of x-range (excluding ghostpoint)")
1480      print(" ")
1481      end_x=dimx-2
1482   end if
1483   if (end_x .LT. start_x)then
1484      print(" ")
1485      print("'end_x' = "+end_x+" is lower than 'start_x' = "+start_x+" and set to maximum of x-range (excluding ghostpoint)")
1486      print(" ")
1487      end_x=dimx-2
1488   end if
1489   if (start_y .LT. 0)then
1490      print(" ")
1491      print("'start_y' is lower than 0 and set to 0")
1492      print(" ")
1493      start_y=0
1494   end if
1495   if (start_y .GT. dimy-1)then
1496      print(" ")
1497      print("'start_y' is greater than available y-range and set to maximum of y-range (excluding ghostpoint)")
1498      print(" ")
1499      start_x=dimy-2
1500   end if
1501   if (end_y .EQ. dimy-1)then
1502      print(" ")
1503      print("'end_y' = "+end_y+" and includes the ghostpoint")
1504      print(" ")
1505   end if
1506   if (end_y .GT. dimy-1)then
1507      print(" ")
1508      print("'end_y' = "+end_y+" is greater than available y-range and set to maximum of y-range (excluding ghostpoint)")
1509      print(" ")
1510      end_x=dimy-2
1511   end if
1512   if (end_y .LT. start_y)then
1513      print(" ")
1514      print("'end_y' = "+end_y+" is lower than 'start_y' = "+start_y+" and set to maximum of y-range (excluding ghostpoint)")
1515      print(" ")
1516      end_y=dimy-2
1517   end if
1518   
1519   end if
1520 
[161]1521   n_o=0
[162]1522   count_var=0
[250]1523
[219]1524   res@xyDashPattern = 1*nof
[347]1525
[353]1526   over_remind = False
1527   if ( over .eq. 1)then
1528     over_remind = True
1529   end if
[250]1530   
[161]1531   do varn = 0,dim-1
[174]1532
1533      check = True
[161]1534     
[174]1535      if (prof3d .EQ. 0) then
1536         if ( isStrSubset( vNam(varn), "time") .OR. isStrSubset( vNam(varn), "NORM")) then
1537            check = False
1538         end if
[154]1539      else
[174]1540         if ( isStrSubset( vNam(varn), "time") .OR. isStrSubset( vNam(varn), "zusi") .OR. isStrSubset( vNam(varn), "zwwi") .OR. isStrSubset( vNam(varn), "x") .OR. isStrSubset( vNam(varn), "xu") .OR. isStrSubset( vNam(varn), "y") .OR. isStrSubset( vNam(varn), "yv") .OR. isStrSubset( vNam(varn), "zu_3d") .OR. isStrSubset( vNam(varn), "zw_3d")) then
1541            check = False
1542         end if
1543      end if
1544
[190]1545      if (var .NE. "all") then
[174]1546         check = isStrSubset( var,","+vNam(varn)+"," )
[154]1547      end if
[161]1548
1549      if (combine .EQ. 1) then         
1550         com=isStrSubset(c_var,","+vNam(varn)+"," )     
[175]1551         if (com) then     
[347]1552            if (prof3d .EQ. 0) then                 
1553               temp     = f[:]->$vNam(varn)$         
[218]1554               temp_att = f_att->$vNam(varn)$
1555               if (log_z .EQ. 1) then
[351]1556                  do j=0,np-1
1557                     data(varn,j,:) = temp(ti_in(j),1:dimz-1)
1558                  end do
[175]1559               else
[351]1560                  do j=0,np-1
1561                     data(varn,j,:) = temp(ti_in(j),0:dimz-1)
1562                  end do
[175]1563               end if
[174]1564            else
[218]1565               if (log_z .EQ. 1) then
[175]1566                  do i=1,dimz-1
[351]1567                     do j=0,np-1
[218]1568                        temp= f[:]->$vNam(varn)$
1569                        temp_att = f_att->$vNam(varn)$
[351]1570                        data_temp = temp(ti_in(j),i,start_y:end_y,start_x:end_x)
1571                        data(varn,j,i-1) = dim_avg_Wrap(dim_avg_Wrap(data_temp))
[175]1572                     end do
[174]1573                  end do
[175]1574               else
1575                  do i=0,dimz-1
[351]1576                     do j=0,np-1
[218]1577                        temp= f[:]->$vNam(varn)$
1578                        temp_att = f_att->$vNam(varn)$
[351]1579                        data_temp = temp(ti_in(j),i,start_y:end_y,start_x:end_x)
1580                        data(varn,j,i) = dim_avg_Wrap(dim_avg_Wrap(data_temp))
[175]1581                     end do
1582                  end do
1583               end if
[174]1584               print(" ")
1585               print("Variable for combine '"+vNam(varn)+"' is read")
1586               print(" ")
1587            end if                 
[218]1588            unit(varn) = temp_att@units
[161]1589            if (n_o .GT. number_comb-1) then
1590               print(" ")
[218]1591               print("Set 'number_comb' to the number of overlaying variables ('c_var' = "+c_var+")")
[161]1592               print(" ")
1593               exit
1594            end if
[324]1595            if (abs(min(data(varn,:,:))) .GT. 10)then
1596               min_value = abs(0.01*min(data(varn,:,:)))
1597               max_value = abs(0.01*max(data(varn,:,:)))
1598            else
1599               if (abs(min(data(varn,:,:))) .LT. 0.01 .AND. abs(max(data(varn,:,:))) .GT. 0.01)then
1600                  min_value = abs(0.1*max(data(varn,:,:)))
1601                  max_value = abs(0.1*max(data(varn,:,:)))
1602               else
1603                  if (abs(max(data(varn,:,:))) .LT. 0.01 .AND. abs(min(data(varn,:,:))) .GT. 0.01)then
1604                     min_value = abs(0.1*min(data(varn,:,:)))
1605                     max_value = abs(0.1*min(data(varn,:,:)))
1606                  else
1607                     min_value = abs(0.1*min(data(varn,:,:)))
1608                     max_value = abs(0.1*max(data(varn,:,:)))
1609                  end if
1610               end if
1611            end if
1612            if (min(data(varn,:,:)) .EQ. 0 .AND. max(data(varn,:,:)) .EQ. 0)then
1613               min_value = 0.1
1614               max_value = 0.1
1615            end if
[161]1616            mini(n_o)=min(data(varn,:,:))
1617            maxi(n_o)=max(data(varn,:,:))
1618            n_o=n_o+1
1619         end if
1620      end if
1621
1622      if(check) then
[342]1623         
[162]1624         count_var=count_var+1
[174]1625
[347]1626         if (prof3d .EQ. 0) then         
1627            temp = f[:]->$vNam(varn)$
[218]1628            temp_att = f_att->$vNam(varn)$
[174]1629         else
[218]1630             if (log_z .EQ. 1) then
[175]1631               do i=1,dimz-1
[351]1632                  do j=0,np-1
1633                     temp= f[:]->$vNam(varn)$
[218]1634                     temp_att = f_att->$vNam(varn)$
[351]1635                     data_temp = temp(ti_in(j),i,start_y:end_y,start_x:end_x)
1636                     data(varn,j,i-1) = dim_avg_Wrap(dim_avg_Wrap(data_temp))
[342]1637                     delete(data_temp)
[175]1638                  end do
[174]1639               end do
[175]1640            else
1641               do i=0,dimz-1
[351]1642                  do j=0,np-1
1643                     temp= f[:]->$vNam(varn)$
[218]1644                     temp_att = f_att->$vNam(varn)$
[351]1645                     data_temp = temp(ti_in(j),i,start_y:end_y,start_x:end_x)
[218]1646                     data_temp!0 = "t"
1647                     data_temp!1 = "z"
[351]1648                     data(varn,j,i) = dim_avg_Wrap(dim_avg_Wrap(data_temp))
[342]1649                     delete(data_temp)
[175]1650                  end do
1651               end do
1652            end if
[174]1653            print(" ")
1654            print("Variable '"+vNam(varn)+"' is read")
1655            print(" ")
[218]1656            unit(varn) = temp_att@units
1657            a=getvardims(temp_att)
[174]1658            b=dimsizes(a)
1659         end if
[218]1660
[174]1661         if (prof3d .EQ. 0) then
[218]1662            if (log_z .EQ. 1) then
1663               z = f_att->$vNam(varn+1)$(1:dimz-1)
1664               unit(varn) = temp_att@units
[351]1665               do j=0,np-1
1666                  data(varn,j,:) = temp(ti_in(j),1:dimz-1)
1667               end do
[175]1668            else
[218]1669               z = f_att->$vNam(varn+1)$
1670               unit(varn) = temp_att@units
[351]1671               do j=0,np-1
1672                  data(varn,j,:) = temp(ti_in(j),:)
1673               end do
[175]1674            end if
[174]1675         else
[218]1676            do i=0,b-1           
[175]1677               if (isStrSubset( a(i),"zu_3d" ))then
[174]1678                  z_v(varn,:) = z_u
[218]1679                  if (log_z .EQ. 1) then
[175]1680                     z = z_v(varn,1:dimz-1)
1681                  else
1682                     z = z_v(varn,:)
1683                  end if
[174]1684               else
[175]1685                  if (isStrSubset( a(i),"zw_3d" ))then
[174]1686                     z_v(varn,:) = z_w
[218]1687                     if (log_z .EQ. 1) then
[175]1688                        z = z_v(varn,1:dimz-1)
1689                     else
1690                        z = z_v(varn,:)
1691                     end if
[174]1692                  end if                   
1693               end if
1694            end do           
1695         end if
[353]1696
1697         if (isStrSubset(data@long_name," SR " ) ) then
1698           over = 0
1699         end if
[236]1700         
[175]1701         if (nof .EQ. 0) then
[218]1702            z_(n,:)=z/norm_z
[175]1703            z    = z_(n,:)
1704         else
[218]1705            z=z/norm_z
[175]1706         end if
[353]1707
1708         delta_z = z(1) - z(0)
1709
1710         max_z_int=doubletoint(max_z/delta_z)
1711         min_z_int=doubletoint(min_z/delta_z)
1712
1713         if(max_z_int .eq. min_z_int)
1714             print(" ")
1715             print("Please increase 'max_z' or decrease 'min_z' so that there are")
1716             print("at least two layers for the z-axis to plot")
1717             print(" ")
1718             exit
1719         end if
1720
1721         if(min_z_int .gt. max_z_int)
1722            print(" ")
1723            print("'min_z' is greater than 'max_z',")
1724            print("please change this")
1725            print(" ")
1726            exit
1727         end if
1728
1729         if(max_z_int .gt. dimz-1)
1730            max_z_int = dimz-1
1731         end if
1732
1733         if(min_z_int .lt. 0)
1734            min_z_int = 0
1735         end if         
1736         
[324]1737         
[353]1738         if (abs(min(data(varn,:,min_z_int:max_z_int))) .GT. 10)then
1739            min_value = abs(0.001*min(data(varn,:,min_z_int:max_z_int)))
1740            max_value = abs(0.001*max(data(varn,:,min_z_int:max_z_int)))
[324]1741         else
[353]1742            if (abs(min(data(varn,:,min_z_int:max_z_int))) .LT. 0.01 .AND. \
1743                abs(max(data(varn,:,min_z_int:max_z_int))) .GT. 0.01)then
1744               min_value = abs(0.1*max(data(varn,:,min_z_int:max_z_int)))
1745               max_value = abs(0.1*max(data(varn,:,min_z_int:max_z_int)))
[324]1746            else
[353]1747               if (abs(max(data(varn,:,min_z_int:max_z_int))) .LT. 0.01 .AND.\
1748                   abs(min(data(varn,:,min_z_int:max_z_int))) .GT. 0.01)then
1749                  min_value = abs(0.1*min(data(varn,:,min_z_int:max_z_int)))
1750                  max_value = abs(0.1*min(data(varn,:,min_z_int:max_z_int)))
[324]1751               else
[353]1752                  min_value = abs(0.1*min(data(varn,:,min_z_int:max_z_int)))
1753                  max_value = abs(0.1*max(data(varn,:,min_z_int:max_z_int)))
[324]1754               end if
1755            end if
1756         end if
[353]1757         if (min(data(varn,:,min_z_int:max_z_int)) .EQ. 0 .AND. \
1758             max(data(varn,:,min_z_int:max_z_int)) .EQ. 0)then
[324]1759            min_value = 0.1
1760            max_value = 0.1
1761         end if
[175]1762   
[161]1763         if (over .EQ. 0) then 
1764            res@gsnLeftString      = vNam(varn)
[218]1765            res@tiXAxisString      = "["+unit(varn)+"]"
1766            res@gsnRightString     = " "
[161]1767            res@trYMinF            = min_z
[162]1768            res@trYMaxF            = max_z
[190]1769            if (xs .EQ. -1) then
[353]1770               res@trXMinF            = min(data(varn,:,min_z_int:max_z_int))-min_value
[162]1771            else
1772               res@trXMinF            = xs
1773            end if
[190]1774            if (xe .EQ. -1) then
[353]1775               res@trXMaxF            = max(data(varn,:,min_z_int:max_z_int))+max_value
[162]1776            else
1777               res@trXMaxF            = xe 
[175]1778            end if         
[161]1779            plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res) 
[353]1780         end if
1781 
1782     
1783         if (vNam(varn) .EQ. "u" ) then
1784               miniu=min(data(varn,:,min_z_int:max_z_int))-min_value
1785               maxiu=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]1786               if (over .EQ. 1) then
1787                  res@xyDashPattern  = 0
[175]1788                  plot_u = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]1789               else
1790                  res@gsnLeftString      = vNam(varn)
[218]1791                  res@tiXAxisString      = "["+unit(varn)+"]"
1792                  res@gsnRightString     = " "                 
[324]1793                  if (xs .EQ. -1) then 
[190]1794                     res@trXMinF            = miniu
[162]1795                  else
1796                     res@trXMinF            = xs
1797                  end if
[190]1798                  if (xe .EQ. -1) then       
1799                     res@trXMaxF            = maxiu
[162]1800                  else
1801                     res@trXMaxF            = xe 
1802                  end if               
[175]1803                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res) 
[161]1804               end if
1805            end if
[353]1806            if (vNam(varn) .EQ. "v") then
1807               miniv=min(data(varn,:,min_z_int:max_z_int))-min_value
1808               maxiv=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]1809               if (over .EQ. 1) then
[250]1810                  res@xyMonoDashPattern = True
[161]1811                  res@xyDashPattern  = 1
[175]1812                  plot_v = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]1813               else
1814                  res@gsnLeftString      = vNam(varn)
[218]1815                  res@tiXAxisString      = "["+unit(varn)+"]"
1816                  res@gsnRightString     = " "                 
[324]1817                  if (xs .EQ. -1) then
[190]1818                     res@trXMinF            = miniv
[162]1819                  else
1820                     res@trXMinF            = xs
1821                  end if
[190]1822                  if (xe .EQ. -1) then
[324]1823                     res@trXMaxF            = maxiv
[162]1824                  else
1825                     res@trXMaxF            = xe 
1826                  end if               
[175]1827                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]1828               end if 
1829            end if
1830            if (vNam(varn) .EQ. "w") then
[353]1831               miniw=min(data(varn,:,min_z_int:max_z_int))-min_value
1832               maxiw=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]1833               if (over .EQ. 1) then
[250]1834                  res@xyDashPattern = 2
[175]1835                  plot_w = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]1836               else
1837                  res@gsnLeftString      = vNam(varn)
[218]1838                  res@tiXAxisString      = "["+unit(varn)+"]"
1839                  res@gsnRightString     = " "
[190]1840                  if (xs .EQ. -1) then
1841                     res@trXMinF            = miniw
[162]1842                  else
1843                     res@trXMinF            = xs
1844                  end if
[190]1845                  if (xe .EQ. -1) then
[324]1846                     res@trXMaxF            = maxiw
[162]1847                  else
1848                     res@trXMaxF            = xe 
1849                  end if           
[175]1850                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]1851               end if   
1852            end if
[154]1853
[161]1854            if (vNam(varn) .EQ. "pt") then
[353]1855               minipt=min(data(varn,:,min_z_int:max_z_int))-min_value
1856               maxipt=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]1857               if (over .EQ. 1) then
1858                  res@xyDashPattern  = 0
[175]1859                  plot_pt = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]1860               else
1861                  res@gsnLeftString      = vNam(varn)
[218]1862                  res@tiXAxisString      = "["+unit(varn)+"]"
1863                  res@gsnRightString     = " "
[190]1864                  if (xs .EQ. -1) then
1865                     res@trXMinF            = minipt
[162]1866                  else
1867                     res@trXMinF            = xs
1868                  end if
[324]1869                  if (xe .EQ. -1) then       
[190]1870                     res@trXMaxF            = maxipt
[162]1871                  else
1872                     res@trXMaxF            = xe 
1873                  end if
[175]1874                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]1875               end if 
1876            end if
1877            if (vNam(varn) .EQ. "vpt") then
[353]1878               minivpt=min(data(varn,:,min_z_int:max_z_int))-min_value
1879               maxivpt=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]1880               if (over .EQ. 1) then
1881                  res@xyDashPattern  = 1
[175]1882                  plot_vpt = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]1883               else
1884                  res@gsnLeftString      = vNam(varn)
[218]1885                  res@tiXAxisString      = "["+unit(varn)+"]"
1886                  res@gsnRightString     = " "
[190]1887                  if (xs .EQ. -1) then
[324]1888                     res@trXMinF            = minivpt
[162]1889                  else
1890                     res@trXMinF            = xs
1891                  end if
[324]1892                  if (xe .EQ. -1) then       
[190]1893                     res@trXMaxF            = maxivpt
[162]1894                  else
1895                     res@trXMaxF            = xe 
[190]1896                  end if
[175]1897                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]1898               end if
1899            end if
1900            if (vNam(varn) .EQ. "lpt") then
[353]1901               minilpt=min(data(varn,:,min_z_int:max_z_int))-min_value
1902               maxilpt=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]1903               if (over .EQ. 1) then
1904                  res@xyDashPattern  = 2
[175]1905                  plot_lpt = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]1906               else
1907                  res@gsnLeftString      = vNam(varn)
[218]1908                  res@tiXAxisString      = "["+unit(varn)+"]"
1909                  res@gsnRightString     = " "
[190]1910                  if (xs .EQ. -1) then
1911                     res@trXMinF            = minilpt
[162]1912                  else
1913                     res@trXMinF            = xs
1914                  end if
[190]1915                  if (xe .EQ. -1) then       
[324]1916                     res@trXMaxF            = maxilpt
[162]1917                  else
1918                     res@trXMaxF            = xe 
1919                  end if
[175]1920                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]1921               end if
1922            end if
1923
1924            if (vNam(varn) .EQ. "q") then
[353]1925               miniq=min(data(varn,:,min_z_int:max_z_int))-min_value
1926               maxiq=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]1927               if (over .EQ. 1) then
1928                  res@xyDashPattern  = 0
[175]1929                  plot_q = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]1930               else
1931                  res@gsnLeftString      = vNam(varn)
[218]1932                  res@tiXAxisString      = "["+unit(varn)+"]"
1933                  res@gsnRightString     = " "
[190]1934                  if (xs .EQ. -1) then
1935                     res@trXMinF            = minilq
[162]1936                  else
1937                     res@trXMinF            = xs
1938                  end if
[190]1939                  if (xe .EQ. -1) then       
[324]1940                     res@trXMaxF            = maxilq
[162]1941                  else
1942                     res@trXMaxF            = xe 
1943                  end if
[175]1944                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]1945               end if
1946            end if
1947            if (vNam(varn) .EQ. "qv") then
[353]1948               miniqv=min(data(varn,:,min_z_int:max_z_int))-min_value
1949               maxiqv=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]1950               if (over .EQ. 1) then
1951                  res@xyDashPattern  = 1
[175]1952                  plot_qv = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]1953               else
1954                  res@gsnLeftString      = vNam(varn)
[218]1955                  res@tiXAxisString      = "["+unit(varn)+"]"
1956                  res@gsnRightString     = " "
[190]1957                  if (xs .EQ. -1) then
1958                     res@trXMinF            = minilqv
[162]1959                  else
1960                     res@trXMinF            = xs
1961                  end if
[324]1962                  if (xe .EQ. -1) then         
[190]1963                     res@trXMaxF            = maxilqv
[162]1964                  else
1965                     res@trXMaxF            = xe 
1966                  end if
[175]1967                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]1968               end if
1969            end if
1970            if (vNam(varn) .EQ. "ql") then
[353]1971               miniql=min(data(varn,:,min_z_int:max_z_int))-min_value
1972               maxiql=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]1973               if (over .EQ. 1) then
1974                  res@xyDashPattern  = 2
[175]1975                  plot_ql = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]1976               else
1977                  res@gsnLeftString      = vNam(varn)
[218]1978                  res@tiXAxisString      = "["+unit(varn)+"]"
1979                  res@gsnRightString     = " "
[190]1980                  if (xs .EQ. -1) then
1981                     res@trXMinF            = miniql
[162]1982                  else
1983                     res@trXMinF            = xs
1984                  end if
[324]1985                  if (xe .EQ. -1) then       
[190]1986                     res@trXMaxF            = maxiql
[162]1987                  else
1988                     res@trXMaxF            = xe 
1989                  end if
[175]1990                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]1991               end if
1992            end if
1993
1994            if (vNam(varn) .EQ. "e") then
[353]1995               minie=min(data(varn,:,min_z_int:max_z_int))-min_value
1996               maxie=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]1997               if (over .EQ. 1) then
1998                  res@xyDashPattern  = 0
[175]1999                  plot_e = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2000               else
2001                  res@gsnLeftString      = vNam(varn)
[218]2002                  res@tiXAxisString      = "["+unit(varn)+"]"
2003                  res@gsnRightString     = " "
[190]2004                  if (xs .EQ. -1) then
2005                     res@trXMinF            = minie
[162]2006                  else
2007                     res@trXMinF            = xs
2008                  end if
[324]2009                  if (xe .EQ. -1) then       
[190]2010                     res@trXMaxF            = maxie
[162]2011                  else
2012                     res@trXMaxF            = xe 
2013                  end if
[175]2014                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2015               end if
2016            end if
2017            if (vNam(varn) .EQ. "es") then
[353]2018               minies=min(data(varn,:,min_z_int:max_z_int))-min_value
2019               maxies=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2020               if (over .EQ. 1) then
2021                  res@xyDashPattern  = 1
[175]2022                  plot_es = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2023               else
2024                  res@gsnLeftString      = vNam(varn)
[218]2025                  res@tiXAxisString      = "["+unit(varn)+"]"
2026                  res@gsnRightString     = " "
[324]2027                  if (xs .EQ. -1) then
[190]2028                     res@trXMinF            = minies
[162]2029                  else
2030                     res@trXMinF            = xs
2031                  end if
[190]2032                  if (xe .EQ. -1) then       
[324]2033                     res@trXMaxF            = maxies
[162]2034                  else
2035                     res@trXMaxF            = xe 
2036                  end if
[175]2037                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2038               end if
2039            end if
2040
2041            if (vNam(varn) .EQ. "km") then
[353]2042               minikm=min(data(varn,:,min_z_int:max_z_int))-min_value
2043               maxikm=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2044               if (over .EQ. 1) then
2045                  res@xyDashPattern  = 0
[175]2046                  plot_km = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2047               else
2048                  res@gsnLeftString      = vNam(varn)
[218]2049                  res@tiXAxisString      = "["+unit(varn)+"]"
2050                  res@gsnRightString     = " "
[324]2051                  if (xs .EQ. -1) then
[190]2052                     res@trXMinF            = minikm
[162]2053                  else
2054                     res@trXMinF            = xs
2055                  end if
[324]2056                  if (xe .EQ. -1) then     
[190]2057                     res@trXMaxF            = maxikm
[162]2058                  else
2059                     res@trXMaxF            = xe 
2060                  end if
[175]2061                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2062               end if
2063            end if
2064            if (vNam(varn) .EQ. "kh") then
[353]2065               minikh=min(data(varn,:,min_z_int:max_z_int))-min_value
2066               maxikh=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2067               if (over .EQ. 1) then
2068                  res@xyDashPattern  = 1
[175]2069                  plot_kh = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2070               else
2071                  res@gsnLeftString      = vNam(varn)
[218]2072                  res@tiXAxisString      = "["+unit(varn)+"]"
2073                  res@gsnRightString     = " "
[190]2074                  if (xs .EQ. -1) then
2075                     res@trXMinF            = minikh
[162]2076                  else
2077                     res@trXMinF            = xs
2078                  end if
[324]2079                  if (xe .EQ. -1) then     
[190]2080                     res@trXMaxF            = maxikh
[162]2081                  else
2082                     res@trXMaxF            = xe 
2083                  end if
[175]2084                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2085               end if
2086            end if
2087
2088            if (vNam(varn) .EQ. "wpup") then
[353]2089               miniwpup=min(data(varn,:,min_z_int:max_z_int))-min_value
2090               maxiwpup=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2091               if (over .EQ. 1) then
2092                  res@xyDashPattern  = 0
[175]2093                  plot_wpup = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2094               else
2095                  res@gsnLeftString      = vNam(varn)
[218]2096                  res@tiXAxisString      = "["+unit(varn)+"]"
2097                  res@gsnRightString     = " "
[190]2098                  if (xs .EQ. -1) then
2099                     res@trXMinF            = miniwpup
[162]2100                  else
2101                     res@trXMinF            = xs
2102                  end if
[324]2103                  if (xe .EQ. -1) then
[190]2104                     res@trXMaxF            = maxiwpup
[162]2105                  else
2106                     res@trXMaxF            = xe 
2107                  end if
[175]2108                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2109               end if
2110            end if
2111            if (vNam(varn) .EQ. "wsus") then
[353]2112               miniwsus=min(data(varn,:,min_z_int:max_z_int))-min_value
2113               maxiwsus=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2114               if (over .EQ. 1) then
2115                  res@xyDashPattern  = 1
[175]2116                  plot_wsus = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2117               else
2118                  res@gsnLeftString      = vNam(varn)
[218]2119                  res@tiXAxisString      = "["+unit(varn)+"]"
2120                  res@gsnRightString     = " "
[190]2121                  if (xs .EQ. -1) then
2122                     res@trXMinF            = miniwsus
[162]2123                  else
2124                     res@trXMinF            = xs
2125                  end if
[324]2126                  if (xe .EQ. -1) then     
[190]2127                     res@trXMaxF            = maxiwsus
[162]2128                  else
2129                     res@trXMaxF            = xe 
2130                  end if
[175]2131                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2132               end if
2133            end if
2134            if (vNam(varn) .EQ. "wu") then
[353]2135               miniwu=min(data(varn,:,min_z_int:max_z_int))-min_value
2136               maxiwu=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2137               if (over .EQ. 1) then
2138                  res@xyDashPattern  = 2
[175]2139                  plot_wu = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2140               else
2141                  res@gsnLeftString      = vNam(varn)
[218]2142                  res@tiXAxisString      = "["+unit(varn)+"]"
2143                  res@gsnRightString     = " "
[324]2144                  if (xs .EQ. -1) then
[190]2145                     res@trXMinF            = miniwu
[162]2146                  else
2147                     res@trXMinF            = xs
2148                  end if
[324]2149                  if (xe .EQ. -1) then
[190]2150                     res@trXMaxF            = maxiwu
[162]2151                  else
2152                     res@trXMaxF            = xe 
2153                  end if
[175]2154                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2155               end if
2156            end if
2157
2158            if (vNam(varn) .EQ. "wpvp") then
[353]2159               miniwpvp=min(data(varn,:,min_z_int:max_z_int))-min_value
2160               maxiwpvp=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2161               if (over .EQ. 1) then
2162                  res@xyDashPattern  = 0
[175]2163                  plot_wpvp = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2164               else
2165                  res@gsnLeftString      = vNam(varn)
[218]2166                  res@tiXAxisString      = "["+unit(varn)+"]"
2167                  res@gsnRightString     = " "
[190]2168                  if (xs .EQ. -1) then
2169                     res@trXMinF            = miniwpvp
[162]2170                  else
2171                     res@trXMinF            = xs
2172                  end if
[324]2173                  if (xe .EQ. -1) then     
[190]2174                     res@trXMaxF            = maxiwpvp
[162]2175                  else
2176                     res@trXMaxF            = xe 
2177                  end if
[175]2178                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2179               end if
2180            end if
2181            if (vNam(varn) .EQ. "wsvs") then
[353]2182               miniwsvs=min(data(varn,:,min_z_int:max_z_int))-min_value
2183               maxiwsvs=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2184               if (over .EQ. 1) then
2185                  res@xyDashPattern  = 1
[175]2186                  plot_wsvs = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2187               else
2188                  res@gsnLeftString      = vNam(varn)
[218]2189                  res@tiXAxisString      = "["+unit(varn)+"]"
2190                  res@gsnRightString     = " "
[324]2191                  if (xs .EQ. -1) then
[190]2192                     res@trXMinF            = miniwsvs
[162]2193                  else
2194                     res@trXMinF            = xs
2195                  end if
[324]2196                  if (xe .EQ. -1) then     
[190]2197                     res@trXMaxF            = maxiwsvs
[162]2198                  else
2199                     res@trXMaxF            = xe 
2200                  end if
[175]2201                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2202               end if
2203            end if
2204            if (vNam(varn) .EQ. "wv") then
[353]2205               miniwv=min(data(varn,:,min_z_int:max_z_int))-min_value
2206               maxiwv=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2207               if (over .EQ. 1) then
2208                  res@xyDashPattern  = 2
[175]2209                  plot_wv = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2210               else
2211                  res@gsnLeftString      = vNam(varn)
[218]2212                  res@tiXAxisString      = "["+unit(varn)+"]"
2213                  res@gsnRightString     = " "
[190]2214                  if (xs .EQ. -1) then
2215                     res@trXMinF            = miniwv
[162]2216                  else
2217                     res@trXMinF            = xs
2218                  end if
[190]2219                  if (xe .EQ. -1) then       
2220                     res@trXMaxF            = maxiwv
[162]2221                  else
2222                     res@trXMaxF            = xe 
2223                  end if
[175]2224                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2225               end if
2226            end if
2227
2228            if (vNam(varn) .EQ. "wpptp") then
[353]2229               miniwpptp=min(data(varn,:,min_z_int:max_z_int))-min_value
2230               maxiwpptp=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2231               if (over .EQ. 1) then
2232                  res@xyDashPattern  = 0
[175]2233                  plot_wpptp = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2234               else
2235                  res@gsnLeftString      = vNam(varn)
[218]2236                  res@tiXAxisString      = "["+unit(varn)+"]"
2237                  res@gsnRightString     = " "
[190]2238                  if (xs .EQ. -1) then
2239                     res@trXMinF            = miniwpptp
[162]2240                  else
2241                     res@trXMinF            = xs
2242                  end if
[190]2243                  if (xe .EQ. -1) then       
2244                     res@trXMaxF            = maxiwpptp
[162]2245                  else
2246                     res@trXMaxF            = xe 
2247                  end if
[175]2248                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2249               end if
2250            end if
2251            if (vNam(varn) .EQ. "wspts") then
[353]2252               miniwspts=min(data(varn,:,min_z_int:max_z_int))-min_value
2253               maxiwspts=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2254               if (over .EQ. 1) then
2255                  res@xyDashPattern  = 1
[175]2256                  plot_wspts = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2257               else
2258                  res@gsnLeftString      = vNam(varn)
[218]2259                  res@tiXAxisString      = "["+unit(varn)+"]"
2260                  res@gsnRightString     = " "
[190]2261                  if (xs .EQ. -1) then
2262                     res@trXMinF            = miniwspts
[162]2263                  else
2264                     res@trXMinF            = xs
2265                  end if
[190]2266                  if (xe .EQ. -1) then       
2267                     res@trXMaxF            = maxiwspts
[162]2268                  else
2269                     res@trXMaxF            = xe 
2270                  end if
[175]2271                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2272               end if
2273            end if
[347]2274            if (vNam(varn) .EQ. "wpt") then       
[353]2275               miniwpt=min(data(varn,:,min_z_int:max_z_int))-min_value
2276               maxiwpt=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2277               if (over .EQ. 1) then
2278                  res@xyDashPattern  = 2
[175]2279                  plot_wpt = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2280               else
2281                  res@gsnLeftString      = vNam(varn)
[218]2282                  res@tiXAxisString      = "["+unit(varn)+"]"
2283                  res@gsnRightString     = " "
[190]2284                  if (xs .EQ. -1) then
2285                     res@trXMinF            = miniwpt
[162]2286                  else
2287                     res@trXMinF            = xs
2288                  end if
[190]2289                  if (xe .EQ. -1) then       
2290                     res@trXMaxF            = maxiwpt
[162]2291                  else
2292                     res@trXMaxF            = xe 
2293                  end if
[175]2294                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2295               end if
2296            end if
2297
2298            if (vNam(varn) .EQ. "wsptsBC") then
[353]2299               miniwsptsBC=min(data(varn,:,min_z_int:max_z_int))-min_value
2300               maxiwsptsBC=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2301               if (over .EQ. 1) then
2302                  res@xyDashPattern  = 0
[175]2303                  plot_wsptsBC = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2304               else
2305                  res@gsnLeftString      = vNam(varn)
[218]2306                  res@tiXAxisString      = "["+unit(varn)+"]"
2307                  res@gsnRightString     = " "
[190]2308                  if (xs .EQ. -1) then
2309                     res@trXMinF            = miniwsptsBC
[162]2310                  else
2311                     res@trXMinF            = xs
2312                  end if
[190]2313                  if (xe .EQ. -1) then       
2314                     res@trXMaxF            = maxiwsptsBC
[162]2315                  else
2316                     res@trXMaxF            = xe 
[190]2317                  end if
[175]2318                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2319               end if
2320            end if             
2321            if (vNam(varn) .EQ. "wptBC") then
[353]2322               miniwptBC=min(data(varn,:,min_z_int:max_z_int))-min_value
2323               maxiwptBC=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2324               if (over .EQ. 1) then
2325                  res@xyDashPattern  = 1
[175]2326                  plot_wptBC = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2327               else
2328                  res@gsnLeftString      = vNam(varn)
[218]2329                  res@tiXAxisString      = "["+unit(varn)+"]"
2330                  res@gsnRightString     = " "
[190]2331                  if (xs .EQ. -1) then
2332                     res@trXMinF            = miniwptBC
[162]2333                  else
2334                     res@trXMinF            = xs
2335                  end if
[190]2336                  if (xe .EQ. -1) then       
2337                     res@trXMaxF            = maxiwptBC
[162]2338                  else
2339                     res@trXMaxF            = xe 
2340                  end if
[175]2341                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2342               end if
2343            end if
2344
2345            if (vNam(varn) .EQ. "wpvptp") then
[353]2346               miniwpvptp=min(data(varn,:,min_z_int:max_z_int))-min_value
2347               maxiwpvptp=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2348               if (over .EQ. 1) then
2349                  res@xyDashPattern  = 0
[175]2350                  plot_wpvptp = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2351               else
2352                  res@gsnLeftString      = vNam(varn)
[218]2353                  res@tiXAxisString      = "["+unit(varn)+"]"
2354                  res@gsnRightString     = " "
[190]2355                  if (xs .EQ. -1) then
2356                     res@trXMinF            = miniwpvptp
[162]2357                  else
2358                     res@trXMinF            = xs
2359                  end if
[190]2360                  if (xe .EQ. -1) then       
2361                     res@trXMaxF            = maxiwpvptp
[162]2362                  else
2363                     res@trXMaxF            = xe 
[190]2364                  end if
[175]2365                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2366               end if
2367            end if
2368            if (vNam(varn) .EQ. "wsvpts") then
[353]2369               miniwsvpts=min(data(varn,:,min_z_int:max_z_int))-min_value
2370               maxiwsvpts=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2371               if (over .EQ. 1) then
2372                  res@xyDashPattern  = 1
[175]2373                  plot_wsvpts = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2374               else
2375                  res@gsnLeftString      = vNam(varn)
[218]2376                  res@tiXAxisString      = "["+unit(varn)+"]"
2377                  res@gsnRightString     = " "
[190]2378                  if (xs .EQ. -1) then
2379                     res@trXMinF            = miniwsvpts
[162]2380                  else
2381                     res@trXMinF            = xs
2382                  end if
[190]2383                  if (xe .EQ. -1) then       
2384                     res@trXMaxF            = maxiwsvpts
[162]2385                  else
2386                     res@trXMaxF            = xe 
[190]2387                  end if
[175]2388                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2389               end if
2390            end if
2391            if (vNam(varn) .EQ. "wvpt") then
[353]2392               miniwvpt=min(data(varn,:,min_z_int:max_z_int))-min_value
2393               maxiwvpt=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2394               if (over .EQ. 1) then
2395                  res@xyDashPattern  = 2
[175]2396                  plot_wvpt = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2397               else
2398                  res@gsnLeftString      = vNam(varn)
[218]2399                  res@tiXAxisString      = "["+unit(varn)+"]"
2400                  res@gsnRightString     = " "
[190]2401                  if (xs .EQ. -1) then
2402                     res@trXMinF            = miniwvpt
[162]2403                  else
2404                     res@trXMinF            = xs
2405                  end if
[190]2406                  if (xe .EQ. -1) then       
2407                     res@trXMaxF            = maxiwvpt
[162]2408                  else
2409                     res@trXMaxF            = xe 
2410                  end if
[175]2411                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2412               end if
2413            end if
2414
2415            if (vNam(varn) .EQ. "wpqp") then
[353]2416               miniwpqp=min(data(varn,:,min_z_int:max_z_int))-min_value
2417               maxiwpqp=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2418               if (over .EQ. 1) then
2419                  res@xyDashPattern  = 0
[175]2420                  plot_wpqp = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2421               else
2422                  res@gsnLeftString      = vNam(varn)
[218]2423                  res@tiXAxisString      = "["+unit(varn)+"]"
2424                  res@gsnRightString     = " "
[190]2425                  if (xs .EQ. -1) then
2426                     res@trXMinF            = miniwpqp
[162]2427                  else
2428                     res@trXMinF            = xs
2429                  end if
[190]2430                  if (xe .EQ. -1) then       
2431                     res@trXMaxF            = maxiwpqp
[162]2432                  else
2433                     res@trXMaxF            = xe 
2434                  end if
[175]2435                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2436               end if
2437            end if
2438            if (vNam(varn) .EQ. "wsqs") then
[353]2439               miniwsqs=min(data(varn,:,min_z_int:max_z_int))-min_value
2440               maxiwsqs=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2441               if (over .EQ. 1) then
2442                  res@xyDashPattern  = 1
[175]2443                  plot_wsqs = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2444               else
2445                  res@gsnLeftString      = vNam(varn)
[218]2446                  res@tiXAxisString      = "["+unit(varn)+"]"
2447                  res@gsnRightString     = " "
[190]2448                  if (xs .EQ. -1) then
2449                     res@trXMinF            = miniwsqs
[162]2450                  else
2451                     res@trXMinF            = xs
2452                  end if
[190]2453                  if (xe .EQ. -1) then       
2454                     res@trXMaxF            = maxiwsqs
[162]2455                  else
2456                     res@trXMaxF            = xe 
2457                  end if
[175]2458                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2459               end if
2460            end if
2461            if (vNam(varn) .EQ. "wq") then
[353]2462               miniwq=min(data(varn,:,min_z_int:max_z_int))-min_value
2463               maxiwq=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2464               if (over .EQ. 1) then
2465                  res@xyDashPattern  = 2
[175]2466                  plot_wq = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2467               else
2468                  res@gsnLeftString      = vNam(varn)
[218]2469                  res@tiXAxisString      = "["+unit(varn)+"]"
2470                  res@gsnRightString     = " "
[190]2471                  if (xs .EQ. -1) then
2472                     res@trXMinF            = miniwq
[162]2473                  else
2474                     res@trXMinF            = xs
2475                  end if
[190]2476                  if (xe .EQ. -1) then       
2477                     res@trXMaxF            = maxiwq
[162]2478                  else
2479                     res@trXMaxF            = xe 
[190]2480                  end if
[175]2481                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2482               end if
2483            end if
2484
2485            if (vNam(varn) .EQ. "wpqvp") then
[353]2486               miniwpqvp=min(data(varn,:,min_z_int:max_z_int))-min_value
2487               maxiwpqvp=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2488               if (over .EQ. 1) then
2489                  res@xyDashPattern  = 0
[175]2490                  plot_wpqvp = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2491               else
2492                  res@gsnLeftString      = vNam(varn)
[218]2493                  res@tiXAxisString      = "["+unit(varn)+"]"
2494                  res@gsnRightString     = " "
[190]2495                  if (xs .EQ. -1) then
2496                     res@trXMinF            = miniwpqvp
[162]2497                  else
2498                     res@trXMinF            = xs
2499                  end if
[190]2500                  if (xe .EQ. -1) then       
2501                     res@trXMaxF            = maxiwpqvp
[162]2502                  else
2503                     res@trXMaxF            = xe 
[190]2504                  end if
[175]2505                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2506               end if
2507            end if
2508            if (vNam(varn) .EQ. "wsqvs") then
[353]2509               miniwsqvs=min(data(varn,:,min_z_int:max_z_int))-min_value
2510               maxiwsqvs=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2511               if (over .EQ. 1) then
2512                  res@xyDashPattern  = 1
[175]2513                  plot_wsqvs = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2514               else
2515                  res@gsnLeftString      = vNam(varn)
[218]2516                  res@tiXAxisString      = "["+unit(varn)+"]"
2517                  res@gsnRightString     = " "
[190]2518                  if (xs .EQ. -1) then
2519                     res@trXMinF            = miniwsqvs
[162]2520                  else
2521                     res@trXMinF            = xs
2522                  end if
[190]2523                  if (xe .EQ. -1) then       
2524                     res@trXMaxF            = maxiwsqvs
[162]2525                  else
2526                     res@trXMaxF            = xe 
2527                  end if
[175]2528                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2529               end if
2530            end if
2531            if (vNam(varn) .EQ. "wqv") then
[353]2532               miniwqv=min(data(varn,:,min_z_int:max_z_int))-min_value
2533               maxiwqv=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2534               if (over .EQ. 1) then
2535                  res@xyDashPattern  = 2
[175]2536                  plot_wqv = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2537               else
2538                  res@gsnLeftString      = vNam(varn)
[218]2539                  res@tiXAxisString      = "["+unit(varn)+"]"
2540                  res@gsnRightString     = " "
[190]2541                  if (xs .EQ. -1) then
2542                     res@trXMinF            = miniwqv
[162]2543                  else
2544                     res@trXMinF            = xs
2545                  end if
[190]2546                  if (xe .EQ. -1) then       
2547                     res@trXMaxF            = maxiwqv
[162]2548                  else
2549                     res@trXMaxF            = xe 
2550                  end if
[175]2551                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2552               end if
2553            end if
2554
2555            if (vNam(varn) .EQ. "wpsp") then
[353]2556               miniwpsp=min(data(varn,:,min_z_int:max_z_int))-min_value
2557               maxiwpsp=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2558               if (over .EQ. 1) then
2559                  res@xyDashPattern  = 0
[175]2560                  plot_wpsp = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2561               else
2562                  res@gsnLeftString      = vNam(varn)
[218]2563                  res@tiXAxisString      = "["+unit(varn)+"]"
2564                  res@gsnRightString     = " "
[190]2565                  if (xs .EQ. -1) then
2566                     res@trXMinF            = miniwpsp
[162]2567                  else
2568                     res@trXMinF            = xs
2569                  end if
[190]2570                  if (xe .EQ. -1) then       
2571                     res@trXMaxF            = maxiwpsp
[162]2572                  else
2573                     res@trXMaxF            = xe 
2574                  end if
[175]2575                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2576               end if
2577            end if
2578            if (vNam(varn) .EQ. "wsss") then
[353]2579               miniwsss=min(data(varn,:,min_z_int:max_z_int))-min_value
2580               maxiwsss=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2581               if (over .EQ. 1) then
2582                  res@xyDashPattern  = 1
[175]2583                  plot_wsss = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2584               else
2585                  res@gsnLeftString      = vNam(varn)
[218]2586                  res@tiXAxisString      = "["+unit(varn)+"]"
2587                  res@gsnRightString     = " "
[190]2588                  if (xs .EQ. -1) then
2589                     res@trXMinF            = miniwsss
[162]2590                  else
2591                     res@trXMinF            = xs
2592                  end if
[190]2593                  if (xe .EQ. -1) then       
2594                     res@trXMaxF            = maxiwsss
[162]2595                  else
2596                     res@trXMaxF            = xe 
2597                  end if
[175]2598                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2599               end if
2600            end if
2601            if (vNam(varn) .EQ. "ws") then
[353]2602               miniws=min(data(varn,:,min_z_int:max_z_int))-min_value
2603               maxiws=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2604               if (over .EQ. 1) then
2605                  res@xyDashPattern  = 2
[175]2606                  plot_ws = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2607               else
2608                  res@gsnLeftString      = vNam(varn)
[218]2609                  res@tiXAxisString      = "["+unit(varn)+"]"
2610                  res@gsnRightString     = " "
[190]2611                  if (xs .EQ. -1) then
2612                     res@trXMinF            = miniws
[162]2613                  else
2614                     res@trXMinF            = xs
2615                  end if
[190]2616                  if (xe .EQ. -1) then       
2617                     res@trXMaxF            = maxiws
[162]2618                  else
2619                     res@trXMaxF            = xe 
2620                  end if
[175]2621                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2622               end if
2623            end if
2624
2625            if (vNam(varn) .EQ. "wpsap") then
[353]2626               miniwpsap=min(data(varn,:,min_z_int:max_z_int))-min_value
2627               maxiwpsap=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2628               if (over .EQ. 1) then
2629                  res@xyDashPattern  = 0
[175]2630                  plot_wpsap = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2631               else
2632                  res@gsnLeftString      = vNam(varn)
[218]2633                  res@tiXAxisString      = "["+unit(varn)+"]"
2634                  res@gsnRightString     = " "
[190]2635                  if (xs .EQ. -1) then
2636                     res@trXMinF            = miniwpsap
[162]2637                  else
2638                     res@trXMinF            = xs
2639                  end if
[190]2640                  if (xe .EQ. -1) then       
2641                     res@trXMaxF            = maxiwpsap
[162]2642                  else
2643                     res@trXMaxF            = xe 
[190]2644                  end if
[175]2645                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2646               end if
2647            end if
2648            if (vNam(varn) .EQ. "wssas") then
[353]2649               miniwssas=min(data(varn,:,min_z_int:max_z_int))-min_value
2650               maxiwssas=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2651               if (over .EQ. 1) then
2652                  res@xyDashPattern  = 1
[175]2653                  plot_wssas = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2654               else
2655                  res@gsnLeftString      = vNam(varn)
[218]2656                  res@tiXAxisString      = "["+unit(varn)+"]"
2657                  res@gsnRightString     = " "
[190]2658                  if (xs .EQ. -1) then
2659                     res@trXMinF            = miniwssas
[162]2660                  else
2661                     res@trXMinF            = xs
2662                  end if
[190]2663                  if (xe .EQ. -1) then       
2664                     res@trXMaxF            = maxiwssas
[162]2665                  else
2666                     res@trXMaxF            = xe 
[190]2667                  end if
[175]2668                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2669               end if
2670            end if
2671            if (vNam(varn) .EQ. "wsa") then
[353]2672               miniwsa=min(data(varn,:,min_z_int:max_z_int))-min_value
2673               maxiwsa=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2674               if (over .EQ. 1) then
2675                  res@xyDashPattern  = 2
[175]2676                  plot_wsa = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2677               else
2678                  res@gsnLeftString      = vNam(varn)
[218]2679                  res@tiXAxisString      = "["+unit(varn)+"]"
2680                  res@gsnRightString     = " "
[190]2681                  if (xs .EQ. -1) then
2682                     res@trXMinF            = miniwsa
[162]2683                  else
2684                     res@trXMinF            = xs
2685                  end if
[190]2686                  if (xe .EQ. -1) then       
2687                     res@trXMaxF            = maxiwsa
[162]2688                  else
2689                     res@trXMaxF            = xe 
[190]2690                  end if
[175]2691                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2692               end if
2693            end if
2694
2695            if (vNam(varn) .EQ. "us2") then
[353]2696               minius2=min(data(varn,:,min_z_int:max_z_int))-min_value
2697               maxius2=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2698               if (over .EQ. 1) then
2699                  res@xyDashPattern  = 0
[175]2700                  plot_us2 = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2701               else
2702                  res@gsnLeftString      = vNam(varn)
[218]2703                  res@tiXAxisString      = "["+unit(varn)+"]"
2704                  res@gsnRightString     = " "
[190]2705                  if (xs .EQ. -1) then
2706                     res@trXMinF            = minius2
[162]2707                  else
2708                     res@trXMinF            = xs
2709                  end if
[190]2710                  if (xe .EQ. -1) then       
2711                     res@trXMaxF            = maxius2
[162]2712                  else
2713                     res@trXMaxF            = xe 
[190]2714                  end if
[175]2715                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2716               end if
2717            end if
2718            if (vNam(varn) .EQ. "vs2") then
[353]2719               minivs2=min(data(varn,:,min_z_int:max_z_int))-min_value
2720               maxivs2=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2721               if (over .EQ. 1) then
2722                  res@xyDashPattern  = 1
[175]2723                  plot_vs2 = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2724               else
2725                  res@gsnLeftString      = vNam(varn)
[218]2726                  res@tiXAxisString      = "["+unit(varn)+"]"
2727                  res@gsnRightString     = " "
[190]2728                  if (xs .EQ. -1) then
2729                     res@trXMinF            = minivs2
[162]2730                  else
2731                     res@trXMinF            = xs
2732                  end if
[190]2733                  if (xe .EQ. -1) then       
2734                     res@trXMaxF            = maxivs2
[162]2735                  else
2736                     res@trXMaxF            = xe 
[190]2737                  end if
[175]2738                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2739               end if
2740            end if
2741            if (vNam(varn) .EQ. "ws2") then
[353]2742               miniws2=min(data(varn,:,min_z_int:max_z_int))-min_value
2743               maxiws2=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2744               if (over .EQ. 1) then
2745                  res@xyDashPattern  = 2
[175]2746                  plot_ws2 = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2747               else
2748                  res@gsnLeftString      = vNam(varn)
[218]2749                  res@tiXAxisString      = "["+unit(varn)+"]"
2750                  res@gsnRightString     = " "
[190]2751                  if (xs .EQ. -1) then
2752                     res@trXMinF            = miniws2
[162]2753                  else
2754                     res@trXMinF            = xs
2755                  end if
[190]2756                  if (xe .EQ. -1) then       
2757                     res@trXMaxF            = maxiws2
[162]2758                  else
2759                     res@trXMaxF            = xe 
[190]2760                  end if
[175]2761                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2762               end if
2763            end if
2764
2765            if (vNam(varn) .EQ. "wsususodz") then
[353]2766               miniwsususodz=min(data(varn,:,min_z_int:max_z_int))-min_value
2767               maxiwsususodz=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2768               if (over .EQ. 1) then
2769                  res@xyDashPattern  = 0
[175]2770                  plot_wsususodz = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2771               else
2772                  res@gsnLeftString      = vNam(varn)
[218]2773                  res@tiXAxisString      = "["+unit(varn)+"]"
2774                  res@gsnRightString     = " "
[190]2775                  if (xs .EQ. -1) then
2776                     res@trXMinF            = miniwsususodz
[162]2777                  else
2778                     res@trXMinF            = xs
2779                  end if
[190]2780                  if (xe .EQ. -1) then       
2781                     res@trXMaxF            = maxiwsususodz
[162]2782                  else
2783                     res@trXMaxF            = xe 
[190]2784                  end if
[175]2785                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2786               end if 
2787            end if
2788            if (vNam(varn) .EQ. "wspsodz") then
[353]2789               miniwspsodz=min(data(varn,:,min_z_int:max_z_int))-min_value
2790               maxiwspsodz=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2791               if (over .EQ. 1) then
2792                  res@xyDashPattern  = 1
[175]2793                  plot_wspsodz = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2794               else
2795                  res@gsnLeftString      = vNam(varn)
[218]2796                  res@tiXAxisString      = "["+unit(varn)+"]"
2797                  res@gsnRightString     = " "
[190]2798                  if (xs .EQ. -1) then
2799                     res@trXMinF            = miniwspsodz
[162]2800                  else
2801                     res@trXMinF            = xs
2802                  end if
[190]2803                  if (xe .EQ. -1) then       
2804                     res@trXMaxF            = maxiwspsodz
[162]2805                  else
2806                     res@trXMaxF            = xe 
[190]2807                  end if
[175]2808                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2809               end if
2810            end if
2811            if (vNam(varn) .EQ. "wpeodz") then
[353]2812               miniwpeodz=min(data(varn,:,min_z_int:max_z_int))-min_value
2813               maxiwpeodz=max(data(varn,:,min_z_int:max_z_int))+max_value
[161]2814               if (over .EQ. 1) then
2815                  res@xyDashPattern  = 2
[175]2816                  plot_wpeodz = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2817               else
2818                  res@gsnLeftString      = vNam(varn)
[218]2819                  res@tiXAxisString      = "["+unit(varn)+"]"
2820                  res@gsnRightString     = " "
[190]2821                  if (xs .EQ. -1) then
2822                     res@trXMinF            = miniwpeodz
[162]2823                  else
2824                     res@trXMinF            = xs
2825                  end if
[190]2826                  if (xe .EQ. -1) then       
2827                     res@trXMaxF            = maxiwpeodz
[162]2828                  else
2829                     res@trXMaxF            = xe 
[190]2830                  end if
[175]2831                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]2832               end if
2833            end if
[175]2834         if (no_files .GT. 1) then
[324]2835            print("nof="+nof+" und n="+n)
[175]2836            multi_plot(nof,n)=plot(n)
2837            max_nof(nof,n)=max(data(varn,:,:))
2838            min_nof(nof,n)=min(data(varn,:,:))
2839            name(nof,n)   =vNam(varn)
2840            unit_(nof,n)  =unit(varn)
2841         end if
[161]2842         if (over .EQ. 0) then
2843            n=n+1 
[174]2844         end if 
2845         if (prof3d .EQ. 0)then   
2846            varn=varn+1
2847         end if
2848         delete(temp)
[324]2849         delete(temp_att)
[174]2850      end if         
[154]2851   end do
[175]2852   if (no_files .GT. 1) then
2853      delete(vNam)
[218]2854      delete(files)
[175]2855   end if
[218]2856   
[175]2857   end do
[218]2858   ;#########ENDE DO LOOP FOR no_files GT 1#############
[353]2859
2860   if (isStrSubset(data@long_name," SR " ) .and. over_remind) then
2861      print(" ")
2862      print("If you have outputs of statistic regions you cannot overlay variables;")
2863      print("'over' is set to 0" )
2864      print(" ")
2865      over = 0
2866   end if
2867
[162]2868   if (count_var .EQ. 0) then
2869      print(" ")
[342]2870      print("The variables 'var="+var+"'" )
2871      print("do not exist on your input file;")
2872      print("be sure to have one comma before and after each variable")
[175]2873      print(" ")
[342]2874      exit       
[175]2875   end if
2876   
2877   if (no_files .GT. 1) then
[218]2878      multi_legend=new(6,string)
2879      string_len=new(6,integer)
[175]2880      multi_dash=new(no_files,string)
[190]2881      multi_legend(0)="  "+name_legend_1
[175]2882      string_len(0)=strlen(multi_legend(0))
[190]2883      multi_legend(1)="  "+name_legend_2
[175]2884      string_len(1)=strlen(multi_legend(1))
[190]2885      multi_legend(2)="  "+name_legend_3
[175]2886      string_len(2)=strlen(multi_legend(2))
[190]2887      multi_legend(3)="  "+name_legend_4
[175]2888      string_len(3)=strlen(multi_legend(3))
[190]2889      multi_legend(4)="  "+name_legend_5
[175]2890      string_len(4)=strlen(multi_legend(4))
[190]2891      multi_legend(5)="  "+name_legend_6
[175]2892      string_len(5)=strlen(multi_legend(5))
2893      do ml=1,no_files
2894         multi_dash(ml-1)=ml-1
2895      end do
2896      delete(plot)
2897      plot = new(dim,graphic)
2898      do pl=0,n-1
2899         plot0 = new(1,graphic)
2900         res@trXMinF = min(min_nof(:,pl))
2901         res@trXMaxF = max(max_nof(:,pl))
2902         res@gsnLeftString  = name(0,pl)
2903         res@gsnRightString = unit_(0,pl)
[324]2904         
2905         data_0(:,:) = min(min_nof(:,pl))
[175]2906         plot0 = gsn_csm_xy(wks,data_0(:,:),z_(pl,:),res)
2907
2908         ; ***************************************************
2909         ; legend for combined plot
2910         ; ***************************************************
2911
2912         lgres                    = True
2913         lgMonoDashIndex          = False
2914         lgres@lgLabelFont        = "helvetica"   
[218]2915         lgres@lgLabelFontHeightF = font_size_legend           
[324]2916         lgres@vpWidthF           = max(string_len)*0.015           
2917         lgres@vpHeightF          = 0.03*no_files         
[175]2918         lgres@lgDashIndexes      = multi_dash(no_files-1:0)
2919         lbid = gsn_create_legend(wks,no_files,multi_legend(no_files-1:0),lgres)       
2920
2921         amres = True
[324]2922         amres@amParallelPosF   = max(string_len)*0.012+0.78               
[175]2923         amres@amOrthogonalPosF = -0.0315*no_files+0.431         
2924         annoid1 = gsn_add_annotation(plot0,lbid,amres)
2925
2926         do plo=0,no_files-1
2927            overlay(plot0,multi_plot(plo,pl))
2928            plot(pl)=plot0
2929         end do
2930         delete(plot0)
2931      end do
2932   end if
2933
2934   if (count_var .EQ. 0) then
2935      print(" ")
[218]2936      print("Select a variable 'var=' or use the default value")
[162]2937      print(" ")
2938      print("Your selection '"+var+"' does not exist on the input file")
2939      print(" ")
2940      exit
2941   end if
2942
[161]2943   if (over .EQ. 1 ) then
[154]2944
[161]2945      overlay(plot_u,plot_v)
2946      overlay(plot_u,plot_w)
2947      u=0
2948      overlay(plot_pt,plot_vpt)
2949      overlay(plot_pt,plot_lpt)
2950      pt=0
2951      overlay(plot_q,plot_qv)
2952      overlay(plot_q,plot_ql)
2953      q=0
2954      overlay(plot_e,plot_es)
2955      e=0
2956      overlay(plot_km,plot_kh)
2957      km=0
2958      overlay(plot_wpup,plot_wsus)
2959      overlay(plot_wpup,plot_wu)
2960      wpup=0
2961      overlay(plot_wpvp,plot_wsvs)
2962      overlay(plot_wpvp,plot_wv)
2963      wpvp=0
2964      overlay(plot_wpptp,plot_wspts)
2965      overlay(plot_wpptp,plot_wpt)
2966      wpptp=0
2967      overlay(plot_wsptsBC,plot_wptBC)
2968      wsptsBC=0
2969      overlay(plot_wpvptp,plot_wsvpts)
2970      overlay(plot_wpvptp,plot_wvpt)
2971      wpvptp=0
2972      overlay(plot_wpqp,plot_wsqs)
2973      overlay(plot_wpqp,plot_wq)
2974      wpqp=0
2975      overlay(plot_wpqvp,plot_wsqvs)
2976      overlay(plot_wpqvp,plot_wqv)
2977      wpqvp=0
2978      overlay(plot_wpsp,plot_wsss)
2979      overlay(plot_wpsp,plot_ws)
2980      wpsp=0
2981      overlay(plot_wpsap,plot_wssas)
2982      overlay(plot_wpsap,plot_wsa)
2983      wpsap=0
2984      overlay(plot_us2,plot_vs2)
2985      overlay(plot_us2,plot_ws2)
2986      us2=0
2987      overlay(plot_wsususodz,plot_wspsodz)
2988      overlay(plot_wsususodz,plot_wpeodz)
2989      wsususodz=0
2990
2991   end if
2992
2993   if (over .EQ. 1) then
2994   
2995      do varn = 0,dim-1   
[174]2996         
2997         check = True
[161]2998     
[174]2999         if (prof3d .EQ. 0) then
3000            if ( isStrSubset( vNam(varn), "time") .OR. isStrSubset( vNam(varn), "NORM")) then
3001               check = False
3002            end if
[161]3003         else
[174]3004            if ( isStrSubset( vNam(varn), "time") .OR. isStrSubset( vNam(varn), "zusi") .OR. isStrSubset( vNam(varn), "zwwi") .OR. isStrSubset( vNam(varn), "x") .OR. isStrSubset( vNam(varn), "xu") .OR. isStrSubset( vNam(varn), "y") .OR. isStrSubset( vNam(varn), "yv") .OR. isStrSubset( vNam(varn), "zu_3d") .OR. isStrSubset( vNam(varn), "zw_3d")) then
3005               check = False
3006            end if
3007         end if
3008
[190]3009         if (var .NE. "all") then     
[174]3010            check = isStrSubset( var,","+vNam(varn)+"," )
3011         end if     
[161]3012
[175]3013         if (check)then
[174]3014
3015            if (prof3d .EQ. 0) then
[218]3016               if (log_z .EQ. 1) then
[250]3017                  z = f_att->$vNam(varn+1)$(1:dimz-1)
[175]3018               else
[250]3019                  z = f_att->$vNam(varn+1)$               
[175]3020               end if
3021            else
3022               do i=0,b-1           
3023                  if (isStrSubset( a(i),"zu_3d" ))then
3024                     z_v(varn,:) = z_u
[218]3025                     if (log_z .EQ. 1) then
[175]3026                        z = z_v(varn,1:dimz-1)
3027                     else
3028                        z = z_v(varn,:)
3029                     end if
3030                  else
3031                     if (isStrSubset( a(i),"zw_3d" ))then
3032                        z_v(varn,:) = z_w
[218]3033                        if (log_z .EQ. 1) then
[175]3034                           z = z_v(varn,1:dimz-1)
3035                        else
3036                           z = z_v(varn,:)
3037                        end if
3038                     end if                   
3039                  end if
3040               end do           
[174]3041            end if
3042
[218]3043            z=z/norm_z
[324]3044           
[353]3045            if (abs(min(data(varn,:,min_z_int:max_z_int))) .GT. 10)then
3046               min_value = abs(0.01*min(data(varn,:,min_z_int:max_z_int)))
3047               max_value = abs(0.01*max(data(varn,:,min_z_int:max_z_int)))
[324]3048            else
[353]3049               if (abs(min(data(varn,:,min_z_int:max_z_int))) .LT. 0.01 .AND. \
3050                   abs(max(data(varn,:,min_z_int:max_z_int))) .GT. 0.01)then
3051                  min_value = abs(0.1*max(data(varn,:,min_z_int:max_z_int)))
3052                  max_value = abs(0.1*max(data(varn,:,min_z_int:max_z_int)))
[324]3053               else
[353]3054                  if (abs(max(data(varn,:,:))) .LT. 0.01 .AND. \
3055                      abs(min(data(varn,:,min_z_int:max_z_int))) .GT. 0.01)then
3056                     min_value = abs(0.1*min(data(varn,:,min_z_int:max_z_int)))
3057                     max_value = abs(0.1*min(data(varn,:,min_z_int:max_z_int)))
[324]3058                  else
[353]3059                     min_value = abs(0.1*min(data(varn,:,min_z_int:max_z_int)))
3060                     max_value = abs(0.1*max(data(varn,:,min_z_int:max_z_int)))
[324]3061                  end if
3062               end if
3063            end if
[353]3064            if (min(data(varn,:,min_z_int:max_z_int)) .EQ. 0 .AND.\
3065                max(data(varn,:,min_z_int:max_z_int)) .EQ. 0)then
[324]3066               min_value = 0.1
3067               max_value = 0.1
3068            end if
[175]3069
[162]3070            res@gsnLeftString      = vNam(varn)
[218]3071            res@tiXAxisString      = "["+unit(varn)+"]"
3072            res@gsnRightString     = " "
[161]3073            res@trYMinF            = min_z
3074            res@trYMaxF            = max_z 
[250]3075            res@xyDashPattern = 0
3076
[190]3077            if (xs .EQ. -1) then
[353]3078               res@trXMinF = min(data(varn,:,min_z_int:max_z_int))-min_value
[162]3079            else
3080               res@trXMinF = xs
3081            end if
[190]3082            if (xe .EQ. -1) then
[353]3083               res@trXMaxF = max(data(varn,:,min_z_int:max_z_int))+max_value
[162]3084            else
3085               res@trXMaxF = xe 
3086            end if
[161]3087            plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res) 
3088           
3089            if (vNam(varn) .EQ. "u" .OR. vNam(varn) .EQ. "v" .OR. vNam(varn) .EQ. "w") then
3090               if (u .EQ. 0) then
3091                  res@gsnLeftString      = "u, v and w"
[218]3092                  res@tiXAxisString      = "["+unit(varn)+"]"
3093                  res@gsnRightString     = " "
[190]3094                  if (xs .EQ. -1) then
3095                     res@trXMinF = min((/miniu,miniv,miniw/))
[162]3096                  else
3097                     res@trXMinF = xs
3098                  end if
[190]3099                  if (xe .EQ. -1) then
3100                     res@trXMaxF = max((/maxiu,maxiv,maxiw/))
[162]3101                  else
3102                     res@trXMaxF = xe 
[175]3103                  end if 
[250]3104                  if (vNam(varn) .EQ. "v")then
3105                     res@xyDashPattern = 1
3106                  end if
3107                  if (vNam(varn) .EQ. "w")then
3108                     res@xyDashPattern = 2
3109                  end if
[175]3110                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]3111
3112                  ; ***************************************************
3113                  ; legend for combined plot
3114                  ; ***************************************************
3115     
3116                  lgres                    = True
3117                  lgMonoDashIndex          = False
3118                  lgres@lgLabelFont        = "helvetica"   
[218]3119                  lgres@lgLabelFontHeightF = font_size_legend           
[250]3120                  lgres@vpWidthF           = 0.06           
3121                  lgres@vpHeightF          = 0.12         
[161]3122                  lgres@lgDashIndexes      = (/0,1,2/)
3123                  lbid = gsn_create_legend(wks,3,(/"u","v","w"/),lgres)       
3124
3125                  amres = True
3126                  amres@amParallelPosF   = 0.65             
3127                  amres@amOrthogonalPosF = -0.2           
3128                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3129                  overlay(plot(n),plot_u)
3130                  u=1
3131               else
[174]3132                  if (prof3d .EQ. 0)then
3133                     varn=varn+1
3134                  end if
[161]3135                  continue
3136               end if       
3137            end if 
3138     
3139            if (vNam(varn) .EQ. "pt" .OR. vNam(varn) .EQ. "vpt" .OR. vNam(varn) .EQ. "lpt") then
3140               if (pt .EQ. 0) then
3141                  res@gsnLeftString      = "pt, vpt and lpt"
[218]3142                  res@tiXAxisString      = "["+unit(varn)+"]"
3143                  res@gsnRightString     = " "
[190]3144                  if (xs .EQ. -1) then
3145                     res@trXMinF = min((/minipt,minivpt,minilpt/))
[162]3146                  else
3147                     res@trXMinF = xs
3148                  end if
[190]3149                  if (xe .EQ. -1) then
3150                     res@trXMaxF = max((/maxipt,maxivpt,maxilpt/))
[162]3151                  else
3152                     res@trXMaxF = xe 
3153                  end if
[250]3154                  if (vNam(varn) .EQ. "vpt")then
3155                     res@xyDashPattern = 1
3156                  end if
3157                  if (vNam(varn) .EQ. "lpt")then
3158                     res@xyDashPattern = 2
3159                  end if
[175]3160                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]3161
3162                  ; ***************************************************
3163                  ; legend for combined plot
3164                  ; ***************************************************
3165     
3166                  lgres                    = True
3167                  lgMonoDashIndex          = False
3168                  lgres@lgLabelFont        = "helvetica"   
[250]3169                  lgres@lgLabelFontHeightF = font_size_legend         
3170                  lgres@vpWidthF           = 0.07           
3171                  lgres@vpHeightF          = 0.12         
[161]3172                  lgres@lgDashIndexes      = (/0,1,2/)
3173                  lbid = gsn_create_legend(wks,3,(/"pt","vpt","lpt"/),lgres)       
3174
3175                  amres = True
3176                  amres@amParallelPosF   = 0.65             
3177                  amres@amOrthogonalPosF = -0.2           
3178                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3179                  overlay(plot(n),plot_pt)
3180                  pt=1
3181               else
[174]3182                  if (prof3d .EQ. 0)then
3183                     varn=varn+1
3184                  end if
[161]3185                  continue       
3186               end if
3187            end if           
3188            if (vNam(varn) .EQ. "q" .OR. vNam(varn) .EQ. "qv" .OR. vNam(varn) .EQ. "ql") then
3189               if (q .EQ. 0) then
3190                  res@gsnLeftString      = "q, qv and ql"
[218]3191                  res@tiXAxisString      = "["+unit(varn)+"]"
3192                  res@gsnRightString     = " "
[190]3193                  if (xs .EQ. -1) then
3194                     res@trXMinF = min((/miniq,miniqv,miniql/))
[162]3195                  else
3196                     res@trXMinF = xs
3197                  end if
[190]3198                  if (xe .EQ. -1) then
3199                     res@trXMaxF = max((/maxiq,maxiqv,maxiql/))
[162]3200                  else
3201                     res@trXMaxF = xe 
[190]3202                  end if
[250]3203                  if (vNam(varn) .EQ. "qv")then
3204                     res@xyDashPattern = 1
3205                  end if
3206                  if (vNam(varn) .EQ. "ql")then
3207                     res@xyDashPattern = 2
3208                  end if
[175]3209                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]3210
3211                  ; ***************************************************
3212                  ; legend for combined plot
3213                  ; ***************************************************
3214     
3215                  lgres                    = True
3216                  lgMonoDashIndex          = False
3217                  lgres@lgLabelFont        = "helvetica"   
[218]3218                  lgres@lgLabelFontHeightF = font_size_legend           
[250]3219                  lgres@vpWidthF           = 0.06         
3220                  lgres@vpHeightF          = 0.12         
[161]3221                  lgres@lgDashIndexes      = (/0,1,2/)
3222                  lbid = gsn_create_legend(wks,3,(/"q","qv","ql"/),lgres)       
3223
3224                  amres = True
3225                  amres@amParallelPosF   = 0.65             
3226                  amres@amOrthogonalPosF = -0.2           
3227                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3228                  overlay(plot(n),plot_q)
3229                  q=1
3230               else
[174]3231                  if (prof3d .EQ. 0)then
3232                     varn=varn+1
3233                  end if
[161]3234                  continue   
3235               end if
[162]3236            end if   
3237           
[161]3238            if (vNam(varn) .EQ. "e" .OR. vNam(varn) .EQ. "es") then
3239               if (e .EQ. 0) then
3240                  res@gsnLeftString      = "e and es"
[218]3241                  res@tiXAxisString      = "["+unit(varn)+"]"
3242                  res@gsnRightString     = " "
[190]3243                  if (xs .EQ. -1) then
3244                     res@trXMinF = min((/minie,minies/))
[162]3245                  else
3246                     res@trXMinF = xs
3247                  end if
[190]3248                  if (xe .EQ. -1) then
3249                     res@trXMaxF = max((/maxie,maxies/))
[162]3250                  else
3251                     res@trXMaxF = xe 
[190]3252                  end if
[250]3253                  if (vNam(varn) .EQ. "es")then
3254                     res@xyDashPattern = 1
3255                  end if
[175]3256                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]3257
3258                  ; ***************************************************
3259                  ; legend for combined plot
3260                  ; ***************************************************
3261     
3262                  lgres                    = True
3263                  lgMonoDashIndex          = False
3264                  lgres@lgLabelFont        = "helvetica"   
[218]3265                  lgres@lgLabelFontHeightF = font_size_legend           
[250]3266                  lgres@vpWidthF           = 0.06           
3267                  lgres@vpHeightF          = 0.08         
[161]3268                  lgres@lgDashIndexes      = (/0,1,2/)
[250]3269                  lbid = gsn_create_legend(wks,2,(/"e","es"/),lgres)       
[161]3270
3271                  amres = True
3272                  amres@amParallelPosF   = 0.65             
3273                  amres@amOrthogonalPosF = -0.2           
3274                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3275                  overlay(plot(n),plot_e)
3276                  e=1
3277               else
[174]3278                  if (prof3d .EQ. 0)then
3279                     varn=varn+1
3280                  end if
[161]3281                  continue   
3282               end if
3283            end if           
3284            if (vNam(varn) .EQ. "km" .OR. vNam(varn) .EQ. "kh") then
3285               if (km .EQ. 0) then
3286                  res@gsnLeftString      = "km and kh"
[218]3287                  res@tiXAxisString      = "["+unit(varn)+"]"
3288                  res@gsnRightString     = " "
[190]3289                  if (xs .EQ. -1) then
3290                     res@trXMinF = min((/minikm,minikh/))
[162]3291                  else
3292                     res@trXMinF = xs
3293                  end if
[190]3294                  if (xe .EQ. -1) then
3295                     res@trXMaxF = max((/maxikm,maxikh/))
[162]3296                  else
3297                     res@trXMaxF = xe 
[190]3298                  end if
[250]3299                  if (vNam(varn) .EQ. "kh")then
3300                     res@xyDashPattern = 1
3301                  end if
[175]3302                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]3303
3304                  ; ***************************************************
3305                  ; legend for combined plot
3306                  ; ***************************************************
3307     
3308                  lgres                    = True
3309                  lgMonoDashIndex          = False
3310                  lgres@lgLabelFont        = "helvetica"   
[218]3311                  lgres@lgLabelFontHeightF = font_size_legend           
[250]3312                  lgres@vpWidthF           = 0.06           
3313                  lgres@vpHeightF          = 0.08         
[161]3314                  lgres@lgDashIndexes      = (/0,1,2/)
[250]3315                  lbid = gsn_create_legend(wks,2,(/"km","kh"/),lgres)       
[161]3316
3317                  amres = True
3318                  amres@amParallelPosF   = 0.65             
3319                  amres@amOrthogonalPosF = -0.2           
3320                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3321                  overlay(plot(n),plot_km)
3322                  km=1
3323               else
[174]3324                  if (prof3d .EQ. 0)then
3325                     varn=varn+1
3326                  end if
[161]3327                  continue   
3328               end if
3329            end if           
[162]3330           
[161]3331            if (vNam(varn) .EQ. "wpup" .OR. vNam(varn) .EQ. "wsus" .OR. vNam(varn) .EQ. "wu") then
3332               if (wpup .EQ. 0) then
3333                  res@gsnLeftString      = "wpup, wsus and wu"
[218]3334                  res@tiXAxisString      = "["+unit(varn)+"]"
3335                  res@gsnRightString     = " "
[190]3336                  if (xs .EQ. -1) then
3337                     res@trXMinF = min((/miniwpup,miniwsus,miniwu/))
[162]3338                  else
3339                     res@trXMinF = xs
3340                  end if
[190]3341                  if (xe .EQ. -1) then
3342                     res@trXMaxF = max((/maxiwpup,maxiwsus,maxiwu/))
[162]3343                  else
3344                     res@trXMaxF = xe 
[190]3345                  end if 
[250]3346                  if (vNam(varn) .EQ. "wsus")then
3347                     res@xyDashPattern = 1
3348                  end if
3349                  if (vNam(varn) .EQ. "wu")then
3350                     res@xyDashPattern = 2
3351                  end if
[175]3352                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]3353
3354                  ; ***************************************************
3355                  ; legend for combined plot
3356                  ; ***************************************************
3357     
3358                  lgres                    = True
3359                  lgMonoDashIndex          = False
3360                  lgres@lgLabelFont        = "helvetica"   
[218]3361                  lgres@lgLabelFontHeightF = font_size_legend           
[250]3362                  lgres@vpWidthF           = 0.08           
3363                  lgres@vpHeightF          = 0.12         
[161]3364                  lgres@lgDashIndexes      = (/0,1,2/)
3365                  lbid = gsn_create_legend(wks,3,(/"wpup","wsus","wu"/),lgres)       
3366
3367                  amres = True
3368                  amres@amParallelPosF   = 0.65             
3369                  amres@amOrthogonalPosF = -0.2           
3370                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3371                  overlay(plot(n),plot_wpup)
3372                  wpup=1
3373               else
[174]3374                  if (prof3d .EQ. 0)then
3375                     varn=varn+1
3376                  end if
[161]3377                  continue   
3378               end if
3379            end if
3380            if (vNam(varn) .EQ. "wpvp" .OR. vNam(varn) .EQ. "wsvs" .OR.vNam(varn) .EQ. "wv") then
3381               if (wpvp .EQ. 0) then
[250]3382                  res@gsnLeftString      = "wpvp, wsvs and wv"
[218]3383                  res@tiXAxisString      = "["+unit(varn)+"]"
3384                  res@gsnRightString     = " "
[190]3385                  if (xs .EQ. -1) then
3386                     res@trXMinF = min((/miniwpvp,miniwsvs,miniwv/))
[162]3387                  else
3388                     res@trXMinF = xs
3389                  end if
[190]3390                  if (xe .EQ. -1) then
3391                     res@trXMaxF = max((/maxiwpvp,maxiwsvs,maxiwv/))
[162]3392                  else
3393                     res@trXMaxF = xe 
3394                  end if
[250]3395                  if (vNam(varn) .EQ. "wsvs")then
3396                     res@xyDashPattern = 1
3397                  end if
3398                  if (vNam(varn) .EQ. "wv")then
3399                     res@xyDashPattern = 2
3400                  end if
[175]3401                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]3402
3403                  ; ***************************************************
3404                  ; legend for combined plot
3405                  ; ***************************************************
3406     
3407                  lgres                    = True
3408                  lgMonoDashIndex          = False
3409                  lgres@lgLabelFont        = "helvetica"   
[218]3410                  lgres@lgLabelFontHeightF = font_size_legend           
[250]3411                  lgres@vpWidthF           = 0.08         
3412                  lgres@vpHeightF          = 0.12         
[161]3413                  lgres@lgDashIndexes      = (/0,1,2/)
3414                  lbid = gsn_create_legend(wks,3,(/"wpvp","wsvs","wv"/),lgres)       
3415
3416                  amres = True
3417                  amres@amParallelPosF   = 0.65             
3418                  amres@amOrthogonalPosF = -0.2           
3419                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3420                  overlay(plot(n),plot_wpvp)
[250]3421                  wpvp=1
[161]3422               else
[174]3423                  if (prof3d .EQ. 0)then
3424                     varn=varn+1
3425                  end if
[161]3426                  continue   
3427               end if
3428            end if
3429            if (vNam(varn) .EQ. "wpptp" .OR. vNam(varn) .EQ. "wspts" .OR. vNam(varn) .EQ. "wpt") then
3430               if (wpptp .EQ. 0) then
[250]3431                  res@gsnLeftString      = "wpptp, wspts and wpt"
[218]3432                  res@tiXAxisString      = "["+unit(varn)+"]"
3433                  res@gsnRightString     = " "
[190]3434                  if (xs .EQ. -1) then
3435                     res@trXMinF = min((/miniwpptp,miniwspts,miniwpt/))
[162]3436                  else
3437                     res@trXMinF = xs
3438                  end if
[190]3439                  if (xe .EQ. -1) then
3440                     res@trXMaxF = max((/maxiwpptp,maxiwspts,maxiwpt/))
[162]3441                  else
3442                     res@trXMaxF = xe 
[190]3443                  end if
[250]3444                  if (vNam(varn) .EQ. "wspts")then
3445                     res@xyDashPattern = 1
3446                  end if
3447                  if (vNam(varn) .EQ. "wpt")then
3448                     res@xyDashPattern = 2
3449                  end if
[175]3450                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]3451
3452                  ; ***************************************************
3453                  ; legend for combined plot
3454                  ; ***************************************************
3455     
3456                  lgres                    = True
3457                  lgMonoDashIndex          = False
3458                  lgres@lgLabelFont        = "helvetica"   
[218]3459                  lgres@lgLabelFontHeightF = font_size_legend           
[250]3460                  lgres@vpWidthF           = 0.09           
3461                  lgres@vpHeightF          = 0.12         
[161]3462                  lgres@lgDashIndexes      = (/0,1,2/)
3463                  lbid = gsn_create_legend(wks,3,(/"wpptp","wspts","wpt"/),lgres)       
3464
3465                  amres = True
3466                  amres@amParallelPosF   = 0.65             
3467                  amres@amOrthogonalPosF = -0.2           
3468                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3469                  overlay(plot(n),plot_wpptp)
3470                  wpptp=1
3471               else
[174]3472                  if (prof3d .EQ. 0)then
3473                     varn=varn+1
3474                  end if
[161]3475                  continue   
3476               end if
3477            end if
3478            if (vNam(varn) .EQ. "wsptsBC" .OR. vNam(varn) .EQ. "wptBC") then
3479               if (wsptsBC .EQ. 0) then
3480                  res@gsnLeftString      = "wsptsBC and wptBC"
[218]3481                  res@tiXAxisString      = "["+unit(varn)+"]"
3482                  res@gsnRightString     = " "
[190]3483                  if (xs .EQ. -1) then
3484                     res@trXMinF = min((/miniwsptsBC,miniwptBC/))
[162]3485                  else
3486                     res@trXMinF = xs
3487                  end if
[190]3488                  if (xe .EQ. -1) then
3489                     res@trXMaxF = max((/maxiwsptsBC,maxiwptBC/))
[162]3490                  else
3491                     res@trXMaxF = xe 
[190]3492                  end if
[250]3493                  if (vNam(varn) .EQ. "wptBC")then
3494                     res@xyDashPattern = 1
3495                  end if
[175]3496                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]3497
3498                  ; ***************************************************
3499                  ; legend for combined plot
3500                  ; ***************************************************
3501     
3502                  lgres                    = True
3503                  lgMonoDashIndex          = False
3504                  lgres@lgLabelFont        = "helvetica"   
[218]3505                  lgres@lgLabelFontHeightF = font_size_legend           
[250]3506                  lgres@vpWidthF           = 0.1           
3507                  lgres@vpHeightF          = 0.12         
[161]3508                  lgres@lgDashIndexes      = (/0,1,2/)
3509                  lbid = gsn_create_legend(wks,3,(/"wsptsBC","wptBC"/),lgres)       
3510
3511                  amres = True
3512                  amres@amParallelPosF   = 0.65             
3513                  amres@amOrthogonalPosF = -0.2           
3514                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3515                  overlay(plot(n),plot_wsptsBC)
3516                  wsptsBC=1
3517               else
[174]3518                  if (prof3d .EQ. 0)then
3519                     varn=varn+1
3520                  end if
[161]3521                  continue   
3522               end if 
3523            end if             
3524            if (vNam(varn) .EQ. "wpvptp" .OR. vNam(varn) .EQ. "wsvpts" .OR. vNam(varn) .EQ. "wvpt") then
3525               if (wpvptp .EQ. 0) then
[250]3526                  res@gsnLeftString      = "wpvptp, wsvpts and wvpt"
[218]3527                  res@tiXAxisString      = "["+unit(varn)+"]"
3528                  res@gsnRightString     = " "
[190]3529                  if (xs .EQ. -1) then
3530                     res@trXMinF = min((/miniwpvptp,miniwsvpts,miniwvpt/))
[162]3531                  else
3532                     res@trXMinF = xs
3533                  end if
[190]3534                  if (xe .EQ. -1) then
3535                     res@trXMaxF = max((/maxiwpvptp,maxiwsvpts,maxiwvpt/))
[162]3536                  else
3537                     res@trXMaxF = xe 
[190]3538                  end if
[250]3539                  if (vNam(varn) .EQ. "wsvpts")then
3540                     res@xyDashPattern = 1
3541                  end if
3542                  if (vNam(varn) .EQ. "wvpt")then
3543                     res@xyDashPattern = 2
3544                  end if
[175]3545                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]3546
3547                  ; ***************************************************
3548                  ; legend for combined plot
3549                  ; ***************************************************
3550     
3551                  lgres                    = True
3552                  lgMonoDashIndex          = False
3553                  lgres@lgLabelFont        = "helvetica"   
[218]3554                  lgres@lgLabelFontHeightF = font_size_legend           
[250]3555                  lgres@vpWidthF           = 0.1           
3556                  lgres@vpHeightF          = 0.12         
[161]3557                  lgres@lgDashIndexes      = (/0,1,2/)
3558                  lbid = gsn_create_legend(wks,3,(/"wpvptp","wsvpts","wvpt"/),lgres)       
3559
3560                  amres = True
3561                  amres@amParallelPosF   = 0.65             
3562                  amres@amOrthogonalPosF = -0.2           
3563                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3564                  overlay(plot(n),plot_wpvptp)
3565                  wpvptp=1
3566               else
[174]3567                  if (prof3d .EQ. 0)then
3568                     varn=varn+1
3569                  end if
[161]3570                  continue   
3571               end if
3572            end if
3573            if (vNam(varn) .EQ. "wpqp" .OR. vNam(varn) .EQ. "wsqs" .OR. vNam(varn) .EQ. "wq") then
3574               if (wpqp .EQ. 0) then
3575                  res@gsnLeftString      = "wpqp, wsqs and wq"
[218]3576                  res@tiXAxisString      = "["+unit(varn)+"]"
3577                  res@gsnRightString     = " "
[190]3578                  if (xs .EQ. -1) then
3579                     res@trXMinF = min((/miniwpqp,miniwsqs,miniwq/))
[162]3580                  else
3581                     res@trXMinF = xs
3582                  end if
[190]3583                  if (xe .EQ. -1) then
3584                     res@trXMaxF = max((/maxiwpqp,maxiwsqs,maxiwq/))
[162]3585                  else
3586                     res@trXMaxF = xe 
[190]3587                  end if 
[250]3588                  if (vNam(varn) .EQ. "wsqs")then
3589                     res@xyDashPattern = 1
3590                  end if
3591                  if (vNam(varn) .EQ. "wq")then
3592                     res@xyDashPattern = 2
3593                  end if
[175]3594                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]3595
3596                  ; ***************************************************
3597                  ; legend for combined plot
3598                  ; ***************************************************
3599     
3600                  lgres                    = True
3601                  lgMonoDashIndex          = False
3602                  lgres@lgLabelFont        = "helvetica"   
[218]3603                  lgres@lgLabelFontHeightF = font_size_legend           
[250]3604                  lgres@vpWidthF           = 0.08           
3605                  lgres@vpHeightF          = 0.12         
[161]3606                  lgres@lgDashIndexes      = (/0,1,2/)
3607                  lbid = gsn_create_legend(wks,3,(/"wpqp","wsqs","wq"/),lgres)       
3608
3609                  amres = True
3610                  amres@amParallelPosF   = 0.65             
3611                  amres@amOrthogonalPosF = -0.2           
3612                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3613                  overlay(plot(n),plot_wpqp)
3614                  wpqp=1
3615               else
[174]3616                  if (prof3d .EQ. 0)then
3617                     varn=varn+1
3618                  end if
[161]3619                  continue   
3620               end if
3621            end if
3622            if (vNam(varn) .EQ. "wpqvp" .OR. vNam(varn) .EQ. "wsqvs" .OR. vNam(varn) .EQ. "wqv") then
3623               if (wpqvp .EQ. 0) then
3624                  res@gsnLeftString      = "wpqvp, wsqvs and wqv"
[218]3625                  res@tiXAxisString      = "["+unit(varn)+"]"
3626                  res@gsnRightString     = " "
[190]3627                  if (xs .EQ. -1) then
3628                     res@trXMinF = min((/miniwpqp,miniwsqvs,miniwqv/))
[162]3629                  else
3630                     res@trXMinF = xs
3631                  end if
[190]3632                  if (xe .EQ. -1) then
3633                     res@trXMaxF = max((/maxiwpqp,maxiwsqvs,maxiwqv/))
[162]3634                  else
3635                     res@trXMaxF = xe 
[190]3636                  end if
[250]3637                  if (vNam(varn) .EQ. "wsqvs")then
3638                     res@xyDashPattern = 1
3639                  end if
3640                  if (vNam(varn) .EQ. "wqv")then
3641                     res@xyDashPattern = 2
3642                  end if
[175]3643                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]3644
3645                  ; ***************************************************
3646                  ; legend for combined plot
3647                  ; ***************************************************
3648     
3649                  lgres                    = True
3650                  lgMonoDashIndex          = False
3651                  lgres@lgLabelFont        = "helvetica"   
[218]3652                  lgres@lgLabelFontHeightF = font_size_legend           
[250]3653                  lgres@vpWidthF           = 0.09           
3654                  lgres@vpHeightF          = 0.12         
[161]3655                  lgres@lgDashIndexes      = (/0,1,2/)
3656                  lbid = gsn_create_legend(wks,3,(/"wpqvp","wsqvs","wqv"/),lgres)       
3657
3658                  amres = True
3659                  amres@amParallelPosF   = 0.65             
3660                  amres@amOrthogonalPosF = -0.2           
3661                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3662                  overlay(plot(n),plot_wpqvp)
3663                  wpqvp=1
3664               else
[174]3665                  if (prof3d .EQ. 0)then
3666                     varn=varn+1
3667                  end if
[161]3668                  continue   
3669               end if
3670            end if
3671            if (vNam(varn) .EQ. "wpsp" .OR. vNam(varn) .EQ. "wsss" .OR. vNam(varn) .EQ. "ws") then
3672               if (wpsp .EQ. 0) then
3673                  res@gsnLeftString      = "wpsp, wsss and ws"
[218]3674                  res@tiXAxisString      = "["+unit(varn)+"]"
3675                  res@gsnRightString     = " "
[190]3676                  if (xs .EQ. -1) then
3677                     res@trXMinF = min((/miniwpsp,miniwsss,miniws/))
[162]3678                  else
3679                     res@trXMinF = xs
3680                  end if
[190]3681                  if (xe .EQ. -1) then
3682                     res@trXMaxF = max((/maxiwpsp,maxiwsss,maxiws/))
[162]3683                  else
3684                     res@trXMaxF = xe 
[190]3685                  end if
[250]3686                  if (vNam(varn) .EQ. "wsss")then
3687                     res@xyDashPattern = 1
3688                  end if
3689                  if (vNam(varn) .EQ. "ws")then
3690                     res@xyDashPattern = 2
3691                  end if
[175]3692                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]3693
3694                  ; ***************************************************
3695                  ; legend for combined plot
3696                  ; ***************************************************
3697     
3698                  lgres                    = True
3699                  lgMonoDashIndex          = False
3700                  lgres@lgLabelFont        = "helvetica"   
[218]3701                  lgres@lgLabelFontHeightF = font_size_legend           
[250]3702                  lgres@vpWidthF           = 0.08           
3703                  lgres@vpHeightF          = 0.12         
[161]3704                  lgres@lgDashIndexes      = (/0,1,2/)
3705                  lbid = gsn_create_legend(wks,3,(/"wpsp","wsss","ws"/),lgres)       
3706
3707                  amres = True
3708                  amres@amParallelPosF   = 0.65             
3709                  amres@amOrthogonalPosF = -0.2           
3710                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3711                  overlay(plot(n),plot_wpsp)
3712                  wpsp=1
3713               else
[174]3714                  if (prof3d .EQ. 0)then
3715                     varn=varn+1
3716                  end if
[161]3717                  continue   
3718               end if
3719            end if
3720            if (vNam(varn) .EQ. "wpsap" .OR.vNam(varn) .EQ. "wssas" .OR. vNam(varn) .EQ. "wsa") then
3721               if (wpsap .EQ. 0) then
3722                  res@gsnLeftString      = "wpsap, wssas and wsa"
[218]3723                  res@tiXAxisString      = "["+unit(varn)+"]"
3724                  res@gsnRightString     = " "
[190]3725                  if (xs .EQ. -1) then
3726                     res@trXMinF = min((/miniwpsap,miniwssas,miniwsa/))
[162]3727                  else
3728                     res@trXMinF = xs
3729                  end if
[190]3730                  if (xe .EQ. -1) then
3731                     res@trXMaxF = max((/maxiwpsap,maxiwssas,maxiwsa/))
[162]3732                  else
3733                     res@trXMaxF = xe 
[190]3734                  end if
[250]3735                  if (vNam(varn) .EQ. "wssas")then
3736                     res@xyDashPattern = 1
3737                  end if
3738                  if (vNam(varn) .EQ. "wsa")then
3739                     res@xyDashPattern = 2
3740                  end if
[175]3741                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]3742
3743                  ; ***************************************************
3744                  ; legend for combined plot
3745                  ; ***************************************************
3746     
3747                  lgres                    = True
3748                  lgMonoDashIndex          = False
3749                  lgres@lgLabelFont        = "helvetica"   
[218]3750                  lgres@lgLabelFontHeightF = font_size_legend           
[250]3751                  lgres@vpWidthF           = 0.09           
3752                  lgres@vpHeightF          = 0.12         
[161]3753                  lgres@lgDashIndexes      = (/0,1,2/)
3754                  lbid = gsn_create_legend(wks,3,(/"wpsap","wssas","wsa"/),lgres)       
3755
3756                  amres = True
3757                  amres@amParallelPosF   = 0.65             
3758                  amres@amOrthogonalPosF = -0.2           
3759                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3760                  overlay(plot(n),plot_wpsap)
3761                  wpsap=1
3762               else
[174]3763                  if (prof3d .EQ. 0)then
3764                     varn=varn+1
3765                  end if
[161]3766                  continue   
3767               end if
3768            end if
[162]3769         
[161]3770            if (vNam(varn) .EQ. "us2" .OR. vNam(varn) .EQ. "vs2" .OR. vNam(varn) .EQ. "ws2") then
3771               if (us2 .EQ. 0) then
3772                  res@gsnLeftString      = "us2, vs2 and ws2"
[218]3773                  res@tiXAxisString      = "["+unit(varn)+"]"
3774                  res@gsnRightString     = " "
[190]3775                  if (xs .EQ. -1) then
3776                     res@trXMinF = min((/minius2,minivs2,miniws2/))
[162]3777                  else
3778                     res@trXMinF = xs
3779                  end if
[190]3780                  if (xe .EQ. -1) then
3781                     res@trXMaxF = max((/maxius2,maxivs2,maxiws2/))
3782                  else
[162]3783                     res@trXMaxF = xe 
[190]3784                  end if
[250]3785                  if (vNam(varn) .EQ. "vs2")then
3786                     res@xyDashPattern = 1
3787                  end if
3788                  if (vNam(varn) .EQ. "ws2")then
3789                     res@xyDashPattern = 2
3790                  end if
[175]3791                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]3792
3793                  ; ***************************************************
3794                  ; legend for combined plot
3795                  ; ***************************************************
3796     
3797                  lgres                    = True
3798                  lgMonoDashIndex          = False
3799                  lgres@lgLabelFont        = "helvetica"   
[218]3800                  lgres@lgLabelFontHeightF = font_size_legend           
[250]3801                  lgres@vpWidthF           = 0.07           
3802                  lgres@vpHeightF          = 0.12         
[161]3803                  lgres@lgDashIndexes      = (/0,1,2/)
3804                  lbid = gsn_create_legend(wks,3,(/"us2","vs2","ws2"/),lgres)       
3805
3806                  amres = True
3807                  amres@amParallelPosF   = 0.65             
3808                  amres@amOrthogonalPosF = -0.2           
3809                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3810                  overlay(plot(n),plot_us2)
3811                  us2=1
3812               else
[174]3813                  if (prof3d .EQ. 0)then
3814                     varn=varn+1
3815                  end if
[161]3816                  continue   
3817               end if
3818            end if
[162]3819           
[161]3820            if (vNam(varn) .EQ. "wsususodz" .OR. vNam(varn) .EQ. "wspsodz" .OR. vNam(varn) .EQ. "wpeodz" ) then
3821               if (wsususodz .EQ. 0) then
[250]3822                  res@gsnLeftString      = "wsususodz, wspsodz and wpeodz"
[218]3823                  res@tiXAxisString      = "["+unit(varn)+"]"
3824                  res@gsnRightString     = " "
[190]3825                  if (xs .EQ. -1) then
3826                     res@trXMinF = min((/miniwsususodz,miniwspsodz,miniwpeodz/))
[162]3827                  else
3828                     res@trXMinF = xs
3829                  end if
[190]3830                  if (xe .EQ. -1) then
3831                     res@trXMaxF = max((/maxiwsususodz,maxiwspsodz,maxiwpeodz/))
[162]3832                  else
3833                     res@trXMaxF = xe 
[190]3834                  end if
[250]3835                  if (vNam(varn) .EQ. "wspsodz")then
3836                     res@xyDashPattern = 1
3837                  end if
3838                  if (vNam(varn) .EQ. "wpeodz")then
3839                     res@xyDashPattern = 2
3840                  end if
[175]3841                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
[161]3842
3843                  ; ***************************************************
3844                  ; legend for combined plot
3845                  ; ***************************************************
3846     
3847                  lgres                    = True
3848                  lgMonoDashIndex          = False
3849                  lgres@lgLabelFont        = "helvetica"   
[250]3850                  lgres@lgLabelFontHeightF = font_size_legend           
[161]3851                  lgres@vpWidthF           = 0.12           
[250]3852                  lgres@vpHeightF          = 0.12         
[161]3853                  lgres@lgDashIndexes      = (/0,1,2/)
3854                  lbid = gsn_create_legend(wks,3,(/"wsususodz","wspsodz","wpeodz"/),lgres)       
3855
3856                  amres = True
3857                  amres@amParallelPosF   = 0.65             
3858                  amres@amOrthogonalPosF = -0.2           
3859                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3860                  overlay(plot(n),plot_wsususodz)
3861                  wsususodz=1
3862               else
[174]3863                  if (prof3d .EQ. 0)then
3864                     varn=varn+1
3865                  end if
[161]3866                  continue   
3867               end if
3868            end if     
[174]3869            n=n+1
3870            if (prof3d .EQ. 0)then
3871               varn=varn+1
3872            end if   
[161]3873         end if
3874      end do
[190]3875   end if
3876   
3877   com_var_avail=new(count_var,string)   
[161]3878
[154]3879   if (combine .EQ. 1) then
[174]3880      co=0     
[161]3881      n_o=0
[174]3882      do varn = 0,dim-1
3883 
3884         check = True
3885     
3886         if (prof3d .EQ. 0) then
3887            if ( isStrSubset( vNam(varn), "time") .OR. isStrSubset( vNam(varn), "NORM")) then
3888               check = False
3889            end if
[161]3890         else
[174]3891            if ( isStrSubset( vNam(varn), "time") .OR. isStrSubset( vNam(varn), "zusi") .OR. isStrSubset( vNam(varn), "zwwi") .OR. isStrSubset( vNam(varn), "x") .OR. isStrSubset( vNam(varn), "xu") .OR. isStrSubset( vNam(varn), "y") .OR. isStrSubset( vNam(varn), "yv") .OR. isStrSubset( vNam(varn), "zu_3d") .OR. isStrSubset( vNam(varn), "zw_3d")) then
3892               check = False
3893            end if
3894         end if
3895
[190]3896         if (var .NE. "all") then         
[174]3897            check = isStrSubset( var,","+vNam(varn)+"," )
3898         end if     
3899
[175]3900         if (check)then
3901           
3902            if (prof3d .EQ. 0) then
[218]3903               if (log_z .EQ. 1) then
[250]3904                  z = f_att->$vNam(varn+1)$(1:dimz-1)
[175]3905               else
[250]3906                  z = f_att->$vNam(varn+1)$               
[175]3907               end if
3908            else
3909               do i=0,b-1           
3910                  if (isStrSubset( a(i),"zu_3d" ))then
3911                     z_v(varn,:) = z_u
[218]3912                     if (log_z .EQ. 1) then
[175]3913                        z = z_v(varn,1:dimz-1)
3914                     else
3915                        z = z_v(varn,:)
3916                     end if
3917                  else
3918                     if (isStrSubset( a(i),"zw_3d" ))then
3919                        z_v(varn,:) = z_w
[218]3920                        if (log_z .EQ. 1) then
[175]3921                           z = z_v(varn,1:dimz-1)
3922                        else
3923                           z = z_v(varn,:)
3924                        end if
3925                     end if                   
3926                  end if
3927               end do           
3928            end if
[174]3929
[218]3930            z=z/norm_z
[190]3931           
3932            com_var_avail(n_o)=vNam(varn)
3933           
[161]3934            com=isStrSubset( c_var,","+vNam(varn)+"," )
[175]3935            if (com)then
[174]3936               co = co+1           
[161]3937               if (n_o .EQ. 1) then
[175]3938                  res@xyDashPattern  = 1                                   
[161]3939               else           
3940                  if (n_o .EQ. 2) then
3941                     res@xyDashPattern  = 2
3942                  else
3943                     res@xyDashPattern  = 0
[175]3944                     res@gsnLeftString  = "Combined Plot of "+c_var
[218]3945                     res@tiXAxisString      = "["+unit(varn)+"]"
3946                     res@gsnRightString     = " "
[190]3947                     if (xs .EQ. -1) then
3948                        res@trXMinF = min(mini)
[162]3949                     else
3950                        res@trXMinF = xs
3951                     end if
[190]3952                     if (xe .EQ. -1) then
3953                        res@trXMaxF = max(maxi)
[162]3954                     else
3955                        res@trXMaxF = xe 
3956                     end if
[161]3957                  end if
3958               end if
3959               label(n_o)=vNam(varn)
3960               color_o(n_o)=237
3961               plot_o(n_o)=gsn_csm_xy(wks,data(varn,:,:),z,res)
3962               n_o=n_o+1
[174]3963            end if
3964            if (prof3d .EQ. 0)then
3965               varn=varn+1
3966            end if           
[161]3967         end if
3968      end do
3969   
3970      if(number_comb .EQ. 2)then
[174]3971         if (co .EQ. 2)then
3972            overlay(plot_o(0),plot_o(1))
3973         else
[190]3974            print(" ")
3975            print("combining is not possible,")
3976            print("'c_var'(= "+c_var+") must include two variables of the general plots = ")
3977            print("- "+com_var_avail)
[342]3978            print("be sure to have one comma before and after the variable")
[190]3979            print(" ")
3980            exit 
[174]3981         end if
[161]3982      end if
3983      if(number_comb .EQ. 3)then
[174]3984         if (co .EQ. 3)then
3985            overlay(plot_o(0),plot_o(1))
3986            overlay(plot_o(0),plot_o(2))
3987         else
[190]3988            print(" ")
3989            print("combining is not possible,")
3990            print("'c_var'(= "+c_var+") must include three variables of the general plots = ")
3991            print("- "+com_var_avail)
[342]3992            print("be sure to have one comma before and after the variable")
[190]3993            print(" ")
3994            exit
[174]3995         end if
[161]3996      end if
[154]3997
[161]3998      ; ***************************************************
3999      ; legend for combined plot
4000      ; ***************************************************
[154]4001     
[161]4002      lgres                    = True
4003      lgMonoDashIndex          = False
4004      lgres@lgDashIndexes      = (/0,1,2/)
4005      lgres@lgLabelFont        = "helvetica"   
[218]4006      lgres@lgLabelFontHeightF = font_size_legend           
[161]4007      lgres@vpWidthF           = 0.12           
4008      lgres@vpHeightF          = 0.1           
4009 
4010      lbid = gsn_create_legend(wks,number_comb,label,lgres)       
4011
4012      amres = True
4013      amres@amParallelPosF   = 0.65                 
4014      amres@amOrthogonalPosF = -0.2           
4015      annoid1 = gsn_add_annotation(plot_o(0),lbid,amres)
4016   
4017      plot(0) = plot_o(0)
4018
[154]4019   end if
4020
4021   ; ***************************************************
4022   ; merge plots onto one page
4023   ; ***************************************************
[162]4024
[161]4025   do m=0,n-1
4026      plot_(m)=plot(n-1-m)
[154]4027   end do
4028
[161]4029   if (format_out .EQ. "eps" .OR. format_out .EQ. "epsi") then
[175]4030      gsn_panel(wks,plot_,(/n,1/),resP)
[250]4031      print(" ")
4032      print("Outputs to .eps or .epsi have only one frame")
4033      print(" ")
[161]4034   else   
[218]4035      do i = 0,n-1, no_rows*no_columns
4036         if( (i+no_rows*no_columns) .gt. (n-1)) then
4037            gsn_panel(wks,plot_(i:n-1),(/no_rows,no_columns/),resP)
[161]4038         else
[250]4039            gsn_panel(wks,plot_(i:i+no_rows*no_columns-1),(/no_rows,no_columns/),resP)
[161]4040         end if
4041      end do
4042   end if
4043
[154]4044   print(" ")
4045   print("Output to: " + file_out +"."+ format_out)
4046   print(" ")
4047
4048end
Note: See TracBrowser for help on using the repository browser.