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

Last change on this file since 161 was 161, checked in by letzel, 16 years ago
  • NCL scripts in trunk/SCRIPTS/NCL updated for vector plots
File size: 104.1 KB
Line 
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
12      parameter = asciiread("~/.ncl_preferences",75,"string")
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
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
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
107   if ( .not. isvar("over") ) then                      ; switches overlaying plots on
108      over = 0
109      if (stringtointeger(parameter(73)) .NE. 0) then
110         over = stringtointeger(parameter(73))
111         if (stringtointeger(parameter(73)) .NE. 1) then
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 
120   ; ***************************************************
121   ; open input file
122   ; ***************************************************
123
124   f=addfile( file_in,"r")
125   
126   vNam = getfilevarnames(f)
127   print(" ")
128   print("Variable on netCDF file: " + vNam)
129   print(" ")
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
458 
459   dimz  = dimsizes(z_w)
460   dimz  = dimsizes(z_u)
461   t_all = f->time
462   nt    = dimsizes(t_all)
463 
464   ; ****************************************************       
465   ; start of time step and different types of mistakes that could be done
466   ; ****************************************************
467
468   if ( .not. isvar("start_time_step") ) then           
469      start_time_step = 1
470      if (parameter(13) .NE. "1") then
471         if (parameter(13) .LE. "1")
472            print(" ")
473            print("Begin at least with time step 2")
474            print(" ")
475            exit
476         end if
477         if (stringtointeger(parameter(13)) .GE. nt)
478            print(" ")
479            print("'start_time_step' = "+ parameter(13) +" is greater than available time steps = " + (nt-1))
480            print(" ")
481            exit
482         end if
483         start_time_step = stringtointeger(parameter(13))-1 
484      end if
485   else
486      if (start_time_step .LE. 0)
487         print(" ")
488         print("Begin at least with time step 1")
489         print(" ")
490         exit
491      end if
492      if (start_time_step .GE. nt)
493         print(" ")
494         print("'start_time_step' = "+ start_time_step +" is greater than available time steps = " + (nt-1))
495         print(" ")
496         exit
497      end if
498      start_time_step = start_time_step - 1
499   end if
500
501   ; ****************************************************
502   ; end of time step and different types of mistakes that could be done
503   ; ****************************************************
504
505   if ( .not. isvar("end_time_step") ) then             
506      end_time_step = nt-1
507      if (parameter(15) .NE. "nt") then
508         if (parameter(15) .LE. "0")
509            print(" ")
510            print("'end_time_step' = "+parameter(15)+ " is too small; 'end_time_step' should be at least 1 ")
511            print(" ")
512            exit
513         end if
514         if (stringtointeger(parameter(15)) .GE. nt)
515            print(" ")
516            print("'end_time_step' = "+ parameter(15) +" is greater than available time steps = " + (nt-1))
517            print(" ")
518            exit
519         end if
520         if (stringtointeger(parameter(15)) .LT. stringtointeger(parameter(13)) )
521            print(" ")
522            print("'end_time_step' = "+ parameter(15) +" is lower than 'start_time_step' = "+parameter(13))
523            print(" ")
524            exit
525         end if
526         end_time_step = stringtointeger(parameter(15)) 
527      end if   
528   else
529      if (end_time_step .LE. 0)
530         print(" ")
531         print("'end_time_step' = "+end_time_step+ " is too small; 'end_time_step' should be at least 1 ")
532         print(" ")
533         exit
534      end if
535      if (end_time_step .GE. nt)
536         print(" ")
537         print("'end_time_step' = "+ end_time_step +" is greater than available time steps = "+(nt-1))
538         print(" ")
539         exit
540      end if
541      if (end_time_step .LT. start_time_step)
542            print(" ")
543            print("'end_time_step' = "+end_time_step +" is lower than 'start_time_step' = "+start_time_step)
544            print(" ")
545            exit
546      end if
547      end_time_step = end_time_step - 1
548   end if
549
550   ; ****************************************************
551   ; set up legend and colors
552   ; ****************************************************
553   
554   legend_label=new(nt,double)
555   do p=start_time_step,end_time_step
556      legend_label(p-start_time_step)=t_all(p)
557   end do
558   
559   np = end_time_step-start_time_step 
560   if ( black .eq. 0 ) then
561      res=True     
562      res@xyLineColors = ispan(2,237,235/np)
563   end if
564
565   ; ***************************************************
566   ; set up recourses
567   ; ***************************************************
568
569   res@gsnDraw                 = False
570   res@gsnFrame                = False
571   res@gsnPaperOrientation     = "portrait"
572   res@gsnPaperWidth           = 8.27
573   res@gsnPaperHeight          = 11.69
574   res@gsnPaperMargin          = 0.79
575   res@txFont                  = "helvetica"
576   res@tiMainFont              = "helvetica"
577   res@tiXAxisFont             = "helvetica"
578   res@tiYAxisFont             = "helvetica"
579   res@tmXBLabelFont           = "helvetica"
580   res@tmYLLabelFont           = "helvetica"
581   res@lgLabelFont             = "helvetica"
582   res@tmLabelAutoStride       = True
583   res@pmLegendDisplayMode     = "Always"
584   res@pmLegendSide            = "Top"
585   res@xyExplicitLegendLabels  = legend_label
586   res@pmLegendParallelPosF    = 1.15
587   res@pmLegendOrthogonalPosF  = -1.0
588   res@pmLegendWidthF          = 0.12
589   res@pmLegendHeightF         = 0.3
590   res@lgLabelFontHeightF     = .02
591   res@txFontHeightF      = 0.02
592   res@tiXAxisFontHeightF = 0.02
593   res@tiYAxisFontHeightF = 0.02
594   res@tiXAxisString      = " "   
595   res@tiYAxisString      = "Height [z]"
596   
597   if ( dash .eq. 0 ) then
598      res@xyMonoDashPattern       = True 
599   end if
600
601   resP                        = True
602   resP@txFont                 = "helvetica"
603   resP@txString               = f@title
604   resP@txFuncCode             = "~"
605   resP@txFontHeightF          = 0.014
606
607   ; ***************************************************
608   ; set up graphics for plot
609   ; ***************************************************
610
611   plot = new(dim,graphic)
612   plot_ = new(dim,graphic)
613
614   if (combine .EQ. 1) then
615      if ( .not. isvar("number_comb") ) then           
616         if (parameter(25) .EQ. "0") then
617            print(" ")
618            print("Please set 'number_comb' to 2 or 3 if you would like to overlay 2 or 3 variables in one plot")
619            print(" ")
620            exit
621         else
622            number_comb=stringtointeger(parameter(25))
623            plot_o = new(number_comb,graphic)   
624         end if
625      else
626         if(number_comb .EQ. 2 .OR. number_comb .EQ. 3) then
627            plot_o = new(number_comb,graphic)     
628         else
629            print(" ")
630            print("Please set 'number_comb' to 2 or 3 if you would like to overlay 2 or 3 variables in one plot")
631            print(" ")
632            exit
633         end if   
634      end if
635      label=new(number_comb,string)
636      color_o=new(number_comb,integer)
637      mini=new(number_comb,float)
638      maxi=new(number_comb,float)
639   end if
640
641   wks=gsn_open_wks(format_out,file_out)
642   gsn_define_colormap(wks,"rainbow+white")
643 
644   ; ***************************************************
645   ; indicate plot number
646   ; ***************************************************
647   
648   if (combine .EQ. 1) then
649      n = 1
650   else
651      n = 0
652   end if
653
654   ; ***************************************************
655   ; set up minimum and maximum height
656   ; ***************************************************
657
658   if (.not. isvar("min_z"))
659      min_z=0
660      if (stringtointeger(parameter(33)) .NE. 0) then
661         if (stringtointeger(parameter(33)) .GE. max(z_u) ) then
662            print(" ")
663            print("Minimum of height ('min_z'="+stringtointeger(parameter(33))+") is greater than available heights (="+max(z_u)+")")
664            print(" ")
665            exit
666         end if
667         if (stringtointeger(parameter(33)) .LT. 0 ) then
668            print(" ")
669            print("Begin minimum of height 'min_z' with 0")
670            print(" ")
671            exit
672         end if
673         min_z=stringtointeger(parameter(33))
674      end if
675   else
676      if (min_z .GE. max(z_u) ) then
677         print(" ")
678         print("Minimum of height ('min_z'="+min_z+") is greater than available heights (="+max(z_u)+")")
679         print(" ")
680         exit
681      end if
682      if (min_z .LT. 0 ) then
683         print(" ")
684         print("Begin minimum of height 'min_z' with 0")
685         print(" ")
686         exit
687      end if
688   end if
689
690   if (.not. isvar("max_z"))
691      max_z=max(z_u)
692      if ((parameter(35)) .NE. "max(z_u)") then
693         if (stringtofloat(parameter(35)) .GE. max(z_u) ) then
694            print(" ")
695            print("Maximum of height ('max_z'="+parameter(35)+") is greater than available heights (="+max(z_u)+")")
696            print(" ")
697            exit
698         end if
699         if (stringtointeger(parameter(35)) .LE. 0 ) then
700            print(" ")
701            print("Maximum of height 'max_z' should be at least 1")
702            print(" ")
703            exit
704         end if
705         max_z=stringtointeger(parameter(35))
706      end if
707   else
708      if (max_z .GE. max(z_pr) ) then
709         print(" ")
710         print("Maximum of height ('max_z'="+max_z+") is greater than available heights (="+max(z_u)+")")
711         print(" ")
712         exit
713      end if
714      if (max_z .LE. 0 ) then
715         print(" ")
716         print("Maximum of height 'max_z' should be at least 1")
717         print(" ")
718         exit
719      end if
720   end if
721
722   ; ***************************************************
723   ; read data and create plots
724   ; ***************************************************
725     
726   do ti = start_time_step, end_time_step
727      if( t_all(ti) .lt. 10^36) then
728         start_time_step = ti
729         break
730      end if
731   end do 
732 
733   data   = new((/dim,(end_time_step-start_time_step)+1,dimz/),float)
734   data_0 = new((/(end_time_step-start_time_step)+1,dimz/),float)
735   data_0 = 0.0
736   t      = new((/(end_time_step-start_time_step)+1,dimz/),float)
737   t      = 0.0
738   unit   = new(dim,string)
739
740   if (over .EQ. 1) then
741      plot_u         = gsn_csm_xy(wks,t,data_0(:,:),res)
742      miniu = 1.E27
743      maxiu =-1.E27
744      plot_v         = gsn_csm_xy(wks,t,data_0(:,:),res)
745      miniv = 1.E27
746      maxiv =-1.E27
747      plot_w         = gsn_csm_xy(wks,t,data_0(:,:),res)
748      miniw = 1.E27
749      maxiw =-1.E27
750      plot_pt        = gsn_csm_xy(wks,t,data_0(:,:),res)
751      minipt = 1.E27
752      maxipt =-1.E27
753      plot_vpt       = gsn_csm_xy(wks,t,data_0(:,:),res)
754      minivpt = 1.E27
755      maxivpt =-1.E27
756      plot_lpt       = gsn_csm_xy(wks,t,data_0(:,:),res)
757      minilpt = 1.E27
758      maxilpt =-1.E27
759      plot_q         = gsn_csm_xy(wks,t,data_0(:,:),res)
760      miniq = 1.E27
761      maxiq =-1.E27
762      plot_qv        = gsn_csm_xy(wks,t,data_0(:,:),res)
763      miniqv = 1.E27
764      maxiqv =-1.E27
765      plot_ql        = gsn_csm_xy(wks,t,data_0(:,:),res)
766      miniql = 1.E27
767      maxiql =-1.E27
768      plot_rho       = gsn_csm_xy(wks,t,data_0(:,:),res)
769      plot_s         = gsn_csm_xy(wks,t,data_0(:,:),res)
770      plot_sa        = gsn_csm_xy(wks,t,data_0(:,:),res)
771      plot_e         = gsn_csm_xy(wks,t,data_0(:,:),res)
772      minie = 1.E27
773      maxie =-1.E27
774      plot_es        = gsn_csm_xy(wks,t,data_0(:,:),res)
775      minie = 1.E27
776      maxie =-1.E27
777      plot_km        = gsn_csm_xy(wks,t,data_0(:,:),res)
778      minie = 1.E27
779      maxie =-1.E27
780      plot_kh        = gsn_csm_xy(wks,t,data_0(:,:),res)
781      minie = 1.E27
782      maxie =-1.E27
783      plot_l         = gsn_csm_xy(wks,t,data_0(:,:),res)     
784      plot_wpup      = gsn_csm_xy(wks,t,data_0(:,:),res)
785      miniwpup = 1.E27
786      maxiwpup =-1.E27
787      plot_wsus      = gsn_csm_xy(wks,t,data_0(:,:),res)
788      miniwsus = 1.E27
789      maxiwsus =-1.E27
790      plot_wu        = gsn_csm_xy(wks,t,data_0(:,:),res)
791      miniwu = 1.E27
792      maxiwu =-1.E27
793      plot_wpvp      = gsn_csm_xy(wks,t,data_0(:,:),res)
794      miniwpvp = 1.E27
795      maxiwpvp =-1.E27
796      plot_wsvs      = gsn_csm_xy(wks,t,data_0(:,:),res)
797      miniwsvs = 1.E27
798      maxiwsvs =-1.E27
799      plot_wv        = gsn_csm_xy(wks,t,data_0(:,:),res)
800      miniwv = 1.E27
801      maxiwv =-1.E27
802      plot_wpptp     = gsn_csm_xy(wks,t,data_0(:,:),res)
803      miniwpptp = 1.E27
804      maxiwpptp =-1.E27
805      plot_wspts     = gsn_csm_xy(wks,t,data_0(:,:),res)
806      miniwspts = 1.E27
807      maxiwspts =-1.E27
808      plot_wpt       = gsn_csm_xy(wks,t,data_0(:,:),res)
809      miniwpt = 1.E27
810      maxiwpt =-1.E27
811      plot_wsptsBC   = gsn_csm_xy(wks,t,data_0(:,:),res)
812      miniwsptsBC = 1.E27
813      maxiwsptsBC =-1.E27
814      plot_wptBC     = gsn_csm_xy(wks,t,data_0(:,:),res)
815      miniwptBC = 1.E27
816      maxiwptBC =-1.E27
817      plot_wpvptp    = gsn_csm_xy(wks,t,data_0(:,:),res)
818      miniwpvptp = 1.E27
819      maxiwpvptp =-1.E27
820      plot_wsvpts    = gsn_csm_xy(wks,t,data_0(:,:),res)
821      miniwsvpts = 1.E27
822      maxiewsvpts=-1.E27
823      plot_wvpt      = gsn_csm_xy(wks,t,data_0(:,:),res)
824      miniwvpt = 1.E27
825      maxiwvpt =-1.E27
826      plot_wpqp      = gsn_csm_xy(wks,t,data_0(:,:),res)
827      miniwpqp = 1.E27
828      maxiwpqp =-1.E27
829      plot_wsqs      = gsn_csm_xy(wks,t,data_0(:,:),res)
830      miniwsqs = 1.E27
831      maxiwsqs =-1.E27
832      plot_wq        = gsn_csm_xy(wks,t,data_0(:,:),res)
833      miniwq = 1.E27
834      maxiwq =-1.E27
835      plot_wpqvp     = gsn_csm_xy(wks,t,data_0(:,:),res)
836      miniwpqvp = 1.E27
837      maxiwpqvp =-1.E27
838      plot_wsqvs     = gsn_csm_xy(wks,t,data_0(:,:),res)
839      miniwsqvs = 1.E27
840      maxiwsqvs =-1.E27
841      plot_wqv       = gsn_csm_xy(wks,t,data_0(:,:),res)
842      miniwqv = 1.E27
843      maxiwqv =-1.E27
844      plot_wpsp      = gsn_csm_xy(wks,t,data_0(:,:),res)
845      miniwpsp = 1.E27
846      maxiwpsp =-1.E27
847      plot_wsss      = gsn_csm_xy(wks,t,data_0(:,:),res)
848      miniwsss = 1.E27
849      maxiwsss =-1.E27
850      plot_ws        = gsn_csm_xy(wks,t,data_0(:,:),res)
851      miniws = 1.E27
852      maxiws =-1.E27
853      plot_wpsap     = gsn_csm_xy(wks,t,data_0(:,:),res)
854      miniwpsap = 1.E27
855      maxiwpsap =-1.E27
856      plot_wssas     = gsn_csm_xy(wks,t,data_0(:,:),res)
857      miniwssas = 1.E27
858      maxiwssas =-1.E27
859      plot_wsa       = gsn_csm_xy(wks,t,data_0(:,:),res)
860      miniwsa = 1.E27
861      maxiwsa =-1.E27
862      plot_wses      = gsn_csm_xy(wks,t,data_0(:,:),res)
863      plot_us2       = gsn_csm_xy(wks,t,data_0(:,:),res)
864      minius2 = 1.E27
865      maxius2 =-1.E27
866      plot_vs2       = gsn_csm_xy(wks,t,data_0(:,:),res)
867      minivs2 = 1.E27
868      maxivs2 =-1.E27
869      plot_ws2       = gsn_csm_xy(wks,t,data_0(:,:),res)
870      miniws2 = 1.E27
871      maxiws2 =-1.E27
872      plot_pts2      = gsn_csm_xy(wks,t,data_0(:,:),res)
873      plot_ws3       = gsn_csm_xy(wks,t,data_0(:,:),res)
874      plot_Sw        = gsn_csm_xy(wks,t,data_0(:,:),res)
875      plot_ws2pts    = gsn_csm_xy(wks,t,data_0(:,:),res)
876      plot_wspts2    = gsn_csm_xy(wks,t,data_0(:,:),res)
877      plot_wsususodz = gsn_csm_xy(wks,t,data_0(:,:),res)
878      miniwsususodz = 1.E27
879      maxiwsususodz =-1.E27
880      plot_wspsodz   = gsn_csm_xy(wks,t,data_0(:,:),res)
881      miniwspsodz = 1.E27
882      maxiwspsodz =-1.E27
883      plot_wpeodz    = gsn_csm_xy(wks,t,data_0(:,:),res)
884      miniwpeodz = 1.E27
885      maxiwpeodz =-1.E27
886   end if
887 
888   n_o=0
889   do varn = 0,dim-1
890       
891      temp = f->$vNam(varn)$
892     
893      if ( isStrSubset( vNam(varn), "time") .OR. isStrSubset( vNam(varn), "NORM")) then
894         check = False
895      else
896         if (.not. isvar("var")) then
897            check = True
898            if (parameter(21) .NE. "variables") then
899               var=parameter(21)
900               check = isStrSubset( var,","+vNam(varn)+"," )
901            end if
902         else         
903            check = isStrSubset( var,","+vNam(varn)+"," )
904         end if
905      end if
906
907      if (combine .EQ. 1) then         
908         com=isStrSubset(c_var,","+vNam(varn)+"," )     
909         if (com)                       
910            check = False
911            data(varn,:,:) = temp(start_time_step:end_time_step,0:dimz-1)
912            unit(varn) = temp@units
913            if (n_o .GT. number_comb-1) then
914               print(" ")
915               print("Please set 'number_comb' to the right number of overlaying variables ('c_var')")
916               print(" ")
917               exit
918            end if
919            mini(n_o)=min(data(varn,:,:))
920            maxi(n_o)=max(data(varn,:,:))
921            varn=varn+1
922            n_o=n_o+1
923         end if
924      end if
925
926      if(check) then
927               
928         z = f->$vNam(varn+1)$
929 
930         unit(varn) = temp@units
931         data(varn,:,:) = temp(start_time_step:end_time_step,0:dimz-1)
932 
933         if (over .EQ. 0) then 
934            res@gsnLeftString      = vNam(varn)
935            res@gsnRightString     = unit(varn)
936            res@trYMinF            = min_z
937            res@trYMaxF            = max_z 
938            res@trXMinF            = min(data(varn,:,:))
939            res@trXMaxF            = max(data(varn,:,:))       
940            plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res) 
941         end if       
942         
943            if (vNam(varn) .EQ. "u") then
944               miniu=min(data(varn,:,:))
945               maxiu=max(data(varn,:,:))
946               if (over .EQ. 1) then
947                  res@xyDashPattern  = 0
948                  plot_u = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
949               else
950                  res@gsnLeftString      = vNam(varn)
951                  res@gsnRightString     = unit(varn)
952                  res@trXMinF            = miniu
953                  res@trXMaxF            = maxiu                 
954                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res) 
955               end if
956            end if
957            if (vNam(varn) .EQ. "v") then
958               miniv=min(data(varn,:,:))
959               maxiv=max(data(varn,:,:))
960               if (over .EQ. 1) then
961                  res@xyDashPattern  = 1
962                  plot_v = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
963               else
964                  res@gsnLeftString      = vNam(varn)
965                  res@gsnRightString     = unit(varn)
966                  res@trXMinF            = miniv
967                  res@trXMaxF            = maxiv                   
968                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
969               end if 
970            end if
971            if (vNam(varn) .EQ. "w") then
972               miniw=min(data(varn,:,:))
973               maxiw=max(data(varn,:,:))
974               if (over .EQ. 1) then
975                  res@xyDashPattern  = 2
976                  plot_w = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
977               else
978                  res@gsnLeftString      = vNam(varn)
979                  res@gsnRightString     = unit(varn)
980                  res@trXMinF            = miniw
981                  res@trXMaxF            = maxiw                   
982                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
983               end if   
984            end if
985
986            if (vNam(varn) .EQ. "pt") then
987               minipt=min(data(varn,:,:))
988               maxipt=max(data(varn,:,:))
989               if (over .EQ. 1) then
990                  res@xyDashPattern  = 0
991                  plot_pt = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
992               else
993                  res@gsnLeftString      = vNam(varn)
994                  res@gsnRightString     = unit(varn)
995                  res@trXMinF            = minipt
996                  res@trXMaxF            = maxipt
997                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
998               end if 
999            end if
1000            if (vNam(varn) .EQ. "vpt") then
1001               minivpt=min(data(varn,:,:))
1002               maxivpt=max(data(varn,:,:))
1003               if (over .EQ. 1) then
1004                  res@xyDashPattern  = 1
1005                  plot_vpt = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1006               else
1007                  res@gsnLeftString      = vNam(varn)
1008                  res@gsnRightString     = unit(varn)
1009                  res@trXMinF            = minivpt
1010                  res@trXMaxF            = maxivpt
1011                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1012               end if
1013            end if
1014            if (vNam(varn) .EQ. "lpt") then
1015               minilpt=min(data(varn,:,:))
1016               maxilpt=max(data(varn,:,:))
1017               if (over .EQ. 1) then
1018                  res@xyDashPattern  = 2
1019                  plot_lpt = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1020               else
1021                  res@gsnLeftString      = vNam(varn)
1022                  res@gsnRightString     = unit(varn)
1023                  res@trXMinF            = minilpt
1024                  res@trXMaxF            = maxilpt
1025                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1026               end if
1027            end if
1028
1029            if (vNam(varn) .EQ. "q") then
1030               miniq=min(data(varn,:,:))
1031               maxiq=max(data(varn,:,:))
1032               if (over .EQ. 1) then
1033                  res@xyDashPattern  = 0
1034                  plot_q = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1035               else
1036                  res@gsnLeftString      = vNam(varn)
1037                  res@gsnRightString     = unit(varn)
1038                  res@trXMinF            = miniq
1039                  res@trXMaxF            = maxiq
1040                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1041               end if
1042            end if
1043            if (vNam(varn) .EQ. "qv") then
1044               miniqv=min(data(varn,:,:))
1045               maxiqv=max(data(varn,:,:))
1046               if (over .EQ. 1) then
1047                  res@xyDashPattern  = 1
1048                  plot_qv = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1049               else
1050                  res@gsnLeftString      = vNam(varn)
1051                  res@gsnRightString     = unit(varn)
1052                  res@trXMinF            = miniqv
1053                  res@trXMaxF            = maxiqv
1054                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1055               end if
1056            end if
1057            if (vNam(varn) .EQ. "ql") then
1058               miniql=min(data(varn,:,:))
1059               maxiql=max(data(varn,:,:))
1060               if (over .EQ. 1) then
1061                  res@xyDashPattern  = 2
1062                  plot_ql = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1063               else
1064                  res@gsnLeftString      = vNam(varn)
1065                  res@gsnRightString     = unit(varn)
1066                  res@trXMinF            = miniql
1067                  res@trXMaxF            = maxiql
1068                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1069               end if
1070            end if
1071
1072            if (vNam(varn) .EQ. "rho") then               
1073               if (over .EQ. 1) then
1074                  res@gsnLeftString      = vNam(varn)
1075                  res@gsnRightString     = unit(varn)
1076                  res@trXMinF            = min(data(varn,:,:))
1077                  res@trXMaxF            = max(data(varn,:,:))
1078                  plot_q = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1079               else
1080                  res@gsnLeftString      = vNam(varn)
1081                  res@gsnRightString     = unit(varn)
1082                  res@trXMinF            = min(data(varn,:,:))
1083                  res@trXMaxF            = max(data(varn,:,:))
1084                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1085               end if
1086            end if
1087
1088            if (vNam(varn) .EQ. "s") then               
1089               if (over .EQ. 1) then
1090                  res@gsnLeftString      = vNam(varn)
1091                  res@gsnRightString     = unit(varn)
1092                  res@trXMinF            = min(data(varn,:,:))
1093                  res@trXMaxF            = max(data(varn,:,:))
1094                  plot_s = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1095               else
1096                  res@gsnLeftString      = vNam(varn)
1097                  res@gsnRightString     = unit(varn)
1098                  res@trXMinF            = min(data(varn,:,:))
1099                  res@trXMaxF            = max(data(varn,:,:))
1100                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1101               end if
1102            end if
1103
1104            if (vNam(varn) .EQ. "sa") then                 
1105               if (over .EQ. 1) then
1106                  res@gsnLeftString      = vNam(varn)
1107                  res@gsnRightString     = unit(varn)
1108                  res@trXMinF            = min(data(varn,:,:))
1109                  res@trXMaxF            = max(data(varn,:,:))
1110                  plot_sa = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1111               else
1112                  res@gsnLeftString      = vNam(varn)
1113                  res@gsnRightString     = unit(varn)
1114                  res@trXMinF            = min(data(varn,:,:))
1115                  res@trXMaxF            = max(data(varn,:,:)) 
1116                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1117               end if
1118            end if
1119
1120            if (vNam(varn) .EQ. "e") then
1121               minie=min(data(varn,:,:))
1122               maxie=max(data(varn,:,:))
1123               if (over .EQ. 1) then
1124                  res@xyDashPattern  = 0
1125                  plot_e = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1126               else
1127                  res@gsnLeftString      = vNam(varn)
1128                  res@gsnRightString     = unit(varn)
1129                  res@trXMinF            = minie
1130                  res@trXMaxF            = maxie
1131                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1132               end if
1133            end if
1134            if (vNam(varn) .EQ. "es") then
1135               minies=min(data(varn,:,:))
1136               maxies=max(data(varn,:,:))
1137               if (over .EQ. 1) then
1138                  res@xyDashPattern  = 1
1139                  plot_es = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1140               else
1141                  res@gsnLeftString      = vNam(varn)
1142                  res@gsnRightString     = unit(varn)
1143                  res@trXMinF            = minies
1144                  res@trXMaxF            = maxies
1145                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1146               end if
1147            end if
1148
1149            if (vNam(varn) .EQ. "km") then
1150               minikm=min(data(varn,:,:))
1151               maxikm=max(data(varn,:,:))
1152               if (over .EQ. 1) then
1153                  res@xyDashPattern  = 0
1154                  plot_km = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1155               else
1156                  res@gsnLeftString      = vNam(varn)
1157                  res@gsnRightString     = unit(varn)
1158                  res@trXMinF            = minikm
1159                  res@trXMaxF            = maxikm
1160                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1161               end if
1162            end if
1163            if (vNam(varn) .EQ. "kh") then
1164               minikh=min(data(varn,:,:))
1165               maxikh=max(data(varn,:,:))
1166               if (over .EQ. 1) then
1167                  res@xyDashPattern  = 1
1168                  plot_kh = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1169               else
1170                  res@gsnLeftString      = vNam(varn)
1171                  res@gsnRightString     = unit(varn)
1172                  res@trXMinF            = minikh
1173                  res@trXMaxF            = maxikh
1174                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1175               end if
1176            end if
1177
1178            if (vNam(varn) .EQ. "l") then                 
1179               if (over .EQ. 1) then
1180                  res@gsnLeftString      = vNam(varn)
1181                  res@gsnRightString     = unit(varn)
1182                  res@trXMinF            = min(data(varn,:,:))
1183                  res@trXMaxF            = max(data(varn,:,:))
1184                  plot_l = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1185               else
1186                  res@gsnLeftString      = vNam(varn)
1187                  res@gsnRightString     = unit(varn)
1188                  res@trXMinF            = min(data(varn,:,:))
1189                  res@trXMaxF            = max(data(varn,:,:))
1190                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1191               end if
1192            end if
1193
1194            if (vNam(varn) .EQ. "wpup") then
1195               miniwpup=min(data(varn,:,:))
1196               maxiwpup=max(data(varn,:,:))
1197               if (over .EQ. 1) then
1198                  res@xyDashPattern  = 0
1199                  plot_wpup = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1200               else
1201                  res@gsnLeftString      = vNam(varn)
1202                  res@gsnRightString     = unit(varn)
1203                  res@trXMinF            = miniwpup
1204                  res@trXMaxF            = maxiwpup
1205                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1206               end if
1207            end if
1208            if (vNam(varn) .EQ. "wsus") then
1209               miniwsus=min(data(varn,:,:))
1210               maxiwsus=max(data(varn,:,:))
1211               if (over .EQ. 1) then
1212                  res@xyDashPattern  = 1
1213                  plot_wsus = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1214               else
1215                  res@gsnLeftString      = vNam(varn)
1216                  res@gsnRightString     = unit(varn)
1217                  res@trXMinF            = miniwsus
1218                  res@trXMaxF            = maxiwsus
1219                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1220               end if
1221            end if
1222            if (vNam(varn) .EQ. "wu") then
1223               miniwu=min(data(varn,:,:))
1224               maxiwu=max(data(varn,:,:))
1225               if (over .EQ. 1) then
1226                  res@xyDashPattern  = 2
1227                  plot_wu = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1228               else
1229                  res@gsnLeftString      = vNam(varn)
1230                  res@gsnRightString     = unit(varn)
1231                  res@trXMinF            = miniwu
1232                  res@trXMaxF            = maxiwu
1233                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1234               end if
1235            end if
1236
1237            if (vNam(varn) .EQ. "wpvp") then
1238               miniwpvp=min(data(varn,:,:))
1239               maxiwpvp=max(data(varn,:,:))
1240               if (over .EQ. 1) then
1241                  res@xyDashPattern  = 0
1242                  plot_wpvp = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1243               else
1244                  res@gsnLeftString      = vNam(varn)
1245                  res@gsnRightString     = unit(varn)
1246                  res@trXMinF            = miniwpvp
1247                  res@trXMaxF            = maxiwpvp
1248                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1249               end if
1250            end if
1251            if (vNam(varn) .EQ. "wsvs") then
1252               miniwsvs=min(data(varn,:,:))
1253               maxiwsvs=max(data(varn,:,:))
1254               if (over .EQ. 1) then
1255                  res@xyDashPattern  = 1
1256                  plot_wsvs = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1257               else
1258                  res@gsnLeftString      = vNam(varn)
1259                  res@gsnRightString     = unit(varn)
1260                  res@trXMinF            = miniwsvs
1261                  res@trXMaxF            = maxiwsvs
1262                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1263               end if
1264            end if
1265            if (vNam(varn) .EQ. "wv") then
1266               miniwv=min(data(varn,:,:))
1267               maxiwv=max(data(varn,:,:))
1268               if (over .EQ. 1) then
1269                  res@xyDashPattern  = 2
1270                  plot_wv = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1271               else
1272                  res@gsnLeftString      = vNam(varn)
1273                  res@gsnRightString     = unit(varn)
1274                  res@trXMinF            = miniwv
1275                  res@trXMaxF            = maxiwv
1276                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1277               end if
1278            end if
1279
1280            if (vNam(varn) .EQ. "wpptp") then
1281               miniwpptp=min(data(varn,:,:))
1282               maxiwpptp=max(data(varn,:,:))
1283               if (over .EQ. 1) then
1284                  res@xyDashPattern  = 0
1285                  plot_wpptp = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1286               else
1287                  res@gsnLeftString      = vNam(varn)
1288                  res@gsnRightString     = unit(varn)
1289                  res@trXMinF            = miniwpptp
1290                  res@trXMaxF            = maxiwpptp
1291                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1292               end if
1293            end if
1294            if (vNam(varn) .EQ. "wspts") then
1295               miniwspts=min(data(varn,:,:))
1296               maxiwspts=max(data(varn,:,:))
1297               if (over .EQ. 1) then
1298                  res@xyDashPattern  = 1
1299                  plot_wspts = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1300               else
1301                  res@gsnLeftString      = vNam(varn)
1302                  res@gsnRightString     = unit(varn)
1303                  res@trXMinF            = miniwspts
1304                  res@trXMaxF            = maxiwspts
1305                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1306               end if
1307            end if
1308            if (vNam(varn) .EQ. "wpt") then
1309               miniwpt=min(data(varn,:,:))
1310               maxiwpt=max(data(varn,:,:))
1311               if (over .EQ. 1) then
1312                  res@xyDashPattern  = 2
1313                  plot_wpt = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1314               else
1315                  res@gsnLeftString      = vNam(varn)
1316                  res@gsnRightString     = unit(varn)
1317                  res@trXMinF            = miniwpt
1318                  res@trXMaxF            = maxiwpt
1319                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1320               end if
1321            end if
1322
1323            if (vNam(varn) .EQ. "wsptsBC") then
1324               miniwsptsBC=min(data(varn,:,:))
1325               maxiwsptsBC=max(data(varn,:,:))
1326               if (over .EQ. 1) then
1327                  res@xyDashPattern  = 0
1328                  plot_wsptsBC = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1329               else
1330                  res@gsnLeftString      = vNam(varn)
1331                  res@gsnRightString     = unit(varn)
1332                  res@trXMinF            = miniwsptsBC
1333                  res@trXMaxF            = maxiwsptsBC
1334                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1335               end if
1336            end if             
1337            if (vNam(varn) .EQ. "wptBC") then
1338               miniwptBC=min(data(varn,:,:))
1339               maxiwptBC=max(data(varn,:,:))
1340               if (over .EQ. 1) then
1341                  res@xyDashPattern  = 1
1342                  plot_wptBC = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1343               else
1344                  res@gsnLeftString      = vNam(varn)
1345                  res@gsnRightString     = unit(varn)
1346                  res@trXMinF            = miniwptBC
1347                  res@trXMaxF            = maxiwptBC
1348                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1349               end if
1350            end if
1351
1352            if (vNam(varn) .EQ. "wpvptp") then
1353               miniwpvptp=min(data(varn,:,:))
1354               maxiwpvptp=max(data(varn,:,:))
1355               if (over .EQ. 1) then
1356                  res@xyDashPattern  = 0
1357                  plot_wpvptp = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1358               else
1359                  res@gsnLeftString      = vNam(varn)
1360                  res@gsnRightString     = unit(varn)
1361                  res@trXMinF            = miniwpvptp
1362                  res@trXMaxF            = maxiwpvptp
1363                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1364               end if
1365            end if
1366            if (vNam(varn) .EQ. "wsvpts") then
1367               miniwsvpts=min(data(varn,:,:))
1368               maxiwsvpts=max(data(varn,:,:))
1369               if (over .EQ. 1) then
1370                  res@xyDashPattern  = 1
1371                  plot_wsvpts = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1372               else
1373                  res@gsnLeftString      = vNam(varn)
1374                  res@gsnRightString     = unit(varn)
1375                  res@trXMinF            = miniwsvpts
1376                  res@trXMaxF            = maxiwsvpts
1377                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1378               end if
1379            end if
1380            if (vNam(varn) .EQ. "wvpt") then
1381               miniwvpt=min(data(varn,:,:))
1382               maxiwvpt=max(data(varn,:,:))
1383               if (over .EQ. 1) then
1384                  res@xyDashPattern  = 2
1385                  plot_wvpt = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1386               else
1387                  res@gsnLeftString      = vNam(varn)
1388                  res@gsnRightString     = unit(varn)
1389                  res@trXMinF            = miniwvpt
1390                  res@trXMaxF            = maxiwvpt
1391                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1392               end if
1393            end if
1394
1395            if (vNam(varn) .EQ. "wpqp") then
1396               miniwpqp=min(data(varn,:,:))
1397               maxiwpqp=max(data(varn,:,:))
1398               if (over .EQ. 1) then
1399                  res@xyDashPattern  = 0
1400                  plot_wpqp = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1401               else
1402                  res@gsnLeftString      = vNam(varn)
1403                  res@gsnRightString     = unit(varn)
1404                  res@trXMinF            = miniwpqp
1405                  res@trXMaxF            = maxiwpqp
1406                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1407               end if
1408            end if
1409            if (vNam(varn) .EQ. "wsqs") then
1410               miniwsqs=min(data(varn,:,:))
1411               maxiwsqs=max(data(varn,:,:))
1412               if (over .EQ. 1) then
1413                  res@xyDashPattern  = 1
1414                  plot_wsqs = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1415               else
1416                  res@gsnLeftString      = vNam(varn)
1417                  res@gsnRightString     = unit(varn)
1418                  res@trXMinF            = miniwsqs
1419                  res@trXMaxF            = maxiwsqs
1420                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1421               end if
1422            end if
1423            if (vNam(varn) .EQ. "wq") then
1424               miniwq=min(data(varn,:,:))
1425               maxiwq=max(data(varn,:,:))
1426               if (over .EQ. 1) then
1427                  res@xyDashPattern  = 2
1428                  plot_wq = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1429               else
1430                  res@gsnLeftString      = vNam(varn)
1431                  res@gsnRightString     = unit(varn)
1432                  res@trXMinF            = miniwq
1433                  res@trXMaxF            = maxiwq
1434                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1435               end if
1436            end if
1437
1438            if (vNam(varn) .EQ. "wpqvp") then
1439               miniwpqvp=min(data(varn,:,:))
1440               maxiwpqvp=max(data(varn,:,:))
1441               if (over .EQ. 1) then
1442                  res@xyDashPattern  = 0
1443                  plot_wpqvp = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1444               else
1445                  res@gsnLeftString      = vNam(varn)
1446                  res@gsnRightString     = unit(varn)
1447                  res@trXMinF            = miniwpqvp
1448                  res@trXMaxF            = maxiwpqvp
1449                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1450               end if
1451            end if
1452            if (vNam(varn) .EQ. "wsqvs") then
1453               miniwsqvs=min(data(varn,:,:))
1454               maxiwsqvs=max(data(varn,:,:))
1455               if (over .EQ. 1) then
1456                  res@xyDashPattern  = 1
1457                  plot_wsqvs = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1458               else
1459                  res@gsnLeftString      = vNam(varn)
1460                  res@gsnRightString     = unit(varn)
1461                  res@trXMinF            = miniwsqvs
1462                  res@trXMaxF            = maxiwsqvs
1463                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1464               end if
1465            end if
1466            if (vNam(varn) .EQ. "wqv") then
1467               miniwqv=min(data(varn,:,:))
1468               maxiwqv=max(data(varn,:,:))
1469               if (over .EQ. 1) then
1470                  res@xyDashPattern  = 2
1471                  plot_wqv = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1472               else
1473                  res@gsnLeftString      = vNam(varn)
1474                  res@gsnRightString     = unit(varn)
1475                  res@trXMinF            = miniwqv
1476                  res@trXMaxF            = maxiwqv
1477                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1478               end if
1479            end if
1480
1481            if (vNam(varn) .EQ. "wpsp") then
1482               miniwpsp=min(data(varn,:,:))
1483               maxiwpsp=max(data(varn,:,:))
1484               if (over .EQ. 1) then
1485                  res@xyDashPattern  = 0
1486                  plot_wpsp = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1487               else
1488                  res@gsnLeftString      = vNam(varn)
1489                  res@gsnRightString     = unit(varn)
1490                  res@trXMinF            = miniwpsp
1491                  res@trXMaxF            = maxiwpsp
1492                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1493               end if
1494            end if
1495            if (vNam(varn) .EQ. "wsss") then
1496               miniwsss=min(data(varn,:,:))
1497               maxiwsss=max(data(varn,:,:))
1498               if (over .EQ. 1) then
1499                  res@xyDashPattern  = 1
1500                  plot_wsss = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1501               else
1502                  res@gsnLeftString      = vNam(varn)
1503                  res@gsnRightString     = unit(varn)
1504                  res@trXMinF            = miniwsss
1505                  res@trXMaxF            = maxiwsss
1506                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1507               end if
1508            end if
1509            if (vNam(varn) .EQ. "ws") then
1510               miniws=min(data(varn,:,:))
1511               maxiws=max(data(varn,:,:))
1512               if (over .EQ. 1) then
1513                  res@xyDashPattern  = 2
1514                  plot_ws = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1515               else
1516                  res@gsnLeftString      = vNam(varn)
1517                  res@gsnRightString     = unit(varn)
1518                  res@trXMinF            = miniws
1519                  res@trXMaxF            = maxiws
1520                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1521               end if
1522            end if
1523
1524            if (vNam(varn) .EQ. "wpsap") then
1525               miniwpsap=min(data(varn,:,:))
1526               maxiwpsap=max(data(varn,:,:))
1527               if (over .EQ. 1) then
1528                  res@xyDashPattern  = 0
1529                  plot_wpsap = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1530               else
1531                  res@gsnLeftString      = vNam(varn)
1532                  res@gsnRightString     = unit(varn)
1533                  res@trXMinF            = miniwpsap
1534                  res@trXMaxF            = maxiwpsap
1535                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1536               end if
1537            end if
1538            if (vNam(varn) .EQ. "wssas") then
1539               miniwssas=min(data(varn,:,:))
1540               maxiwssas=max(data(varn,:,:))
1541               if (over .EQ. 1) then
1542                  res@xyDashPattern  = 1
1543                  plot_wssas = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1544               else
1545                  res@gsnLeftString      = vNam(varn)
1546                  res@gsnRightString     = unit(varn)
1547                  res@trXMinF            = miniwssas
1548                  res@trXMaxF            = maxiwssas
1549                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1550               end if
1551            end if
1552            if (vNam(varn) .EQ. "wsa") then
1553               miniwsa=min(data(varn,:,:))
1554               maxiwsa=max(data(varn,:,:))
1555               if (over .EQ. 1) then
1556                  res@xyDashPattern  = 2
1557                  plot_wsa = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1558               else
1559                  res@gsnLeftString      = vNam(varn)
1560                  res@gsnRightString     = unit(varn)
1561                  res@trXMinF            = miniwsa
1562                  res@trXMaxF            = maxiwsa
1563                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1564               end if
1565            end if
1566
1567            if (vNam(varn) .EQ. "wses") then               
1568               if (over .EQ. 1) then
1569                  res@gsnLeftString      = vNam(varn)
1570                  res@gsnRightString     = unit(varn)
1571                  res@trXMinF            = min(data(varn,:,:))
1572                  res@trXMaxF            = max(data(varn,:,:))
1573                  plot_wses = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1574               else
1575                  res@gsnLeftString      = vNam(varn)
1576                  res@gsnRightString     = unit(varn)
1577                  res@trXMinF            = min(data(varn,:,:))
1578                  res@trXMaxF            = max(data(varn,:,:))
1579                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1580               end if
1581            end if
1582
1583            if (vNam(varn) .EQ. "us2") then
1584               minius2=min(data(varn,:,:))
1585               maxius2=max(data(varn,:,:))
1586               if (over .EQ. 1) then
1587                  res@xyDashPattern  = 0
1588                  plot_us2 = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1589               else
1590                  res@gsnLeftString      = vNam(varn)
1591                  res@gsnRightString     = unit(varn)
1592                  res@trXMinF            = minius2
1593                  res@trXMaxF            = maxius2
1594                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1595               end if
1596            end if
1597            if (vNam(varn) .EQ. "vs2") then
1598               minivs2=min(data(varn,:,:))
1599               maxivs2=max(data(varn,:,:))
1600               if (over .EQ. 1) then
1601                  res@xyDashPattern  = 1
1602                  plot_vs2 = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1603               else
1604                  res@gsnLeftString      = vNam(varn)
1605                  res@gsnRightString     = unit(varn)
1606                  res@trXMinF            = minivs2
1607                  res@trXMaxF            = maxivs2
1608                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1609               end if
1610            end if
1611            if (vNam(varn) .EQ. "ws2") then
1612               miniws2=min(data(varn,:,:))
1613               maxiws2=max(data(varn,:,:))
1614               if (over .EQ. 1) then
1615                  res@xyDashPattern  = 2
1616                  plot_ws2 = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1617               else
1618                  res@gsnLeftString      = vNam(varn)
1619                  res@gsnRightString     = unit(varn)
1620                  res@trXMinF            = miniws2
1621                  res@trXMaxF            = maxiws2
1622                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1623               end if
1624            end if
1625
1626            if (vNam(varn) .EQ. "pts2") then
1627               minipts2=min(data(varn,:,:))
1628               maxipts2=max(data(varn,:,:))                 
1629               if (over .EQ. 1) then
1630                  res@gsnLeftString      = vNam(varn)
1631                  res@gsnRightString     = unit(varn)
1632                  res@trXMinF            = minipts2
1633                  res@trXMaxF            = maxipts2
1634                  plot_pts2 = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1635               else
1636                  res@gsnLeftString      = vNam(varn)
1637                  res@gsnRightString     = unit(varn)
1638                  res@trXMinF            = minipts2
1639                  res@trXMaxF            = maxipts2
1640                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1641               end if
1642            end if
1643
1644            if (vNam(varn) .EQ. "ws3") then
1645               miniws3=min(data(varn,:,:))
1646               maxiws3=max(data(varn,:,:))                 
1647               if (over .EQ. 1) then
1648                  res@gsnLeftString      = vNam(varn)
1649                  res@gsnRightString     = unit(varn)
1650                  res@trXMinF            = miniws3
1651                  res@trXMaxF            = maxiws3
1652                  plot_ws3 = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1653               else
1654                  res@gsnLeftString      = vNam(varn)
1655                  res@gsnRightString     = unit(varn)
1656                  res@trXMinF            = miniws3
1657                  res@trXMaxF            = maxiws3
1658                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1659               end if
1660            end if
1661
1662            if (vNam(varn) .EQ. "Sw") then
1663               miniSw=min(data(varn,:,:))
1664               maxiSw=max(data(varn,:,:))                 
1665               if (over .EQ. 1) then
1666                  res@gsnLeftString      = vNam(varn)
1667                  res@gsnRightString     = unit(varn)
1668                  res@trXMinF            = miniSw
1669                  res@trXMaxF            = maxiSw
1670                  plot_Sw = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1671               else
1672                  res@gsnLeftString      = vNam(varn)
1673                  res@gsnRightString     = unit(varn)
1674                  res@trXMinF            = miniSw
1675                  res@trXMaxF            = maxiSw
1676                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1677               end if
1678            end if
1679
1680            if (vNam(varn) .EQ. "ws2pts") then
1681               miniws2pts=min(data(varn,:,:))
1682               maxiws2pts=max(data(varn,:,:))                 
1683               if (over .EQ. 1) then
1684                  res@gsnLeftString      = vNam(varn)
1685                  res@gsnRightString     = unit(varn)
1686                  res@trXMinF            = miniws2pts
1687                  res@trXMaxF            = maxiws2pts
1688                  plot_ws2pts = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1689               else
1690                  res@gsnLeftString      = vNam(varn)
1691                  res@gsnRightString     = unit(varn)
1692                  res@trXMinF            = miniws2pts
1693                  res@trXMaxF            = maxiws2pts
1694                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1695               end if
1696            end if
1697
1698            if (vNam(varn) .EQ. "wspts2") then
1699               miniwspts2=min(data(varn,:,:))
1700               maxiwspts2=max(data(varn,:,:))                 
1701               if (over .EQ. 1) then
1702                  res@gsnLeftString      = vNam(varn)
1703                  res@gsnRightString     = unit(varn)
1704                  res@trXMinF            = miniwspts2
1705                  res@trXMaxF            = maxiwspts2
1706                  plot_wspts2 = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1707               else
1708                  res@gsnLeftString      = vNam(varn)
1709                  res@gsnRightString     = unit(varn)
1710                  res@trXMinF            = miniwspts2
1711                  res@trXMaxF            = maxiwspts2
1712                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1713               end if
1714            end if
1715
1716            if (vNam(varn) .EQ. "wsususodz") then
1717               miniwsususodz=min(data(varn,:,:))
1718               maxiwsususodz=max(data(varn,:,:))
1719               if (over .EQ. 1) then
1720                  res@xyDashPattern  = 0
1721                  plot_wsususodz = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1722               else
1723                  res@gsnLeftString      = vNam(varn)
1724                  res@gsnRightString     = unit(varn)
1725                  res@trXMinF            = miniwsususodz
1726                  res@trXMaxF            = maxiwsususodz
1727                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1728               end if 
1729            end if
1730            if (vNam(varn) .EQ. "wspsodz") then
1731               miniwspsodz=min(data(varn,:,:))
1732               maxiwspsodz=max(data(varn,:,:))
1733               if (over .EQ. 1) then
1734                  res@xyDashPattern  = 1
1735                  plot_wspsodz = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1736               else
1737                  res@gsnLeftString      = vNam(varn)
1738                  res@gsnRightString     = unit(varn)
1739                  res@trXMinF            = miniwspsodz
1740                  res@trXMaxF            = maxiwspsodz
1741                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1742               end if
1743            end if
1744            if (vNam(varn) .EQ. "wpeodz") then
1745               miniwpeodz=min(data(varn,:,:))
1746               maxiwpeodz=max(data(varn,:,:))
1747               if (over .EQ. 1) then
1748                  res@xyDashPattern  = 2
1749                  plot_wpeodz = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1750               else
1751                  res@gsnLeftString      = vNam(varn)
1752                  res@gsnRightString     = unit(varn)
1753                  res@trXMinF            = miniwpeodz
1754                  res@trXMaxF            = maxiwpeodz
1755                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1756               end if
1757            end if
1758         if (over .EQ. 0) then
1759            n=n+1 
1760         end if     
1761         varn=varn+1
1762      end if     
1763      delete(temp)
1764   end do
1765   
1766   if (over .EQ. 1 ) then
1767
1768      overlay(plot_u,plot_v)
1769      overlay(plot_u,plot_w)
1770      u=0
1771      overlay(plot_pt,plot_vpt)
1772      overlay(plot_pt,plot_lpt)
1773      pt=0
1774      overlay(plot_q,plot_qv)
1775      overlay(plot_q,plot_ql)
1776      q=0
1777      overlay(plot_e,plot_es)
1778      e=0
1779      overlay(plot_km,plot_kh)
1780      km=0
1781      overlay(plot_wpup,plot_wsus)
1782      overlay(plot_wpup,plot_wu)
1783      wpup=0
1784      overlay(plot_wpvp,plot_wsvs)
1785      overlay(plot_wpvp,plot_wv)
1786      wpvp=0
1787      overlay(plot_wpptp,plot_wspts)
1788      overlay(plot_wpptp,plot_wpt)
1789      wpptp=0
1790      overlay(plot_wsptsBC,plot_wptBC)
1791      wsptsBC=0
1792      overlay(plot_wpvptp,plot_wsvpts)
1793      overlay(plot_wpvptp,plot_wvpt)
1794      wpvptp=0
1795      overlay(plot_wpqp,plot_wsqs)
1796      overlay(plot_wpqp,plot_wq)
1797      wpqp=0
1798      overlay(plot_wpqvp,plot_wsqvs)
1799      overlay(plot_wpqvp,plot_wqv)
1800      wpqvp=0
1801      overlay(plot_wpsp,plot_wsss)
1802      overlay(plot_wpsp,plot_ws)
1803      wpsp=0
1804      overlay(plot_wpsap,plot_wssas)
1805      overlay(plot_wpsap,plot_wsa)
1806      wpsap=0
1807      overlay(plot_us2,plot_vs2)
1808      overlay(plot_us2,plot_ws2)
1809      us2=0
1810      overlay(plot_wsususodz,plot_wspsodz)
1811      overlay(plot_wsususodz,plot_wpeodz)
1812      wsususodz=0
1813
1814   end if
1815
1816   if (over .EQ. 1) then
1817   
1818      do varn = 0,dim-1   
1819     
1820         if ( isStrSubset( vNam(varn), "time") .OR. isStrSubset( vNam(varn), "NORM")) then
1821            check = False
1822         else
1823            if (.not. isvar("var")) then
1824               check = True
1825               if (parameter(21) .NE. "variables") then
1826                  var=parameter(21)
1827                  check = isStrSubset( var,","+vNam(varn)+"," )
1828               end if
1829            else         
1830               check = isStrSubset( var,","+vNam(varn)+"," )
1831            end if
1832         end if 
1833
1834         if (check)
1835           
1836            z = f->$vNam(varn+1)$
1837           
1838            ;res@gsnLeftString      = vNam(varn)
1839            res@gsnRightString     = unit(varn)
1840            res@trYMinF            = min_z
1841            res@trYMaxF            = max_z 
1842            res@trXMinF            = min(data(varn,:,:))
1843            res@trXMaxF            = max(data(varn,:,:))
1844            plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res) 
1845           
1846            if (vNam(varn) .EQ. "u" .OR. vNam(varn) .EQ. "v" .OR. vNam(varn) .EQ. "w") then
1847               if (u .EQ. 0) then
1848                  res@gsnLeftString      = "u, v and w"
1849                  res@gsnRightString     = unit(varn)
1850                  res@trXMinF            = min((/miniu,miniv,miniw/))
1851                  res@trXMaxF            = max((/maxiu,maxiv,maxiw/))
1852                  if (vNam(varn) .EQ. "w") then
1853                     plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
1854                  else
1855                     plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1856                  end if
1857
1858                  ; ***************************************************
1859                  ; legend for combined plot
1860                  ; ***************************************************
1861     
1862                  lgres                    = True
1863                  lgMonoDashIndex          = False
1864                  lgres@lgLabelFont        = "helvetica"   
1865                  lgres@lgLabelFontHeightF = .1           
1866                  lgres@vpWidthF           = 0.12           
1867                  lgres@vpHeightF          = 0.1         
1868                  lgres@lgDashIndexes      = (/0,1,2/)
1869                  lbid = gsn_create_legend(wks,3,(/"u","v","w"/),lgres)       
1870
1871                  amres = True
1872                  amres@amParallelPosF   = 0.65             
1873                  amres@amOrthogonalPosF = -0.2           
1874                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
1875                  overlay(plot(n),plot_u)
1876                  u=1
1877               else
1878                  varn=varn+1
1879                  continue
1880               end if       
1881            end if 
1882     
1883            if (vNam(varn) .EQ. "pt" .OR. vNam(varn) .EQ. "vpt" .OR. vNam(varn) .EQ. "lpt") then
1884               if (pt .EQ. 0) then
1885                  res@gsnLeftString      = "pt, vpt and lpt"
1886                  res@gsnRightString     = unit(varn)
1887                  res@trXMinF            = min((/minipt,minivpt,minilpt/))
1888                  res@trXMaxF            = max((/maxipt,maxivpt,maxilpt/))
1889
1890                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1891
1892                  ; ***************************************************
1893                  ; legend for combined plot
1894                  ; ***************************************************
1895     
1896                  lgres                    = True
1897                  lgMonoDashIndex          = False
1898                  lgres@lgLabelFont        = "helvetica"   
1899                  lgres@lgLabelFontHeightF = .1           
1900                  lgres@vpWidthF           = 0.12           
1901                  lgres@vpHeightF          = 0.1         
1902                  lgres@lgDashIndexes      = (/0,1,2/)
1903                  lbid = gsn_create_legend(wks,3,(/"pt","vpt","lpt"/),lgres)       
1904
1905                  amres = True
1906                  amres@amParallelPosF   = 0.65             
1907                  amres@amOrthogonalPosF = -0.2           
1908                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
1909                  overlay(plot(n),plot_pt)
1910                  pt=1
1911               else
1912                  varn=varn+1
1913                  continue       
1914               end if
1915            end if           
1916            if (vNam(varn) .EQ. "q" .OR. vNam(varn) .EQ. "qv" .OR. vNam(varn) .EQ. "ql") then
1917               if (q .EQ. 0) then
1918                  res@gsnLeftString      = "q, qv and ql"
1919                  res@gsnRightString     = unit(varn)
1920                  res@trXMinF            = min((/miniq,miniqv,miniql/))
1921                  res@trXMaxF            = max((/maxiq,maxiqv,maxiql/))
1922
1923                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1924
1925                  ; ***************************************************
1926                  ; legend for combined plot
1927                  ; ***************************************************
1928     
1929                  lgres                    = True
1930                  lgMonoDashIndex          = False
1931                  lgres@lgLabelFont        = "helvetica"   
1932                  lgres@lgLabelFontHeightF = .1           
1933                  lgres@vpWidthF           = 0.12           
1934                  lgres@vpHeightF          = 0.1         
1935                  lgres@lgDashIndexes      = (/0,1,2/)
1936                  lbid = gsn_create_legend(wks,3,(/"q","qv","ql"/),lgres)       
1937
1938                  amres = True
1939                  amres@amParallelPosF   = 0.65             
1940                  amres@amOrthogonalPosF = -0.2           
1941                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
1942                  overlay(plot(n),plot_q)
1943                  q=1
1944               else
1945                  varn=varn+1
1946                  continue   
1947               end if
1948            end if           
1949            if (vNam(varn) .EQ. "rho") then
1950               plot(n) = plot_rho
1951            end if
1952            if (vNam(varn) .EQ. "s") then
1953               plot(n) = plot_s
1954            end if
1955            if (vNam(varn) .EQ. "sa") then
1956               plot(n) = plot_sa
1957            end if
1958            if (vNam(varn) .EQ. "e" .OR. vNam(varn) .EQ. "es") then
1959               if (e .EQ. 0) then
1960                  res@gsnLeftString      = "e and es"
1961                  res@gsnRightString     = unit(varn)
1962                  res@trXMinF            = min((/minie,minies/))
1963                  res@trXMaxF            = max((/maxie,maxies/))
1964
1965                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1966
1967                  ; ***************************************************
1968                  ; legend for combined plot
1969                  ; ***************************************************
1970     
1971                  lgres                    = True
1972                  lgMonoDashIndex          = False
1973                  lgres@lgLabelFont        = "helvetica"   
1974                  lgres@lgLabelFontHeightF = .1           
1975                  lgres@vpWidthF           = 0.12           
1976                  lgres@vpHeightF          = 0.1         
1977                  lgres@lgDashIndexes      = (/0,1,2/)
1978                  lbid = gsn_create_legend(wks,3,(/"e","es"/),lgres)       
1979
1980                  amres = True
1981                  amres@amParallelPosF   = 0.65             
1982                  amres@amOrthogonalPosF = -0.2           
1983                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
1984                  overlay(plot(n),plot_e)
1985                  e=1
1986               else
1987                  varn=varn+1
1988                  continue   
1989               end if
1990            end if           
1991            if (vNam(varn) .EQ. "km" .OR. vNam(varn) .EQ. "kh") then
1992               if (km .EQ. 0) then
1993                  res@gsnLeftString      = "km and kh"
1994                  res@gsnRightString     = unit(varn)
1995                  res@trXMinF            = min((/minikm,minikh/))
1996                  res@trXMaxF            = max((/maxikm,maxikh/))
1997
1998                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_u,res)
1999
2000                  ; ***************************************************
2001                  ; legend for combined plot
2002                  ; ***************************************************
2003     
2004                  lgres                    = True
2005                  lgMonoDashIndex          = False
2006                  lgres@lgLabelFont        = "helvetica"   
2007                  lgres@lgLabelFontHeightF = .1           
2008                  lgres@vpWidthF           = 0.12           
2009                  lgres@vpHeightF          = 0.1         
2010                  lgres@lgDashIndexes      = (/0,1,2/)
2011                  lbid = gsn_create_legend(wks,3,(/"km","kh"/),lgres)       
2012
2013                  amres = True
2014                  amres@amParallelPosF   = 0.65             
2015                  amres@amOrthogonalPosF = -0.2           
2016                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2017                  overlay(plot(n),plot_km)
2018                  km=1
2019               else
2020                  varn=varn+1
2021                  continue   
2022               end if
2023            end if           
2024            if (vNam(varn) .EQ. "l") then
2025               plot(n) = plot_l
2026            end if
2027            if (vNam(varn) .EQ. "wpup" .OR. vNam(varn) .EQ. "wsus" .OR. vNam(varn) .EQ. "wu") then
2028               if (wpup .EQ. 0) then
2029                  res@gsnLeftString      = "wpup, wsus and wu"
2030                  res@gsnRightString     = unit(varn)
2031                  res@trXMinF            = min((/miniwpup,miniwsus,miniwu/))
2032                  res@trXMaxF            = max((/maxiwpup,maxiwsus,maxiwu/))
2033
2034                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2035
2036                  ; ***************************************************
2037                  ; legend for combined plot
2038                  ; ***************************************************
2039     
2040                  lgres                    = True
2041                  lgMonoDashIndex          = False
2042                  lgres@lgLabelFont        = "helvetica"   
2043                  lgres@lgLabelFontHeightF = .1           
2044                  lgres@vpWidthF           = 0.12           
2045                  lgres@vpHeightF          = 0.1         
2046                  lgres@lgDashIndexes      = (/0,1,2/)
2047                  lbid = gsn_create_legend(wks,3,(/"wpup","wsus","wu"/),lgres)       
2048
2049                  amres = True
2050                  amres@amParallelPosF   = 0.65             
2051                  amres@amOrthogonalPosF = -0.2           
2052                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2053                  overlay(plot(n),plot_wpup)
2054                  wpup=1
2055               else
2056                  varn=varn+1
2057                  continue   
2058               end if
2059            end if
2060            if (vNam(varn) .EQ. "wpvp" .OR. vNam(varn) .EQ. "wsvs" .OR.vNam(varn) .EQ. "wv") then
2061               if (wpvp .EQ. 0) then
2062                  res@gsnLeftString      = "wpvp, wsus and wv"
2063                  res@gsnRightString     = unit(varn)
2064                  res@trXMinF            = min((/miniwpvp,miniwsvs,miniwv/))
2065                  res@trXMaxF            = max((/maxiwpvp,maxiwsvs,maxiwv/))
2066
2067                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2068
2069                  ; ***************************************************
2070                  ; legend for combined plot
2071                  ; ***************************************************
2072     
2073                  lgres                    = True
2074                  lgMonoDashIndex          = False
2075                  lgres@lgLabelFont        = "helvetica"   
2076                  lgres@lgLabelFontHeightF = .1           
2077                  lgres@vpWidthF           = 0.12           
2078                  lgres@vpHeightF          = 0.1         
2079                  lgres@lgDashIndexes      = (/0,1,2/)
2080                  lbid = gsn_create_legend(wks,3,(/"wpvp","wsvs","wv"/),lgres)       
2081
2082                  amres = True
2083                  amres@amParallelPosF   = 0.65             
2084                  amres@amOrthogonalPosF = -0.2           
2085                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2086                  overlay(plot(n),plot_wpvp)
2087                  wpup=0
2088               else
2089                  varn=varn+1
2090                  continue   
2091               end if
2092            end if
2093            if (vNam(varn) .EQ. "wpptp" .OR. vNam(varn) .EQ. "wspts" .OR. vNam(varn) .EQ. "wpt") then
2094               if (wpptp .EQ. 0) then
2095                  res@gsnLeftString      = "wpptp, wspts and wv"
2096                  res@gsnRightString     = unit(varn)
2097                  res@trXMinF            = min((/miniwpptp,miniwspts,miniwpt/))
2098                  res@trXMaxF            = max((/maxiwpptp,maxiwspts,maxiwpt/))
2099
2100                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2101
2102                  ; ***************************************************
2103                  ; legend for combined plot
2104                  ; ***************************************************
2105     
2106                  lgres                    = True
2107                  lgMonoDashIndex          = False
2108                  lgres@lgLabelFont        = "helvetica"   
2109                  lgres@lgLabelFontHeightF = .1           
2110                  lgres@vpWidthF           = 0.12           
2111                  lgres@vpHeightF          = 0.1         
2112                  lgres@lgDashIndexes      = (/0,1,2/)
2113                  lbid = gsn_create_legend(wks,3,(/"wpptp","wspts","wpt"/),lgres)       
2114
2115                  amres = True
2116                  amres@amParallelPosF   = 0.65             
2117                  amres@amOrthogonalPosF = -0.2           
2118                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2119                  overlay(plot(n),plot_wpptp)
2120                  wpptp=1
2121               else
2122                  varn=varn+1
2123                  continue   
2124               end if
2125            end if
2126            if (vNam(varn) .EQ. "wsptsBC" .OR. vNam(varn) .EQ. "wptBC") then
2127               if (wsptsBC .EQ. 0) then
2128                  res@gsnLeftString      = "wsptsBC and wptBC"
2129                  res@gsnRightString     = unit(varn)
2130                  res@trXMinF            = min((/miniwsptsBC,miniwptBC/))
2131                  res@trXMaxF            = max((/maxiwsptsBC,maxiwptBC/))
2132
2133                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2134
2135                  ; ***************************************************
2136                  ; legend for combined plot
2137                  ; ***************************************************
2138     
2139                  lgres                    = True
2140                  lgMonoDashIndex          = False
2141                  lgres@lgLabelFont        = "helvetica"   
2142                  lgres@lgLabelFontHeightF = .1           
2143                  lgres@vpWidthF           = 0.12           
2144                  lgres@vpHeightF          = 0.1         
2145                  lgres@lgDashIndexes      = (/0,1,2/)
2146                  lbid = gsn_create_legend(wks,3,(/"wsptsBC","wptBC"/),lgres)       
2147
2148                  amres = True
2149                  amres@amParallelPosF   = 0.65             
2150                  amres@amOrthogonalPosF = -0.2           
2151                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2152                  overlay(plot(n),plot_wsptsBC)
2153                  wsptsBC=1
2154               else
2155                  varn=varn+1
2156                  continue   
2157               end if 
2158            end if             
2159            if (vNam(varn) .EQ. "wpvptp" .OR. vNam(varn) .EQ. "wsvpts" .OR. vNam(varn) .EQ. "wvpt") then
2160               if (wpvptp .EQ. 0) then
2161                  res@gsnLeftString      = "wpvptp, wsvpts and wv"
2162                  res@gsnRightString     = unit(varn)
2163                  res@trXMinF            = min((/miniwpvptp,miniwsvpts,miniwvpt/))
2164                  res@trXMaxF            = max((/maxiwpvptp,maxiwsvpts,maxiwvpt/))
2165
2166                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2167
2168                  ; ***************************************************
2169                  ; legend for combined plot
2170                  ; ***************************************************
2171     
2172                  lgres                    = True
2173                  lgMonoDashIndex          = False
2174                  lgres@lgLabelFont        = "helvetica"   
2175                  lgres@lgLabelFontHeightF = .1           
2176                  lgres@vpWidthF           = 0.12           
2177                  lgres@vpHeightF          = 0.1         
2178                  lgres@lgDashIndexes      = (/0,1,2/)
2179                  lbid = gsn_create_legend(wks,3,(/"wpvptp","wsvpts","wvpt"/),lgres)       
2180
2181                  amres = True
2182                  amres@amParallelPosF   = 0.65             
2183                  amres@amOrthogonalPosF = -0.2           
2184                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2185                  overlay(plot(n),plot_wpvptp)
2186                  wpvptp=1
2187               else
2188                  varn=varn+1
2189                  continue   
2190               end if
2191            end if
2192            if (vNam(varn) .EQ. "wpqp" .OR. vNam(varn) .EQ. "wsqs" .OR. vNam(varn) .EQ. "wq") then
2193               if (wpqp .EQ. 0) then
2194                  res@gsnLeftString      = "wpqp, wsqs and wq"
2195                  res@gsnRightString     = unit(varn)
2196                  res@trXMinF            = min((/miniwpqp,miniwsqs,miniwq/))
2197                  res@trXMaxF            = max((/maxiwpqp,maxiwsqs,maxiwq/))
2198
2199                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2200
2201                  ; ***************************************************
2202                  ; legend for combined plot
2203                  ; ***************************************************
2204     
2205                  lgres                    = True
2206                  lgMonoDashIndex          = False
2207                  lgres@lgLabelFont        = "helvetica"   
2208                  lgres@lgLabelFontHeightF = .1           
2209                  lgres@vpWidthF           = 0.12           
2210                  lgres@vpHeightF          = 0.1         
2211                  lgres@lgDashIndexes      = (/0,1,2/)
2212                  lbid = gsn_create_legend(wks,3,(/"wpqp","wsqs","wq"/),lgres)       
2213
2214                  amres = True
2215                  amres@amParallelPosF   = 0.65             
2216                  amres@amOrthogonalPosF = -0.2           
2217                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2218                  overlay(plot(n),plot_wpqp)
2219                  wpqp=1
2220               else
2221                  varn=varn+1
2222                  continue   
2223               end if
2224            end if
2225            if (vNam(varn) .EQ. "wpqvp" .OR. vNam(varn) .EQ. "wsqvs" .OR. vNam(varn) .EQ. "wqv") then
2226               if (wpqvp .EQ. 0) then
2227                  res@gsnLeftString      = "wpqvp, wsqvs and wqv"
2228                  res@gsnRightString     = unit(varn)
2229                  res@trXMinF            = min((/miniwpqp,miniwsqvs,miniwqv/))
2230                  res@trXMaxF            = max((/maxiwpqp,maxiwsqvs,maxiwqv/))
2231
2232                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2233
2234                  ; ***************************************************
2235                  ; legend for combined plot
2236                  ; ***************************************************
2237     
2238                  lgres                    = True
2239                  lgMonoDashIndex          = False
2240                  lgres@lgLabelFont        = "helvetica"   
2241                  lgres@lgLabelFontHeightF = .1           
2242                  lgres@vpWidthF           = 0.12           
2243                  lgres@vpHeightF          = 0.1         
2244                  lgres@lgDashIndexes      = (/0,1,2/)
2245                  lbid = gsn_create_legend(wks,3,(/"wpqvp","wsqvs","wqv"/),lgres)       
2246
2247                  amres = True
2248                  amres@amParallelPosF   = 0.65             
2249                  amres@amOrthogonalPosF = -0.2           
2250                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2251                  overlay(plot(n),plot_wpqvp)
2252                  wpqvp=1
2253               else
2254                  varn=varn+1
2255                  continue   
2256               end if
2257            end if
2258            if (vNam(varn) .EQ. "wpsp" .OR. vNam(varn) .EQ. "wsss" .OR. vNam(varn) .EQ. "ws") then
2259               if (wpsp .EQ. 0) then
2260                  res@gsnLeftString      = "wpsp, wsss and ws"
2261                  res@gsnRightString     = unit(varn)
2262                  res@trXMinF            = min((/miniwpsp,miniwsss,miniws/))
2263                  res@trXMaxF            = max((/maxiwpsp,maxiwsss,maxiws/))
2264
2265                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2266
2267                  ; ***************************************************
2268                  ; legend for combined plot
2269                  ; ***************************************************
2270     
2271                  lgres                    = True
2272                  lgMonoDashIndex          = False
2273                  lgres@lgLabelFont        = "helvetica"   
2274                  lgres@lgLabelFontHeightF = .1           
2275                  lgres@vpWidthF           = 0.12           
2276                  lgres@vpHeightF          = 0.1         
2277                  lgres@lgDashIndexes      = (/0,1,2/)
2278                  lbid = gsn_create_legend(wks,3,(/"wpsp","wsss","ws"/),lgres)       
2279
2280                  amres = True
2281                  amres@amParallelPosF   = 0.65             
2282                  amres@amOrthogonalPosF = -0.2           
2283                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2284                  overlay(plot(n),plot_wpsp)
2285                  wpsp=1
2286               else
2287                  varn=varn+1
2288                  continue   
2289               end if
2290            end if
2291            if (vNam(varn) .EQ. "wpsap" .OR.vNam(varn) .EQ. "wssas" .OR. vNam(varn) .EQ. "wsa") then
2292               if (wpsap .EQ. 0) then
2293                  res@gsnLeftString      = "wpsap, wssas and wsa"
2294                  res@gsnRightString     = unit(varn)
2295                  res@trXMinF            = min((/miniwpsap,miniwssas,miniwsa/))
2296                  res@trXMaxF            = max((/maxiwpsap,maxiwssas,maxiwsa/))
2297
2298                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2299
2300                  ; ***************************************************
2301                  ; legend for combined plot
2302                  ; ***************************************************
2303     
2304                  lgres                    = True
2305                  lgMonoDashIndex          = False
2306                  lgres@lgLabelFont        = "helvetica"   
2307                  lgres@lgLabelFontHeightF = .1           
2308                  lgres@vpWidthF           = 0.12           
2309                  lgres@vpHeightF          = 0.1         
2310                  lgres@lgDashIndexes      = (/0,1,2/)
2311                  lbid = gsn_create_legend(wks,3,(/"wpsap","wssas","wsa"/),lgres)       
2312
2313                  amres = True
2314                  amres@amParallelPosF   = 0.65             
2315                  amres@amOrthogonalPosF = -0.2           
2316                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2317                  overlay(plot(n),plot_wpsap)
2318                  wpsap=1
2319               else
2320                  varn=varn+1
2321                  continue   
2322               end if
2323            end if
2324            if (vNam(varn) .EQ. "wses") then
2325               plot(n) = plot_wses
2326            end if
2327            if (vNam(varn) .EQ. "us2" .OR. vNam(varn) .EQ. "vs2" .OR. vNam(varn) .EQ. "ws2") then
2328               if (us2 .EQ. 0) then
2329                  res@gsnLeftString      = "us2, vs2 and ws2"
2330                  res@gsnRightString     = unit(varn)
2331                  res@trXMinF            = min((/minius2,minivs2,miniws2/))
2332                  res@trXMaxF            = max((/maxius2,maxivs2,maxiws2/))
2333
2334                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2335
2336                  ; ***************************************************
2337                  ; legend for combined plot
2338                  ; ***************************************************
2339     
2340                  lgres                    = True
2341                  lgMonoDashIndex          = False
2342                  lgres@lgLabelFont        = "helvetica"   
2343                  lgres@lgLabelFontHeightF = .1           
2344                  lgres@vpWidthF           = 0.12           
2345                  lgres@vpHeightF          = 0.1         
2346                  lgres@lgDashIndexes      = (/0,1,2/)
2347                  lbid = gsn_create_legend(wks,3,(/"us2","vs2","ws2"/),lgres)       
2348
2349                  amres = True
2350                  amres@amParallelPosF   = 0.65             
2351                  amres@amOrthogonalPosF = -0.2           
2352                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2353                  overlay(plot(n),plot_us2)
2354                  us2=1
2355               else
2356                  varn=varn+1
2357                  continue   
2358               end if
2359            end if
2360            if (vNam(varn) .EQ. "pts2") then
2361               plot(n) = plot_pts2
2362            end if
2363            if (vNam(varn) .EQ. "ws3") then
2364               plot(n) = plot_ws3
2365            end if
2366            if (vNam(varn) .EQ. "Sw") then
2367               plot(n) = plot_Sw
2368            end if
2369            if (vNam(varn) .EQ. "ws2pts") then
2370               plot(n) = plot_ws2pts
2371            end if
2372            if (vNam(varn) .EQ. "wspts2") then
2373               plot(n) = plot_wspts2
2374            end if
2375            if (vNam(varn) .EQ. "wsususodz" .OR. vNam(varn) .EQ. "wspsodz" .OR. vNam(varn) .EQ. "wpeodz" ) then
2376               if (wsususodz .EQ. 0) then
2377                  res@gsnLeftString      = "wsususodz, wspsodz and ws2"
2378                  res@gsnRightString     = unit(varn)
2379                  res@trXMinF            = min((/miniwsususodz,miniwspsodz,miniwpeodz/))
2380                  res@trXMaxF            = max((/maxiwsususodz,maxiwspsodz,maxiwpeodz/))
2381
2382                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z_w,res)
2383
2384                  ; ***************************************************
2385                  ; legend for combined plot
2386                  ; ***************************************************
2387     
2388                  lgres                    = True
2389                  lgMonoDashIndex          = False
2390                  lgres@lgLabelFont        = "helvetica"   
2391                  lgres@lgLabelFontHeightF = .1           
2392                  lgres@vpWidthF           = 0.12           
2393                  lgres@vpHeightF          = 0.1         
2394                  lgres@lgDashIndexes      = (/0,1,2/)
2395                  lbid = gsn_create_legend(wks,3,(/"wsususodz","wspsodz","wpeodz"/),lgres)       
2396
2397                  amres = True
2398                  amres@amParallelPosF   = 0.65             
2399                  amres@amOrthogonalPosF = -0.2           
2400                  annoid1 = gsn_add_annotation(plot(n),lbid,amres)                 
2401                  overlay(plot(n),plot_wsususodz)
2402                  wsususodz=1
2403               else
2404                  varn=varn+1
2405                  continue   
2406               end if
2407            end if     
2408            n=n+1   
2409            varn=varn+1
2410         end if
2411      end do
2412   end if     
2413
2414   if (combine .EQ. 1) then
2415     
2416      check=True     
2417      n_o=0
2418      do varn = 0,dim-1
2419 
2420         if ( isStrSubset( vNam(varn), "NORM") .or. isStrSubset( vNam(varn), "time") )
2421            check = False
2422         else
2423            if (.not. isvar("var")) then
2424               check = True
2425               if (parameter(21) .NE. "variables") then
2426                  var=parameter(21)
2427                  check = isStrSubset( var,","+vNam(varn)+"," )
2428               end if
2429            else         
2430               check = isStrSubset( var,","+vNam(varn)+"," )
2431            end if
2432         end if
2433     
2434         if(check) then
2435
2436            z = f->$vNam(varn+1)$
2437            com=isStrSubset( c_var,","+vNam(varn)+"," )
2438     
2439            if (com)
2440                             
2441               if (n_o .EQ. 1) then
2442                  res@xyDashPattern  = 1
2443                                 
2444               else           
2445                  if (n_o .EQ. 2) then
2446                     res@xyDashPattern  = 2
2447                  else
2448                     res@xyDashPattern  = 0
2449                     res@gsnLeftString  = c_var
2450                     res@gsnRightString = unit(varn)
2451                     res@trXMinF        = min(mini)
2452                     res@trXMaxF        = max(maxi)
2453                  end if
2454               end if
2455               label(n_o)=vNam(varn)
2456               color_o(n_o)=237
2457               plot_o(n_o)=gsn_csm_xy(wks,data(varn,:,:),z,res)
2458               n_o=n_o+1
2459            end if         
2460            varn=varn+1   
2461         end if
2462      end do
2463   
2464      if(number_comb .EQ. 2)then
2465         overlay(plot_o(0),plot_o(1))
2466      end if
2467      if(number_comb .EQ. 3)then
2468         overlay(plot_o(0),plot_o(1))
2469         overlay(plot_o(0),plot_o(2))
2470      end if
2471
2472      ; ***************************************************
2473      ; legend for combined plot
2474      ; ***************************************************
2475     
2476      lgres                    = True
2477      lgMonoDashIndex          = False
2478      lgres@lgDashIndexes      = (/0,1,2/)
2479      lgres@lgLabelFont        = "helvetica"   
2480      lgres@lgLabelFontHeightF = .1           
2481      lgres@vpWidthF           = 0.12           
2482      lgres@vpHeightF          = 0.1           
2483 
2484      lbid = gsn_create_legend(wks,number_comb,label,lgres)       
2485
2486      amres = True
2487      amres@amParallelPosF   = 0.65                 
2488      amres@amOrthogonalPosF = -0.2           
2489      annoid1 = gsn_add_annotation(plot_o(0),lbid,amres)
2490   
2491      plot(0) = plot_o(0)
2492
2493   end if
2494
2495   ; ***************************************************
2496   ; merge plots onto one page
2497   ; ***************************************************
2498 print(n)
2499   do m=0,n-1
2500      plot_(m)=plot(n-1-m)
2501   end do
2502
2503   if (format_out .EQ. "eps" .OR. format_out .EQ. "epsi") then
2504      gsn_panel(wks,plot_(0:n-1),(/n,1/),resP)
2505   else   
2506      do i = 0,n-1, no_lines*no_columns
2507         if( (i+no_lines*no_columns) .gt. (n-1)) then
2508            gsn_panel(wks,plot_(i:n-1),(/no_lines,no_columns/),resP)
2509         else
2510           gsn_panel(wks,plot_(i:i+no_lines*no_columns-1),(/no_lines,no_columns/),resP)
2511         end if
2512      end do
2513   end if
2514
2515   print(" ")
2516   print("Output to: " + file_out +"."+ format_out)
2517   print(" ")
2518
2519end
Note: See TracBrowser for help on using the repository browser.