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

Last change on this file since 172 was 162, checked in by letzel, 17 years ago
  • NCL scripts in trunk/SCRIPTS/NCL updated
File size: 137.4 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"
4 
5begin
6
7   ; ***************************************************
8   ; read parameter_list
9   ; ***************************************************
10
11   if (isfilepresent("~/.ncl_preferences")) then
[161]12      parameter = asciiread("~/.ncl_preferences",75,"string")
[154]13      delete(parameter@_FillValue)
14   else
15      print(" ")
16      print("Please copy '.ncl_preferences' into your $home dircetory")
17      print(" ")
18      exit
19   end if
20 
21   ; ***************************************************
22   ; set up default parameter values and strings if not assigned in prompt or parameter list
23   ; ***************************************************
24 
25   if ( .not. isvar("file_in") ) then                   ; path+name of input file     
26      if (parameter(7) .EQ. "input file") then
27         print(" ")
28         print("Please provide input file 'file_in = ' either in prompt or parameter_list")
29         print(" ")
30         exit
31      else
32         file_in = parameter(7)
33      end if     
34   end if
35   if ( .not. isvar("format_out") ) then                ; format of output file
36      format_out = "x11"
37      if (parameter(9) .NE. "x11") then
38         format_out = parameter(9) 
39      end if
40   end if
41   if ( .not. isvar("file_out") ) then                  ; path+name of output file
42      file_out = "test"
43      if (parameter(11) .NE. "test_ts") then
44         file_out = parameter(11) 
45     end if     
46   end if
47   if ( .not. isvar("no_columns") ) then                ; number of plots in one row
48      no_columns = 1
49      if (parameter(17) .NE. "1") then
50         no_columns = stringtointeger(parameter(17)) 
51      end if
52   end if
53   if ( .not. isvar("no_lines") ) then                  ; number of plot-lines on one sheet
54      no_lines = 2
55      if (parameter(19) .NE. "2") then
56         no_lines = stringtointeger(parameter(19)) 
57      end if
58   end if
59   if ( .not. isvar("combine") ) then                   ; color of lines
60      combine = 0
61      if (parameter(23) .NE. "0") then
62         combine = stringtointeger(parameter(23))
63         if (stringtointeger(parameter(23)) .NE. 1) then
64            print(" ")
65            print("Please set 'combine' to 0 or 1")
66            print(" ")
67            exit
68         end if
69      end if
70   end if
71   if (combine .EQ. 1) then
72      if( .not. isvar("c_var") ) then
[161]73         if (parameter(27) .EQ. "c_variables") then
74            print(" ")
75            print("Please select variables for overlaying ('c_var')")
76            print(" ")
77            exit
78         else
[154]79            c_var=parameter(27)
80         end if
81      end if
82   end if
83   if ( .not. isvar("black") ) then                     ; color of lines
84      black = 0
85      if (parameter(31) .NE. "0") then
86         black = stringtointeger(parameter(31))
87         if (stringtointeger(parameter(31)) .NE. 1) then
88            print(" ")
89            print("Please set 'black' to 0 or 1")
90            print(" ")
91            exit
92         end if
93      end if
94   end if
95   if ( .not. isvar("dash") ) then                      ; pattern of lines
96      dash = 0
97      if (parameter(29) .NE. "0") then
98         dash = stringtointeger(parameter(29))
99         if (stringtointeger(parameter(29)) .NE. 1) then
100            print(" ")
101            print("Please set 'dash' to 0 or 1")
102            print(" ")
103            exit
104         end if 
105      end if
106   end if
[161]107   if ( .not. isvar("over") ) then                      ; switches overlaying plots on
108      over = 0
[162]109      if (stringtointeger(parameter(37)) .NE. 0) then
110         over = stringtointeger(parameter(37))
111         if (stringtointeger(parameter(37)) .NE. 1) then
[161]112            print(" ")
113            print("Please set 'over' to 0 or 1")
114            print(" ")
115            exit
116         end if   
117      end if
118   end if
119 
[154]120   ; ***************************************************
121   ; open input file
122   ; ***************************************************
123
124   f=addfile( file_in,"r")
125   
[161]126   vNam = getfilevarnames(f)
[154]127   print(" ")
128   print("Variable on netCDF file: " + vNam)
129   print(" ")
[161]130   dim = dimsizes(vNam)
131   if (dim .EQ. 0) then
132      print(" ")
133      print("There are no data on file")
134      print(" ")
135   end if
136
137   do varn = dim-1,0,1
138      if ( isStrSubset( vNam(varn), "time") .OR. isStrSubset( vNam(varn), "NORM")) then
139         varn=varn-1
140         continue
141      end if
142      if (vNam(varn) .EQ. "u")
143         z_u = f->zu
144         break
145      else
146         if (vNam(varn) .EQ. "v")then
147            z_u = f->zv
148            break
149         else
150            if(vNam(varn) .EQ. "pt")then
151               z_u = f->zpt
152               break
153            else
154               if(vNam(varn) .EQ. "vpt")then
155                  z_u = f->zvpt
156                  break
157               else
158                  if(vNam(varn) .EQ. "lpt")then
159                     z_u = f->zlpt
160                     break
161                  else   
162                     if(vNam(varn) .EQ. "q")then
163                        z_u = f->zq
164                        break
165                     else
166                        if(vNam(varn) .EQ. "qv")then
167                           z_u = f->zqv
168                           break
169                        else
170                           if(vNam(varn) .EQ. "ql")then
171                              z_u = f->zql
172                              break
173                           else
174                              if(vNam(varn) .EQ. "rho")then
175                                 z_u = f->zrho
176                                 break
177                              else
178                                 if(vNam(varn) .EQ. "s")then
179                                    z_u = f->zs
180                                    break
181                                 else
182                                    if(vNam(varn) .EQ. "sa")then
183                                       z_u = f->zsa
184                                       break
185                                    else
186                                       if(vNam(varn) .EQ. "e")then
187                                          z_u = f->ze
188                                          break
189                                       else
190                                          if(vNam(varn) .EQ. "es")then
191                                             z_u = f->zes
192                                             break
193                                          else
194                                             if(vNam(varn) .EQ. "km")then
195                                                z_u = f->zkm
196                                                break
197                                             else
198                                                if(vNam(varn) .EQ. "kh")then
199                                                   z_u = f->zkh
200                                                   break
201                                                else
202                                                   if(vNam(varn) .EQ. "l")then
203                                                      z_u = f->zl
204                                                      break
205                                                   else
206                                                      if(vNam(varn) .EQ. "us2")then
207                                                         z_u = f->zus2
208                                                         break
209                                                      else
210                                                         if(vNam(varn) .EQ. "vs2")then
211                                                            z_u = f->zvs2
212                                                            break
213                                                         else
214                                                            if(vNam(varn) .EQ. "pts2")then
215                                                               z_u = f->zpts2
216                                                               break
217                                                            else
218                                                               if(vNam(varn) .EQ. "wsususodz")then
219                                                                  z_u = f->zwsususodz
220                                                                  break
221                                                               else
222                                                                  if(vNam(varn) .EQ. "wspsodz")then
223                                                                     z_u = f->zwspsodz
224                                                                     break
225                                                                  else
226                                                                     if(vNam(varn) .EQ. "wpeodz")then
227                                                                        z_u = f->zwpeodz
228                                                                        break                                                                       
229                                                                     end if
230                                                                  end if
231                                                               end if
232                                                            end if
233                                                         end if
234                                                      end if
235                                                   end if
236                                                end if
237                                             end if
238                                          end if
239                                       end if
240                                    end if
241                                 end if
242                              end if
243                           end if
244                        end if
245                     end if
246                  end if
247               end if
248            end if
249         end if
250      end if
251      varn=varn-1
252   end do
253
254   do varn=dim-1,0,1
255      if ( isStrSubset( vNam(varn), "time") .OR. isStrSubset( vNam(varn), "NORM")) then
256         varn=varn-1
257         continue
258      end if
259      if (vNam(varn) .EQ. "w")
260         z_w = f->zw
261         break
262      else
263         if (vNam(varn) .EQ. "wpup")then
264            z_w = f->zwpup
265            break
266         else
267            if(vNam(varn) .EQ. "wsus")then
268               z_w = f->zwsus
269               break
270            else
271               if(vNam(varn) .EQ. "wu")then
272                  z_w = f->zwu
273                  break
274               else
275                  if(vNam(varn) .EQ. "wpvp")then
276                     z_w = f->zwpvp
277                     break
278                  else   
279                     if(vNam(varn) .EQ. "wsvs")then
280                        z_w = f->zwsvs
281                        break
282                     else
283                        if(vNam(varn) .EQ. "wv")then
284                           z_w = f->zwv
285                           break
286                        else
287                           if(vNam(varn) .EQ. "wptpp")then
288                              z_w = f->zwptpp
289                              break
290                           else
291                              if(vNam(varn) .EQ. "wspts")then
292                                 z_w = f->zwspts
293                                 break
294                              else
295                                 if(vNam(varn) .EQ. "wpt")then
296                                    z_w = f->zwpt
297                                    break
298                                 else
299                                    if(vNam(varn) .EQ. "wsptsBC")then
300                                       z_w = f->zwsptsBC
301                                       break
302                                    else
303                                       if(vNam(varn) .EQ. "wptBC")then
304                                          z_w = f->zwptBC
305                                          break
306                                       else
307                                          if(vNam(varn) .EQ. "wpvptp")then
308                                             z_w = f->zwpvptp
309                                             break
310                                          else
311                                             if(vNam(varn) .EQ. "wsvpts")then
312                                                z_w = f->zwsvpts
313                                                break
314                                             else
315                                                if(vNam(varn) .EQ. "wvpt")then
316                                                   z_w = f->zwvpt
317                                                   break
318                                                else
319                                                   if(vNam(varn) .EQ. "wpqp")then
320                                                      z_w = f->zwpqp
321                                                      break
322                                                   else
323                                                      if(vNam(varn) .EQ. "wsqs")then
324                                                         z_w = f->zwsqs
325                                                         break
326                                                      else
327                                                         if(vNam(varn) .EQ. "wq")then
328                                                            z_w = f->zwq
329                                                            break
330                                                         else
331                                                            if(vNam(varn) .EQ. "wpqvp")then
332                                                               z_w = f->zwpqvp
333                                                               break
334                                                            else
335                                                               if(vNam(varn) .EQ. "wsqvs")then
336                                                                  z_w = f->zwsqvs
337                                                                  break
338                                                               else
339                                                                  if(vNam(varn) .EQ. "wqv")then
340                                                                     z_w = f->zwqv
341                                                                     break
342                                                                  else
343                                                                     if(vNam(varn) .EQ. "wpsp")then
344                                                                        z_w = f->zwpsp
345                                                                        break
346                                                                     else
347                                                                        if(vNam(varn) .EQ. "wsss")then
348                                                                           z_w = f->zwsss
349                                                                           break
350                                                                        else
351                                                                           if(vNam(varn) .EQ. "ws")then
352                                                                              z_w = f->zws
353                                                                              break
354                                                                           else
355                                                                              if(vNam(varn) .EQ. "wpsap")then
356                                                                                 z_w = f->zwpsap
357                                                                                 break
358                                                                              else
359                                                                                 if(vNam(varn) .EQ. "wssas")then
360                                                                                    z_w = f->zwssas
361                                                                                    break
362                                                                                 else
363                                                                                    if(vNam(varn) .EQ. "wsa")then
364                                                                                       z_w = f->zwsa
365                                                                                       break
366                                                                                    else
367                                                                                       if(vNam(varn) .EQ. "wses")then
368                                                                                          z_w = f->zwses
369                                                                                          break
370                                                                                       else
371                                                                                          if(vNam(varn) .EQ. "ws2")then
372                                                                                             z_w = f->zws2
373                                                                                             break
374                                                                                          else
375                                                                                             if(vNam(varn) .EQ. "ws3")then
376                                                                                                z_w = f->zws3
377                                                                                                break
378                                                                                             else
379                                                                                                if(vNam(varn) .EQ. "Sw")then
380                                                                                                   z_w = f->zSw
381                                                                                                   break
382                                                                                                else
383                                                                                                   if(vNam(varn) .EQ. "ws2pts")then
384                                                                                                      z_w = f->zws2pts
385                                                                                                      break
386                                                                                                   else
387                                                                                                      if(vNam(varn) .EQ. "wspts2")then
388                                                                                                         z_w = f->zwspts2
389                                                                                                         break                                           
390                                                                                                      end if
391                                                                                                   end if
392                                                                                                end if
393                                                                                             end if
394                                                                                          end if
395                                                                                       end if
396                                                                                    end if
397                                                                                 end if
398                                                                              end if
399                                                                           end if
400                                                                        end if   
401                                                                     end if
402                                                                  end if
403                                                               end if
404                                                            end if
405                                                         end if
406                                                      end if
407                                                   end if
408                                                end if
409                                             end if
410                                          end if
411                                       end if
412                                    end if
413                                 end if
414                              end if
415                           end if
416                        end if
417                     end if
418                  end if
419               end if
420            end if
421         end if
422      end if
423      varn=varn-1
424   end do
425   if ( .not. isvar("z_u") ) then
426      zu = 0
427   else
428      zu = 1
429   end if
430   if ( .not. isvar("z_w") ) then
431      zw = 0
432   else
433      zw = 1
434   end if
435
436   if (zu .EQ. 0 .AND. zw .EQ. 0) then
437      do varn=0,dim-1     
438         if ( isStrSubset( vNam(varn), "time") .OR. isStrSubset( vNam(varn), "NORM")) then
439            check = False
440         else
441            if (.not. isvar("var")) then
442               check = True
443               if (parameter(21) .NE. "variables") then
444                  var=parameter(21)
445                  check = isStrSubset( var,","+vNam(varn)+"," )
446               end if
447            else         
448               check = isStrSubset( var,","+vNam(varn)+"," )
449            end if
450         end if
451         if (check)
452            z = f->$vNam(varn+1)$
453            dimz = dimsizes(z)
454            break
455         end if   
456      end do
457   end if
[162]458   if (isvar("z_u") ) then
459      dimz  = dimsizes(z_u)
460   else
461      if (isvar("z_w"))then
462         dimz  = dimsizes(z_w)
463      end if
464   end if
[154]465   t_all = f->time
466   nt    = dimsizes(t_all)
[162]467   delta_t=t_all(nt-1)/nt
[161]468 
[154]469   ; ****************************************************       
470   ; start of time step and different types of mistakes that could be done
471   ; ****************************************************
472
473   if ( .not. isvar("start_time_step") ) then           
[162]474      start_time_step=t_all(1)/3600
475      if (parameter(13) .NE. "t(0)") then
476         if (stringtodouble(parameter(13)) .GT. t_all(nt-1)/3600)
[154]477            print(" ")
[162]478            print("'start_time_step' = "+ parameter(13) +"h is greater than last time step = " + t_all(nt-1)+"s = "+t_all(nt-1)/3600+"h")
[154]479            print(" ")
[162]480            print("Please select another 'start_time_step'")
481            print(" ")
[154]482            exit
483         end if
[162]484         if (stringtofloat(parameter(13)) .LE. t_all(0)/3600)
[154]485            print(" ")
[162]486            print("'start_time_step' = "+ parameter(13) +"h is equal or lower than first time step = " + t_all(0)+"s = "+t_all(0)/3600+"h")
[154]487            print(" ")
[162]488            print("Please start profiles at least with second time step = "+t_all(1)+"s = "+t_all(1)/3600+"h")
489            print(" ")
[154]490            exit
491         end if
[162]492         start_time_step=stringtodouble(parameter(13))
[154]493      end if
494   else
[162]495      if (start_time_step .GT. t_all(nt-1)/3600)
[154]496         print(" ")
[162]497         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]498         print(" ")
[162]499         print("Please select another 'start_time_step'")
500         print(" ")
[154]501         exit
502      end if
[162]503      if (start_time_step .LE. t_all(0)/3600)
[154]504         print(" ")
[162]505         print("'start_time_step' = "+ start_time_step +"h is equal or lower than first time step = " + t_all(0)+"s = "+t_all(0)/3600+"h")
[154]506         print(" ")
[162]507         print("Please start profiles at least with second time step = "+t_all(1)+"s = "+t_all(1)/3600+"h")
508         print(" ")
[154]509         exit
510      end if
511   end if
[162]512   start_time_step = start_time_step*3600
513   if (start_time_step .GT. t_all(0) .AND. start_time_step .LT. t_all(1)+delta_t/2)then
514      st=1
515   end if
516   do i=2,nt-1     
517      if (start_time_step .GE. t_all(i)-delta_t/2 .AND. start_time_step .LT. t_all(i)+delta_t/2)then
518         st=i
519         break
520      end if
521   end do
522 
[154]523   ; ****************************************************
524   ; end of time step and different types of mistakes that could be done
525   ; ****************************************************
526
527   if ( .not. isvar("end_time_step") ) then             
[162]528      end_time_step = t_all(nt-1)/3600
529      if (parameter(15) .NE. "t(end)") then
530         if (stringtodouble(parameter(15)) .GT. t_all(nt-1)/3600)
[154]531            print(" ")
[162]532            print("'end_time_step' = "+ parameter(15) +"h is greater than last time step = " + t_all(nt-1)+"s = "+t_all(nt-1)/3600+"h")
[154]533            print(" ")
[162]534            print("Please select another 'end_time_step'") 
535            print(" ")
[154]536            exit
537         end if
[162]538         if (stringtodouble(parameter(15)) .LT. start_time_step/3600)
[154]539            print(" ")
[162]540            print("'end_time_step' = "+ parameter(15) +"h is lower than 'start_time_step' = "+parameter(13)+"h")
[154]541            print(" ")
[162]542            print("Please select another 'start_time_step' or 'end_time_step'")
543            print(" ")
[154]544            exit
545         end if
[162]546         end_time_step = stringtodouble(parameter(15))
[154]547      end if   
548   else
[162]549      if (end_time_step .GT. t_all(nt-1)/3600)
[154]550         print(" ")
[162]551         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]552         print(" ")
[162]553         print("Please select another 'end_time_step'") 
554         print(" ")
[154]555         exit
556      end if
[162]557      if (end_time_step .LT. start_time_step/3600)
[154]558         print(" ")
[162]559         print("'end_time_step' = "+ end_time_step +"h is lower than 'start_time_step' = "+start_time_step+"h")
[154]560         print(" ")
[162]561         print("Please select another 'start_time_step' or 'end_time_step'")
562         print(" ")
[154]563         exit
564      end if
[162]565   end if
566   end_time_step = end_time_step*3600
567   if (end_time_step .GT. t_all(0) .AND. end_time_step .LT. t_all(1)+delta_t/2)then
568      et=1
569   end if
570   do i=2,nt-1     
571      if (end_time_step .GE. t_all(i)-delta_t/2 .AND. end_time_step .LT. t_all(i)+delta_t/2)then
572         et=i
573         break
[154]574      end if
[162]575   end do
[154]576
[162]577   delete(start_time_step)
578   start_time_step=round(st,3)
579   delete(end_time_step)
580   end_time_step=round(et,3)
581
[154]582   ; ****************************************************
583   ; set up legend and colors
584   ; ****************************************************
585   
[161]586   legend_label=new(nt,double)
[154]587   do p=start_time_step,end_time_step
588      legend_label(p-start_time_step)=t_all(p)
589   end do
590   
[162]591   np = end_time_step-start_time_step+1 
[154]592   if ( black .eq. 0 ) then
593      res=True     
594      res@xyLineColors = ispan(2,237,235/np)
595   end if
596
597   ; ***************************************************
598   ; set up recourses
599   ; ***************************************************
600
601   res@gsnDraw                 = False
602   res@gsnFrame                = False
603   res@gsnPaperOrientation     = "portrait"
604   res@gsnPaperWidth           = 8.27
605   res@gsnPaperHeight          = 11.69
606   res@gsnPaperMargin          = 0.79
607   res@txFont                  = "helvetica"
608   res@tiMainFont              = "helvetica"
609   res@tiXAxisFont             = "helvetica"
610   res@tiYAxisFont             = "helvetica"
611   res@tmXBLabelFont           = "helvetica"
612   res@tmYLLabelFont           = "helvetica"
613   res@lgLabelFont             = "helvetica"
614   res@tmLabelAutoStride       = True
615   res@pmLegendDisplayMode     = "Always"
616   res@pmLegendSide            = "Top"
617   res@xyExplicitLegendLabels  = legend_label
[161]618   res@pmLegendParallelPosF    = 1.15
619   res@pmLegendOrthogonalPosF  = -1.0
[154]620   res@pmLegendWidthF          = 0.12
621   res@pmLegendHeightF         = 0.3
622   res@lgLabelFontHeightF     = .02
[161]623   res@txFontHeightF      = 0.02
624   res@tiXAxisFontHeightF = 0.02
625   res@tiYAxisFontHeightF = 0.02
626   res@tiXAxisString      = " "   
627   res@tiYAxisString      = "Height [z]"
628   
[154]629   if ( dash .eq. 0 ) then
630      res@xyMonoDashPattern       = True 
631   end if
632
633   resP                        = True
634   resP@txFont                 = "helvetica"
635   resP@txString               = f@title
636   resP@txFuncCode             = "~"
637   resP@txFontHeightF          = 0.014
638
639   ; ***************************************************
[161]640   ; set up graphics for plot
[154]641   ; ***************************************************
[161]642
643   plot = new(dim,graphic)
644   plot_ = new(dim,graphic)
645
[154]646   if (combine .EQ. 1) then
[161]647      if ( .not. isvar("number_comb") ) then           
648         if (parameter(25) .EQ. "0") then
[154]649            print(" ")
[161]650            print("Please set 'number_comb' to 2 or 3 if you would like to overlay 2 or 3 variables in one plot")
[154]651            print(" ")
652            exit
[161]653         else
654            number_comb=stringtointeger(parameter(25))
655            plot_o = new(number_comb,graphic)   
[154]656         end if
[161]657      else
658         if(number_comb .EQ. 2 .OR. number_comb .EQ. 3) then
659            plot_o = new(number_comb,graphic)     
660         else
661            print(" ")
662            print("Please set 'number_comb' to 2 or 3 if you would like to overlay 2 or 3 variables in one plot")
663            print(" ")
664            exit
665         end if   
[154]666      end if
[161]667      label=new(number_comb,string)
668      color_o=new(number_comb,integer)
669      mini=new(number_comb,float)
670      maxi=new(number_comb,float)
[154]671   end if
672
673   wks=gsn_open_wks(format_out,file_out)
674   gsn_define_colormap(wks,"rainbow+white")
675 
676   ; ***************************************************
[161]677   ; indicate plot number
[154]678   ; ***************************************************
[161]679   
[154]680   if (combine .EQ. 1) then
[161]681      n = 1
[154]682   else
683      n = 0
[161]684   end if
685
[154]686   ; ***************************************************
687   ; set up minimum and maximum height
688   ; ***************************************************
689
690   if (.not. isvar("min_z"))
691      min_z=0
692      if (stringtointeger(parameter(33)) .NE. 0) then
[161]693         if (stringtointeger(parameter(33)) .GE. max(z_u) ) then
[154]694            print(" ")
[161]695            print("Minimum of height ('min_z'="+stringtointeger(parameter(33))+") is greater than available heights (="+max(z_u)+")")
[154]696            print(" ")
697            exit
698         end if
699         if (stringtointeger(parameter(33)) .LT. 0 ) then
700            print(" ")
701            print("Begin minimum of height 'min_z' with 0")
702            print(" ")
703            exit
704         end if
705         min_z=stringtointeger(parameter(33))
706      end if
707   else
[161]708      if (min_z .GE. max(z_u) ) then
[154]709         print(" ")
[161]710         print("Minimum of height ('min_z'="+min_z+") is greater than available heights (="+max(z_u)+")")
[154]711         print(" ")
712         exit
713      end if
714      if (min_z .LT. 0 ) then
715         print(" ")
716         print("Begin minimum of height 'min_z' with 0")
717         print(" ")
718         exit
719      end if
720   end if
721
722   if (.not. isvar("max_z"))
[161]723      max_z=max(z_u)
724      if ((parameter(35)) .NE. "max(z_u)") then
725         if (stringtofloat(parameter(35)) .GE. max(z_u) ) then
[154]726            print(" ")
[161]727            print("Maximum of height ('max_z'="+parameter(35)+") is greater than available heights (="+max(z_u)+")")
[154]728            print(" ")
729            exit
730         end if
731         if (stringtointeger(parameter(35)) .LE. 0 ) then
732            print(" ")
733            print("Maximum of height 'max_z' should be at least 1")
734            print(" ")
735            exit
736         end if
737         max_z=stringtointeger(parameter(35))
738      end if
739   else
740      if (max_z .GE. max(z_pr) ) then
741         print(" ")
[161]742         print("Maximum of height ('max_z'="+max_z+") is greater than available heights (="+max(z_u)+")")
[154]743         print(" ")
744         exit
745      end if
746      if (max_z .LE. 0 ) then
747         print(" ")
748         print("Maximum of height 'max_z' should be at least 1")
749         print(" ")
750         exit
751      end if
752   end if
753
754   ; ***************************************************
755   ; read data and create plots
756   ; ***************************************************
757     
758   do ti = start_time_step, end_time_step
759      if( t_all(ti) .lt. 10^36) then
760         start_time_step = ti
761         break
762      end if
763   end do 
[161]764 
765   data   = new((/dim,(end_time_step-start_time_step)+1,dimz/),float)
766   data_0 = new((/(end_time_step-start_time_step)+1,dimz/),float)
767   data_0 = 0.0
768   t      = new((/(end_time_step-start_time_step)+1,dimz/),float)
769   t      = 0.0
770   unit   = new(dim,string)
[157]771
[161]772   if (over .EQ. 1) then
773      plot_u         = gsn_csm_xy(wks,t,data_0(:,:),res)
774      miniu = 1.E27
775      maxiu =-1.E27
776      plot_v         = gsn_csm_xy(wks,t,data_0(:,:),res)
777      miniv = 1.E27
778      maxiv =-1.E27
779      plot_w         = gsn_csm_xy(wks,t,data_0(:,:),res)
780      miniw = 1.E27
781      maxiw =-1.E27
782      plot_pt        = gsn_csm_xy(wks,t,data_0(:,:),res)
783      minipt = 1.E27
784      maxipt =-1.E27
785      plot_vpt       = gsn_csm_xy(wks,t,data_0(:,:),res)
786      minivpt = 1.E27
787      maxivpt =-1.E27
788      plot_lpt       = gsn_csm_xy(wks,t,data_0(:,:),res)
789      minilpt = 1.E27
790      maxilpt =-1.E27
791      plot_q         = gsn_csm_xy(wks,t,data_0(:,:),res)
792      miniq = 1.E27
793      maxiq =-1.E27
794      plot_qv        = gsn_csm_xy(wks,t,data_0(:,:),res)
795      miniqv = 1.E27
796      maxiqv =-1.E27
797      plot_ql        = gsn_csm_xy(wks,t,data_0(:,:),res)
798      miniql = 1.E27
799      maxiql =-1.E27
800      plot_rho       = gsn_csm_xy(wks,t,data_0(:,:),res)
801      plot_s         = gsn_csm_xy(wks,t,data_0(:,:),res)
802      plot_sa        = gsn_csm_xy(wks,t,data_0(:,:),res)
803      plot_e         = gsn_csm_xy(wks,t,data_0(:,:),res)
804      minie = 1.E27
805      maxie =-1.E27
806      plot_es        = gsn_csm_xy(wks,t,data_0(:,:),res)
807      minie = 1.E27
808      maxie =-1.E27
809      plot_km        = gsn_csm_xy(wks,t,data_0(:,:),res)
810      minie = 1.E27
811      maxie =-1.E27
812      plot_kh        = gsn_csm_xy(wks,t,data_0(:,:),res)
813      minie = 1.E27
814      maxie =-1.E27
815      plot_l         = gsn_csm_xy(wks,t,data_0(:,:),res)     
816      plot_wpup      = gsn_csm_xy(wks,t,data_0(:,:),res)
817      miniwpup = 1.E27
818      maxiwpup =-1.E27
819      plot_wsus      = gsn_csm_xy(wks,t,data_0(:,:),res)
820      miniwsus = 1.E27
821      maxiwsus =-1.E27
822      plot_wu        = gsn_csm_xy(wks,t,data_0(:,:),res)
823      miniwu = 1.E27
824      maxiwu =-1.E27
825      plot_wpvp      = gsn_csm_xy(wks,t,data_0(:,:),res)
826      miniwpvp = 1.E27
827      maxiwpvp =-1.E27
828      plot_wsvs      = gsn_csm_xy(wks,t,data_0(:,:),res)
829      miniwsvs = 1.E27
830      maxiwsvs =-1.E27
831      plot_wv        = gsn_csm_xy(wks,t,data_0(:,:),res)
832      miniwv = 1.E27
833      maxiwv =-1.E27
834      plot_wpptp     = gsn_csm_xy(wks,t,data_0(:,:),res)
835      miniwpptp = 1.E27
836      maxiwpptp =-1.E27
837      plot_wspts     = gsn_csm_xy(wks,t,data_0(:,:),res)
838      miniwspts = 1.E27
839      maxiwspts =-1.E27
840      plot_wpt       = gsn_csm_xy(wks,t,data_0(:,:),res)
841      miniwpt = 1.E27
842      maxiwpt =-1.E27
843      plot_wsptsBC   = gsn_csm_xy(wks,t,data_0(:,:),res)
844      miniwsptsBC = 1.E27
845      maxiwsptsBC =-1.E27
846      plot_wptBC     = gsn_csm_xy(wks,t,data_0(:,:),res)
847      miniwptBC = 1.E27
848      maxiwptBC =-1.E27
849      plot_wpvptp    = gsn_csm_xy(wks,t,data_0(:,:),res)
850      miniwpvptp = 1.E27
851      maxiwpvptp =-1.E27
852      plot_wsvpts    = gsn_csm_xy(wks,t,data_0(:,:),res)
853      miniwsvpts = 1.E27
854      maxiewsvpts=-1.E27
855      plot_wvpt      = gsn_csm_xy(wks,t,data_0(:,:),res)
856      miniwvpt = 1.E27
857      maxiwvpt =-1.E27
858      plot_wpqp      = gsn_csm_xy(wks,t,data_0(:,:),res)
859      miniwpqp = 1.E27
860      maxiwpqp =-1.E27
861      plot_wsqs      = gsn_csm_xy(wks,t,data_0(:,:),res)
862      miniwsqs = 1.E27
863      maxiwsqs =-1.E27
864      plot_wq        = gsn_csm_xy(wks,t,data_0(:,:),res)
865      miniwq = 1.E27
866      maxiwq =-1.E27
867      plot_wpqvp     = gsn_csm_xy(wks,t,data_0(:,:),res)
868      miniwpqvp = 1.E27
869      maxiwpqvp =-1.E27
870      plot_wsqvs     = gsn_csm_xy(wks,t,data_0(:,:),res)
871      miniwsqvs = 1.E27
872      maxiwsqvs =-1.E27
873      plot_wqv       = gsn_csm_xy(wks,t,data_0(:,:),res)
874      miniwqv = 1.E27
875      maxiwqv =-1.E27
876      plot_wpsp      = gsn_csm_xy(wks,t,data_0(:,:),res)
877      miniwpsp = 1.E27
878      maxiwpsp =-1.E27
879      plot_wsss      = gsn_csm_xy(wks,t,data_0(:,:),res)
880      miniwsss = 1.E27
881      maxiwsss =-1.E27
882      plot_ws        = gsn_csm_xy(wks,t,data_0(:,:),res)
883      miniws = 1.E27
884      maxiws =-1.E27
885      plot_wpsap     = gsn_csm_xy(wks,t,data_0(:,:),res)
886      miniwpsap = 1.E27
887      maxiwpsap =-1.E27
888      plot_wssas     = gsn_csm_xy(wks,t,data_0(:,:),res)
889      miniwssas = 1.E27
890      maxiwssas =-1.E27
891      plot_wsa       = gsn_csm_xy(wks,t,data_0(:,:),res)
892      miniwsa = 1.E27
893      maxiwsa =-1.E27
894      plot_wses      = gsn_csm_xy(wks,t,data_0(:,:),res)
895      plot_us2       = gsn_csm_xy(wks,t,data_0(:,:),res)
896      minius2 = 1.E27
897      maxius2 =-1.E27
898      plot_vs2       = gsn_csm_xy(wks,t,data_0(:,:),res)
899      minivs2 = 1.E27
900      maxivs2 =-1.E27
901      plot_ws2       = gsn_csm_xy(wks,t,data_0(:,:),res)
902      miniws2 = 1.E27
903      maxiws2 =-1.E27
904      plot_pts2      = gsn_csm_xy(wks,t,data_0(:,:),res)
905      plot_ws3       = gsn_csm_xy(wks,t,data_0(:,:),res)
906      plot_Sw        = gsn_csm_xy(wks,t,data_0(:,:),res)
907      plot_ws2pts    = gsn_csm_xy(wks,t,data_0(:,:),res)
908      plot_wspts2    = gsn_csm_xy(wks,t,data_0(:,:),res)
909      plot_wsususodz = gsn_csm_xy(wks,t,data_0(:,:),res)
910      miniwsususodz = 1.E27
911      maxiwsususodz =-1.E27
912      plot_wspsodz   = gsn_csm_xy(wks,t,data_0(:,:),res)
913      miniwspsodz = 1.E27
914      maxiwspsodz =-1.E27
915      plot_wpeodz    = gsn_csm_xy(wks,t,data_0(:,:),res)
916      miniwpeodz = 1.E27
917      maxiwpeodz =-1.E27
918   end if
919 
920   n_o=0
[162]921   count_var=0
[161]922   do varn = 0,dim-1
923       
924      temp = f->$vNam(varn)$
925     
926      if ( isStrSubset( vNam(varn), "time") .OR. isStrSubset( vNam(varn), "NORM")) then
[154]927         check = False
928      else
929         if (.not. isvar("var")) then
930            check = True
931            if (parameter(21) .NE. "variables") then
932               var=parameter(21)
[161]933               check = isStrSubset( var,","+vNam(varn)+"," )
[154]934            end if
935         else         
[161]936            check = isStrSubset( var,","+vNam(varn)+"," )
[154]937         end if
938      end if
[161]939
940      if (combine .EQ. 1) then         
941         com=isStrSubset(c_var,","+vNam(varn)+"," )     
942         if (com)                       
943            data(varn,:,:) = temp(start_time_step:end_time_step,0:dimz-1)
944            unit(varn) = temp@units
945            if (n_o .GT. number_comb-1) then
946               print(" ")
947               print("Please set 'number_comb' to the right number of overlaying variables ('c_var')")
948               print(" ")
949               exit
950            end if
951            mini(n_o)=min(data(varn,:,:))
952            maxi(n_o)=max(data(varn,:,:))
953            n_o=n_o+1
954         end if
955      end if
956
957      if(check) then
[162]958         count_var=count_var+1
959     
[161]960         z = f->$vNam(varn+1)$
961 
962         unit(varn) = temp@units
963         data(varn,:,:) = temp(start_time_step:end_time_step,0:dimz-1)
[154]964 
[161]965         if (over .EQ. 0) then 
966            res@gsnLeftString      = vNam(varn)
967            res@gsnRightString     = unit(varn)
968            res@trYMinF            = min_z
[162]969            res@trYMaxF            = max_z
970            if (.not. isvar("xs")) then
971               if (parameter(63) .NE. "x0") then
972                  res@trXMinF = stringtofloat(parameter(63))
973               else
974                  res@trXMinF            = min(data(varn,:,:))
975               end if
976            else
977               res@trXMinF            = xs
978            end if
979            if (.not. isvar("xe")) then
980               if (parameter(65) .NE. "xdim") then
981                  res@trXMaxF = stringtofloat(parameter(65))
982               else
983                  res@trXMaxF            = max(data(varn,:,:))
984               end if
985            else
986               res@trXMaxF            = xe 
987            end if                     
[161]988            plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res) 
989         end if       
990         
991            if (vNam(varn) .EQ. "u") then
992               miniu=min(data(varn,:,:))
993               maxiu=max(data(varn,:,:))
994               if (over .EQ. 1) then
995                  res@xyDashPattern  = 0
996                  plot_u = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
997               else
998                  res@gsnLeftString      = vNam(varn)
999                  res@gsnRightString     = unit(varn)
[162]1000                  if (.not. isvar("xs")) then
1001                     if (parameter(63) .NE. "x0") then
1002                        res@trXMinF = stringtofloat(parameter(63))
1003                     else
1004                        res@trXMinF            = miniu
1005                     end if
1006                  else
1007                     res@trXMinF            = xs
1008                  end if
1009                  if (.not. isvar("xe")) then
1010                     if (parameter(65) .NE. "xdim") then
1011                        res@trXMaxF = stringtofloat(parameter(65))
1012                     else
1013                        res@trXMaxF            = maxiu
1014                     end if
1015                  else
1016                     res@trXMaxF            = xe 
1017                  end if               
[161]1018                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res) 
1019               end if
1020            end if
1021            if (vNam(varn) .EQ. "v") then
1022               miniv=min(data(varn,:,:))
1023               maxiv=max(data(varn,:,:))
1024               if (over .EQ. 1) then
1025                  res@xyDashPattern  = 1
1026                  plot_v = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1027               else
1028                  res@gsnLeftString      = vNam(varn)
1029                  res@gsnRightString     = unit(varn)
[162]1030                  if (.not. isvar("xs")) then
1031                     if (parameter(63) .NE. "x0") then
1032                        res@trXMinF = stringtofloat(parameter(63))
1033                     else
1034                        res@trXMinF            = miniv
1035                     end if
1036                  else
1037                     res@trXMinF            = xs
1038                  end if
1039                  if (.not. isvar("xe")) then
1040                     if (parameter(65) .NE. "xdim") then
1041                        res@trXMaxF = stringtofloat(parameter(65))
1042                     else
1043                        res@trXMaxF            = maxiv
1044                     end if
1045                  else
1046                     res@trXMaxF            = xe 
1047                  end if               
[161]1048                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1049               end if 
1050            end if
1051            if (vNam(varn) .EQ. "w") then
1052               miniw=min(data(varn,:,:))
1053               maxiw=max(data(varn,:,:))
1054               if (over .EQ. 1) then
1055                  res@xyDashPattern  = 2
1056                  plot_w = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1057               else
1058                  res@gsnLeftString      = vNam(varn)
1059                  res@gsnRightString     = unit(varn)
[162]1060                  if (.not. isvar("xs")) then
1061                     if (parameter(63) .NE. "x0") then
1062                        res@trXMinF = stringtofloat(parameter(63))
1063                     else
1064                        res@trXMinF            = miniw
1065                     end if
1066                  else
1067                     res@trXMinF            = xs
1068                  end if
1069                  if (.not. isvar("xe")) then
1070                     if (parameter(65) .NE. "xdim") then
1071                        res@trXMaxF = stringtofloat(parameter(65))
1072                     else
1073                        res@trXMaxF            = maxiw
1074                     end if
1075                  else
1076                     res@trXMaxF            = xe 
1077                  end if           
[161]1078                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1079               end if   
1080            end if
[154]1081
[161]1082            if (vNam(varn) .EQ. "pt") then
1083               minipt=min(data(varn,:,:))
1084               maxipt=max(data(varn,:,:))
1085               if (over .EQ. 1) then
1086                  res@xyDashPattern  = 0
1087                  plot_pt = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1088               else
1089                  res@gsnLeftString      = vNam(varn)
1090                  res@gsnRightString     = unit(varn)
[162]1091                  if (.not. isvar("xs")) then
1092                     if (parameter(63) .NE. "x0") then
1093                        res@trXMinF = stringtofloat(parameter(63))
1094                     else
1095                        res@trXMinF            = minipt
1096                     end if
1097                  else
1098                     res@trXMinF            = xs
1099                  end if
1100                  if (.not. isvar("xe")) then
1101                     if (parameter(65) .NE. "xdim") then
1102                        res@trXMaxF = stringtofloat(parameter(65))
1103                     else
1104                        res@trXMaxF            = maxipt
1105                     end if
1106                  else
1107                     res@trXMaxF            = xe 
1108                  end if
[161]1109                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1110               end if 
1111            end if
1112            if (vNam(varn) .EQ. "vpt") then
1113               minivpt=min(data(varn,:,:))
1114               maxivpt=max(data(varn,:,:))
1115               if (over .EQ. 1) then
1116                  res@xyDashPattern  = 1
1117                  plot_vpt = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1118               else
1119                  res@gsnLeftString      = vNam(varn)
1120                  res@gsnRightString     = unit(varn)
[162]1121                  if (.not. isvar("xs")) then
1122                     if (parameter(63) .NE. "x0") then
1123                        res@trXMinF = stringtofloat(parameter(63))
1124                     else
1125                        res@trXMinF            = minivpt
1126                     end if
1127                  else
1128                     res@trXMinF            = xs
1129                  end if
1130                  if (.not. isvar("xe")) then
1131                     if (parameter(65) .NE. "xdim") then
1132                        res@trXMaxF = stringtofloat(parameter(65))
1133                     else
1134                        res@trXMaxF            = maxivpt
1135                     end if
1136                  else
1137                     res@trXMaxF            = xe 
1138                  end if
[161]1139                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1140               end if
1141            end if
1142            if (vNam(varn) .EQ. "lpt") then
1143               minilpt=min(data(varn,:,:))
1144               maxilpt=max(data(varn,:,:))
1145               if (over .EQ. 1) then
1146                  res@xyDashPattern  = 2
1147                  plot_lpt = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1148               else
1149                  res@gsnLeftString      = vNam(varn)
1150                  res@gsnRightString     = unit(varn)
[162]1151                  if (.not. isvar("xs")) then
1152                     if (parameter(63) .NE. "x0") then
1153                        res@trXMinF = stringtofloat(parameter(63))
1154                     else
1155                        res@trXMinF            = minilpt
1156                     end if
1157                  else
1158                     res@trXMinF            = xs
1159                  end if
1160                  if (.not. isvar("xe")) then
1161                     if (parameter(65) .NE. "xdim") then
1162                        res@trXMaxF = stringtofloat(parameter(65))
1163                     else
1164                        res@trXMaxF            = maxilpt
1165                     end if
1166                  else
1167                     res@trXMaxF            = xe 
1168                  end if
[161]1169                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1170               end if
1171            end if
1172
1173            if (vNam(varn) .EQ. "q") then
1174               miniq=min(data(varn,:,:))
1175               maxiq=max(data(varn,:,:))
1176               if (over .EQ. 1) then
1177                  res@xyDashPattern  = 0
1178                  plot_q = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1179               else
1180                  res@gsnLeftString      = vNam(varn)
1181                  res@gsnRightString     = unit(varn)
[162]1182                  if (.not. isvar("xs")) then
1183                     if (parameter(63) .NE. "x0") then
1184                        res@trXMinF = stringtofloat(parameter(63))
1185                     else
1186                        res@trXMinF            = minilq
1187                     end if
1188                  else
1189                     res@trXMinF            = xs
1190                  end if
1191                  if (.not. isvar("xe")) then
1192                     if (parameter(65) .NE. "xdim") then
1193                        res@trXMaxF = stringtofloat(parameter(65))
1194                     else
1195                        res@trXMaxF            = maxilq
1196                     end if
1197                  else
1198                     res@trXMaxF            = xe 
1199                  end if
[161]1200                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1201               end if
1202            end if
1203            if (vNam(varn) .EQ. "qv") then
1204               miniqv=min(data(varn,:,:))
1205               maxiqv=max(data(varn,:,:))
1206               if (over .EQ. 1) then
1207                  res@xyDashPattern  = 1
1208                  plot_qv = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1209               else
1210                  res@gsnLeftString      = vNam(varn)
1211                  res@gsnRightString     = unit(varn)
[162]1212                  if (.not. isvar("xs")) then
1213                     if (parameter(63) .NE. "x0") then
1214                        res@trXMinF = stringtofloat(parameter(63))
1215                     else
1216                        res@trXMinF            = minilqv
1217                     end if
1218                  else
1219                     res@trXMinF            = xs
1220                  end if
1221                  if (.not. isvar("xe")) then
1222                     if (parameter(65) .NE. "xdim") then
1223                        res@trXMaxF = stringtofloat(parameter(65))
1224                     else
1225                        res@trXMaxF            = maxilqv
1226                     end if
1227                  else
1228                     res@trXMaxF            = xe 
1229                  end if
[161]1230                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1231               end if
1232            end if
1233            if (vNam(varn) .EQ. "ql") then
1234               miniql=min(data(varn,:,:))
1235               maxiql=max(data(varn,:,:))
1236               if (over .EQ. 1) then
1237                  res@xyDashPattern  = 2
1238                  plot_ql = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1239               else
1240                  res@gsnLeftString      = vNam(varn)
1241                  res@gsnRightString     = unit(varn)
[162]1242                  if (.not. isvar("xs")) then
1243                     if (parameter(63) .NE. "x0") then
1244                        res@trXMinF = stringtofloat(parameter(63))
1245                     else
1246                        res@trXMinF            = miniql
1247                     end if
1248                  else
1249                     res@trXMinF            = xs
1250                  end if
1251                  if (.not. isvar("xe")) then
1252                     if (parameter(65) .NE. "xdim") then
1253                        res@trXMaxF = stringtofloat(parameter(65))
1254                     else
1255                        res@trXMaxF            = maxiql
1256                     end if
1257                  else
1258                     res@trXMaxF            = xe 
1259                  end if
[161]1260                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1261               end if
1262            end if
1263
1264            if (vNam(varn) .EQ. "e") then
1265               minie=min(data(varn,:,:))
1266               maxie=max(data(varn,:,:))
1267               if (over .EQ. 1) then
1268                  res@xyDashPattern  = 0
1269                  plot_e = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1270               else
1271                  res@gsnLeftString      = vNam(varn)
1272                  res@gsnRightString     = unit(varn)
[162]1273                  if (.not. isvar("xs")) then
1274                     if (parameter(63) .NE. "x0") then
1275                        res@trXMinF = stringtofloat(parameter(63))
1276                     else
1277                        res@trXMinF            = minie
1278                     end if
1279                  else
1280                     res@trXMinF            = xs
1281                  end if
1282                  if (.not. isvar("xe")) then
1283                     if (parameter(65) .NE. "xdim") then
1284                        res@trXMaxF = stringtofloat(parameter(65))
1285                     else
1286                        res@trXMaxF            = maxie
1287                     end if
1288                  else
1289                     res@trXMaxF            = xe 
1290                  end if
[161]1291                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1292               end if
1293            end if
1294            if (vNam(varn) .EQ. "es") then
1295               minies=min(data(varn,:,:))
1296               maxies=max(data(varn,:,:))
1297               if (over .EQ. 1) then
1298                  res@xyDashPattern  = 1
1299                  plot_es = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1300               else
1301                  res@gsnLeftString      = vNam(varn)
1302                  res@gsnRightString     = unit(varn)
[162]1303                  if (.not. isvar("xs")) then
1304                     if (parameter(63) .NE. "x0") then
1305                        res@trXMinF = stringtofloat(parameter(63))
1306                     else
1307                        res@trXMinF            = minies
1308                     end if
1309                  else
1310                     res@trXMinF            = xs
1311                  end if
1312                  if (.not. isvar("xe")) then
1313                     if (parameter(65) .NE. "xdim") then
1314                        res@trXMaxF = stringtofloat(parameter(65))
1315                     else
1316                        res@trXMaxF            = maxies
1317                     end if
1318                  else
1319                     res@trXMaxF            = xe 
1320                  end if
[161]1321                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1322               end if
1323            end if
1324
1325            if (vNam(varn) .EQ. "km") then
1326               minikm=min(data(varn,:,:))
1327               maxikm=max(data(varn,:,:))
1328               if (over .EQ. 1) then
1329                  res@xyDashPattern  = 0
1330                  plot_km = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1331               else
1332                  res@gsnLeftString      = vNam(varn)
1333                  res@gsnRightString     = unit(varn)
[162]1334                  if (.not. isvar("xs")) then
1335                     if (parameter(63) .NE. "x0") then
1336                        res@trXMinF = stringtofloat(parameter(63))
1337                     else
1338                        res@trXMinF            = minikm
1339                     end if
1340                  else
1341                     res@trXMinF            = xs
1342                  end if
1343                  if (.not. isvar("xe")) then
1344                     if (parameter(65) .NE. "xdim") then
1345                        res@trXMaxF = stringtofloat(parameter(65))
1346                     else
1347                        res@trXMaxF            = maxikm
1348                     end if
1349                  else
1350                     res@trXMaxF            = xe 
1351                  end if
[161]1352                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1353               end if
1354            end if
1355            if (vNam(varn) .EQ. "kh") then
1356               minikh=min(data(varn,:,:))
1357               maxikh=max(data(varn,:,:))
1358               if (over .EQ. 1) then
1359                  res@xyDashPattern  = 1
1360                  plot_kh = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1361               else
1362                  res@gsnLeftString      = vNam(varn)
1363                  res@gsnRightString     = unit(varn)
[162]1364                  if (.not. isvar("xs")) then
1365                     if (parameter(63) .NE. "x0") then
1366                        res@trXMinF = stringtofloat(parameter(63))
1367                     else
1368                        res@trXMinF            = minikh
1369                     end if
1370                  else
1371                     res@trXMinF            = xs
1372                  end if
1373                  if (.not. isvar("xe")) then
1374                     if (parameter(65) .NE. "xdim") then
1375                        res@trXMaxF = stringtofloat(parameter(65))
1376                     else
1377                        res@trXMaxF            = maxikh
1378                     end if
1379                  else
1380                     res@trXMaxF            = xe 
1381                  end if
[161]1382                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1383               end if
1384            end if
1385
1386            if (vNam(varn) .EQ. "wpup") then
1387               miniwpup=min(data(varn,:,:))
1388               maxiwpup=max(data(varn,:,:))
1389               if (over .EQ. 1) then
1390                  res@xyDashPattern  = 0
1391                  plot_wpup = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1392               else
1393                  res@gsnLeftString      = vNam(varn)
1394                  res@gsnRightString     = unit(varn)
[162]1395                  if (.not. isvar("xs")) then
1396                     if (parameter(63) .NE. "x0") then
1397                        res@trXMinF = stringtofloat(parameter(63))
1398                     else
1399                        res@trXMinF            = miniwpup
1400                     end if
1401                  else
1402                     res@trXMinF            = xs
1403                  end if
1404                  if (.not. isvar("xe")) then
1405                     if (parameter(65) .NE. "xdim") then
1406                        res@trXMaxF = stringtofloat(parameter(65))
1407                     else
1408                        res@trXMaxF            = maxiwpup
1409                     end if
1410                  else
1411                     res@trXMaxF            = xe 
1412                  end if
[161]1413                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1414               end if
1415            end if
1416            if (vNam(varn) .EQ. "wsus") then
1417               miniwsus=min(data(varn,:,:))
1418               maxiwsus=max(data(varn,:,:))
1419               if (over .EQ. 1) then
1420                  res@xyDashPattern  = 1
1421                  plot_wsus = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1422               else
1423                  res@gsnLeftString      = vNam(varn)
1424                  res@gsnRightString     = unit(varn)
[162]1425                  if (.not. isvar("xs")) then
1426                     if (parameter(63) .NE. "x0") then
1427                        res@trXMinF = stringtofloat(parameter(63))
1428                     else
1429                        res@trXMinF            = miniwsus
1430                     end if
1431                  else
1432                     res@trXMinF            = xs
1433                  end if
1434                  if (.not. isvar("xe")) then
1435                     if (parameter(65) .NE. "xdim") then
1436                        res@trXMaxF = stringtofloat(parameter(65))
1437                     else
1438                        res@trXMaxF            = maxiwsus
1439                     end if
1440                  else
1441                     res@trXMaxF            = xe 
1442                  end if
[161]1443                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1444               end if
1445            end if
1446            if (vNam(varn) .EQ. "wu") then
1447               miniwu=min(data(varn,:,:))
1448               maxiwu=max(data(varn,:,:))
1449               if (over .EQ. 1) then
1450                  res@xyDashPattern  = 2
1451                  plot_wu = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1452               else
1453                  res@gsnLeftString      = vNam(varn)
1454                  res@gsnRightString     = unit(varn)
[162]1455                  if (.not. isvar("xs")) then
1456                     if (parameter(63) .NE. "x0") then
1457                        res@trXMinF = stringtofloat(parameter(63))
1458                     else
1459                        res@trXMinF            = miniwu
1460                     end if
1461                  else
1462                     res@trXMinF            = xs
1463                  end if
1464                  if (.not. isvar("xe")) then
1465                     if (parameter(65) .NE. "xdim") then
1466                        res@trXMaxF = stringtofloat(parameter(65))
1467                     else
1468                        res@trXMaxF            = maxiwu
1469                     end if
1470                  else
1471                     res@trXMaxF            = xe 
1472                  end if
[161]1473                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1474               end if
1475            end if
1476
1477            if (vNam(varn) .EQ. "wpvp") then
1478               miniwpvp=min(data(varn,:,:))
1479               maxiwpvp=max(data(varn,:,:))
1480               if (over .EQ. 1) then
1481                  res@xyDashPattern  = 0
1482                  plot_wpvp = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1483               else
1484                  res@gsnLeftString      = vNam(varn)
1485                  res@gsnRightString     = unit(varn)
[162]1486                  if (.not. isvar("xs")) then
1487                     if (parameter(63) .NE. "x0") then
1488                        res@trXMinF = stringtofloat(parameter(63))
1489                     else
1490                        res@trXMinF            = miniwpvp
1491                     end if
1492                  else
1493                     res@trXMinF            = xs
1494                  end if
1495                  if (.not. isvar("xe")) then
1496                     if (parameter(65) .NE. "xdim") then
1497                        res@trXMaxF = stringtofloat(parameter(65))
1498                     else
1499                        res@trXMaxF            = maxiwpvp
1500                     end if
1501                  else
1502                     res@trXMaxF            = xe 
1503                  end if
[161]1504                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1505               end if
1506            end if
1507            if (vNam(varn) .EQ. "wsvs") then
1508               miniwsvs=min(data(varn,:,:))
1509               maxiwsvs=max(data(varn,:,:))
1510               if (over .EQ. 1) then
1511                  res@xyDashPattern  = 1
1512                  plot_wsvs = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1513               else
1514                  res@gsnLeftString      = vNam(varn)
1515                  res@gsnRightString     = unit(varn)
[162]1516                  if (.not. isvar("xs")) then
1517                     if (parameter(63) .NE. "x0") then
1518                        res@trXMinF = stringtofloat(parameter(63))
1519                     else
1520                        res@trXMinF            = miniwsvs
1521                     end if
1522                  else
1523                     res@trXMinF            = xs
1524                  end if
1525                  if (.not. isvar("xe")) then
1526                     if (parameter(65) .NE. "xdim") then
1527                        res@trXMaxF = stringtofloat(parameter(65))
1528                     else
1529                        res@trXMaxF            = maxiwsvs
1530                     end if
1531                  else
1532                     res@trXMaxF            = xe 
1533                  end if
[161]1534                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1535               end if
1536            end if
1537            if (vNam(varn) .EQ. "wv") then
1538               miniwv=min(data(varn,:,:))
1539               maxiwv=max(data(varn,:,:))
1540               if (over .EQ. 1) then
1541                  res@xyDashPattern  = 2
1542                  plot_wv = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1543               else
1544                  res@gsnLeftString      = vNam(varn)
1545                  res@gsnRightString     = unit(varn)
[162]1546                  if (.not. isvar("xs")) then
1547                     if (parameter(63) .NE. "x0") then
1548                        res@trXMinF = stringtofloat(parameter(63))
1549                     else
1550                        res@trXMinF            = miniwv
1551                     end if
1552                  else
1553                     res@trXMinF            = xs
1554                  end if
1555                  if (.not. isvar("xe")) then
1556                     if (parameter(65) .NE. "xdim") then
1557                        res@trXMaxF = stringtofloat(parameter(65))
1558                     else
1559                        res@trXMaxF            = maxiwv
1560                     end if
1561                  else
1562                     res@trXMaxF            = xe 
1563                  end if
[161]1564                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1565               end if
1566            end if
1567
1568            if (vNam(varn) .EQ. "wpptp") then
1569               miniwpptp=min(data(varn,:,:))
1570               maxiwpptp=max(data(varn,:,:))
1571               if (over .EQ. 1) then
1572                  res@xyDashPattern  = 0
1573                  plot_wpptp = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1574               else
1575                  res@gsnLeftString      = vNam(varn)
1576                  res@gsnRightString     = unit(varn)
[162]1577                  if (.not. isvar("xs")) then
1578                     if (parameter(63) .NE. "x0") then
1579                        res@trXMinF = stringtofloat(parameter(63))
1580                     else
1581                        res@trXMinF            = miniwpptp
1582                     end if
1583                  else
1584                     res@trXMinF            = xs
1585                  end if
1586                  if (.not. isvar("xe")) then
1587                     if (parameter(65) .NE. "xdim") then
1588                        res@trXMaxF = stringtofloat(parameter(65))
1589                     else
1590                        res@trXMaxF            = maxiwpptp
1591                     end if
1592                  else
1593                     res@trXMaxF            = xe 
1594                  end if
[161]1595                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1596               end if
1597            end if
1598            if (vNam(varn) .EQ. "wspts") then
1599               miniwspts=min(data(varn,:,:))
1600               maxiwspts=max(data(varn,:,:))
1601               if (over .EQ. 1) then
1602                  res@xyDashPattern  = 1
1603                  plot_wspts = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1604               else
1605                  res@gsnLeftString      = vNam(varn)
1606                  res@gsnRightString     = unit(varn)
[162]1607                  if (.not. isvar("xs")) then
1608                     if (parameter(63) .NE. "x0") then
1609                        res@trXMinF = stringtofloat(parameter(63))
1610                     else
1611                        res@trXMinF            = miniwspts
1612                     end if
1613                  else
1614                     res@trXMinF            = xs
1615                  end if
1616                  if (.not. isvar("xe")) then
1617                     if (parameter(65) .NE. "xdim") then
1618                        res@trXMaxF = stringtofloat(parameter(65))
1619                     else
1620                        res@trXMaxF            = maxiwspts
1621                     end if
1622                  else
1623                     res@trXMaxF            = xe 
1624                  end if
[161]1625                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1626               end if
1627            end if
1628            if (vNam(varn) .EQ. "wpt") then
1629               miniwpt=min(data(varn,:,:))
1630               maxiwpt=max(data(varn,:,:))
1631               if (over .EQ. 1) then
1632                  res@xyDashPattern  = 2
1633                  plot_wpt = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1634               else
1635                  res@gsnLeftString      = vNam(varn)
1636                  res@gsnRightString     = unit(varn)
[162]1637                  if (.not. isvar("xs")) then
1638                     if (parameter(63) .NE. "x0") then
1639                        res@trXMinF = stringtofloat(parameter(63))
1640                     else
1641                        res@trXMinF            = miniwpt
1642                     end if
1643                  else
1644                     res@trXMinF            = xs
1645                  end if
1646                  if (.not. isvar("xe")) then
1647                     if (parameter(65) .NE. "xdim") then
1648                        res@trXMaxF = stringtofloat(parameter(65))
1649                     else
1650                        res@trXMaxF            = maxiwpt
1651                     end if
1652                  else
1653                     res@trXMaxF            = xe 
1654                  end if
[161]1655                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1656               end if
1657            end if
1658
1659            if (vNam(varn) .EQ. "wsptsBC") then
1660               miniwsptsBC=min(data(varn,:,:))
1661               maxiwsptsBC=max(data(varn,:,:))
1662               if (over .EQ. 1) then
1663                  res@xyDashPattern  = 0
1664                  plot_wsptsBC = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1665               else
1666                  res@gsnLeftString      = vNam(varn)
1667                  res@gsnRightString     = unit(varn)
[162]1668                  if (.not. isvar("xs")) then
1669                     if (parameter(63) .NE. "x0") then
1670                        res@trXMinF = stringtofloat(parameter(63))
1671                     else
1672                        res@trXMinF            = miniwsptsBC
1673                     end if
1674                  else
1675                     res@trXMinF            = xs
1676                  end if
1677                  if (.not. isvar("xe")) then
1678                     if (parameter(65) .NE. "xdim") then
1679                        res@trXMaxF = stringtofloat(parameter(65))
1680                     else
1681                        res@trXMaxF            = maxiwsptsBC
1682                     end if
1683                  else
1684                     res@trXMaxF            = xe 
1685                  end if
[161]1686                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1687               end if
1688            end if             
1689            if (vNam(varn) .EQ. "wptBC") then
1690               miniwptBC=min(data(varn,:,:))
1691               maxiwptBC=max(data(varn,:,:))
1692               if (over .EQ. 1) then
1693                  res@xyDashPattern  = 1
1694                  plot_wptBC = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1695               else
1696                  res@gsnLeftString      = vNam(varn)
1697                  res@gsnRightString     = unit(varn)
[162]1698                  if (.not. isvar("xs")) then
1699                     if (parameter(63) .NE. "x0") then
1700                        res@trXMinF = stringtofloat(parameter(63))
1701                     else
1702                        res@trXMinF            = miniwptBC
1703                     end if
1704                  else
1705                     res@trXMinF            = xs
1706                  end if
1707                  if (.not. isvar("xe")) then
1708                     if (parameter(65) .NE. "xdim") then
1709                        res@trXMaxF = stringtofloat(parameter(65))
1710                     else
1711                        res@trXMaxF            = maxiwptBC
1712                     end if
1713                  else
1714                     res@trXMaxF            = xe 
1715                  end if
[161]1716                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1717               end if
1718            end if
1719
1720            if (vNam(varn) .EQ. "wpvptp") then
1721               miniwpvptp=min(data(varn,:,:))
1722               maxiwpvptp=max(data(varn,:,:))
1723               if (over .EQ. 1) then
1724                  res@xyDashPattern  = 0
1725                  plot_wpvptp = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1726               else
1727                  res@gsnLeftString      = vNam(varn)
1728                  res@gsnRightString     = unit(varn)
[162]1729                  if (.not. isvar("xs")) then
1730                     if (parameter(63) .NE. "x0") then
1731                        res@trXMinF = stringtofloat(parameter(63))
1732                     else
1733                        res@trXMinF            = miniwpvptp
1734                     end if
1735                  else
1736                     res@trXMinF            = xs
1737                  end if
1738                  if (.not. isvar("xe")) then
1739                     if (parameter(65) .NE. "xdim") then
1740                        res@trXMaxF = stringtofloat(parameter(65))
1741                     else
1742                        res@trXMaxF            = maxiwpvptp
1743                     end if
1744                  else
1745                     res@trXMaxF            = xe 
1746                  end if
[161]1747                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1748               end if
1749            end if
1750            if (vNam(varn) .EQ. "wsvpts") then
1751               miniwsvpts=min(data(varn,:,:))
1752               maxiwsvpts=max(data(varn,:,:))
1753               if (over .EQ. 1) then
1754                  res@xyDashPattern  = 1
1755                  plot_wsvpts = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1756               else
1757                  res@gsnLeftString      = vNam(varn)
1758                  res@gsnRightString     = unit(varn)
[162]1759                  if (.not. isvar("xs")) then
1760                     if (parameter(63) .NE. "x0") then
1761                        res@trXMinF = stringtofloat(parameter(63))
1762                     else
1763                        res@trXMinF            = miniwsvpts
1764                     end if
1765                  else
1766                     res@trXMinF            = xs
1767                  end if
1768                  if (.not. isvar("xe")) then
1769                     if (parameter(65) .NE. "xdim") then
1770                        res@trXMaxF = stringtofloat(parameter(65))
1771                     else
1772                        res@trXMaxF            = maxiwsvpts
1773                     end if
1774                  else
1775                     res@trXMaxF            = xe 
1776                  end if
[161]1777                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1778               end if
1779            end if
1780            if (vNam(varn) .EQ. "wvpt") then
1781               miniwvpt=min(data(varn,:,:))
1782               maxiwvpt=max(data(varn,:,:))
1783               if (over .EQ. 1) then
1784                  res@xyDashPattern  = 2
1785                  plot_wvpt = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1786               else
1787                  res@gsnLeftString      = vNam(varn)
1788                  res@gsnRightString     = unit(varn)
[162]1789                  if (.not. isvar("xs")) then
1790                     if (parameter(63) .NE. "x0") then
1791                        res@trXMinF = stringtofloat(parameter(63))
1792                     else
1793                        res@trXMinF            = miniwvpt
1794                     end if
1795                  else
1796                     res@trXMinF            = xs
1797                  end if
1798                  if (.not. isvar("xe")) then
1799                     if (parameter(65) .NE. "xdim") then
1800                        res@trXMaxF = stringtofloat(parameter(65))
1801                     else
1802                        res@trXMaxF            = maxiwvpt
1803                     end if
1804                  else
1805                     res@trXMaxF            = xe 
1806                  end if
[161]1807                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1808               end if
1809            end if
1810
1811            if (vNam(varn) .EQ. "wpqp") then
1812               miniwpqp=min(data(varn,:,:))
1813               maxiwpqp=max(data(varn,:,:))
1814               if (over .EQ. 1) then
1815                  res@xyDashPattern  = 0
1816                  plot_wpqp = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1817               else
1818                  res@gsnLeftString      = vNam(varn)
1819                  res@gsnRightString     = unit(varn)
[162]1820                  if (.not. isvar("xs")) then
1821                     if (parameter(63) .NE. "x0") then
1822                        res@trXMinF = stringtofloat(parameter(63))
1823                     else
1824                        res@trXMinF            = miniwpqp
1825                     end if
1826                  else
1827                     res@trXMinF            = xs
1828                  end if
1829                  if (.not. isvar("xe")) then
1830                     if (parameter(65) .NE. "xdim") then
1831                        res@trXMaxF = stringtofloat(parameter(65))
1832                     else
1833                        res@trXMaxF            = maxiwpqp
1834                     end if
1835                  else
1836                     res@trXMaxF            = xe 
1837                  end if
[161]1838                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1839               end if
1840            end if
1841            if (vNam(varn) .EQ. "wsqs") then
1842               miniwsqs=min(data(varn,:,:))
1843               maxiwsqs=max(data(varn,:,:))
1844               if (over .EQ. 1) then
1845                  res@xyDashPattern  = 1
1846                  plot_wsqs = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1847               else
1848                  res@gsnLeftString      = vNam(varn)
1849                  res@gsnRightString     = unit(varn)
[162]1850                  if (.not. isvar("xs")) then
1851                     if (parameter(63) .NE. "x0") then
1852                        res@trXMinF = stringtofloat(parameter(63))
1853                     else
1854                        res@trXMinF            = miniwsqs
1855                     end if
1856                  else
1857                     res@trXMinF            = xs
1858                  end if
1859                  if (.not. isvar("xe")) then
1860                     if (parameter(65) .NE. "xdim") then
1861                        res@trXMaxF = stringtofloat(parameter(65))
1862                     else
1863                        res@trXMaxF            = maxiwsqs
1864                     end if
1865                  else
1866                     res@trXMaxF            = xe 
1867                  end if
[161]1868                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1869               end if
1870            end if
1871            if (vNam(varn) .EQ. "wq") then
1872               miniwq=min(data(varn,:,:))
1873               maxiwq=max(data(varn,:,:))
1874               if (over .EQ. 1) then
1875                  res@xyDashPattern  = 2
1876                  plot_wq = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1877               else
1878                  res@gsnLeftString      = vNam(varn)
1879                  res@gsnRightString     = unit(varn)
[162]1880                  if (.not. isvar("xs")) then
1881                     if (parameter(63) .NE. "x0") then
1882                        res@trXMinF = stringtofloat(parameter(63))
1883                     else
1884                        res@trXMinF            = miniwq
1885                     end if
1886                  else
1887                     res@trXMinF            = xs
1888                  end if
1889                  if (.not. isvar("xe")) then
1890                     if (parameter(65) .NE. "xdim") then
1891                        res@trXMaxF = stringtofloat(parameter(65))
1892                     else
1893                        res@trXMaxF            = maxiwq
1894                     end if
1895                  else
1896                     res@trXMaxF            = xe 
1897                  end if
[161]1898                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1899               end if
1900            end if
1901
1902            if (vNam(varn) .EQ. "wpqvp") then
1903               miniwpqvp=min(data(varn,:,:))
1904               maxiwpqvp=max(data(varn,:,:))
1905               if (over .EQ. 1) then
1906                  res@xyDashPattern  = 0
1907                  plot_wpqvp = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1908               else
1909                  res@gsnLeftString      = vNam(varn)
1910                  res@gsnRightString     = unit(varn)
[162]1911                  if (.not. isvar("xs")) then
1912                     if (parameter(63) .NE. "x0") then
1913                        res@trXMinF = stringtofloat(parameter(63))
1914                     else
1915                        res@trXMinF            = miniwpqvp
1916                     end if
1917                  else
1918                     res@trXMinF            = xs
1919                  end if
1920                  if (.not. isvar("xe")) then
1921                     if (parameter(65) .NE. "xdim") then
1922                        res@trXMaxF = stringtofloat(parameter(65))
1923                     else
1924                        res@trXMaxF            = maxiwpqvp
1925                     end if
1926                  else
1927                     res@trXMaxF            = xe 
1928                  end if
[161]1929                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1930               end if
1931            end if
1932            if (vNam(varn) .EQ. "wsqvs") then
1933               miniwsqvs=min(data(varn,:,:))
1934               maxiwsqvs=max(data(varn,:,:))
1935               if (over .EQ. 1) then
1936                  res@xyDashPattern  = 1
1937                  plot_wsqvs = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1938               else
1939                  res@gsnLeftString      = vNam(varn)
1940                  res@gsnRightString     = unit(varn)
[162]1941                  if (.not. isvar("xs")) then
1942                     if (parameter(63) .NE. "x0") then
1943                        res@trXMinF = stringtofloat(parameter(63))
1944                     else
1945                        res@trXMinF            = miniwsqvs
1946                     end if
1947                  else
1948                     res@trXMinF            = xs
1949                  end if
1950                  if (.not. isvar("xe")) then
1951                     if (parameter(65) .NE. "xdim") then
1952                        res@trXMaxF = stringtofloat(parameter(65))
1953                     else
1954                        res@trXMaxF            = maxiwsqvs
1955                     end if
1956                  else
1957                     res@trXMaxF            = xe 
1958                  end if
[161]1959                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1960               end if
1961            end if
1962            if (vNam(varn) .EQ. "wqv") then
1963               miniwqv=min(data(varn,:,:))
1964               maxiwqv=max(data(varn,:,:))
1965               if (over .EQ. 1) then
1966                  res@xyDashPattern  = 2
1967                  plot_wqv = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1968               else
1969                  res@gsnLeftString      = vNam(varn)
1970                  res@gsnRightString     = unit(varn)
[162]1971                  if (.not. isvar("xs")) then
1972                     if (parameter(63) .NE. "x0") then
1973                        res@trXMinF = stringtofloat(parameter(63))
1974                     else
1975                        res@trXMinF            = miniwqv
1976                     end if
1977                  else
1978                     res@trXMinF            = xs
1979                  end if
1980                  if (.not. isvar("xe")) then
1981                     if (parameter(65) .NE. "xdim") then
1982                        res@trXMaxF = stringtofloat(parameter(65))
1983                     else
1984                        res@trXMaxF            = maxiwqv
1985                     end if
1986                  else
1987                     res@trXMaxF            = xe 
1988                  end if
[161]1989                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1990               end if
1991            end if
1992
1993            if (vNam(varn) .EQ. "wpsp") then
1994               miniwpsp=min(data(varn,:,:))
1995               maxiwpsp=max(data(varn,:,:))
1996               if (over .EQ. 1) then
1997                  res@xyDashPattern  = 0
1998                  plot_wpsp = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1999               else
2000                  res@gsnLeftString      = vNam(varn)
2001                  res@gsnRightString     = unit(varn)
[162]2002                  if (.not. isvar("xs")) then
2003                     if (parameter(63) .NE. "x0") then
2004                        res@trXMinF = stringtofloat(parameter(63))
2005                     else
2006                        res@trXMinF            = miniwpsp
2007                     end if
2008                  else
2009                     res@trXMinF            = xs
2010                  end if
2011                  if (.not. isvar("xe")) then
2012                     if (parameter(65) .NE. "xdim") then
2013                        res@trXMaxF = stringtofloat(parameter(65))
2014                     else
2015                        res@trXMaxF            = maxiwpsp
2016                     end if
2017                  else
2018                     res@trXMaxF            = xe 
2019                  end if
[161]2020                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2021               end if
2022            end if
2023            if (vNam(varn) .EQ. "wsss") then
2024               miniwsss=min(data(varn,:,:))
2025               maxiwsss=max(data(varn,:,:))
2026               if (over .EQ. 1) then
2027                  res@xyDashPattern  = 1
2028                  plot_wsss = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2029               else
2030                  res@gsnLeftString      = vNam(varn)
2031                  res@gsnRightString     = unit(varn)
[162]2032                  if (.not. isvar("xs")) then
2033                     if (parameter(63) .NE. "x0") then
2034                        res@trXMinF = stringtofloat(parameter(63))
2035                     else
2036                        res@trXMinF            = miniwsss
2037                     end if
2038                  else
2039                     res@trXMinF            = xs
2040                  end if
2041                  if (.not. isvar("xe")) then
2042                     if (parameter(65) .NE. "xdim") then
2043                        res@trXMaxF = stringtofloat(parameter(65))
2044                     else
2045                        res@trXMaxF            = maxiwsss
2046                     end if
2047                  else
2048                     res@trXMaxF            = xe 
2049                  end if
[161]2050                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2051               end if
2052            end if
2053            if (vNam(varn) .EQ. "ws") then
2054               miniws=min(data(varn,:,:))
2055               maxiws=max(data(varn,:,:))
2056               if (over .EQ. 1) then
2057                  res@xyDashPattern  = 2
2058                  plot_ws = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2059               else
2060                  res@gsnLeftString      = vNam(varn)
2061                  res@gsnRightString     = unit(varn)
[162]2062                  if (.not. isvar("xs")) then
2063                     if (parameter(63) .NE. "x0") then
2064                        res@trXMinF = stringtofloat(parameter(63))
2065                     else
2066                        res@trXMinF            = miniws
2067                     end if
2068                  else
2069                     res@trXMinF            = xs
2070                  end if
2071                  if (.not. isvar("xe")) then
2072                     if (parameter(65) .NE. "xdim") then
2073                        res@trXMaxF = stringtofloat(parameter(65))
2074                     else
2075                        res@trXMaxF            = maxiws
2076                     end if
2077                  else
2078                     res@trXMaxF            = xe 
2079                  end if
[161]2080                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2081               end if
2082            end if
2083
2084            if (vNam(varn) .EQ. "wpsap") then
2085               miniwpsap=min(data(varn,:,:))
2086               maxiwpsap=max(data(varn,:,:))
2087               if (over .EQ. 1) then
2088                  res@xyDashPattern  = 0
2089                  plot_wpsap = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2090               else
2091                  res@gsnLeftString      = vNam(varn)
2092                  res@gsnRightString     = unit(varn)
[162]2093                  if (.not. isvar("xs")) then
2094                     if (parameter(63) .NE. "x0") then
2095                        res@trXMinF = stringtofloat(parameter(63))
2096                     else
2097                        res@trXMinF            = miniwpsap
2098                     end if
2099                  else
2100                     res@trXMinF            = xs
2101                  end if
2102                  if (.not. isvar("xe")) then
2103                     if (parameter(65) .NE. "xdim") then
2104                        res@trXMaxF = stringtofloat(parameter(65))
2105                     else
2106                        res@trXMaxF            = maxiwpsap
2107                     end if
2108                  else
2109                     res@trXMaxF            = xe 
2110                  end if
[161]2111                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2112               end if
2113            end if
2114            if (vNam(varn) .EQ. "wssas") then
2115               miniwssas=min(data(varn,:,:))
2116               maxiwssas=max(data(varn,:,:))
2117               if (over .EQ. 1) then
2118                  res@xyDashPattern  = 1
2119                  plot_wssas = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2120               else
2121                  res@gsnLeftString      = vNam(varn)
2122                  res@gsnRightString     = unit(varn)
[162]2123                  if (.not. isvar("xs")) then
2124                     if (parameter(63) .NE. "x0") then
2125                        res@trXMinF = stringtofloat(parameter(63))
2126                     else
2127                        res@trXMinF            = miniwssas
2128                     end if
2129                  else
2130                     res@trXMinF            = xs
2131                  end if
2132                  if (.not. isvar("xe")) then
2133                     if (parameter(65) .NE. "xdim") then
2134                        res@trXMaxF = stringtofloat(parameter(65))
2135                     else
2136                        res@trXMaxF            = maxiwssas
2137                     end if
2138                  else
2139                     res@trXMaxF            = xe 
2140                  end if
[161]2141                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2142               end if
2143            end if
2144            if (vNam(varn) .EQ. "wsa") then
2145               miniwsa=min(data(varn,:,:))
2146               maxiwsa=max(data(varn,:,:))
2147               if (over .EQ. 1) then
2148                  res@xyDashPattern  = 2
2149                  plot_wsa = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2150               else
2151                  res@gsnLeftString      = vNam(varn)
2152                  res@gsnRightString     = unit(varn)
[162]2153                  if (.not. isvar("xs")) then
2154                     if (parameter(63) .NE. "x0") then
2155                        res@trXMinF = stringtofloat(parameter(63))
2156                     else
2157                        res@trXMinF            = miniwsa
2158                     end if
2159                  else
2160                     res@trXMinF            = xs
2161                  end if
2162                  if (.not. isvar("xe")) then
2163                     if (parameter(65) .NE. "xdim") then
2164                        res@trXMaxF = stringtofloat(parameter(65))
2165                     else
2166                        res@trXMaxF            = maxiwsa
2167                     end if
2168                  else
2169                     res@trXMaxF            = xe 
2170                  end if
[161]2171                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2172               end if
2173            end if
2174
2175            if (vNam(varn) .EQ. "us2") then
2176               minius2=min(data(varn,:,:))
2177               maxius2=max(data(varn,:,:))
2178               if (over .EQ. 1) then
2179                  res@xyDashPattern  = 0
2180                  plot_us2 = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
2181               else
2182                  res@gsnLeftString      = vNam(varn)
2183                  res@gsnRightString     = unit(varn)
[162]2184                  if (.not. isvar("xs")) then
2185                     if (parameter(63) .NE. "x0") then
2186                        res@trXMinF = stringtofloat(parameter(63))
2187                     else
2188                        res@trXMinF            = minius2
2189                     end if
2190                  else
2191                     res@trXMinF            = xs
2192                  end if
2193                  if (.not. isvar("xe")) then
2194                     if (parameter(65) .NE. "xdim") then
2195                        res@trXMaxF = stringtofloat(parameter(65))
2196                     else
2197                        res@trXMaxF            = maxius2
2198                     end if
2199                  else
2200                     res@trXMaxF            = xe 
2201                  end if
[161]2202                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
2203               end if
2204            end if
2205            if (vNam(varn) .EQ. "vs2") then
2206               minivs2=min(data(varn,:,:))
2207               maxivs2=max(data(varn,:,:))
2208               if (over .EQ. 1) then
2209                  res@xyDashPattern  = 1
2210                  plot_vs2 = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
2211               else
2212                  res@gsnLeftString      = vNam(varn)
2213                  res@gsnRightString     = unit(varn)
[162]2214                  if (.not. isvar("xs")) then
2215                     if (parameter(63) .NE. "x0") then
2216                        res@trXMinF = stringtofloat(parameter(63))
2217                     else
2218                        res@trXMinF            = minivs2
2219                     end if
2220                  else
2221                     res@trXMinF            = xs
2222                  end if
2223                  if (.not. isvar("xe")) then
2224                     if (parameter(65) .NE. "xdim") then
2225                        res@trXMaxF = stringtofloat(parameter(65))
2226                     else
2227                        res@trXMaxF            = maxivs2
2228                     end if
2229                  else
2230                     res@trXMaxF            = xe 
2231                  end if
[161]2232                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
2233               end if
2234            end if
2235            if (vNam(varn) .EQ. "ws2") then
2236               miniws2=min(data(varn,:,:))
2237               maxiws2=max(data(varn,:,:))
2238               if (over .EQ. 1) then
2239                  res@xyDashPattern  = 2
2240                  plot_ws2 = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2241               else
2242                  res@gsnLeftString      = vNam(varn)
2243                  res@gsnRightString     = unit(varn)
[162]2244                  if (.not. isvar("xs")) then
2245                     if (parameter(63) .NE. "x0") then
2246                        res@trXMinF = stringtofloat(parameter(63))
2247                     else
2248                        res@trXMinF            = miniws2
2249                     end if
2250                  else
2251                     res@trXMinF            = xs
2252                  end if
2253                  if (.not. isvar("xe")) then
2254                     if (parameter(65) .NE. "xdim") then
2255                        res@trXMaxF = stringtofloat(parameter(65))
2256                     else
2257                        res@trXMaxF            = maxiws2
2258                     end if
2259                  else
2260                     res@trXMaxF            = xe 
2261                  end if
[161]2262                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2263               end if
2264            end if
2265
2266            if (vNam(varn) .EQ. "wsususodz") then
2267               miniwsususodz=min(data(varn,:,:))
2268               maxiwsususodz=max(data(varn,:,:))
2269               if (over .EQ. 1) then
2270                  res@xyDashPattern  = 0
2271                  plot_wsususodz = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
2272               else
2273                  res@gsnLeftString      = vNam(varn)
2274                  res@gsnRightString     = unit(varn)
[162]2275                  if (.not. isvar("xs")) then
2276                     if (parameter(63) .NE. "x0") then
2277                        res@trXMinF = stringtofloat(parameter(63))
2278                     else
2279                        res@trXMinF            = miniwsususodz
2280                     end if
2281                  else
2282                     res@trXMinF            = xs
2283                  end if
2284                  if (.not. isvar("xe")) then
2285                     if (parameter(65) .NE. "xdim") then
2286                        res@trXMaxF = stringtofloat(parameter(65))
2287                     else
2288                        res@trXMaxF            = maxiwsususodz
2289                     end if
2290                  else
2291                     res@trXMaxF            = xe 
2292                  end if
[161]2293                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
2294               end if 
2295            end if
2296            if (vNam(varn) .EQ. "wspsodz") then
2297               miniwspsodz=min(data(varn,:,:))
2298               maxiwspsodz=max(data(varn,:,:))
2299               if (over .EQ. 1) then
2300                  res@xyDashPattern  = 1
2301                  plot_wspsodz = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
2302               else
2303                  res@gsnLeftString      = vNam(varn)
2304                  res@gsnRightString     = unit(varn)
[162]2305                  if (.not. isvar("xs")) then
2306                     if (parameter(63) .NE. "x0") then
2307                        res@trXMinF = stringtofloat(parameter(63))
2308                     else
2309                        res@trXMinF            = miniwspsodz
2310                     end if
2311                  else
2312                     res@trXMinF            = xs
2313                  end if
2314                  if (.not. isvar("xe")) then
2315                     if (parameter(65) .NE. "xdim") then
2316                        res@trXMaxF = stringtofloat(parameter(65))
2317                     else
2318                        res@trXMaxF            = maxiwspsodz
2319                     end if
2320                  else
2321                     res@trXMaxF            = xe 
2322                  end if
[161]2323                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
2324               end if
2325            end if
2326            if (vNam(varn) .EQ. "wpeodz") then
2327               miniwpeodz=min(data(varn,:,:))
2328               maxiwpeodz=max(data(varn,:,:))
2329               if (over .EQ. 1) then
2330                  res@xyDashPattern  = 2
2331                  plot_wpeodz = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2332               else
2333                  res@gsnLeftString      = vNam(varn)
2334                  res@gsnRightString     = unit(varn)
[162]2335                  if (.not. isvar("xs")) then
2336                     if (parameter(63) .NE. "x0") then
2337                        res@trXMinF = stringtofloat(parameter(63))
2338                     else
2339                        res@trXMinF            = miniwpeodz
2340                     end if
2341                  else
2342                     res@trXMinF            = xs
2343                  end if
2344                  if (.not. isvar("xe")) then
2345                     if (parameter(65) .NE. "xdim") then
2346                        res@trXMaxF = stringtofloat(parameter(65))
2347                     else
2348                        res@trXMaxF            = maxiwpeodz
2349                     end if
2350                  else
2351                     res@trXMaxF            = xe 
2352                  end if
[161]2353                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2354               end if
2355            end if
2356         if (over .EQ. 0) then
2357            n=n+1 
2358         end if     
2359         varn=varn+1
[154]2360      end if     
[161]2361      delete(temp)
[154]2362   end do
[162]2363
2364   if (count_var .EQ. 0) then
2365      print(" ")
2366      print("Please select a variable 'var=' or use the default value")
2367      print(" ")
2368      print("Your selection '"+var+"' does not exist on the input file")
2369      print(" ")
2370      exit
2371   end if
2372
[161]2373   if (over .EQ. 1 ) then
[154]2374
[161]2375      overlay(plot_u,plot_v)
2376      overlay(plot_u,plot_w)
2377      u=0
2378      overlay(plot_pt,plot_vpt)
2379      overlay(plot_pt,plot_lpt)
2380      pt=0
2381      overlay(plot_q,plot_qv)
2382      overlay(plot_q,plot_ql)
2383      q=0
2384      overlay(plot_e,plot_es)
2385      e=0
2386      overlay(plot_km,plot_kh)
2387      km=0
2388      overlay(plot_wpup,plot_wsus)
2389      overlay(plot_wpup,plot_wu)
2390      wpup=0
2391      overlay(plot_wpvp,plot_wsvs)
2392      overlay(plot_wpvp,plot_wv)
2393      wpvp=0
2394      overlay(plot_wpptp,plot_wspts)
2395      overlay(plot_wpptp,plot_wpt)
2396      wpptp=0
2397      overlay(plot_wsptsBC,plot_wptBC)
2398      wsptsBC=0
2399      overlay(plot_wpvptp,plot_wsvpts)
2400      overlay(plot_wpvptp,plot_wvpt)
2401      wpvptp=0
2402      overlay(plot_wpqp,plot_wsqs)
2403      overlay(plot_wpqp,plot_wq)
2404      wpqp=0
2405      overlay(plot_wpqvp,plot_wsqvs)
2406      overlay(plot_wpqvp,plot_wqv)
2407      wpqvp=0
2408      overlay(plot_wpsp,plot_wsss)
2409      overlay(plot_wpsp,plot_ws)
2410      wpsp=0
2411      overlay(plot_wpsap,plot_wssas)
2412      overlay(plot_wpsap,plot_wsa)
2413      wpsap=0
2414      overlay(plot_us2,plot_vs2)
2415      overlay(plot_us2,plot_ws2)
2416      us2=0
2417      overlay(plot_wsususodz,plot_wspsodz)
2418      overlay(plot_wsususodz,plot_wpeodz)
2419      wsususodz=0
2420
2421   end if
2422
2423   if (over .EQ. 1) then
2424   
2425      do varn = 0,dim-1   
2426     
2427         if ( isStrSubset( vNam(varn), "time") .OR. isStrSubset( vNam(varn), "NORM")) then
2428            check = False
2429         else
2430            if (.not. isvar("var")) then
2431               check = True
2432               if (parameter(21) .NE. "variables") then
2433                  var=parameter(21)
2434                  check = isStrSubset( var,","+vNam(varn)+"," )
2435               end if
2436            else         
2437               check = isStrSubset( var,","+vNam(varn)+"," )
2438            end if
2439         end if 
2440
2441         if (check)
2442           
2443            z = f->$vNam(varn+1)$
2444           
[162]2445            res@gsnLeftString      = vNam(varn)
[161]2446            res@gsnRightString     = unit(varn)
2447            res@trYMinF            = min_z
2448            res@trYMaxF            = max_z 
[162]2449            if (.not. isvar("xs")) then
2450               if (parameter(63) .NE. "x0") then
2451                  res@trXMinF = stringtofloat(parameter(63))
2452               else
2453                  res@trXMinF = min(data(varn,:,:))
2454               end if
2455            else
2456               res@trXMinF = xs
2457            end if
2458            if (.not. isvar("xe")) then
2459               if (parameter(65) .NE. "xdim") then
2460                  res@trXMaxF = stringtofloat(parameter(65))
2461               else
2462                  res@trXMaxF = max(data(varn,:,:))
2463            end if
2464            else
2465               res@trXMaxF = xe 
2466            end if
[161]2467            plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res) 
2468           
2469            if (vNam(varn) .EQ. "u" .OR. vNam(varn) .EQ. "v" .OR. vNam(varn) .EQ. "w") then
2470               if (u .EQ. 0) then
2471                  res@gsnLeftString      = "u, v and w"
2472                  res@gsnRightString     = unit(varn)
[162]2473                  if (.not. isvar("xs")) then
2474                     if (parameter(63) .NE. "x0") then
2475                        res@trXMinF = stringtofloat(parameter(63))
2476                     else
2477                        res@trXMinF = min((/miniu,miniv,miniw/))
2478                     end if
2479                  else
2480                     res@trXMinF = xs
2481                  end if
2482                  if (.not. isvar("xe")) then
2483                     if (parameter(65) .NE. "xdim") then
2484                        res@trXMaxF = stringtofloat(parameter(65))
2485                     else
2486                        res@trXMaxF = max((/maxiu,maxiv,maxiw/))
2487                     end if
2488                  else
2489                     res@trXMaxF = xe 
2490                  end if
[161]2491                  if (vNam(varn) .EQ. "w") then
2492                     plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2493                  else
2494                     plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_u,res)
2495                  end if
2496
2497                  ; ***************************************************
2498                  ; legend for combined plot
2499                  ; ***************************************************
2500     
2501                  lgres                    = True
2502                  lgMonoDashIndex          = False
2503                  lgres@lgLabelFont        = "helvetica"   
2504                  lgres@lgLabelFontHeightF = .1           
2505                  lgres@vpWidthF           = 0.12           
2506                  lgres@vpHeightF          = 0.1         
2507                  lgres@lgDashIndexes      = (/0,1,2/)
2508                  lbid = gsn_create_legend(wks,3,(/"u","v","w"/),lgres)       
2509
2510                  amres = True
2511                  amres@amParallelPosF   = 0.65             
2512                  amres@amOrthogonalPosF = -0.2           
2513                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2514                  overlay(plot(n),plot_u)
2515                  u=1
2516               else
2517                  varn=varn+1
2518                  continue
2519               end if       
2520            end if 
2521     
2522            if (vNam(varn) .EQ. "pt" .OR. vNam(varn) .EQ. "vpt" .OR. vNam(varn) .EQ. "lpt") then
2523               if (pt .EQ. 0) then
2524                  res@gsnLeftString      = "pt, vpt and lpt"
2525                  res@gsnRightString     = unit(varn)
[162]2526                  if (.not. isvar("xs")) then
2527                     if (parameter(63) .NE. "x0") then
2528                        res@trXMinF = stringtofloat(parameter(63))
2529                     else
2530                        res@trXMinF = min((/minipt,minivpt,minilpt/))
2531                     end if
2532                  else
2533                     res@trXMinF = xs
2534                  end if
2535                  if (.not. isvar("xe")) then
2536                     if (parameter(65) .NE. "xdim") then
2537                        res@trXMaxF = stringtofloat(parameter(65))
2538                     else
2539                        res@trXMaxF = max((/maxipt,maxivpt,maxilpt/))
2540                     end if
2541                  else
2542                     res@trXMaxF = xe 
2543                  end if
[161]2544
2545                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_u,res)
2546
2547                  ; ***************************************************
2548                  ; legend for combined plot
2549                  ; ***************************************************
2550     
2551                  lgres                    = True
2552                  lgMonoDashIndex          = False
2553                  lgres@lgLabelFont        = "helvetica"   
2554                  lgres@lgLabelFontHeightF = .1           
2555                  lgres@vpWidthF           = 0.12           
2556                  lgres@vpHeightF          = 0.1         
2557                  lgres@lgDashIndexes      = (/0,1,2/)
2558                  lbid = gsn_create_legend(wks,3,(/"pt","vpt","lpt"/),lgres)       
2559
2560                  amres = True
2561                  amres@amParallelPosF   = 0.65             
2562                  amres@amOrthogonalPosF = -0.2           
2563                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2564                  overlay(plot(n),plot_pt)
2565                  pt=1
2566               else
2567                  varn=varn+1
2568                  continue       
2569               end if
2570            end if           
2571            if (vNam(varn) .EQ. "q" .OR. vNam(varn) .EQ. "qv" .OR. vNam(varn) .EQ. "ql") then
2572               if (q .EQ. 0) then
2573                  res@gsnLeftString      = "q, qv and ql"
2574                  res@gsnRightString     = unit(varn)
[162]2575                  if (.not. isvar("xs")) then
2576                     if (parameter(63) .NE. "x0") then
2577                        res@trXMinF = stringtofloat(parameter(63))
2578                     else
2579                        res@trXMinF = min((/miniq,miniqv,miniql/))
2580                     end if
2581                  else
2582                     res@trXMinF = xs
2583                  end if
2584                  if (.not. isvar("xe")) then
2585                     if (parameter(65) .NE. "xdim") then
2586                        res@trXMaxF = stringtofloat(parameter(65))
2587                     else
2588                        res@trXMaxF = max((/maxiq,maxiqv,maxiql/))
2589                     end if
2590                  else
2591                     res@trXMaxF = xe 
2592                  end if
[161]2593
2594                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_u,res)
2595
2596                  ; ***************************************************
2597                  ; legend for combined plot
2598                  ; ***************************************************
2599     
2600                  lgres                    = True
2601                  lgMonoDashIndex          = False
2602                  lgres@lgLabelFont        = "helvetica"   
2603                  lgres@lgLabelFontHeightF = .1           
2604                  lgres@vpWidthF           = 0.12           
2605                  lgres@vpHeightF          = 0.1         
2606                  lgres@lgDashIndexes      = (/0,1,2/)
2607                  lbid = gsn_create_legend(wks,3,(/"q","qv","ql"/),lgres)       
2608
2609                  amres = True
2610                  amres@amParallelPosF   = 0.65             
2611                  amres@amOrthogonalPosF = -0.2           
2612                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2613                  overlay(plot(n),plot_q)
2614                  q=1
2615               else
2616                  varn=varn+1
2617                  continue   
2618               end if
[162]2619            end if   
2620           
[161]2621            if (vNam(varn) .EQ. "e" .OR. vNam(varn) .EQ. "es") then
2622               if (e .EQ. 0) then
2623                  res@gsnLeftString      = "e and es"
2624                  res@gsnRightString     = unit(varn)
[162]2625                  if (.not. isvar("xs")) then
2626                     if (parameter(63) .NE. "x0") then
2627                        res@trXMinF = stringtofloat(parameter(63))
2628                     else
2629                        res@trXMinF = min((/minie,minies/))
2630                     end if
2631                  else
2632                     res@trXMinF = xs
2633                  end if
2634                  if (.not. isvar("xe")) then
2635                     if (parameter(65) .NE. "xdim") then
2636                        res@trXMaxF = stringtofloat(parameter(65))
2637                     else
2638                        res@trXMaxF = max((/maxie,maxies/))
2639                     end if
2640                  else
2641                     res@trXMaxF = xe 
2642                  end if
[161]2643
2644                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_u,res)
2645
2646                  ; ***************************************************
2647                  ; legend for combined plot
2648                  ; ***************************************************
2649     
2650                  lgres                    = True
2651                  lgMonoDashIndex          = False
2652                  lgres@lgLabelFont        = "helvetica"   
2653                  lgres@lgLabelFontHeightF = .1           
2654                  lgres@vpWidthF           = 0.12           
2655                  lgres@vpHeightF          = 0.1         
2656                  lgres@lgDashIndexes      = (/0,1,2/)
2657                  lbid = gsn_create_legend(wks,3,(/"e","es"/),lgres)       
2658
2659                  amres = True
2660                  amres@amParallelPosF   = 0.65             
2661                  amres@amOrthogonalPosF = -0.2           
2662                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2663                  overlay(plot(n),plot_e)
2664                  e=1
2665               else
2666                  varn=varn+1
2667                  continue   
2668               end if
2669            end if           
2670            if (vNam(varn) .EQ. "km" .OR. vNam(varn) .EQ. "kh") then
2671               if (km .EQ. 0) then
2672                  res@gsnLeftString      = "km and kh"
2673                  res@gsnRightString     = unit(varn)
[162]2674                  if (.not. isvar("xs")) then
2675                     if (parameter(63) .NE. "x0") then
2676                        res@trXMinF = stringtofloat(parameter(63))
2677                     else
2678                        res@trXMinF = min((/minikm,minikh/))
2679                     end if
2680                  else
2681                     res@trXMinF = xs
2682                  end if
2683                  if (.not. isvar("xe")) then
2684                     if (parameter(65) .NE. "xdim") then
2685                        res@trXMaxF = stringtofloat(parameter(65))
2686                     else
2687                        res@trXMaxF = max((/maxikm,maxikh/))
2688                     end if
2689                  else
2690                     res@trXMaxF = xe 
2691                  end if
[161]2692
2693                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_u,res)
2694
2695                  ; ***************************************************
2696                  ; legend for combined plot
2697                  ; ***************************************************
2698     
2699                  lgres                    = True
2700                  lgMonoDashIndex          = False
2701                  lgres@lgLabelFont        = "helvetica"   
2702                  lgres@lgLabelFontHeightF = .1           
2703                  lgres@vpWidthF           = 0.12           
2704                  lgres@vpHeightF          = 0.1         
2705                  lgres@lgDashIndexes      = (/0,1,2/)
2706                  lbid = gsn_create_legend(wks,3,(/"km","kh"/),lgres)       
2707
2708                  amres = True
2709                  amres@amParallelPosF   = 0.65             
2710                  amres@amOrthogonalPosF = -0.2           
2711                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2712                  overlay(plot(n),plot_km)
2713                  km=1
2714               else
2715                  varn=varn+1
2716                  continue   
2717               end if
2718            end if           
[162]2719           
[161]2720            if (vNam(varn) .EQ. "wpup" .OR. vNam(varn) .EQ. "wsus" .OR. vNam(varn) .EQ. "wu") then
2721               if (wpup .EQ. 0) then
2722                  res@gsnLeftString      = "wpup, wsus and wu"
2723                  res@gsnRightString     = unit(varn)
[162]2724                  if (.not. isvar("xs")) then
2725                     if (parameter(63) .NE. "x0") then
2726                        res@trXMinF = stringtofloat(parameter(63))
2727                     else
2728                        res@trXMinF = min((/miniwpup,miniwsus,miniwu/))
2729                     end if
2730                  else
2731                     res@trXMinF = xs
2732                  end if
2733                  if (.not. isvar("xe")) then
2734                     if (parameter(65) .NE. "xdim") then
2735                        res@trXMaxF = stringtofloat(parameter(65))
2736                     else
2737                        res@trXMaxF = max((/maxiwpup,maxiwsus,maxiwu/))
2738                     end if
2739                  else
2740                     res@trXMaxF = xe 
2741                  end if
[161]2742
2743                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2744
2745                  ; ***************************************************
2746                  ; legend for combined plot
2747                  ; ***************************************************
2748     
2749                  lgres                    = True
2750                  lgMonoDashIndex          = False
2751                  lgres@lgLabelFont        = "helvetica"   
2752                  lgres@lgLabelFontHeightF = .1           
2753                  lgres@vpWidthF           = 0.12           
2754                  lgres@vpHeightF          = 0.1         
2755                  lgres@lgDashIndexes      = (/0,1,2/)
2756                  lbid = gsn_create_legend(wks,3,(/"wpup","wsus","wu"/),lgres)       
2757
2758                  amres = True
2759                  amres@amParallelPosF   = 0.65             
2760                  amres@amOrthogonalPosF = -0.2           
2761                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2762                  overlay(plot(n),plot_wpup)
2763                  wpup=1
2764               else
2765                  varn=varn+1
2766                  continue   
2767               end if
2768            end if
2769            if (vNam(varn) .EQ. "wpvp" .OR. vNam(varn) .EQ. "wsvs" .OR.vNam(varn) .EQ. "wv") then
2770               if (wpvp .EQ. 0) then
2771                  res@gsnLeftString      = "wpvp, wsus and wv"
2772                  res@gsnRightString     = unit(varn)
[162]2773                  if (.not. isvar("xs")) then
2774                     if (parameter(63) .NE. "x0") then
2775                        res@trXMinF = stringtofloat(parameter(63))
2776                     else
2777                        res@trXMinF = min((/miniwpvp,miniwsvs,miniwv/))
2778                     end if
2779                  else
2780                     res@trXMinF = xs
2781                  end if
2782                  if (.not. isvar("xe")) then
2783                     if (parameter(65) .NE. "xdim") then
2784                        res@trXMaxF = stringtofloat(parameter(65))
2785                     else
2786                        res@trXMaxF = max((/maxiwpvp,maxiwsvs,maxiwv/))
2787                     end if
2788                  else
2789                     res@trXMaxF = xe 
2790                  end if
[161]2791
2792                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2793
2794                  ; ***************************************************
2795                  ; legend for combined plot
2796                  ; ***************************************************
2797     
2798                  lgres                    = True
2799                  lgMonoDashIndex          = False
2800                  lgres@lgLabelFont        = "helvetica"   
2801                  lgres@lgLabelFontHeightF = .1           
2802                  lgres@vpWidthF           = 0.12           
2803                  lgres@vpHeightF          = 0.1         
2804                  lgres@lgDashIndexes      = (/0,1,2/)
2805                  lbid = gsn_create_legend(wks,3,(/"wpvp","wsvs","wv"/),lgres)       
2806
2807                  amres = True
2808                  amres@amParallelPosF   = 0.65             
2809                  amres@amOrthogonalPosF = -0.2           
2810                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2811                  overlay(plot(n),plot_wpvp)
2812                  wpup=0
2813               else
2814                  varn=varn+1
2815                  continue   
2816               end if
2817            end if
2818            if (vNam(varn) .EQ. "wpptp" .OR. vNam(varn) .EQ. "wspts" .OR. vNam(varn) .EQ. "wpt") then
2819               if (wpptp .EQ. 0) then
2820                  res@gsnLeftString      = "wpptp, wspts and wv"
2821                  res@gsnRightString     = unit(varn)
[162]2822                  if (.not. isvar("xs")) then
2823                     if (parameter(63) .NE. "x0") then
2824                        res@trXMinF = stringtofloat(parameter(63))
2825                     else
2826                        res@trXMinF = min((/miniwpptp,miniwspts,miniwpt/))
2827                     end if
2828                  else
2829                     res@trXMinF = xs
2830                  end if
2831                  if (.not. isvar("xe")) then
2832                     if (parameter(65) .NE. "xdim") then
2833                        res@trXMaxF = stringtofloat(parameter(65))
2834                     else
2835                        res@trXMaxF = max((/maxiwpptp,maxiwspts,maxiwpt/))
2836                     end if
2837                  else
2838                     res@trXMaxF = xe 
2839                  end if
[161]2840
2841                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2842
2843                  ; ***************************************************
2844                  ; legend for combined plot
2845                  ; ***************************************************
2846     
2847                  lgres                    = True
2848                  lgMonoDashIndex          = False
2849                  lgres@lgLabelFont        = "helvetica"   
2850                  lgres@lgLabelFontHeightF = .1           
2851                  lgres@vpWidthF           = 0.12           
2852                  lgres@vpHeightF          = 0.1         
2853                  lgres@lgDashIndexes      = (/0,1,2/)
2854                  lbid = gsn_create_legend(wks,3,(/"wpptp","wspts","wpt"/),lgres)       
2855
2856                  amres = True
2857                  amres@amParallelPosF   = 0.65             
2858                  amres@amOrthogonalPosF = -0.2           
2859                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2860                  overlay(plot(n),plot_wpptp)
2861                  wpptp=1
2862               else
2863                  varn=varn+1
2864                  continue   
2865               end if
2866            end if
2867            if (vNam(varn) .EQ. "wsptsBC" .OR. vNam(varn) .EQ. "wptBC") then
2868               if (wsptsBC .EQ. 0) then
2869                  res@gsnLeftString      = "wsptsBC and wptBC"
2870                  res@gsnRightString     = unit(varn)
[162]2871                  if (.not. isvar("xs")) then
2872                     if (parameter(63) .NE. "x0") then
2873                        res@trXMinF = stringtofloat(parameter(63))
2874                     else
2875                        res@trXMinF = min((/miniwsptsBC,miniwptBC/))
2876                     end if
2877                  else
2878                     res@trXMinF = xs
2879                  end if
2880                  if (.not. isvar("xe")) then
2881                     if (parameter(65) .NE. "xdim") then
2882                        res@trXMaxF = stringtofloat(parameter(65))
2883                     else
2884                        res@trXMaxF = max((/maxiwsptsBC,maxiwptBC/))
2885                     end if
2886                  else
2887                     res@trXMaxF = xe 
2888                  end if
[161]2889
2890                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2891
2892                  ; ***************************************************
2893                  ; legend for combined plot
2894                  ; ***************************************************
2895     
2896                  lgres                    = True
2897                  lgMonoDashIndex          = False
2898                  lgres@lgLabelFont        = "helvetica"   
2899                  lgres@lgLabelFontHeightF = .1           
2900                  lgres@vpWidthF           = 0.12           
2901                  lgres@vpHeightF          = 0.1         
2902                  lgres@lgDashIndexes      = (/0,1,2/)
2903                  lbid = gsn_create_legend(wks,3,(/"wsptsBC","wptBC"/),lgres)       
2904
2905                  amres = True
2906                  amres@amParallelPosF   = 0.65             
2907                  amres@amOrthogonalPosF = -0.2           
2908                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2909                  overlay(plot(n),plot_wsptsBC)
2910                  wsptsBC=1
2911               else
2912                  varn=varn+1
2913                  continue   
2914               end if 
2915            end if             
2916            if (vNam(varn) .EQ. "wpvptp" .OR. vNam(varn) .EQ. "wsvpts" .OR. vNam(varn) .EQ. "wvpt") then
2917               if (wpvptp .EQ. 0) then
2918                  res@gsnLeftString      = "wpvptp, wsvpts and wv"
2919                  res@gsnRightString     = unit(varn)
[162]2920                  if (.not. isvar("xs")) then
2921                     if (parameter(63) .NE. "x0") then
2922                        res@trXMinF = stringtofloat(parameter(63))
2923                     else
2924                        res@trXMinF = min((/miniwpvptp,miniwsvpts,miniwvpt/))
2925                     end if
2926                  else
2927                     res@trXMinF = xs
2928                  end if
2929                  if (.not. isvar("xe")) then
2930                     if (parameter(65) .NE. "xdim") then
2931                        res@trXMaxF = stringtofloat(parameter(65))
2932                     else
2933                        res@trXMaxF = max((/maxiwpvptp,maxiwsvpts,maxiwvpt/))
2934                     end if
2935                  else
2936                     res@trXMaxF = xe 
2937                  end if
[161]2938
2939                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2940
2941                  ; ***************************************************
2942                  ; legend for combined plot
2943                  ; ***************************************************
2944     
2945                  lgres                    = True
2946                  lgMonoDashIndex          = False
2947                  lgres@lgLabelFont        = "helvetica"   
2948                  lgres@lgLabelFontHeightF = .1           
2949                  lgres@vpWidthF           = 0.12           
2950                  lgres@vpHeightF          = 0.1         
2951                  lgres@lgDashIndexes      = (/0,1,2/)
2952                  lbid = gsn_create_legend(wks,3,(/"wpvptp","wsvpts","wvpt"/),lgres)       
2953
2954                  amres = True
2955                  amres@amParallelPosF   = 0.65             
2956                  amres@amOrthogonalPosF = -0.2           
2957                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2958                  overlay(plot(n),plot_wpvptp)
2959                  wpvptp=1
2960               else
2961                  varn=varn+1
2962                  continue   
2963               end if
2964            end if
2965            if (vNam(varn) .EQ. "wpqp" .OR. vNam(varn) .EQ. "wsqs" .OR. vNam(varn) .EQ. "wq") then
2966               if (wpqp .EQ. 0) then
2967                  res@gsnLeftString      = "wpqp, wsqs and wq"
2968                  res@gsnRightString     = unit(varn)
[162]2969                  if (.not. isvar("xs")) then
2970                     if (parameter(63) .NE. "x0") then
2971                        res@trXMinF = stringtofloat(parameter(63))
2972                     else
2973                        res@trXMinF = min((/miniwpqp,miniwsqs,miniwq/))
2974                     end if
2975                  else
2976                     res@trXMinF = xs
2977                  end if
2978                  if (.not. isvar("xe")) then
2979                     if (parameter(65) .NE. "xdim") then
2980                        res@trXMaxF = stringtofloat(parameter(65))
2981                     else
2982                        res@trXMaxF = max((/maxiwpqp,maxiwsqs,maxiwq/))
2983                     end if
2984                  else
2985                     res@trXMaxF = xe 
2986                  end if
[161]2987
2988                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2989
2990                  ; ***************************************************
2991                  ; legend for combined plot
2992                  ; ***************************************************
2993     
2994                  lgres                    = True
2995                  lgMonoDashIndex          = False
2996                  lgres@lgLabelFont        = "helvetica"   
2997                  lgres@lgLabelFontHeightF = .1           
2998                  lgres@vpWidthF           = 0.12           
2999                  lgres@vpHeightF          = 0.1         
3000                  lgres@lgDashIndexes      = (/0,1,2/)
3001                  lbid = gsn_create_legend(wks,3,(/"wpqp","wsqs","wq"/),lgres)       
3002
3003                  amres = True
3004                  amres@amParallelPosF   = 0.65             
3005                  amres@amOrthogonalPosF = -0.2           
3006                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3007                  overlay(plot(n),plot_wpqp)
3008                  wpqp=1
3009               else
3010                  varn=varn+1
3011                  continue   
3012               end if
3013            end if
3014            if (vNam(varn) .EQ. "wpqvp" .OR. vNam(varn) .EQ. "wsqvs" .OR. vNam(varn) .EQ. "wqv") then
3015               if (wpqvp .EQ. 0) then
3016                  res@gsnLeftString      = "wpqvp, wsqvs and wqv"
3017                  res@gsnRightString     = unit(varn)
[162]3018                  if (.not. isvar("xs")) then
3019                     if (parameter(63) .NE. "x0") then
3020                        res@trXMinF = stringtofloat(parameter(63))
3021                     else
3022                        res@trXMinF = min((/miniwpqp,miniwsqvs,miniwqv/))
3023                     end if
3024                  else
3025                     res@trXMinF = xs
3026                  end if
3027                  if (.not. isvar("xe")) then
3028                     if (parameter(65) .NE. "xdim") then
3029                        res@trXMaxF = stringtofloat(parameter(65))
3030                     else
3031                        res@trXMaxF = max((/maxiwpqp,maxiwsqvs,maxiwqv/))
3032                     end if
3033                  else
3034                     res@trXMaxF = xe 
3035                  end if
[161]3036
3037                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
3038
3039                  ; ***************************************************
3040                  ; legend for combined plot
3041                  ; ***************************************************
3042     
3043                  lgres                    = True
3044                  lgMonoDashIndex          = False
3045                  lgres@lgLabelFont        = "helvetica"   
3046                  lgres@lgLabelFontHeightF = .1           
3047                  lgres@vpWidthF           = 0.12           
3048                  lgres@vpHeightF          = 0.1         
3049                  lgres@lgDashIndexes      = (/0,1,2/)
3050                  lbid = gsn_create_legend(wks,3,(/"wpqvp","wsqvs","wqv"/),lgres)       
3051
3052                  amres = True
3053                  amres@amParallelPosF   = 0.65             
3054                  amres@amOrthogonalPosF = -0.2           
3055                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3056                  overlay(plot(n),plot_wpqvp)
3057                  wpqvp=1
3058               else
3059                  varn=varn+1
3060                  continue   
3061               end if
3062            end if
3063            if (vNam(varn) .EQ. "wpsp" .OR. vNam(varn) .EQ. "wsss" .OR. vNam(varn) .EQ. "ws") then
3064               if (wpsp .EQ. 0) then
3065                  res@gsnLeftString      = "wpsp, wsss and ws"
3066                  res@gsnRightString     = unit(varn)
[162]3067                  if (.not. isvar("xs")) then
3068                     if (parameter(63) .NE. "x0") then
3069                        res@trXMinF = stringtofloat(parameter(63))
3070                     else
3071                        res@trXMinF = min((/miniwpsp,miniwsss,miniws/))
3072                     end if
3073                  else
3074                     res@trXMinF = xs
3075                  end if
3076                  if (.not. isvar("xe")) then
3077                     if (parameter(65) .NE. "xdim") then
3078                        res@trXMaxF = stringtofloat(parameter(65))
3079                     else
3080                        res@trXMaxF = max((/maxiwpsp,maxiwsss,maxiws/))
3081                     end if
3082                  else
3083                     res@trXMaxF = xe 
3084                  end if
[161]3085
3086                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
3087
3088                  ; ***************************************************
3089                  ; legend for combined plot
3090                  ; ***************************************************
3091     
3092                  lgres                    = True
3093                  lgMonoDashIndex          = False
3094                  lgres@lgLabelFont        = "helvetica"   
3095                  lgres@lgLabelFontHeightF = .1           
3096                  lgres@vpWidthF           = 0.12           
3097                  lgres@vpHeightF          = 0.1         
3098                  lgres@lgDashIndexes      = (/0,1,2/)
3099                  lbid = gsn_create_legend(wks,3,(/"wpsp","wsss","ws"/),lgres)       
3100
3101                  amres = True
3102                  amres@amParallelPosF   = 0.65             
3103                  amres@amOrthogonalPosF = -0.2           
3104                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3105                  overlay(plot(n),plot_wpsp)
3106                  wpsp=1
3107               else
3108                  varn=varn+1
3109                  continue   
3110               end if
3111            end if
3112            if (vNam(varn) .EQ. "wpsap" .OR.vNam(varn) .EQ. "wssas" .OR. vNam(varn) .EQ. "wsa") then
3113               if (wpsap .EQ. 0) then
3114                  res@gsnLeftString      = "wpsap, wssas and wsa"
3115                  res@gsnRightString     = unit(varn)
[162]3116                  if (.not. isvar("xs")) then
3117                     if (parameter(63) .NE. "x0") then
3118                        res@trXMinF = stringtofloat(parameter(63))
3119                     else
3120                        res@trXMinF = min((/miniwpsap,miniwssas,miniwsa/))
3121                     end if
3122                  else
3123                     res@trXMinF = xs
3124                  end if
3125                  if (.not. isvar("xe")) then
3126                     if (parameter(65) .NE. "xdim") then
3127                        res@trXMaxF = stringtofloat(parameter(65))
3128                     else
3129                        res@trXMaxF = max((/maxiwpsap,maxiwssas,maxiwsa/))
3130                     end if
3131                  else
3132                     res@trXMaxF = xe 
3133                  end if
[161]3134
3135                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
3136
3137                  ; ***************************************************
3138                  ; legend for combined plot
3139                  ; ***************************************************
3140     
3141                  lgres                    = True
3142                  lgMonoDashIndex          = False
3143                  lgres@lgLabelFont        = "helvetica"   
3144                  lgres@lgLabelFontHeightF = .1           
3145                  lgres@vpWidthF           = 0.12           
3146                  lgres@vpHeightF          = 0.1         
3147                  lgres@lgDashIndexes      = (/0,1,2/)
3148                  lbid = gsn_create_legend(wks,3,(/"wpsap","wssas","wsa"/),lgres)       
3149
3150                  amres = True
3151                  amres@amParallelPosF   = 0.65             
3152                  amres@amOrthogonalPosF = -0.2           
3153                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3154                  overlay(plot(n),plot_wpsap)
3155                  wpsap=1
3156               else
3157                  varn=varn+1
3158                  continue   
3159               end if
3160            end if
[162]3161         
[161]3162            if (vNam(varn) .EQ. "us2" .OR. vNam(varn) .EQ. "vs2" .OR. vNam(varn) .EQ. "ws2") then
3163               if (us2 .EQ. 0) then
3164                  res@gsnLeftString      = "us2, vs2 and ws2"
3165                  res@gsnRightString     = unit(varn)
[162]3166                  if (.not. isvar("xs")) then
3167                     if (parameter(63) .NE. "x0") then
3168                        res@trXMinF = stringtofloat(parameter(63))
3169                     else
3170                        res@trXMinF = min((/minius2,minivs2,miniws2/))
3171                     end if
3172                  else
3173                     res@trXMinF = xs
3174                  end if
3175                  if (.not. isvar("xe")) then
3176                     if (parameter(65) .NE. "xdim") then
3177                        res@trXMaxF = stringtofloat(parameter(65))
3178                     else
3179                        res@trXMaxF = max((/maxius2,maxivs2,maxiws2/))
3180                     end if
3181                  else
3182                     res@trXMaxF = xe 
3183                  end if
[161]3184
3185                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
3186
3187                  ; ***************************************************
3188                  ; legend for combined plot
3189                  ; ***************************************************
3190     
3191                  lgres                    = True
3192                  lgMonoDashIndex          = False
3193                  lgres@lgLabelFont        = "helvetica"   
3194                  lgres@lgLabelFontHeightF = .1           
3195                  lgres@vpWidthF           = 0.12           
3196                  lgres@vpHeightF          = 0.1         
3197                  lgres@lgDashIndexes      = (/0,1,2/)
3198                  lbid = gsn_create_legend(wks,3,(/"us2","vs2","ws2"/),lgres)       
3199
3200                  amres = True
3201                  amres@amParallelPosF   = 0.65             
3202                  amres@amOrthogonalPosF = -0.2           
3203                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3204                  overlay(plot(n),plot_us2)
3205                  us2=1
3206               else
3207                  varn=varn+1
3208                  continue   
3209               end if
3210            end if
[162]3211           
[161]3212            if (vNam(varn) .EQ. "wsususodz" .OR. vNam(varn) .EQ. "wspsodz" .OR. vNam(varn) .EQ. "wpeodz" ) then
3213               if (wsususodz .EQ. 0) then
3214                  res@gsnLeftString      = "wsususodz, wspsodz and ws2"
3215                  res@gsnRightString     = unit(varn)
[162]3216                  if (.not. isvar("xs")) then
3217                     if (parameter(63) .NE. "x0") then
3218                        res@trXMinF = stringtofloat(parameter(63))
3219                     else
3220                        res@trXMinF = min((/miniwsususodz,miniwspsodz,miniwpeodz/))
3221                     end if
3222                  else
3223                     res@trXMinF = xs
3224                  end if
3225                  if (.not. isvar("xe")) then
3226                     if (parameter(65) .NE. "xdim") then
3227                        res@trXMaxF = stringtofloat(parameter(65))
3228                     else
3229                        res@trXMaxF = max((/maxiwsususodz,maxiwspsodz,maxiwpeodz/))
3230                     end if
3231                  else
3232                     res@trXMaxF = xe 
3233                  end if
[161]3234
3235                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
3236
3237                  ; ***************************************************
3238                  ; legend for combined plot
3239                  ; ***************************************************
3240     
3241                  lgres                    = True
3242                  lgMonoDashIndex          = False
3243                  lgres@lgLabelFont        = "helvetica"   
3244                  lgres@lgLabelFontHeightF = .1           
3245                  lgres@vpWidthF           = 0.12           
3246                  lgres@vpHeightF          = 0.1         
3247                  lgres@lgDashIndexes      = (/0,1,2/)
3248                  lbid = gsn_create_legend(wks,3,(/"wsususodz","wspsodz","wpeodz"/),lgres)       
3249
3250                  amres = True
3251                  amres@amParallelPosF   = 0.65             
3252                  amres@amOrthogonalPosF = -0.2           
3253                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
3254                  overlay(plot(n),plot_wsususodz)
3255                  wsususodz=1
3256               else
3257                  varn=varn+1
3258                  continue   
3259               end if
3260            end if     
3261            n=n+1   
3262            varn=varn+1
3263         end if
3264      end do
3265   end if     
3266
[154]3267   if (combine .EQ. 1) then
[161]3268     
3269      check=True     
3270      n_o=0
3271      do varn = 0,dim-1
3272 
3273         if ( isStrSubset( vNam(varn), "NORM") .or. isStrSubset( vNam(varn), "time") )
3274            check = False
3275         else
3276            if (.not. isvar("var")) then
3277               check = True
3278               if (parameter(21) .NE. "variables") then
3279                  var=parameter(21)
3280                  check = isStrSubset( var,","+vNam(varn)+"," )
3281               end if
3282            else         
3283               check = isStrSubset( var,","+vNam(varn)+"," )
3284            end if
3285         end if
3286     
3287         if(check) then
[154]3288
[161]3289            z = f->$vNam(varn+1)$
3290            com=isStrSubset( c_var,","+vNam(varn)+"," )
3291     
3292            if (com)
3293                             
3294               if (n_o .EQ. 1) then
3295                  res@xyDashPattern  = 1
3296                                 
3297               else           
3298                  if (n_o .EQ. 2) then
3299                     res@xyDashPattern  = 2
3300                  else
3301                     res@xyDashPattern  = 0
3302                     res@gsnLeftString  = c_var
3303                     res@gsnRightString = unit(varn)
[162]3304                     if (.not. isvar("xs")) then
3305                        if (parameter(63) .NE. "x0") then
3306                           res@trXMinF = stringtofloat(parameter(63))
3307                        else
3308                           res@trXMinF = min(mini)
3309                        end if
3310                     else
3311                        res@trXMinF = xs
3312                     end if
3313                     if (.not. isvar("xe")) then
3314                        if (parameter(65) .NE. "xdim") then
3315                           res@trXMaxF = stringtofloat(parameter(65))
3316                        else
3317                           res@trXMaxF = max(maxi)
3318                        end if
3319                     else
3320                        res@trXMaxF = xe 
3321                     end if
[161]3322                  end if
3323               end if
3324               label(n_o)=vNam(varn)
3325               color_o(n_o)=237
3326               plot_o(n_o)=gsn_csm_xy(wks,data(varn,:,:),z,res)
3327               n_o=n_o+1
3328            end if         
3329            varn=varn+1   
3330         end if
3331      end do
3332   
3333      if(number_comb .EQ. 2)then
3334         overlay(plot_o(0),plot_o(1))
3335      end if
3336      if(number_comb .EQ. 3)then
3337         overlay(plot_o(0),plot_o(1))
3338         overlay(plot_o(0),plot_o(2))
3339      end if
[154]3340
[161]3341      ; ***************************************************
3342      ; legend for combined plot
3343      ; ***************************************************
[154]3344     
[161]3345      lgres                    = True
3346      lgMonoDashIndex          = False
3347      lgres@lgDashIndexes      = (/0,1,2/)
3348      lgres@lgLabelFont        = "helvetica"   
3349      lgres@lgLabelFontHeightF = .1           
3350      lgres@vpWidthF           = 0.12           
3351      lgres@vpHeightF          = 0.1           
3352 
3353      lbid = gsn_create_legend(wks,number_comb,label,lgres)       
3354
3355      amres = True
3356      amres@amParallelPosF   = 0.65                 
3357      amres@amOrthogonalPosF = -0.2           
3358      annoid1 = gsn_add_annotation(plot_o(0),lbid,amres)
3359   
3360      plot(0) = plot_o(0)
3361
[154]3362   end if
3363
3364   ; ***************************************************
3365   ; merge plots onto one page
3366   ; ***************************************************
[162]3367
[161]3368   do m=0,n-1
3369      plot_(m)=plot(n-1-m)
[154]3370   end do
3371
[161]3372   if (format_out .EQ. "eps" .OR. format_out .EQ. "epsi") then
3373      gsn_panel(wks,plot_(0:n-1),(/n,1/),resP)
3374   else   
3375      do i = 0,n-1, no_lines*no_columns
3376         if( (i+no_lines*no_columns) .gt. (n-1)) then
3377            gsn_panel(wks,plot_(i:n-1),(/no_lines,no_columns/),resP)
3378         else
3379           gsn_panel(wks,plot_(i:i+no_lines*no_columns-1),(/no_lines,no_columns/),resP)
3380         end if
3381      end do
3382   end if
3383
[154]3384   print(" ")
3385   print("Output to: " + file_out +"."+ format_out)
3386   print(" ")
3387
3388end
Note: See TracBrowser for help on using the repository browser.