Changeset 190


Ignore:
Timestamp:
Aug 16, 2008 12:18:08 PM (16 years ago)
Author:
letzel
Message:
  • NCL scripts in trunk/SCRIPTS/NCL updated to version 2.0 (.ncl_preferences replaced by ncl_preferences.ncl)
Location:
palm/trunk/SCRIPTS/NCL
Files:
1 added
5 edited
1 moved

Legend:

Unmodified
Added
Removed
  • palm/trunk/SCRIPTS/NCL/cross_sections.ncl

    r175 r190  
    55load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl"
    66
     7;***************************************************
     8; load ncl_preferences.ncl
     9;***************************************************
     10   
     11if (isfilepresent("~/ncl_preferences.ncl")) then
     12   loadscript("~/ncl_preferences.ncl")
     13else
     14  if (isfilepresent("~/palm/current_version/trunk/SCRIPTS/NCL/ncl_preferences.ncl")) then
     15     loadscript( "~/palm/current_version/trunk/SCRIPTS/NCL/ncl_preferences.ncl")
     16  else
     17      print(" ")
     18      print("'ncl_preferences.ncl' does not exist in $home or $home/palm/current_version/trunk/SCRIPTS/NCL/")
     19      print(" ")
     20      exit
     21   end if
     22end if
     23   
    724begin
    825
    9    ; ***************************************************
    10    ; read parameter_list
    11    ; ***************************************************
    12 
    13    if (isfilepresent("~/.ncl_preferences")) then
    14       parameter = asciiread("~/.ncl_preferences",129,"string")
    15       delete(parameter@_FillValue)
    16    else
    17       if (isfilepresent("~/palm/current_version/trunk/SRIPTS/NCL/.ncl_preferences")) then
    18          parameter = asciiread("~/palm/current_version/trunk/SRIPTS/NCL/.ncl_preferences",129,"string")
    19          delete(parameter@_FillValue)
    20       else
    21          print(" ")
    22          print("'.ncl_preferences' is not present in '~/palm/current_version/trunk/SRIPTS/NCL/'")
    23          print(" ")
    24          exit
    25       end if
     26   if (cross_sections .NE. 1 .OR. profiles .NE. 0 .OR. timeseries .NE. 0 .OR. spectra .NE. 0)then
     27      print(" ")
     28      print("Please specify the used script in 'ncl_preferences.ncl' (Line 7-10)")
     29      print(" ")
     30      print("Set 'cross_sections' equal 1 and the other variables equal 0")
     31      print(" ")
     32      exit
    2633   end if
    2734
     
    3037   ; ***************************************************
    3138   
    32    if ( .not. isvar("file_1") ) then                     
    33       if (parameter(7) .EQ. "File in") then
    34          print(" ")
    35          print("Please provide 1st input file 'file_1=' either in prompt or parameter_list")
    36          print(" ")
    37          exit
    38       else
    39          file_in = parameter(7)
    40       end if   
     39   if (file_1 .EQ. "File in") then
     40      print(" ")
     41      print("Please provide 1st input file 'file_1=' in 'ncl_preferences.ncl'")
     42      print(" ")
     43      exit
    4144   else
    4245      file_in = file_1   
     
    4447   if (.not. isfilepresent(file_in)) then
    4548      print(" ")
    46       print("Your 1st input file: '"+file_in+"' does not exist")
     49      print("1st input file: '"+file_in+"' does not exist")
    4750      print(" ")
    4851      exit
    4952   end if
    5053
    51    if ( .not. isvar("format_out") ) then               
    52       format_out = "x11"
    53       if (parameter(9) .NE. "x11") then
    54          format_out = parameter(9) 
    55          if (format_out .NE. "x11" .AND. format_out .NE. "pdf" .AND. format_out .NE. "eps" .AND. format_out .NE. "ps" .AND. format_out .NE. "epsi" .AND. format_out .NE. "ncgm")then
    56             print(" ")
    57             print("Your 'format_out = "+format_out+"' is invalid and set to'x11'")
    58             print(" ")
    59          end if 
    60       end if
    61    else
    62       if (format_out .NE. "x11" .AND. format_out .NE. "pdf" .AND. format_out .NE. "eps" .AND. format_out .NE. "ps" .AND. format_out .NE. "epsi" .AND. format_out .NE. "ncgm")then
    63          print(" ")
    64          print("Your 'format_out = "+format_out+"' is invalid and set to'x11'")
    65          print(" ")
    66       end if   
    67    end if
    68 
    69    if ( .not. isvar("file_out") ) then                 
    70       file_out = "test"
    71       if (parameter(11) .NE. "test") then
    72          file_out = parameter(11) 
    73      end if     
    74    end if
    75    if ( .not. isvar("no_columns") ) then               
    76       no_columns = 1
    77       if (parameter(17) .NE. "1") then
    78          no_columns = stringtointeger(parameter(17)) 
    79       end if
    80    end if
    81    if ( .not. isvar("no_lines") ) then                 
    82       no_lines = 2
    83       if (parameter(19) .NE. "2") then
    84          no_lines = stringtointeger(parameter(19)) 
    85       end if
     54   if (format_out .NE. "x11" .AND. format_out .NE. "pdf" .AND. format_out .NE. "eps" .AND. format_out .NE. "ps" .AND. format_out .NE. "epsi" .AND. format_out .NE. "ncgm")then
     55      print(" ")
     56      print("'format_out = "+format_out+"' is invalid and set to'x11'")
     57      print(" ")
     58      format_out="x11"
     59   end if
     60
     61   if (sort .NE. "layer" .AND. sort .NE. "time") then 
     62      print(" ")
     63      print("'sort'= "+sort+" is invalid and set to 'layer'")
     64      print(" ")
     65      sort = "layer" 
     66   end if
     67   
     68   if (mode .NE. "Fill" .AND. mode .NE. "Line" .AND. mode .NE. "Both") then
     69      print(" ")
     70      print("'mode'= "+mode+" is invalid and set to 'Fill'")
     71      print(" ")
     72      mode = "Fill"
     73   end if
     74
     75   if (fill_mode .NE. "AreaFill" .AND. fill_mode .NE. "RasterFill" .AND. fill_mode .NE. "CellFill") then
     76      print(" ")
     77      print("Your 'fill_mode'= "+fill_mode+" is invalid and set to 'AreaFill'")
     78      print(" ")
     79      fill_mode = "AreaFill"
     80   end if
     81   
     82   if (shape .NE. 0 .AND. shape .NE. 1) then
     83      print(" ")
     84      print("'shape'= "+shape+" is invalid and set to 1")
     85      print(" ")
     86      shape = 1
    8687   end if
    87 
    88    if ( .not. isvar("sort") ) then                     
    89       sort = "layer"
    90       if (parameter(51) .NE. "layer") then
    91          sort = parameter(51) 
    92          if (sort .NE. "time") then
    93             print(" ")
    94             print("Your 'sort'= "+sort+" is invalid and set to 'layer'")
    95             print(" ")
    96             sort = "layer" 
    97          end if
    98       end if
    99    else
    100       if (sort .NE. "time" .OR. sort .NE. "layer")then
    101          print(" ")
    102          print("Your 'sort'= "+sort+" is invalid and set to 'layer'")
    103          print(" ")
    104          sort = "layer"   
    105       end if
    106    end if
    107 
    108    if ( .not. isvar("mode") ) then                     
    109       mode = "Fill"
    110       if (parameter(49) .NE. "Fill") then
    111          mode = parameter(49) 
    112          if (mode .NE. "Line" .AND. mode .NE. "Both")then
    113             print(" ")
    114             print("Your 'mode'= "+mode+" is invalid and set to 'Fill'")
    115             print(" ")
    116             mode = "Fill"
    117          end if
    118       end if
    119    else
    120       if (mode .NE. "Line" .AND. mode .NE. "Both")then
    121          print(" ")
    122          print("Your 'mode'= "+mode+" is invalid and set to 'Fill'")
    123          print(" ")
    124          mode = "Fill"
    125       end if   
    126    end if
    127 
    128    if ( .not. isvar("fill_mode") ) then                 
    129       fill_mode = "AreaFill"
    130       if (parameter(53) .NE. "AreaFill") then
    131          fill_mode = parameter(53) 
    132          if (fill_mode .NE. "RasterFill" .AND. fill_mode .NE. "CellFill")then
    133             print(" ")
    134             print("Your 'fill_mode'= "+fill_mode+" is invalid and set to 'AreaFill'")
    135             print(" ")
    136             fill_mode = "AreaFill"
    137          end if
    138       end if
    139    else
    140       if (fill_mode .NE. "RasterFill" .AND. fill_mode .NE. "CellFill")then
    141          print(" ")
    142          print("Your 'fill_mode'= "+fill_mode+" is invalid and set to 'AreaFill'")
    143          print(" ")
    144          fill_mode = "AreaFill"
    145       end if
    146    end if
    147 
    148    if ( .not. isvar("shape") ) then                     
    149       shape = 1
    150       if (parameter(55) .NE. "1") then
    151          shape = stringtointeger(parameter(55))
    152          if (shape .NE. 0) then
    153             print(" ")
    154             print("Your 'shape'= "+shape+" is invalid and set to 1")
    155             print(" ")
    156             shape = 1
    157          end if
    158       end if
    159    else
    160       if (shape .NE. 0) then
    161          print(" ")
    162          print("Your 'shape'= "+shape+" is invalid and set to 1")
    163          print(" ")
    164          shape = 1
    165       end if     
    166    end if
    167  
    168    if ( .not. isvar("var") ) then                       
    169       check = True
    170    end if
    171 
    172    if ( .not. isvar("xyc") ) then                       
    173       xyc = 0
    174       if (parameter(57) .NE. "0") then
    175          xyc = stringtointeger(parameter(57))
    176          if (xyc .NE. 1) then
    177             print(" ")
    178             print("Your 'xyc'= "+xyc+" is invalid and set to 0")
    179             print(" ")
    180             xyc = 0
    181          end if
    182       end if
    183    else
    184       if (xyc .NE. 1) then
    185          print(" ")
    186          print("Your 'xyc'= "+xyc+" is invalid and set to 0")
    187          print(" ")
    188          xyc = 0
    189       end if
    190    end if
    191    if ( .not. isvar("xzc") ) then                       
    192       xzc = 0
    193       if (parameter(59) .NE. "0") then
    194          xzc = stringtointeger(parameter(59))
    195          if (xzc .NE. 1) then
    196             print(" ")
    197             print("Your 'xzc'= "+xzc+" is invalid and set to 0")
    198             print(" ")
    199             xzc = 0
    200          end if
    201       end if
    202    else
    203       if (xzc .NE. 1) then
    204          print(" ")
    205          print("Your 'xzc'= "+xzc+" is invalid and set to 0")
    206          print(" ")
    207          xzc = 0
    208       end if
    209    end if
    210    if ( .not. isvar("yzc") ) then                       
    211       yzc = 0
    212       if (parameter(61) .NE. "0") then
    213          yzc = stringtointeger(parameter(61))
    214          if (yzc .NE. 1) then
    215             print(" ")
    216             print("Your 'yzc'= "+yzc+" is invalid and set to 0")
    217             print(" ")
    218             yzc = 0
    219          end if
    220       end if
    221    else
    222       if (yzc .NE. 1) then
    223          print(" ")
    224          print("Your 'yzc'= "+yzc+" is invalid and set to 0")
    225          print(" ")
    226          yzc = 0
    227       end if
    228    end if
    229 
     88   
     89   if (xyc .NE. 0 .AND. xyc .NE. 1)then
     90      print(" ")
     91      print("'xyc'= "+xyc+" is invalid and set to 0")
     92      print(" ")
     93      xyc = 0 
     94   end if
     95   
     96   if (xzc .NE. 0 .AND. xzc .NE. 1)then
     97      print(" ")
     98      print("'xzc'= "+xzc+" is invalid and set to 0")
     99      print(" ")
     100      xyc = 0 
     101   end if
     102   
     103   if (yzc .NE. 0 .AND. yzc .NE. 1)then
     104      print(" ")
     105      print("'yzc'= "+yzc+" is invalid and set to 0")
     106      print(" ")
     107      xyc = 0 
     108   end if
     109   
    230110   if (xyc .EQ. 0 .AND. xzc .EQ. 0 .AND. yzc .EQ. 0) then
    231111      print(" ")
     
    258138      end if
    259139   end if
    260    if ( .not. isvar("vector") ) then           
    261       vector = 0
    262       if (parameter(39) .NE. "0") then
    263          vector = stringtointeger(parameter(39))
    264          if (stringtointeger(parameter(39)) .NE. 1) then
    265             print(" ")
    266             print("Please set 'vector' to 0 or 1")
    267             print(" ")
    268             exit
    269          end if   
    270       end if
    271    end if
    272    if ( .not. isvar("ref_mag") ) then                           
    273       ref_mag = 0.05
    274       if (parameter(47) .NE. "0.05") then
    275          ref_mag = stringtofloat(parameter(47))   
    276       end if
    277    end if
    278 
     140
     141   if (vector .NE. 0 .AND. vector .NE. 1) then
     142      print(" ")
     143      print("Please set 'vector' to 0 or 1")
     144      print(" ")
     145      exit
     146   end if   
     147 
    279148   ; ***************************************************
    280149   ; open input file
     
    285154   vNam  = getfilevarnames(f)
    286155   print(" ")
    287    print("Variable on netCDF file: " + vNam)
     156   print("Variables in input file:")
     157   print("- "+ vNam)
    288158   print(" ")
    289159   dim   = dimsizes(vNam)
     
    369239   cs_res                          = True
    370240   cs_res@gsnYAxisIrregular2Linear = True 
    371 
    372    if( shape .eq. 1 ) then                             
    373       cs_res@gsnShape = True
    374    end if
    375241 
    376242   cs_res@gsnDraw                 = False
     
    381247   cs_res@gsnPaperHeight          = 11.69
    382248   cs_res@gsnPaperMargin          = 0.79
    383    cs_res@tmXBLabelFontHeightF   = .02
    384    cs_res@tmYLLabelFontHeightF   = .02
    385    cs_res@tiXAxisFontHeightF     = .02
    386    cs_res@tiYAxisFontHeightF     = .02
     249   cs_res@tmXBLabelFontHeightF   = .03
     250   cs_res@tmYLLabelFontHeightF   = .03
     251   cs_res@tiXAxisFontHeightF     = .03
     252   cs_res@tiYAxisFontHeightF     = .03
    387253   cs_res@tmXBMode                ="Automatic"
    388254   cs_res@tmYLMode                ="Automatic"
    389    cs_res@lgTitleFontHeightF     = .02
    390    cs_res@lgLabelFontHeightF     = .02
    391    cs_res@txFontHeightF          = .02
     255   cs_res@lgTitleFontHeightF     = .03
     256   cs_res@lgLabelFontHeightF     = .03
     257   cs_res@txFontHeightF          = .03
    392258   cs_res@cnLevelSelectionMode    = "ManualLevels"
    393259
     
    428294   ; ****************************************************
    429295
    430    if ( .not. isvar("start_time_step") ) then           
    431       start_time_step=t_all(0)/3600
    432       if (parameter(13) .NE. "t(0)") then
    433          if (stringtodouble(parameter(13)) .GT. t_all(nt-1)/3600)
    434             print(" ")
    435             print("'start_time_step' = "+ parameter(13) +"h is greater than last time step = " + t_all(nt-1)+"s = "+t_all(nt-1)/3600+"h")
    436             print(" ")
    437             print("Please select another 'start_time_step'")
    438             print(" ")
    439             exit
    440          end if
    441          if (stringtofloat(parameter(13)) .LT. t_all(0)/3600)
    442             print(" ")
    443             print("'start_time_step' = "+ parameter(13) +"h is lower than first time step = " + t_all(0)+"s = "+t_all(0)/3600+"h")
    444             print(" ")
    445             print("Please select another 'start_time_step'")
    446             print(" ")
    447             exit
    448          end if
    449          start_time_step=stringtodouble(parameter(13))
    450       end if
     296   if (start_time_step .EQ. -1.) then           
     297      start_time_step=t_all(0)/3600     
    451298   else
    452299      if (start_time_step .GT. t_all(nt-1)/3600)
     
    467314      end if
    468315   end if
    469    start_time_step = start_time_step*3600
    470316   do i=0,nt-1     
    471       if (start_time_step .GE. t_all(i)-delta_t/2 .AND. start_time_step .LT. t_all(i)+delta_t/2)then
     317      if (start_time_step .GE. (t_all(i)-delta_t/2)/3600 .AND. start_time_step .LT. (t_all(i)+delta_t/2)/3600)then
    472318         st=i
    473319         break
    474320      end if
    475321   end do
     322   
     323   if (.not. isvar("st"))then
     324      print(" ")
     325      print("'start_time_step' = "+ start_time_step +"h is invalid")
     326      print(" ")
     327      print("Please select another 'start_time_step'")
     328      print(" ")
     329      exit
     330   end if
    476331       
    477332   ; ****************************************************
     
    479334   ; ****************************************************
    480335
    481    if ( .not. isvar("end_time_step") ) then             
    482       end_time_step = t_all(nt-1)/3600
    483       if (parameter(15) .NE. "t(end)") then
    484          if (stringtodouble(parameter(15)) .LT. t_all(0)/3600)
    485             print(" ")
    486             print("'end_time_step' = "+parameter(15)+ "h is lower than first time step = " + t_all(0)+"s = "+t_all(0)/3600+"h")
    487             print(" ")
    488             print("Please select another 'end_time_step'")
    489             print(" ")
    490             exit
    491          end if
    492          if (stringtodouble(parameter(15)) .GT. t_all(nt-1)/3600)
    493             print(" ")
    494             print("'end_time_step' = "+ parameter(15) +"h is greater than last time step = " + t_all(nt-1)+"s = "+t_all(nt-1)/3600+"h")
    495             print(" ")
    496             print("Please select another 'end_time_step'") 
    497             print(" ")
    498             exit
    499          end if
    500          if (stringtodouble(parameter(15)) .LT. start_time_step/3600)
    501             print(" ")
    502             print("'end_time_step' = "+ parameter(15) +"h is lower than 'start_time_step' = "+parameter(13)+"h")
    503             print(" ")
    504             print("Please select another 'start_time_step' or 'end_time_step'")
    505             print(" ")
    506             exit
    507          end if
    508          end_time_step = stringtodouble(parameter(15))
    509       end if   
    510    else
     336   if (end_time_step .EQ. -1.) then             
     337      end_time_step = t_all(nt-1)/3600 
     338   else 
    511339      if (end_time_step .LT. t_all(0)/3600)
    512340         print(" ")
     
    534362      end if
    535363   end if
    536    end_time_step = end_time_step*3600
    537364   do i=0,nt-1     
    538       if (end_time_step .GE. t_all(i)-delta_t/2 .AND. end_time_step .LT. t_all(i)+delta_t/2)then
     365      if (end_time_step .GE. (t_all(i)-delta_t/2)/3600 .AND. end_time_step .LT. (t_all(i)+delta_t/2)/3600)then
    539366         et=i
    540367         break
    541368      end if
    542369   end do
     370   
     371   if (.not. isvar("et"))then
     372      print(" ")
     373      print("'end_time_step' = "+ end_time_step +"h is invalid")
     374      print(" ")
     375      print("Please select another 'end_time_step'")
     376      print(" ")
     377      exit
     378   end if
    543379 
    544380   delete(start_time_step)
     
    559395
    560396   if (vector .EQ. 1) then
    561       if ( .not. isvar("plotvec") ) then
    562          plotvec = parameter(45)
    563       end if
    564       if ( .not. isvar("vec1") ) then
    565          vec1 = parameter(41)
    566          if (parameter(41) .EQ. "vec1") then
    567             print(" ")
    568             print("Please indicate Vector 1 ('vec1') for Vector-Plot")
    569             print(" ")
    570             exit
    571          end if
    572       end if
    573       if ( .not. isvar("vec2") ) then
    574          vec2 = parameter(43)
    575          if (parameter(43) .EQ. "vec2") then
    576             print(" ")
    577             print("Please indicate Vector 2 ('vec2') for Vector-Plot")
    578             print(" ")
    579             exit
    580          end if
    581       end if             
     397      if (vec1 .EQ. "component1") then
     398         print(" ")
     399         print("Please indicate Vector 1 ('vec1') for Vector-Plot or set 'vector' to 0")
     400         print(" ")
     401         exit
     402      end if
     403      if (vec2 .EQ. "component2") then
     404         print(" ")
     405         print("Please indicate Vector 2 ('vec2') for Vector-Plot or set 'vector' to 0")
     406         print(" ")
     407         exit
     408      end if           
    582409   end if
    583410
     
    592419   if (xyc .EQ. 1) then
    593420      do varn=0,dim-1
    594          if (vNam(varn) .eq. "xu"  .OR. vNam(varn) .eq. "x")then   
     421         if (vNam(varn) .eq. "xu" .OR. vNam(varn) .eq. "x")then   
    595422            x_d     = f->$vNam(varn)$
    596423            xdim    = dimsizes(x_d)-1
     
    703530   ; ****************************************************         
    704531                   
    705    if ( .not. isvar("xs") ) then               
    706       xs     = 0.0d
    707       xstart = 0
    708       if (parameter(63) .NE. "x0") then
    709          if (delta_x .EQ. -1) then
    710             print(" ")
    711             print("You cannot choose a start value for x, there are preseted layers for x")
    712             print(" ")
    713             xstart=0
    714          else
    715             if (stringtodouble(parameter(63)) .LT. 0-delta_x/2) then
    716                print(" ")
    717                print("range start for x-coordinate = "+parameter(63)+"m is lower than first value x = "+0+"m or xu = "+(0-delta_x/2)+"m")
    718                print(" ")
    719                exit
    720             end if
    721             if (xyc .EQ. 1 .OR. xzc .EQ. 1) then
    722                if (stringtodouble(parameter(63)) .GE. xdim*delta_x) then
    723                   print(" ")
    724                   print("range start for x-coordinate = "+parameter(63)+"m is equal or greater than last value = "+xdim*delta_x+"m")
    725                   print(" ")
    726                   exit
    727                end if
    728             else
    729                if (stringtodouble(parameter(63)) .GT. xdim*delta_x) then
    730                   print(" ")
    731                   print("range start for x-coordinate = "+parameter(63)+"m is greater than last value = "+xdim*delta_x+"m")
    732                   print(" ")
    733                   exit
    734                end if
    735             end if
    736             xs = stringtodouble(parameter(63))
    737          end if
    738       end if
    739    else
     532   if (xs .EQ. -1.d) then               
     533      xs = x_d(0)
     534   else
    740535      if (delta_x .EQ. -1) then
    741536         print(" ")
     
    768563   end if
    769564
    770    if ( .not. isvar("ys") ) then   
    771       ys = 0.0d
    772       ystart = 0
    773       if (parameter(67) .NE. "y0") then
    774          if (delta_y .EQ. -1) then
    775             print(" ")
    776             print("You cannot choose a start value for y, there are preseted layers for y")
    777             print(" ")
    778             ystart=0
    779          else
    780             if (stringtodouble(parameter(67)) .LT. 0-delta_y/2) then
    781                print(" ")
    782                print("range start for y-coordinate = "+parameter(67)+"m is lower than first value = "+0-delta_y/2+"m")
    783                print(" ")
    784                exit
    785             end if
    786             if (xyc .EQ. 1 .OR. yzc .EQ. 1) then
    787                if (stringtodouble(parameter(67)) .GE. ydim*delta_y) then
    788                   print(" ")
    789                   print("range start for y-coordinate = "+parameter(67)+"m is equal or greater than last value = "+ydim*delta_y+"m")
    790                   print(" ")
    791                   exit
    792                end if
    793             else
    794                if (stringtodouble(parameter(67)) .GT. ydim*delta_y) then
    795                   print(" ")
    796                   print("range start for y-coordinate = "+parameter(67)+"m is greater than last value = "+ydim*delta_y+"m")
    797                   print(" ")
    798                   exit
    799                end if
    800             end if
    801             ys = stringtodouble(parameter(67))
    802          end if
    803       end if
     565   if (ys .EQ. -1.d) then   
     566      ys = y_d(0)
    804567   else
    805568      if (delta_y .EQ. -1) then
     
    833596   end if
    834597 
    835    if ( .not. isvar("zs") ) then                       
     598   if (zs .EQ. -1) then                         
    836599      zs = 0
    837       if (parameter(71) .NE. "z0") then
    838          if (delta_z .EQ. -1) then
    839             print(" ")
    840             print("You cannot choose a start value for z, there are preseted layers for z")
    841             print(" ")
    842          else
    843             print(" ")
    844             print("Please mind to indicate start and end ranges for the z-coordinate in")
    845             print("indices not in 'meters'. Corresponding index and meter:")
    846             print(" ")
    847             print(" = "+z_d+" m")
    848             print(" ")
    849             if (stringtointeger(parameter(71)) .LT. 0) then
    850                print(" ")
    851                print("range start for z-coordinate = "+parameter(71)+" is lower than first gridpoint = 0")
    852                print(" ")
    853                exit
    854             end if
    855             if (xzc .EQ. 1 .OR. yzc .EQ. 1) then
    856                if (stringtointeger(parameter(71)) .GE. zdim) then
    857                   print(" ")
    858                   print("range start for z-coordinate = "+parameter(71)+" is equal or greater than last gridpoint = "+zdim)
    859                   print(" ")
    860                   exit
    861                end if
    862             else
    863                if (stringtodouble(parameter(71)) .GT. zdim) then
    864                   print(" ")
    865                   print("range start for z-coordinate = "+parameter(71)+" is greater than last gridpoint = "+zdim)
    866                   print(" ")
    867                   exit
    868                end if
    869             end if
    870             zs = stringtointeger(parameter(71))
    871          end if
    872       end if
    873600   else
    874601      if (delta_z .EQ. -1) then
     
    901628   end if 
    902629
    903    if ( .not. isvar("xe")) then   
    904       xe   = xdim*delta_x
    905       xend = xdim
    906       if (parameter(65) .NE. "xdim") then
    907          if (delta_x .EQ. -1) then
    908             print(" ")
    909             print("You cannot choose an end value for x, there are preseted layers for x")
    910             print(" ")
    911             xend=xdim           
    912          else
    913             if (stringtodouble(parameter(65)) .GT. xdim*delta_x) then
    914                print(" ")
    915                print("range end for x-coordinate = "+parameter(65)+"m is greater than last value = "+xdim*delta_x+"m")
    916                print(" ")
    917                exit
    918             end if
    919             if (xyc .EQ. 1 .OR. xzc .EQ. 1) then
    920                if (stringtodouble(parameter(65)) .LE. 0-delta_x/2)
    921                   print(" ")
    922                   print("range end for x-coordinate = "+parameter(65)+"m is equal or lower than first value = "+(0-delta_x/2)+"m")
    923                   print(" ")
    924                   exit
    925                end if
    926                if (stringtodouble(parameter(65)) .LE. xs) then
    927                   print(" ")
    928                   print("range end for x-coordinate = "+parameter(65)+"m is equal or lower than start range = "+xs+"m")
    929                   print(" ")
    930                   exit
    931                end if
    932             else
    933                if (stringtodouble(parameter(65)) .LT. 0-delta_x/2)
    934                   print(" ")
    935                   print("range end for x-coordinate = "+parameter(65)+"m is lower than first value = "+(0-delta_x/2)+"m")
    936                   print(" ")
    937                   exit
    938                end if
    939                if (stringtodouble(parameter(65)) .LT. xs) then
    940                   print(" ")
    941                   print("range end for x-coordinate = "+parameter(65)+"m is lower than start range = "+xs+"m")
    942                   print(" ")
    943                   exit
    944                end if
    945             end if         
    946             xe = stringtodouble(parameter(65))
    947          end if
    948       end if
     630   if (xe .EQ. -1) then   
     631      xe = x_d(xdim)
    949632   else
    950633      if (delta_x .EQ. -1) then
     
    973656               exit
    974657            end if
    975             if (stringtodouble(xe .EQ. xs+1)) then
     658            if (xe .EQ. xs+1) then
    976659               print(" ")
    977660               print("range end for x-coordinate = "+xe+"m must be at least two more gridpoints greater than start range = "+xs+"m")
     
    995678      end if               
    996679   end if
    997 
    998    if ( .not. isvar("ye")) then 
    999       ye   = ydim*delta_y
    1000       yend = ydim
    1001       if (parameter(69) .NE. "ydim") then
    1002          if (delta_y .EQ. -1) then
    1003             print(" ")
    1004             print("You cannot choose an end value for y, there are preseted layers for y")
    1005             print(" ")
    1006             yend=ydim
    1007          else
    1008             if (stringtodouble(parameter(69)) .GT. ydim*delta_y) then
    1009                print(" ")
    1010                print("range end for y-coordinate = "+parameter(69)+"m is greater than last value = "+ydim*delta_y+"m")
    1011                print(" ")
    1012                exit
    1013             end if
    1014             if (xyc .EQ. 1 .OR. yzc .EQ. 1) then
    1015                if (stringtodouble(parameter(69)) .LE. 0-delta_y/2)
    1016                   print(" ")
    1017                   print("range end for y-coordinate = "+parameter(69)+"m is equal or lower than first value = "+(0-delta_y/2)+"m")
    1018                   print(" ")
    1019                   exit
    1020                end if
    1021                if (stringtodouble(parameter(69)) .LE. ys) then
    1022                   print(" ")
    1023                   print("range end for y-coordinate = "+parameter(69)+"m is equal or lower than start range = "+ys+"m")
    1024                   print(" ")
    1025                   exit
    1026                end if
    1027                if (stringtodouble(parameter(69)) .EQ. ys+1) then
    1028                   print(" ")
    1029                   print("range end for y-coordinate = "+parameter(69)+"m must be at least two more gridpoints greater than start range = "+ys+"m")
    1030                   print(" ")
    1031                   exit
    1032                end if
    1033             else
    1034                if (stringtodouble(parameter(69)) .LT. 0-delta_y/2)
    1035                   print(" ")
    1036                   print("range end for y-coordinate = "+parameter(69)+"m is lower than first value = "+(0-delta_y/2)+"m")
    1037                   print(" ")
    1038                   exit
    1039                end if
    1040                if (stringtodouble(parameter(69)) .LT. ys) then
    1041                   print(" ")
    1042                   print("range end for y-coordinate = "+parameter(69)+"m is lower than start range = "+ys+"m")
    1043                   print(" ")
    1044                   exit
    1045                end if
    1046             end if         
    1047             ye = stringtodouble(parameter(69))
    1048          end if
    1049       end if
     680   
     681   if (ye .EQ. -1) then 
     682      ye = y_d(ydim)
    1050683   else
    1051684      if (delta_y .EQ. -1) then
     
    1097730   end if
    1098731 
    1099    if ( .not. isvar("ze")) then 
     732   if (ze .EQ. -1) then 
    1100733      ze = zdim
    1101       if (parameter(73) .NE. "zdim") then
    1102          if (delta_z .EQ. -1) then
    1103             print(" ")
    1104             print("You cannot choose an end value for z, there are preseted layers for z")
    1105             print(" ")           
    1106          else
    1107             if (stringtointeger(parameter(73)) .GT. zdim) then
    1108                print(" ")
    1109                print("range end for z-coordinate = "+parameter(73)+" is greater than last gridpoint = "+zdim)
    1110                print(" ")
    1111                exit
    1112             end if
    1113          if (xzc .EQ. 1 .OR. yzc .EQ. 1) then
    1114             if (stringtointeger(parameter(73)) .LE. 0)
    1115                print(" ")
    1116                print("range end for z-coordinate = "+parameter(73)+" is equal or lower than first gridpoint = 0")
    1117                print(" ")
    1118                exit
    1119             end if
    1120             if (stringtointeger(parameter(73)) .LE. zs) then
    1121                print(" ")
    1122                print("range end for z-coordinate = "+parameter(73)+" is equal or lower than start range = "+zs)
    1123                print(" ")
    1124                exit
    1125             end if
    1126             if (stringtodouble(parameter(73)) .EQ. zs+1) then
    1127                print(" ")
    1128                print("range end for z-coordinate = "+parameter(73)+" must be at least two more gridpoints greater than start range = "+zs)
    1129                print(" ")
    1130                exit
    1131             end if
    1132          else
    1133             if (stringtointeger(parameter(73)) .LT. 0)
    1134                print(" ")
    1135                print("range end for z-coordinate = "+parameter(73)+" is lower than first gridpoint = 0")
    1136                print(" ")
    1137                exit
    1138             end if
    1139             if (stringtointeger(parameter(73)) .LT. zs) then
    1140                print(" ")
    1141                print("range end for z-coordinate = "+parameter(73)+" is lower than start range = "+zs)
    1142                print(" ")
    1143                exit
    1144             end if
    1145          end if         
    1146          ze = stringtointeger(parameter(73))
    1147       end if
    1148       end if
    1149734   else
    1150735      if (delta_z .EQ. -1) then
     
    1211796   end if
    1212797   if (delta_y .NE. -1) then
    1213       do i=0,xdim   
     798      do i=0,ydim   
    1214799         if (ys .GT. y_d(i)-delta_y/2 .AND. ys .LE. y_d(i)+delta_y/2)then
    1215800            ystart=i
     
    1217802         end if
    1218803      end do
    1219       do i=0,xdim   
     804      do i=0,ydim   
    1220805         if (ye .GT. y_d(i)-delta_y/2 .AND. ye .LE. y_d(i)+delta_y/2)then
    1221806            yend=i
     
    1223808         end if
    1224809      end do
     810   end if
     811   
     812   if( shape .eq. 1 ) then
     813      cs_res@vpWidthF    = (xe-xs)/(ye-ys)       
     814      cs_res@vpHeightF   = 1
    1225815   end if
    1226816   
     
    1238828      if (xe .EQ. xs+1) then
    1239829         print(" ")
    1240          print("range end for x-coordinate="+parameter(65)+"m(=>value on file="+xe*delta_x+"m) must be at least two")
    1241          print("more gridpoints(="+2*delta_x+"m) greater than start range="+parameter(63)+"m(=>value on file="+xs*delta_x+"m)")
     830         print("range end for x-coordinate="+xe*delta_x+"m) must be at least two")
     831         print("more gridpoints(="+2*delta_x+"m) greater than start range="+xs*delta_x+"m)")
    1242832         print(" ")
    1243833         exit
     
    1247837      if (ye .EQ. ys+1) then
    1248838         print(" ")
    1249          print("range end for y-coordinate="+parameter(69)+"m(=>value on file="+ye*delta_y+"m) must be at least two")
    1250          print("more gridpoints(="+2*delta_y+"m) greater than start range="+parameter(67)+"m(=>value on file="+ys*delta_y+"m)")
     839         print("range end for y-coordinate="+ye*delta_y+"m) must be at least two")
     840         print("more gridpoints(="+2*delta_y+"m) greater than start range="+ys*delta_y+"m)")
    1251841         print(" ")
    1252842         exit
     
    1256846      if (ze .EQ. zs+1) then
    1257847         print(" ")
    1258          print("range end for x-coordinate="+parameter(73)+"(=> value on file="+ze+") must be at least two")
    1259          print("more gridpoints greater than start range="+parameter(71)+"(=>value on file="+zs+")")
     848         print("range end for x-coordinate="+ze+") must be at least two")
     849         print("more gridpoints greater than start range="+zs+")")
    1260850         print(" ")
    1261851         exit
     
    1265855   if (xyc .EQ. 1) then
    1266856      no_layer = (ze-zs)+1
    1267       data = new((/dim,nt,zdim+1,(ye-ys)+1,(xe-xs)+1/),float)
     857      data = new((/dim,nt,(ze-zs)+1,(ye-ys)+1,(xe-xs)+1/),float)
    1268858   end if
    1269859   if (xzc .EQ. 1) then
    1270860      no_layer = (ye-ys)+1
    1271       data = new((/dim,nt,(ze-zs)+1,ydim+1,(xe-xs)+1/),float)
     861      data = new((/dim,nt,(ze-zs)+1,(ye-ys)+1,(xe-xs)+1/),float)
    1272862   end if
    1273863   if (yzc .EQ. 1) then
    1274864      no_layer = (xe-xs)+1
    1275       data = new((/dim,nt,(ze-zs)+1,(ye-ys)+1,xdim+1/),float)
     865      data = new((/dim,nt,(ze-zs)+1,(ye-ys)+1,(xe-xs)+1/),float)
    1276866   end if
    1277867
     
    1299889      lis = start_time_step
    1300890      lie = end_time_step
    1301       los = lays
    1302       loe = laye
     891      los = 0
     892      loe = laye-lays
    1303893   else
    1304       lis = lays
    1305       lie = laye
     894      lis = 0
     895      lie = laye-lays
    1306896      los = start_time_step
    1307897      loe = end_time_step
     
    1314904   n=0
    1315905
    1316    do varn=dim-1,0,1 
    1317      
    1318       data_all = f->$vNam(varn)$
     906   do varn=dim-1,0,1       
    1319907   
    1320908      if (vector .EQ. 1) then   
     
    1328916         check = True
    1329917      end if 
    1330       if (  isvar("var") ) then 
    1331          check = isStrSubset( var,","+vNam(varn)+",")
    1332       end if 
    1333       if (parameter(21) .NE. "variables") then
    1334          var = parameter(21)
     918   
     919      if (var .NE. "all") then
    1335920         check = isStrSubset( var,","+vNam(varn)+"," )
    1336921      end if 
     
    1350935
    1351936         if (xyc .EQ. 1) then
    1352             data(varn,:,:,:,:)=data_all(:,:,ys:ye,xs:xe)
     937            data(varn,:,:,:,:)=f->$vNam(varn)$(:,zs:ze,ys:ye,xs:xe)     
    1353938         end if
    1354939         if ( xzc .eq. 1 ) then
    1355             data(varn,:,:,:,:)=data_all(:,zs:ze,:,xs:xe)
     940            data(varn,:,:,:,:)=f->$vNam(varn)$(:,zs:ze,ys:ye,xs:xe)
    1356941         end if
    1357942         if ( yzc .eq. 1) then
    1358             data(varn,:,:,:,:)=data_all(:,zs:ze,ys:ye,:)
    1359          end if
    1360 
     943            data(varn,:,:,:,:)=f->$vNam(varn)$(:,zs:ze,ys:ye,xs:xe)
     944         end if
    1361945         if (check_vec1) then
    1362             vect1=data_all
     946            vect1=data(varn,:,:,:,:)
    1363947         end if
    1364948         if (check_vec2) then
    1365             vect2=data_all
     949            vect2=data(varn,:,:,:,:)
    1366950         end if
    1367951
     
    1377961      end if
    1378962
    1379       delete(data_all)
    1380 
    1381963   end do
    1382964
    1383    if (n .EQ. 0) then
    1384       print(" ")
    1385       print("The variables 'var=°"+var+"°' do not exist on your input file")
     965   var_input=new(no_var,string)
     966   numb=0
     967   do varn=dim-1,0,1   
     968   
     969      if (vector .EQ. 1) then   
     970         check_vec1 = isStrSubset( vec1,","+vNam(varn)+",")
     971         check_vec2 = isStrSubset( vec2,","+vNam(varn)+",")
     972      end if
     973           
     974      if ( vNam(varn) .eq. "zw" .or. vNam(varn) .eq. "yv" .or. vNam(varn) .eq. "xu" .or. vNam(varn) .eq. "zu" .or. vNam(varn) .eq. "zwwi" .or. vNam(varn) .eq. "zusi" .or. vNam(varn) .eq. "time" .or. vNam(varn) .eq. "zu_3d" .or. vNam(varn) .eq. "zw_3d" .or. vNam(varn) .eq. "x".or. vNam(varn) .eq. "y" .or. vNam(varn) .eq. "zu_xy" .or. vNam(varn) .eq. "zw_xy" .or. vNam(varn) .eq. "zu1_xy" .or. vNam(varn) .eq. "ind_z_xy" .or. vNam(varn) .eq. "y_xz" .or. vNam(varn) .eq. "yv_xz" .or. vNam(varn) .eq. "ind_y_xz" .or. vNam(varn) .eq. "x_yz" .or. vNam(varn) .eq. "xu_yz" .or. vNam(varn) .eq. "ind_x_yz") then
     975         check = False
     976      else
     977         check = True
     978      end if 
     979   
     980      if (var .NE. "all") then
     981         check = isStrSubset( var,","+vNam(varn)+"," )
     982      end if 
     983
     984      if(check) then     
     985         var_input(numb)=vNam(varn)
     986         numb=numb+1     
     987      end if
     988     
     989   end do
     990
     991   if (no_var .EQ. 0) then
     992      print(" ")
     993      print("The variables var='"+var+"' do not exist on your input file;")
     994      print("be sure to have one comma berfore and after each variable")
    1386995      print(" ")
    1387996      exit
     
    13911000      if (v1 .EQ. 0)then
    13921001         print(" ")
    1393          print("Varible for vector-plot ('vec1') must be one of the varibles for plot ('var')")
     1002         print("Component 1 for the vector-plot ('vec1') must be one of the input varibles:")
     1003         print("- "+var_input)
     1004         print("be sure to have one comma berfore and after the variable")
    13941005         print(" ")
    13951006         exit
     
    13981009      if (v2 .EQ. 0)then
    13991010         print(" ")
    1400          print("Varible for vector-plot ('vec2') must be one of the varibles for plot ('var')")
     1011         print("Component 2 for the vector-plot ('vec2') must be one of the input varibles:")
     1012         print("- "+var_input)
     1013         print("be sure to have one comma berfore and after the variable")
    14011014         print(" ")
    14021015         exit
     
    14231036   ; ***************************************************
    14241037
    1425    if (vector .EQ. 1 .AND. parameter(45) .EQ. "plotvec") then
     1038   if (vector .EQ. 1 .AND. plotvec .EQ. "plotvec") then
    14261039      do lo = los, loe                                         
    14271040         do li = lis, lie
     
    14411054      end do
    14421055   end if
    1443 
    1444    check = True
    14451056 
    14461057   do varn=dim-1,0,1
     
    14551066         check = True
    14561067      end if   
    1457       if (  isvar("var") ) then 
    1458          check = isStrSubset( var,","+vNam(varn)+",")
    1459       end if
    1460       if (parameter(21) .NE. "variables") then
    1461          var = parameter(21)
     1068 
     1069      if (var .NE. "all") then
    14621070         check = isStrSubset( var,","+vNam(varn)+"," )
    14631071      end if
    14641072   
    14651073      if(check) then
    1466          print(vNam(varn))
     1074   
    14671075         space=(MaxVal(varn)-MinVal(varn))/24
    14681076 
     
    14961104                        level = "=" + data&z(lo) + "m"
    14971105                     end if
    1498                      cs_res@gsnCenterString = "t=" + data&t(li) +"s  z"+level
     1106                     cs_res@gsnCenterString = "t=" + decimalPlaces(t_all(li)/3600,2,True) +"h  z"+level             
    14991107                     plot(n) = gsn_csm_contour(wks_ps,data(varn,li,lo,:,:),cs_res)
    15001108                     if (vector .EQ. 1 .AND. check_vecp) then
     
    15141122                 
    15151123                  if ( sort .eq. "layer" ) then
    1516                      if ( data&z(li) .eq. -1 ) then
     1124                     if ( data&z(li) .eq. -1 ) then
    15171125                        level = "-average"
    15181126                     else
    15191127                        level = "=" + data&z(li) + "m"
    1520                      end if
    1521                      cs_res@gsnCenterString = "t=" + data&t(lo) + "s  z"+ level
     1128                     end if 
     1129                     cs_res@gsnCenterString = "t=" + decimalPlaces(t_all(lo)/3600,2,True) + "h  z"+ level               
    15221130                     plot(n) = gsn_csm_contour(wks_ps,data(varn,lo,li,:,:),cs_res)
    15231131                     if (vector .EQ. 1 .AND. check_vecp) then
     
    15481156               
    15491157                  if ( sort .eq. "time" ) then
    1550                      if ( data&z(lo) .eq. -1 ) then
     1158                     if ( data&y(lo) .eq. -1 ) then
    15511159                        level = "-average"
    15521160                     else
    15531161                        level = "=" + data&y(lo) + "m"
    15541162                     end if
    1555                      cs_res@gsnCenterString = "t=" + data&t(li) + "s  y"+ level
     1163                     cs_res@gsnCenterString = "t=" + decimalPlaces(t_all(li)/3600,2,True) + "s  y"+ level
    15561164                     plot(n) = gsn_csm_contour(wks_ps,data(varn,li,:,lo,:),cs_res)
    15571165                     if (vector .EQ. 1 .AND. check_vecp) then
     
    15711179
    15721180                  if ( sort .eq. "layer" ) then
    1573                      if ( data&z(li) .eq. -1 ) then
     1181                     if ( data&y(li) .eq. -1 ) then
    15741182                        level = "-average"
    15751183                     else
    15761184                        level = "=" + data&y(li) + "m"
    15771185                     end if
    1578                      cs_res@gsnCenterString = "t=" + data&t(lo) + "s  y"+ level
     1186                     cs_res@gsnCenterString = "t=" + decimalPlaces(t_all(lo)/3600,2,True) + "s  y"+ level
    15791187                     plot(n) = gsn_csm_contour(wks_ps,data(varn,lo,:,li,:),cs_res)
    15801188                     if (vector .EQ. 1 .AND. check_vecp) then
     
    16051213
    16061214                  if ( sort .eq. "time" ) then
    1607                      if ( data&z(lo) .eq. -1 ) then
     1215                     if ( data&x(lo) .eq. -1 ) then
    16081216                        level = "-average"
    16091217                     else
    1610                         level = "=" + data&z(lo) + "m"
     1218                        level = "=" + data&x(lo) + "m"
    16111219                     end if
    1612                      cs_res@gsnCenterString = "t=" + data&t(li) + "s  x"+ level
     1220                     cs_res@gsnCenterString = "t=" + decimalPlaces(t_all(li)/3600,2,True) + "s  x"+ level
    16131221                     plot(n) = gsn_csm_contour(wks_ps,data(varn,li,:,:,lo),cs_res)
    16141222                     if (vector .EQ. 1 .AND. check_vecp) then
     
    16281236
    16291237                  if ( sort .eq. "layer" ) then
    1630                      if ( data&z(li) .eq. -1 ) then
     1238                     if ( data&x(li) .eq. -1 ) then
    16311239                        level = "-average"
    16321240                     else
    1633                         level = "=" + data&z(li) + "m"
     1241                        level = "=" + data&x(li) + "m"
    16341242                     end if
    1635                      cs_res@gsnCenterString = "t=" + data&t(lo) + "s  x"+ level
     1243                     cs_res@gsnCenterString = "t=" + decimalPlaces(t_all(lo)/3600,2,True) + "s  x"+ level
    16361244                     plot(n) = gsn_csm_contour(wks_ps,data(varn,lo,:,:,li),cs_res)
    16371245                     if (vector .EQ. 1 .AND. check_vecp)then
     
    16601268   ; ***************************************************
    16611269
    1662    if (vector .EQ. 1 .AND. parameter(45) .EQ. "plotvec")then
     1270   if (vector .EQ. 1 .AND. plotvec .EQ. "plotvec")then
    16631271      if (format_out .EQ. "eps" .OR. format_out .EQ. "epsi") then
    16641272         gsn_panel(wks_ps,plot(0:(no_time*no_layer*(no_var+1))-1),(/no_var+1,no_layer*no_time/),cs_resP)
  • palm/trunk/SCRIPTS/NCL/profiles.ncl

    r175 r190  
    22load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
    33load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
     4
     5;***************************************************
     6; load ncl_preferences.ncl
     7;***************************************************
     8   
     9if (isfilepresent("~/ncl_preferences.ncl")) then
     10   loadscript("~/ncl_preferences.ncl")
     11else
     12  if (isfilepresent("~/palm/current_version/trunk/SCRIPTS/NCL/ncl_preferences.ncl")) then
     13     loadscript( "~/palm/current_version/trunk/SCRIPTS/NCL/ncl_preferences.ncl")
     14  else
     15      print(" ")
     16      print("'ncl_preferences.ncl' does not exist in $home or $home/palm/current_version/trunk/SCRIPTS/NCL/")
     17      print(" ")
     18      exit
     19   end if
     20end if
     21   
     22begin
     23
     24   if (cross_sections .NE. 0 .OR. profiles .NE. 1 .OR. timeseries .NE. 0 .OR. spectra .NE. 0)then
     25      print(" ")
     26      print("Please specify the used script in 'ncl_preferences.ncl' (Line 7-10)")
     27      print(" ")
     28      print("Set 'profiles' equal 1 and the other variables equal 0")
     29      print(" ")
     30      exit
     31   end if
    432 
    5 begin
    6 
    7    ; ***************************************************
    8    ; read parameter_list
    9    ; ***************************************************
    10 
    11    if (isfilepresent("~/.ncl_preferences")) then
    12       parameter = asciiread("~/.ncl_preferences",129,"string")
    13       delete(parameter@_FillValue)
    14    else
    15       if (isfilepresent("~/palm/current_version/trunk/SRIPTS/NCL/.ncl_preferences")) then
    16          parameter = asciiread("~/palm/current_version/trunk/SRIPTS/NCL/.ncl_preferences",129,"string")
    17          delete(parameter@_FillValue)
    18       else
    19          print(" ")
    20          print("'.ncl_preferences' is not present in '~/palm/current_version/trunk/SRIPTS/NCL/'")
    21          print(" ")
    22          exit
    23       end if
    24    end if
    25  
    26    ; ***************************************************
    27    ; set up default parameter values and strings if not assigned in prompt or parameter list
    28    ; ***************************************************
    29  
    30    if ( .not. isvar("no_files") ) then
    31       no_files = 1 
    32       if (parameter(81) .NE. "1") then
    33          no_files = stringtointeger(parameter(81))
    34          if (no_files .LT. 1 .OR. no_files .GT. 12) then
    35             print(" ")
    36             print("Please assign 'no_files' between 1 and 12") 
    37             print(" ")
    38             exit
    39          end if
    40       end if
    41    else
    42       if (no_files .LT. 1 .OR. no_files .GT. 12) then
    43          print(" ")
    44          print("Please assign 'no_files' between 1 and 12") 
    45          print(" ")
    46          exit
    47       end if
     33   ;***************************************************
     34   ; set up default parameter values and strings
     35   ;***************************************************
     36
     37   if (no_files .LT. 1 .OR. no_files .GT. 12) then
     38      print(" ")
     39      print("Please assign 'no_files' between 1 and 12") 
     40      print(" ")
     41      exit
    4842   end if
    4943
    5044   file_in = new(no_files,string)
    51  
    52    if ( .not. isvar("file_1") ) then                         
    53       if (parameter(7) .EQ. "File in") then
    54          print(" ")
    55          print("Please provide 1st input file 'file_1=' either in prompt or parameter_list")
    56          print(" ")
    57          exit
    58       else
    59          file_in(0) = parameter(7)
    60       end if   
     45   
     46   if (file_1 .EQ. "File in") then
     47      print(" ")
     48      print("Please provide 1st input file 'file_1=' in 'ncl_preferences.ncl'")
     49      print(" ")
     50      exit
    6151   else
    6252      file_in(0) = file_1   
     
    6454   if (.not. isfilepresent(file_in(0))) then
    6555      print(" ")
    66       print("Your 1st input file: '"+file_in(0)+"' does not exist")
     56      print("Your 1st input file: '"+file_in+"' does not exist")
     57      print(" ")
     58      exit
     59   end if
     60   
     61   if (prof3d .EQ. -1)then
     62      print(" ")
     63      print("Please set 'prof3d' to 0 or 1")
     64      print(" ")
     65      exit
     66   else
     67      if (prof3d .NE. 0 .AND. prof3d .NE. 1)then
     68         print(" ")
     69         print("'prof3d'= "+prof3d+" is invalid; set 'prof3d' to 0 or 1")
     70         print(" ")
     71         exit
     72      end if
     73   end if
     74 
     75   if (no_files .GT. 1) then
     76      if (file_2 .EQ. "File in") then
     77         print(" ")
     78         print("Please provide 2nd input file 'file_2=' in 'ncl_preferences.ncl'")
     79         print(" ")
     80         exit
     81      else
     82         file_in(1) = file_2   
     83      end if
     84      if (.not. isfilepresent(file_in(1))) then
     85         print(" ")
     86         print("Your 2nd input file: '"+file_in+"' does not exist")
     87         print(" ")
     88         exit
     89      end if
     90   end if
     91   
     92   if (no_files .GT. 2) then
     93      if (file_3 .EQ. "File in") then
     94         print(" ")
     95         print("Please provide 3rd input file 'file_3=' in 'ncl_preferences.ncl'")
     96         print(" ")
     97         exit
     98      else
     99         file_in(2) = file_3   
     100      end if
     101      if (.not. isfilepresent(file_in(2))) then
     102         print(" ")
     103         print("Your 3rd input file: '"+file_in+"' does not exist")
     104         print(" ")
     105         exit
     106      end if
     107   end if
     108   
     109   if (no_files .GT. 3) then
     110      if (file_4 .EQ. "File in") then
     111         print(" ")
     112         print("Please provide 4th input file 'file_4=' in 'ncl_preferences.ncl'")
     113         print(" ")
     114         exit
     115      else
     116         file_in(3) = file_4   
     117      end if
     118      if (.not. isfilepresent(file_in(3))) then
     119         print(" ")
     120         print("Your 4th input file: '"+file_in+"' does not exist")
     121         print(" ")
     122         exit
     123      end if
     124   end if
     125   
     126   if (no_files .GT. 4) then
     127      if (file_5 .EQ. "File in") then
     128         print(" ")
     129         print("Please provide 5th input file 'file_5=' in 'ncl_preferences.ncl'")
     130         print(" ")
     131         exit
     132      else
     133         file_in(4) = file_5   
     134      end if
     135      if (.not. isfilepresent(file_in(4))) then
     136         print(" ")
     137         print("Your 5th input file: '"+file_in+"' does not exist")
     138         print(" ")
     139         exit
     140      end if 
     141   end if
     142   if (no_files .GT. 5) then
     143      if (file_6 .EQ. "File in") then
     144         print(" ")
     145         print("Please provide 6th input file 'file_6=' in 'ncl_preferences.ncl'")
     146         print(" ")
     147         exit
     148      else
     149         file_in(5) = file_6   
     150      end if
     151      if (.not. isfilepresent(file_in(5))) then
     152         print(" ")
     153         print("Your 6th input file: '"+file_in+"' does not exist")
     154         print(" ")
     155         exit
     156      end if   
     157   end if
     158   if (no_files .GT. 6) then
     159      if (file_7 .EQ. "File in") then
     160         print(" ")
     161         print("Please provide 7th input file 'file_7=' in 'ncl_preferences.ncl'")
     162         print(" ")
     163         exit
     164      else
     165         file_in(6) = file_7   
     166      end if
     167      if (.not. isfilepresent(file_in(6))) then
     168         print(" ")
     169         print("Your 7th input file: '"+file_in+"' does not exist")
     170         print(" ")
     171         exit
     172      end if   
     173   end if
     174   if (no_files .GT. 7) then
     175      if (file_8 .EQ. "File in") then
     176         print(" ")
     177         print("Please provide 8th input file 'file_8=' in 'ncl_preferences.ncl'")
     178         print(" ")
     179         exit
     180      else
     181         file_in(7) = file_8   
     182      end if
     183      if (.not. isfilepresent(file_in(7))) then
     184         print(" ")
     185         print("Your 8th input file: '"+file_in+"' does not exist")
     186         print(" ")
     187         exit
     188      end if   
     189   end if
     190   if (no_files .GT. 8) then
     191      if (file_9 .EQ. "File in") then
     192         print(" ")
     193         print("Please provide 9th input file 'file_9=' in 'ncl_preferences.ncl'")
     194         print(" ")
     195         exit
     196      else
     197         file_in(8) = file_9   
     198      end if
     199      if (.not. isfilepresent(file_in(8))) then
     200         print(" ")
     201         print("Your 9th input file: '"+file_in+"' does not exist")
     202         print(" ")
     203         exit
     204      end if   
     205   end if
     206   if (no_files .GT. 9) then
     207      if (file_10 .EQ. "File in") then
     208         print(" ")
     209         print("Please provide 10th input file 'file_10=' in 'ncl_preferences.ncl'")
     210         print(" ")
     211         exit
     212      else
     213         file_in(9) = file_10   
     214      end if
     215      if (.not. isfilepresent(file_in(9))) then
     216         print(" ")
     217         print("Your 10th input file: '"+file_in+"' does not exist")
     218         print(" ")
     219         exit
     220      end if   
     221   end if
     222   if (no_files .GT. 10) then
     223      if (file_11 .EQ. "File in") then
     224         print(" ")
     225         print("Please provide 11th input file 'file_11=' in 'ncl_preferences.ncl'")
     226         print(" ")
     227         exit
     228      else
     229         file_in(10) = file_11   
     230      end if
     231      if (.not. isfilepresent(file_in(10))) then
     232         print(" ")
     233         print("Your 11th input file: '"+file_in+"' does not exist")
     234         print(" ")
     235         exit
     236      end if   
     237   end if
     238   if (no_files .GT. 11) then
     239      if (file_12 .EQ. "File in") then
     240         print(" ")
     241         print("Please provide 12th input file 'file_12=' in 'ncl_preferences.ncl'")
     242         print(" ")
     243         exit
     244      else
     245         file_in(11) = file_12   
     246      end if
     247      if (.not. isfilepresent(file_in(11))) then
     248         print(" ")
     249         print("Your 12th input file: '"+file_in+"' does not exist")
     250         print(" ")
     251         exit
     252      end if   
     253   end if
     254   
     255   if (format_out .NE. "x11" .AND. format_out .NE. "pdf" .AND. format_out .NE. "eps" .AND. format_out .NE. "ps" .AND. format_out .NE. "epsi" .AND. format_out .NE. "ncgm")then
     256      print(" ")
     257      print("'format_out = "+format_out+"' is invalid and set to'x11'")
     258      print(" ")
     259      format_out="x11"
     260   end if 
     261
     262   if (over .NE. 0 .AND. over .NE. 1) then
     263      print(" ")
     264      print("'over'= "+over+" is invalid and set to 0")
     265      print(" ")
     266      over = 0
     267   end if
     268   if (no_files .GT. 1) then
     269      over = 0
     270      print(" ")
     271      print("If you have more than one input file - you cannot overlay variables: over is set to 0")
     272      print(" ")
     273   end if
     274   
     275   if (combine .NE. 0 .AND. combine .NE. 1)then
     276      print(" ")
     277      print("Your 'combine'= "+combine+" is invalid and set to 0")
     278      print(" ")
     279      combine = 0
     280   end if
     281   if (no_files .GT. 1) then
     282      combine = 0
     283      print(" ")
     284      print("If you have more than one input file you cannot combine variables: combine is set to 0")
     285      print(" ")
     286   end if   
     287   if (combine .EQ. 1 .AND. number_comb .EQ. -1) then
     288      print(" ")
     289      print("Please set 'number_comb' to 2 or 3 or combine to 0")
    67290      print(" ")
    68291      exit
    69292   end if
    70 
    71    if (no_files .GT. 1) then
    72       if (.not. isvar("file_2"))then
    73          file_in(1) = parameter(85)
    74          if (file_in(1) .EQ. "File in")
    75             print(" ")
    76             print("Please provide 2nd input file 'file_2=' either in prompt or parameter_list or change 'no_files' to 1")
    77             print(" ")
    78             exit
    79          end if
    80       else
    81          file_in(1) = file_2
    82       end if
    83       if (.not. isfilepresent(file_in(1))) then
    84          print(" ")
    85          print("Your 2nd input file: '"+file_in(1)+"' does not exist")
     293   if (combine .EQ. 1)then
     294      if (number_comb .EQ. -1) then
     295         print(" ")
     296         print("Please set 'number_comb' to 2 or 3 or combine to 0")
    86297         print(" ")
    87298         exit
    88299      end if
    89    end if
    90    if (no_files .GT. 2) then
    91       if (.not. isvar("file_3"))then
    92          file_in(2) = parameter(89)
    93          if (file_in(2) .EQ. "File in")
    94             print(" ")
    95             print("Please provide 3rd input file 'file_3=' either in prompt or parameter_list or change 'no_files' to 2")
    96             print(" ")
    97             exit
    98          end if
    99       else
    100          file_in(2) = file_3
    101       end if
    102       if (.not. isfilepresent(file_in(2))) then
    103          print(" ")
    104          print("Your 3rd input file: '"+file_in(2)+"' does not exist")
     300      if (number_comb .NE. 2 .AND. number_comb .NE. 3) then
     301         print(" ")
     302         print("Please set 'number_comb' to 2 or 3 or combine to 0")
    105303         print(" ")
    106304         exit
    107305      end if
    108    end if
    109    if (no_files .GT. 3) then
    110       if (.not. isvar("file_4"))then
    111          file_in(3) = parameter(93)
    112          if (file_in(3) .EQ. "File in")
    113             print(" ")
    114             print("Please provide 4th input file 'file_4=' either in prompt or parameter_list or change 'no_files' to 3")
    115             print(" ")
    116             exit
    117          end if
    118       else
    119          file_in(3) = file_4
    120       end if
    121       if (.not. isfilepresent(file_in(3))) then
    122          print(" ")
    123          print("Your 4th input file: '"+file_in(3)+"' does not exist")
    124          print(" ")
    125          exit
    126       end if
    127    end if
    128    if (no_files .GT. 4) then
    129       if (.not. isvar("file_5"))then
    130          file_in(4) = parameter(97)
    131          if (file_in(4) .EQ. "File in")
    132             print(" ")
    133             print("Please provide 5th input file 'file_5=' either in prompt or parameter_list or change 'no_files' to 4")
    134             print(" ")
    135             exit
    136          end if
    137       else
    138          file_in(4) = file_5
    139       end if
    140       if (.not. isfilepresent(file_in(4))) then
    141          print(" ")
    142          print("Your 5th input file: '"+file_in(4)+"' does not exist")
    143          print(" ")
    144          exit
    145       end if
    146    end if
    147    if (no_files .GT. 5) then
    148       if (.not. isvar("file_6"))then
    149          file_in(5) = parameter(101)
    150          if (file_in(5) .EQ. "File in")
    151             print(" ")
    152             print("Please provide 6th input file 'file_6=' either in prompt or parameter_list or change 'no_files' to 5")
    153             print(" ")
    154             exit
    155          end if
    156       else
    157          file_in(5) = file_6
    158       end if
    159       if (.not. isfilepresent(file_in(5))) then
    160          print(" ")
    161          print("Your 6th input file: '"+file_in(5)+"' does not exist")
    162          print(" ")
    163          exit
    164       end if
    165    end if
    166    if (no_files .GT. 6) then
    167       if (.not. isvar("file_7"))then
    168          file_in(6) = parameter(105)
    169          if (file_in(6) .EQ. "File in")
    170             print(" ")
    171             print("Please provide 7th input file 'file_7=' either in prompt or parameter_list or change 'no_files' to 6")
    172             print(" ")
    173             exit
    174          end if
    175       else
    176          file_in(6) = file_7
    177       end if
    178       if (.not. isfilepresent(file_in(6))) then
    179          print(" ")
    180          print("Your 7th input file: '"+file_in(6)+"' does not exist")
    181          print(" ")
    182          exit
    183       end if
    184    end if
    185    if (no_files .GT. 7) then
    186       if (.not. isvar("file_8"))then
    187          file_in(7) = parameter(109)
    188          if (file_in(7) .EQ. "File in")
    189             print(" ")
    190             print("Please provide 8th input file 'file_8=' either in prompt or parameter_list or change 'no_files' to 7")
    191             print(" ")
    192             exit
    193          end if
    194       else
    195          file_in(7) = file_8
    196       end if
    197       if (.not. isfilepresent(file_in(7))) then
    198          print(" ")
    199          print("Your 8th input file: '"+file_in(7)+"' does not exist")
    200          print(" ")
    201          exit
    202       end if
    203    end if
    204    if (no_files .GT. 8) then
    205       if (.not. isvar("file_9"))then
    206          file_in(8) = parameter(113)
    207          if (file_in(8) .EQ. "File in")
    208             print(" ")
    209             print("Please provide 9th input file 'file_9=' either in prompt or parameter_list or change 'no_files' to 8")
    210             print(" ")
    211             exit
    212          end if
    213       else
    214          file_in(8) = file_9
    215       end if
    216       if (.not. isfilepresent(file_in(8))) then
    217          print(" ")
    218          print("Your 9th input file: '"+file_in(8)+"' does not exist")
    219          print(" ")
    220          exit
    221       end if
    222    end if
    223    if (no_files .GT. 9) then
    224       if (.not. isvar("file_10"))then
    225          file_in(9) = parameter(117)
    226          if (file_in(9) .EQ. "File in")
    227             print(" ")
    228             print("Please provide 10th input file 'file_10=' either in prompt or parameter_list or change 'no_files' to 9")
    229             print(" ")
    230             exit
    231          end if
    232       else
    233          file_in(9) = file_10
    234       end if
    235       if (.not. isfilepresent(file_in(9))) then
    236          print(" ")
    237          print("Your 10th input file: '"+file_in(9)+"' does not exist")
    238          print(" ")
    239          exit
    240       end if
    241    end if
    242    if (no_files .GT. 10) then
    243       if (.not. isvar("file_11"))then
    244          file_in(10) = parameter(121)
    245          if (file_in(10) .EQ. "File in")
    246             print(" ")
    247             print("Please provide 11th input file 'file_11=' either in prompt or parameter_list or change 'no_files' to 10")
    248             print(" ")
    249             exit
    250          end if
    251       else
    252          file_in(10) = file_11
    253       end if
    254       if (.not. isfilepresent(file_in(10))) then
    255          print(" ")
    256          print("Your 11th input file: '"+file_in(10)+"' does not exist")
    257          print(" ")
    258          exit
    259       end if
    260    end if
    261    if (no_files .GT. 11) then
    262       if (.not. isvar("file_12"))then
    263          file_in(11) = parameter(125)
    264          if (file_in(11) .EQ. "File in")
    265             print(" ")
    266             print("Please provide 12th input file 'file_12=' either in prompt or parameter_list or change 'no_files' to 11")
    267             print(" ")
    268             exit
    269          end if
    270       else
    271          file_in(11) = file_12
    272       end if
    273       if (.not. isfilepresent(file_in(11))) then
    274          print(" ")
    275          print("Your 12th input file: '"+file_in(11)+"' does not exist")
    276          print(" ")
    277          exit
    278       end if
    279    end if
    280 
    281    if ( .not. isvar("format_out") ) then               
    282       format_out = "x11"
    283       if (parameter(9) .NE. "x11") then
    284          format_out = parameter(9) 
    285          if (format_out .NE. "x11" .OR. format_out .NE. "pdf" .OR. format_out .NE. "eps" .OR. format_out .NE. "ps" .OR. format_out .NE. "epsi" .OR. format_out .NE. "ncgm")then
    286             print(" ")
    287             print("Your 'format_out = "+format_out+"' is invalid and set to'x11'")
    288             print(" ")
    289          end if 
    290       end if
    291    else
    292       if (format_out .NE. "x11" .OR. format_out .NE. "pdf" .OR. format_out .NE. "eps" .OR. format_out .NE. "ps" .OR. format_out .NE. "epsi" .OR. format_out .NE. "ncgm")then
    293          print(" ")
    294          print("Your 'format_out = "+format_out+"' is invalid and set to'x11'")
    295          print(" ")
    296       end if 
    297    end if
    298 
    299    if ( .not. isvar("file_out") ) then                 
    300       file_out = "test"
    301       if (parameter(11) .NE. "test_ts") then
    302          file_out = parameter(11) 
    303      end if     
    304    end if
    305    if ( .not. isvar("no_columns") ) then               
    306       no_columns = 1
    307       if (parameter(17) .NE. "1") then
    308          no_columns = stringtointeger(parameter(17)) 
    309       end if
    310    end if
    311    if ( .not. isvar("no_lines") ) then                  ; number of plot-lines on one sheet
    312       no_lines = 2
    313       if (parameter(19) .NE. "2") then
    314          no_lines = stringtointeger(parameter(19)) 
    315       end if
    316    end if
    317    if ( .not. isvar("combine") ) then                   ; color of lines
    318       combine = 0
    319       if (parameter(23) .NE. "0") then
    320          combine = stringtointeger(parameter(23))
    321          if (stringtointeger(parameter(23)) .NE. 1) then
    322             print(" ")
    323             print("Your 'combine'= "+combine+" is invalid and set to 0")
    324             print(" ")
    325             combine = 0
    326          else
    327             if (no_files .GT. 1) then
    328                print(" ")
    329                print("If you have more than one input file you cannot combine variables: combine is set to 0")
    330                print(" ")
    331                combine = 0
    332             end if
    333          end if
    334       end if
    335    else
    336       if (combine .NE. 0 .AND. combine .NE. 1)then
    337          print(" ")
    338          print("Your 'combine'= "+combine+" is invalid and set to 0")
    339          print(" ")
    340          combine = 0
    341       end if
    342       if (no_files .GT. 1) then
    343          combine = 0
    344          print(" ")
    345          print("If you have more than one input file you cannot combine variables: combine is set to 0")
    346          print(" ")
    347       end if       
    348    end if
    349 
    350    if (combine .EQ. 1) then
    351       if( .not. isvar("c_var") ) then
    352          if (parameter(27) .EQ. "c_variables") then
    353             print(" ")
    354             print("Please select variables for overlaying ('c_var')")
    355             print(" ")
    356             exit
    357          else
    358             c_var=parameter(27)
    359          end if
    360       end if
    361    end if
    362 
    363    if ( .not. isvar("black") ) then                     ; color of lines
    364       black = 0
    365       if (parameter(31) .NE. "0") then
    366          black = stringtointeger(parameter(31))
    367          if (stringtointeger(parameter(31)) .NE. 1) then
    368             print(" ")
    369             print("Your 'black'= "+black+" is invalid and set to 0")
    370             print(" ")
    371             black = 0
    372          end if
    373       end if
    374    else
    375       if (black .NE. 0 .AND. black .NE. 1)then
    376          print(" ")
    377          print("Your 'black'= "+black+" is invalid and set to 0")
    378          print(" ")
    379          black = 0
    380       end if
    381    end if
    382 
    383    if ( .not. isvar("dash") ) then                     
    384       dash = 0
    385       if (parameter(29) .NE. "0") then
    386          dash = stringtointeger(parameter(29))
    387          if (stringtointeger(parameter(29)) .NE. 1) then
    388             print(" ")
    389             print("Your 'dash'= "+dash+" is invalid and set to 0")
    390             print(" ")
    391             dash = 0
    392          end if 
    393       end if
    394    else
    395       if (dash .NE. 0 .AND. dash .NE. 1)then
    396          print(" ")
    397          print("Your 'dash'= "+dash+" is invalid and set to 0")
    398          print(" ")
    399          dash = 0
    400       end if
    401    end if
    402 
    403    if ( .not. isvar("over") ) then                      ; switches overlaying plots on
    404       over = 0
    405       if (stringtointeger(parameter(37)) .NE. 0) then
    406          over = stringtointeger(parameter(37))
    407          if (stringtointeger(parameter(37)) .NE. 1) then
    408             print(" ")
    409             print("Your 'over'= "+over+" is invalid and set to 0")
    410             print(" ")
    411             over = 0
    412          else
    413             if (no_files .GT. 1) then
    414                over = 0
    415                print(" ")
    416                print("If you have more than one input file you cannot overlay variables: over is set to 0")
    417                print(" ")
    418             end if
    419          end if   
    420       end if
    421    else
    422       if (over .NE. 0 .AND. over .NE. 1)then
    423          print(" ")
    424          print("Your 'over'= "+over+" is invalid and set to 0")
    425          print(" ")
    426          over = 0
    427       end if
    428    end if
    429 
    430    if (.not. isvar("prof3d"))then
    431       prof3d = 0
    432       if (stringtointeger(parameter(75)) .NE. 0) then
    433          prof3d = stringtointeger(parameter(75))
    434          if (stringtointeger(parameter(75)) .NE. 1) then
    435             print(" ")
    436             print("Please set 'prof3d' to 0 or 1")
    437             print(" ")
    438             exit
    439          end if   
    440       end if
    441    else
    442       if (prof3d .NE. 0 .AND. prof3d .NE. 1)then
    443          print(" ")
    444          print("Your 'prof3d'= "+prof3d+" is invalid; please set 'prof3d' to 0 or 1")
    445          print(" ")
    446          exit
    447       end if
    448    end if
    449 
    450    if (.not. isvar("logy"))then
     306   end if 
     307   if (combine .EQ. 1 .AND. c_var .EQ. "c_variables") then
     308      print(" ")
     309      print("Please select variables for overlaying ('c_var') or set combine to 0")
     310      print(" ")
     311      exit
     312   end if
     313
     314   if (logy .NE. 0 .AND. logy .NE. 1)then
     315      print(" ")
     316      print("'logy'= "+logy+" is invalid and set to 0")
     317      print(" ")
    451318      logy = 0
    452       if (stringtointeger(parameter(77)) .NE. 0) then
    453          logy = stringtointeger(parameter(77))
    454          if (stringtointeger(parameter(77)) .NE. 1) then
    455             print(" ")
    456             print("Your 'logy'= "+logy+" is invalid and set to 0")
    457             print(" ")
    458             logy = 0
    459          end if   
    460       end if
    461    else
    462       if (logy .NE. 0 .AND. logy .NE. 1)then
    463          print(" ")
    464          print("Your 'logy'= "+logy+" is invalid and set to 0")
    465          print(" ")
    466          logy = 0
    467       end if   
    468    end if
    469 
    470    if ( .not. isvar("norm") ) then             
     319   end if   
     320 
     321   if (norm .EQ. 0) then
     322      print(" ")
     323      print("You cannot normalise with 0, 'norm' is set to 1")
     324      print(" ")
    471325      norm = 1.0
    472       if (parameter(79) .NE. "1") then
    473          norm = stringtofloat(parameter(79))
    474          if (stringtofloat(parameter(79)) .EQ. 0) then
    475             print(" ")
    476             print("You cannot normalise with 0, 'norm' is set to 1")
    477             print(" ")
    478             norm = 1.0
    479          end if
    480       end if
    481    else
    482       if (norm .EQ. 0) then
    483          print(" ")
    484          print("You cannot normalise with 0, 'norm' is set to 1")
    485          print(" ")
    486          norm = 1.0
    487       end if
    488    end if
    489 
    490    ; ***************************************************
     326   end if
     327
     328   ;***************************************************
    491329   ; open input file
    492    ; ***************************************************
     330   ;***************************************************
    493331
    494332   do nof=0,no_files-1
     
    503341      if (dim0 .NE. dim)then
    504342         print(" ")
    505          print("Your Input files does not contain the same variables")
     343         print("There are 'no_files'="+no_files+" input files but they do not contain the same variables")
    506344         print(" ")
    507345         exit
     
    510348            if (vNam0(i) .NE. vNam(i))then
    511349               print(" ")
    512                print("Your Input files does not contain the same variables")
     350               print("There are 'no_files'="+no_files+" input files but they do not contain the same variables")
    513351               print(" ")
    514352               exit
     
    519357   nof=nof+1
    520358   print(" ")
    521    print("Variable in input file "+nof+": " + vNam)
     359   print("Variables in input file "+nof+":")
     360   print("- "+ vNam)
    522361   print(" ")
    523362   nof=nof-1
     
    555394         break
    556395      else
    557          if (vNam(varn) .EQ. "v" .OR. isStrSubset(vNam(varn), "v_"))then
    558  
     396         if (vNam(varn) .EQ. "v" .OR. isStrSubset(vNam(varn), "v_"))then 
    559397            z_u = f->$vNam(varn+1)$
    560398            break
     
    835673      varn=varn-1
    836674   end do
    837    if ( .not. isvar("z_u") ) then
    838       zu = 0
    839    else
    840       zu = 1
    841    end if
    842    if ( .not. isvar("z_w") ) then
    843       zw = 0
    844    else
    845       zw = 1
    846    end if
    847 
    848    if (zu .EQ. 0 .AND. zw .EQ. 0) then
     675   
     676   if (.not. isvar("z_u") .AND. .not. isvar ("z_w")) then
    849677      co=0
    850678      do varn=0,dim-1     
     
    852680            check = False
    853681         else
    854             if (.not. isvar("var")) then
    855                check = True
    856                if (parameter(21) .NE. "variables") then
    857                   var=parameter(21)
    858                   check = isStrSubset( var,","+vNam(varn)+"," )
    859                end if
    860             else         
     682            check = True
     683            if (var .NE. "all") then
    861684               check = isStrSubset( var,","+vNam(varn)+"," )
    862             end if
     685            end if         
    863686         end if
    864687         if (check)then
    865688            co=co+1
    866689            z = f->$vNam(varn+1)$
     690            if (getvardims(z) .EQ. "zu")then
     691               z_u = z
     692            else
     693               if (getvardims(z) .EQ. "zw")then
     694                  z_w = z
     695               end if
     696            end if
    867697            dimz = dimsizes(z)
    868698            break
     
    871701      if (co .EQ. 0) then
    872702         print(" ")
    873          print("The variables 'var=°"+var+"°' do not exist on your input file")
     703         print("The variables 'var="+var+"' do not exist on your input file;")
     704         print("be sure to have one comma berfore and after each variable")
    874705         print(" ")
    875706         exit
     
    901732   end if
    902733   
     734   if(.not. isvar("z_u") .AND. .not. isvar("z_w"))then
     735      print(" ")
     736      print("Program aborts - there are no z-variables available")
     737      print("Please be sure if 'plot_3d' is set correctly")
     738      print(" ")
     739      exit
     740   end if
     741   
    903742   t_all = f->time
    904743   nt    = dimsizes(t_all)
     
    910749   ; ****************************************************
    911750   
    912    if ( .not. isvar("start_time_step") ) then           
    913       start_time_step=t_all(0)/3600
    914       if (parameter(13) .NE. "t(0)") then
    915          if (stringtodouble(parameter(13)) .GT. t_all(nt-1)/3600)then
    916             print(" ")
    917             print("'start_time_step' = "+ parameter(13) +"h is greater than last time step = " + t_all(nt-1)+"s = "+t_all(nt-1)/3600+"h")
    918             print(" ")
    919             print("Please select another 'start_time_step'")
    920             print(" ")
    921             exit
    922          end if
    923          if (stringtofloat(parameter(13)) .LT. t_all(0)/3600)then
    924             print(" ")
    925             print("'start_time_step' = "+ parameter(13) +"h is lower than first time step = " + t_all(0)+"s = "+t_all(0)/3600+"h")           
    926             exit
    927          end if
    928          start_time_step=stringtodouble(parameter(13))
    929       end if
     751   if (start_time_step .EQ. -1.) then           
     752      start_time_step=t_all(0)/3600     
    930753   else
    931754      if (start_time_step .GT. t_all(nt-1)/3600)then
     
    940763         print(" ")
    941764         print("'start_time_step' = "+ start_time_step +"h is lower than first time step = " + t_all(0)+"s = "+t_all(0)/3600+"h")
    942        
     765         print(" ")
    943766         exit
    944767      end if
    945768   end if
    946    start_time_step = start_time_step*3600
    947769
    948770   do i=0,nt-1     
    949       if (start_time_step .GE. t_all(i)-delta_t/2 .AND. start_time_step .LT. t_all(i)+delta_t/2)then
     771      if (start_time_step .GE. (t_all(i)-delta_t/2)/3600 .AND. start_time_step .LT. (t_all(i)+delta_t/2)/3600)then
    950772         st=i
    951773         break
    952774      end if
    953775   end do
     776   if (.not. isvar("st"))then
     777      print(" ")
     778      print("'start_time_step' = "+ start_time_step +"h is invalid")
     779      print(" ")
     780      print("Please select another 'start_time_step'")
     781      print(" ")
     782      exit
     783   end if
    954784   
    955785   ; ****************************************************
     
    957787   ; ****************************************************
    958788
    959    if ( .not. isvar("end_time_step") ) then             
    960       end_time_step = t_all(nt-1)/3600
    961       if (parameter(15) .NE. "t(end)") then
    962          if (stringtodouble(parameter(15)) .GT. t_all(nt-1)/3600)then
    963             print(" ")
    964             print("'end_time_step' = "+ parameter(15) +"h is greater than last time step = " + t_all(nt-1)+"s = "+t_all(nt-1)/3600+"h")
    965             print(" ")
    966             print("Please select another 'end_time_step'") 
    967             print(" ")
    968             exit
    969          end if
    970          if (stringtodouble(parameter(15)) .LT. start_time_step/3600)then
    971             print(" ")
    972             print("'end_time_step' = "+ parameter(15) +"h is lower than 'start_time_step' = "+start_time_step/3600+"h")
    973             print(" ")
    974             print("Please select another 'start_time_step' or 'end_time_step'")
    975             print(" ")
    976             exit
    977          end if
    978          end_time_step = stringtodouble(parameter(15))
    979       end if   
     789   if (end_time_step .EQ. -1.) then             
     790      end_time_step = t_all(nt-1)/3600 
    980791   else
    981792      if (end_time_step .GT. t_all(nt-1)/3600)then
     
    996807      end if
    997808   end if
    998    end_time_step = end_time_step*3600
    999809
    1000810   do i=0,nt-1     
    1001       if (end_time_step .GE. t_all(i)-delta_t/2 .AND. end_time_step .LT. t_all(i)+delta_t/2)then
     811      if (end_time_step .GE. (t_all(i)-delta_t/2)/3600 .AND. end_time_step .LT. (t_all(i)+delta_t/2)/3600)then
    1002812         et=i
    1003813         break
    1004814      end if
    1005815   end do
     816   if (.not. isvar("et"))then
     817      print(" ")
     818      print("'end_time_step' = "+ end_time_step +"h is invalid")
     819      print(" ")
     820      print("Please select another 'end_time_step'")
     821      print(" ")
     822      exit
     823   end if
    1006824
    1007825   delete(start_time_step)
     
    1056874   res@pmLegendWidthF          = 0.12
    1057875   res@pmLegendHeightF         = 0.04*(end_time_step-start_time_step+1)
    1058    res@lgLabelFontHeightF     = .02
     876   res@lgLabelFontHeightF     = .02
     877   res@lgTitleString      = "Time [h]"
     878   res@lgTitleFontHeightF = 0.02   
    1059879   res@txFontHeightF      = 0.02
    1060880   res@tiXAxisFontHeightF = 0.02
     
    1074894   end if
    1075895
    1076    if ( dash .eq. 0 ) then
     896   if (dash .EQ. 0 ) then
    1077897      res@xyMonoDashPattern       = True
    1078898   else
     
    1082902         print("If you use more than one file, patterns for different timesteps cannot be used")
    1083903         print(" ")
    1084       end if
     904      end if      
    1085905   end if
    1086906
     
    1096916
    1097917   if (combine .EQ. 1) then
    1098       if ( .not. isvar("number_comb") ) then           
    1099          if (parameter(25) .EQ. "0") then
    1100             print(" ")
    1101             print("Please set 'number_comb' to 2 or 3 if you would like to overlay 2 or 3 variables in one plot")
    1102             print(" ")
    1103             exit
    1104          else
    1105             number_comb=stringtointeger(parameter(25))
    1106             plot_o = new(number_comb,graphic)   
    1107          end if
    1108       else
    1109          if(number_comb .EQ. 2 .OR. number_comb .EQ. 3) then
    1110             plot_o = new(number_comb,graphic)     
    1111          else
    1112             print(" ")
    1113             print("Please set 'number_comb' to 2 or 3 if you would like to overlay 2 or 3 variables in one plot")
    1114             print(" ")
    1115             exit
    1116          end if   
    1117       end if
     918      plot_o = new(number_comb,graphic)   
    1118919      label=new(number_comb,string)
    1119920      color_o=new(number_comb,integer)
     
    1121922      maxi=new(number_comb,float)
    1122923   end if
    1123 
     924 
    1124925   wks=gsn_open_wks(format_out,file_out)
    1125926   gsn_define_colormap(wks,"rainbow+white")
     
    1130931
    1131932   if (logy .EQ. 1)then
    1132       if (.not. isvar("min_z"))then
     933      if (min_z .EQ. -1)then
    1133934         if (isvar("z_u"))then
    1134935            min_z=z_u(1)
    1135936         else
    1136937            min_z=z_w(1)
     938         end if       
     939      else
     940         if (isvar("z_w"))then
     941            if (min_z .GE. max(z_w) ) then
     942               print(" ")
     943               print("Minimum of height ('min_z'="+min_z+") is greater than available heights (="+max(z_w)+")")
     944               print(" ")
     945               exit
     946            end if         
     947         else
     948            if (min_z .GE. max(z_u) ) then
     949               print(" ")
     950               print("Minimum of height ('min_z'="+min_z+") is greater than available heights (="+max(z_u)+")")
     951               print(" ")
     952               exit
     953            end if
     954         end if
     955         if (isvar("z_u"))then   
     956            if (min_z .LT. z_u(1) ) then
     957               print(" ")
     958               print("Begin height 'min_z' at least at level k=1 (="+z_u(1)+"m) due to the logarithmic scale of the y-axis")
     959               print(" ")
     960               exit
     961            end if
     962         else
     963            if (min_z .LT. z_w(1) ) then
     964               print(" ")
     965               print("Begin height 'min_z' at least at level k=1 (="+z_w(1)+"m) due to the logarithmic scale of the y-axis")
     966               print(" ")
     967               exit
     968            end if   
    1137969         end if
    1138          if (stringtofloat(parameter(33)) .NE. z_u(1) .OR. stringtofloat(parameter(33)) .NE. z_w(1)) then
    1139             if (stringtofloat(parameter(33)) .EQ. 0) then
    1140                if (isvar("z_u"))then
    1141                   min_z=z_u(1)
    1142                else
    1143                   min_z=z_w(1)
    1144                end if 
    1145             else
    1146                if (stringtofloat(parameter(33)) .GE. max(z_u) ) then
    1147                   print(" ")
    1148                   print("Minimum of height ('min_z'="+stringtofloat(parameter(33))+") is greater than available heights (="+max(z_u)+")")
    1149                   print(" ")
    1150                   exit
    1151                end if
    1152                if (stringtofloat(parameter(33)) .LT. z_u(1)) then
    1153                   print(" ")
    1154                   print("Begin height 'min_z' at least at level k=1 (="+z_u(1)+"m) due to the logarithmic scale of the y-axis")
    1155                   print(" ")
    1156                   exit
    1157                end if
    1158                min_z=stringtofloat(parameter(33))
    1159             end if
     970      end if
     971   else
     972      if (isvar("z_u"))then
     973         if (min_z .EQ. -1)then
     974            min_z=z_u(0)
     975         end if
     976      else
     977         if (min_z .EQ. -1)then
     978            min_z=z_w(0)
     979         end if   
     980      end if
     981      if (isvar("z_w"))then
     982         if (min_z .GE. max(z_w) ) then
     983            print(" ")
     984            print("Minimum of height ('min_z'="+min_z+") is greater than available heights (="+max(z_w)+")")
     985            print(" ")
     986            exit
    1160987         end if
    1161988      else
    1162          if (min_z .GE. max(z_u) ) then
     989         if (min_z .EQ. -1)then
     990            min_z=z_u(0)
     991         end if
     992         if (min_z .GE. max(z_u) ) then
    1163993            print(" ")
    1164994            print("Minimum of height ('min_z'="+min_z+") is greater than available heights (="+max(z_u)+")")
    1165995            print(" ")
    1166996            exit
    1167          end if
    1168          if (min_z .LT. z_u(1) ) then
    1169             print(" ")
    1170             print("Begin height 'min_z' at least at level k=1 (="+z_u(1)+"m) due to the logarithmic scale of the y-axis")
    1171             print(" ")
    1172             exit
    1173          end if
    1174       end if
     997         end if 
     998      end if
     999   end if
     1000   
     1001   if (isvar("z_w"))then
     1002      if (max_z .EQ. -1)then
     1003         max_z=max(z_w)
     1004      end if 
    11751005   else
    1176       if (.not. isvar("min_z"))then
    1177          min_z=0.0     
    1178          if (stringtofloat(parameter(33)) .NE. 0) then
    1179             if (stringtofloat(parameter(33)) .GE. max(z_u) ) then
    1180                print(" ")
    1181                print("Minimum of height ('min_z'="+stringtofloat(parameter(33))+") is greater than available heights (="+max(z_u)+")")
    1182                print(" ")
    1183                exit
    1184             end if
    1185             if (stringtofloat(parameter(33)) .LT. 0 ) then
    1186                print(" ")
    1187                print("Begin minimum of height 'min_z' with 0")
    1188                print(" ")
    1189                exit
    1190             end if
    1191             min_z=stringtofloat(parameter(33))
    1192          end if
    1193       else
    1194          if (min_z .GE. max(z_u) ) then
    1195             print(" ")
    1196             print("Minimum of height ('min_z'="+min_z+") is greater than available heights (="+max(z_u)+")")
    1197             print(" ")
    1198             exit
    1199          end if
    1200          if (min_z .LT. 0 ) then
    1201             print(" ")
    1202             print("Begin minimum of height 'min_z' with 0")
    1203             print(" ")
    1204             exit
    1205          end if
    1206       end if
    1207    end if
    1208 
    1209    if (.not. isvar("max_z"))then
    1210       max_z=max(z_u)
    1211       if ((parameter(35)) .NE. "max(z_u)") then
    1212          if (stringtofloat(parameter(35)) .GE. max(z_u) ) then
    1213             print(" ")
    1214             print("Maximum of height ('max_z'="+parameter(35)+") is greater than available heights (="+max(z_u)+")")
    1215             print(" ")
    1216             exit
    1217          end if
    1218          if (stringtofloat(parameter(35)) .LE. 0 ) then
    1219             print(" ")
    1220             print("Maximum of height 'max_z' should be at least 1")
    1221             print(" ")
    1222             exit
    1223          end if
    1224          max_z=stringtofloat(parameter(35))
    1225       end if
    1226    else
    1227       if (max_z .GE. max(z_u) ) then
    1228          print(" ")
    1229          print("Maximum of height ('max_z'="+max_z+") is greater than available heights (="+max(z_u)+")")
    1230          print(" ")
    1231          exit
    1232       end if
    1233       if (max_z .LE. 0 ) then
    1234          print(" ")
    1235          print("Maximum of height 'max_z' should be at least 1")
     1006      if (max_z .EQ. -1)then
     1007         max_z=max(z_u)
     1008      end if   
     1009   end if
     1010   
     1011   if (isvar("z_w"))then
     1012      if (max_z .GT. max(z_w) ) then
     1013         print(" ")
     1014         print("Maximum of height ('max_z'="+max_z+") is greater than available heights (="+max(z_w)+")")
    12361015         print(" ")
    12371016         exit
     
    14931272      end if
    14941273
    1495       if (.not. isvar("var")) then
    1496          if (parameter(21) .NE. "variables") then
    1497             var=parameter(21)
    1498             check = isStrSubset( var,","+vNam(varn)+"," )
    1499          end if
    1500       else         
     1274      if (var .NE. "all") then
    15011275         check = isStrSubset( var,","+vNam(varn)+"," )
    15021276      end if
     
    15351309            if (n_o .GT. number_comb-1) then
    15361310               print(" ")
    1537                print("Please set 'number_comb' to the right number of overlaying variables ('c_var')")
     1311               print("Please set 'number_comb' to the number of overlaying variables ('c_var' = "+c_var+")")
    15381312               print(" ")
    15391313               exit
     
    16251399   
    16261400         if (over .EQ. 0) then 
    1627             res@xyDashPattern      = nof
    16281401            res@gsnLeftString      = vNam(varn)
    16291402            res@gsnRightString     = unit(varn)
    16301403            res@trYMinF            = min_z
    16311404            res@trYMaxF            = max_z
    1632             if (.not. isvar("xs")) then
    1633                if (parameter(63) .NE. "x0") then
    1634                   res@trXMinF = stringtofloat(parameter(63))
    1635                else
    1636                   res@trXMinF            = min(data(varn,:,:))
    1637                end if
     1405            if (xs .EQ. -1) then
     1406               res@trXMinF            = min(data(varn,:,:))
    16381407            else
    16391408               res@trXMinF            = xs
    16401409            end if
    1641             if (.not. isvar("xe")) then
    1642                if (parameter(65) .NE. "xdim") then
    1643                   res@trXMaxF = stringtofloat(parameter(65))
    1644                else
    1645                   res@trXMaxF            = max(data(varn,:,:))
    1646                end if
     1410            if (xe .EQ. -1) then
     1411               res@trXMaxF            = max(data(varn,:,:))
    16471412            else
    16481413               res@trXMaxF            = xe 
     
    16601425                  res@gsnLeftString      = vNam(varn)
    16611426                  res@gsnRightString     = unit(varn)
    1662                   if (.not. isvar("xs")) then
    1663                      if (parameter(63) .NE. "x0") then
    1664                         res@trXMinF = stringtofloat(parameter(63))
    1665                      else
    1666                         res@trXMinF            = miniu
    1667                      end if
    1668                   else
    1669                      res@trXMinF            = xs
    1670                   end if
    1671                   if (.not. isvar("xe")) then
    1672                      if (parameter(65) .NE. "xdim") then
    1673                         res@trXMaxF = stringtofloat(parameter(65))
    1674                      else
    1675                         res@trXMaxF            = maxiu
    1676                      end if
     1427                  if (xs .EQ. -1) then
     1428                     res@trXMinF            = miniu
     1429                  else
     1430                     res@trXMinF            = xs
     1431                  end if
     1432                  if (xe .EQ. -1) then       
     1433                     res@trXMaxF            = maxiu
    16771434                  else
    16781435                     res@trXMaxF            = xe 
     
    16901447                  res@gsnLeftString      = vNam(varn)
    16911448                  res@gsnRightString     = unit(varn)
    1692                   if (.not. isvar("xs")) then
    1693                      if (parameter(63) .NE. "x0") then
    1694                         res@trXMinF = stringtofloat(parameter(63))
    1695                      else
    1696                         res@trXMinF            = miniv
    1697                      end if
    1698                   else
    1699                      res@trXMinF            = xs
    1700                   end if
    1701                   if (.not. isvar("xe")) then
    1702                      if (parameter(65) .NE. "xdim") then
    1703                         res@trXMaxF = stringtofloat(parameter(65))
    1704                      else
    1705                         res@trXMaxF            = maxiv
    1706                      end if
     1449                  if (xs .EQ. -1) then
     1450                     res@trXMinF            = miniv
     1451                  else
     1452                     res@trXMinF            = xs
     1453                  end if
     1454                  if (xe .EQ. -1) then
     1455                     res@trXMaxF            = maxiv
    17071456                  else
    17081457                     res@trXMaxF            = xe 
     
    17201469                  res@gsnLeftString      = vNam(varn)
    17211470                  res@gsnRightString     = unit(varn)
    1722                   if (.not. isvar("xs")) then
    1723                      if (parameter(63) .NE. "x0") then
    1724                         res@trXMinF = stringtofloat(parameter(63))
    1725                      else
    1726                         res@trXMinF            = miniw
    1727                      end if
    1728                   else
    1729                      res@trXMinF            = xs
    1730                   end if
    1731                   if (.not. isvar("xe")) then
    1732                      if (parameter(65) .NE. "xdim") then
    1733                         res@trXMaxF = stringtofloat(parameter(65))
    1734                      else
    1735                         res@trXMaxF            = maxiw
    1736                      end if
     1471                  if (xs .EQ. -1) then
     1472                     res@trXMinF            = miniw
     1473                  else
     1474                     res@trXMinF            = xs
     1475                  end if
     1476                  if (xe .EQ. -1) then
     1477                     res@trXMaxF            = maxiw
    17371478                  else
    17381479                     res@trXMaxF            = xe 
     
    17511492                  res@gsnLeftString      = vNam(varn)
    17521493                  res@gsnRightString     = unit(varn)
    1753                   if (.not. isvar("xs")) then
    1754                      if (parameter(63) .NE. "x0") then
    1755                         res@trXMinF = stringtofloat(parameter(63))
    1756                      else
    1757                         res@trXMinF            = minipt
    1758                      end if
    1759                   else
    1760                      res@trXMinF            = xs
    1761                   end if
    1762                   if (.not. isvar("xe")) then
    1763                      if (parameter(65) .NE. "xdim") then
    1764                         res@trXMaxF = stringtofloat(parameter(65))
    1765                      else
    1766                         res@trXMaxF            = maxipt
    1767                      end if
     1494                  if (xs .EQ. -1) then
     1495                     res@trXMinF            = minipt
     1496                  else
     1497                     res@trXMinF            = xs
     1498                  end if
     1499                  if (xe .EQ. -1) then       
     1500                     res@trXMaxF            = maxipt
    17681501                  else
    17691502                     res@trXMaxF            = xe 
     
    17811514                  res@gsnLeftString      = vNam(varn)
    17821515                  res@gsnRightString     = unit(varn)
    1783                   if (.not. isvar("xs")) then
    1784                      if (parameter(63) .NE. "x0") then
    1785                         res@trXMinF = stringtofloat(parameter(63))
    1786                      else
    1787                         res@trXMinF            = minivpt
    1788                      end if
    1789                   else
    1790                      res@trXMinF            = xs
    1791                   end if
    1792                   if (.not. isvar("xe")) then
    1793                      if (parameter(65) .NE. "xdim") then
    1794                         res@trXMaxF = stringtofloat(parameter(65))
    1795                      else
    1796                         res@trXMaxF            = maxivpt
    1797                      end if
    1798                   else
    1799                      res@trXMaxF            = xe 
    1800                   end if
     1516                  if (xs .EQ. -1) then
     1517                     res@trXMinF            = minivpt
     1518                  else
     1519                     res@trXMinF            = xs
     1520                  end if
     1521                  if (xe .EQ. -1) then       
     1522                     res@trXMaxF            = maxivpt
     1523                  else
     1524                     res@trXMaxF            = xe 
     1525                  end if
    18011526                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
    18021527               end if
     
    18111536                  res@gsnLeftString      = vNam(varn)
    18121537                  res@gsnRightString     = unit(varn)
    1813                   if (.not. isvar("xs")) then
    1814                      if (parameter(63) .NE. "x0") then
    1815                         res@trXMinF = stringtofloat(parameter(63))
    1816                      else
    1817                         res@trXMinF            = minilpt
    1818                      end if
    1819                   else
    1820                      res@trXMinF            = xs
    1821                   end if
    1822                   if (.not. isvar("xe")) then
    1823                      if (parameter(65) .NE. "xdim") then
    1824                         res@trXMaxF = stringtofloat(parameter(65))
    1825                      else
    1826                         res@trXMaxF            = maxilpt
    1827                      end if
     1538                  if (xs .EQ. -1) then
     1539                     res@trXMinF            = minilpt
     1540                  else
     1541                     res@trXMinF            = xs
     1542                  end if
     1543                  if (xe .EQ. -1) then       
     1544                     res@trXMaxF            = maxilpt
    18281545                  else
    18291546                     res@trXMaxF            = xe 
     
    18421559                  res@gsnLeftString      = vNam(varn)
    18431560                  res@gsnRightString     = unit(varn)
    1844                   if (.not. isvar("xs")) then
    1845                      if (parameter(63) .NE. "x0") then
    1846                         res@trXMinF = stringtofloat(parameter(63))
    1847                      else
    1848                         res@trXMinF            = minilq
    1849                      end if
    1850                   else
    1851                      res@trXMinF            = xs
    1852                   end if
    1853                   if (.not. isvar("xe")) then
    1854                      if (parameter(65) .NE. "xdim") then
    1855                         res@trXMaxF = stringtofloat(parameter(65))
    1856                      else
    1857                         res@trXMaxF            = maxilq
    1858                      end if
     1561                  if (xs .EQ. -1) then
     1562                     res@trXMinF            = minilq
     1563                  else
     1564                     res@trXMinF            = xs
     1565                  end if
     1566                  if (xe .EQ. -1) then       
     1567                     res@trXMaxF            = maxilq
    18591568                  else
    18601569                     res@trXMaxF            = xe 
     
    18721581                  res@gsnLeftString      = vNam(varn)
    18731582                  res@gsnRightString     = unit(varn)
    1874                   if (.not. isvar("xs")) then
    1875                      if (parameter(63) .NE. "x0") then
    1876                         res@trXMinF = stringtofloat(parameter(63))
    1877                      else
    1878                         res@trXMinF            = minilqv
    1879                      end if
    1880                   else
    1881                      res@trXMinF            = xs
    1882                   end if
    1883                   if (.not. isvar("xe")) then
    1884                      if (parameter(65) .NE. "xdim") then
    1885                         res@trXMaxF = stringtofloat(parameter(65))
    1886                      else
    1887                         res@trXMaxF            = maxilqv
    1888                      end if
     1583                  if (xs .EQ. -1) then
     1584                     res@trXMinF            = minilqv
     1585                  else
     1586                     res@trXMinF            = xs
     1587                  end if
     1588                  if (xe .EQ. -1) then       
     1589                     res@trXMaxF            = maxilqv
    18891590                  else
    18901591                     res@trXMaxF            = xe 
     
    19021603                  res@gsnLeftString      = vNam(varn)
    19031604                  res@gsnRightString     = unit(varn)
    1904                   if (.not. isvar("xs")) then
    1905                      if (parameter(63) .NE. "x0") then
    1906                         res@trXMinF = stringtofloat(parameter(63))
    1907                      else
    1908                         res@trXMinF            = miniql
    1909                      end if
    1910                   else
    1911                      res@trXMinF            = xs
    1912                   end if
    1913                   if (.not. isvar("xe")) then
    1914                      if (parameter(65) .NE. "xdim") then
    1915                         res@trXMaxF = stringtofloat(parameter(65))
    1916                      else
    1917                         res@trXMaxF            = maxiql
    1918                      end if
     1605                  if (xs .EQ. -1) then
     1606                     res@trXMinF            = miniql
     1607                  else
     1608                     res@trXMinF            = xs
     1609                  end if
     1610                  if (xe .EQ. -1) then       
     1611                     res@trXMaxF            = maxiql
    19191612                  else
    19201613                     res@trXMaxF            = xe 
     
    19331626                  res@gsnLeftString      = vNam(varn)
    19341627                  res@gsnRightString     = unit(varn)
    1935                   if (.not. isvar("xs")) then
    1936                      if (parameter(63) .NE. "x0") then
    1937                         res@trXMinF = stringtofloat(parameter(63))
    1938                      else
    1939                         res@trXMinF            = minie
    1940                      end if
    1941                   else
    1942                      res@trXMinF            = xs
    1943                   end if
    1944                   if (.not. isvar("xe")) then
    1945                      if (parameter(65) .NE. "xdim") then
    1946                         res@trXMaxF = stringtofloat(parameter(65))
    1947                      else
    1948                         res@trXMaxF            = maxie
    1949                      end if
     1628                  if (xs .EQ. -1) then
     1629                     res@trXMinF            = minie
     1630                  else
     1631                     res@trXMinF            = xs
     1632                  end if
     1633                  if (xe .EQ. -1) then       
     1634                     res@trXMaxF            = maxie
    19501635                  else
    19511636                     res@trXMaxF            = xe 
     
    19631648                  res@gsnLeftString      = vNam(varn)
    19641649                  res@gsnRightString     = unit(varn)
    1965                   if (.not. isvar("xs")) then
    1966                      if (parameter(63) .NE. "x0") then
    1967                         res@trXMinF = stringtofloat(parameter(63))
    1968                      else
    1969                         res@trXMinF            = minies
    1970                      end if
    1971                   else
    1972                      res@trXMinF            = xs
    1973                   end if
    1974                   if (.not. isvar("xe")) then
    1975                      if (parameter(65) .NE. "xdim") then
    1976                         res@trXMaxF = stringtofloat(parameter(65))
    1977                      else
    1978                         res@trXMaxF            = maxies
    1979                      end if
     1650                  if (xs .EQ. -1) then
     1651                     res@trXMinF            = minies
     1652                  else
     1653                     res@trXMinF            = xs
     1654                  end if
     1655                  if (xe .EQ. -1) then       
     1656                     res@trXMaxF            = maxies
    19801657                  else
    19811658                     res@trXMaxF            = xe 
     
    19941671                  res@gsnLeftString      = vNam(varn)
    19951672                  res@gsnRightString     = unit(varn)
    1996                   if (.not. isvar("xs")) then
    1997                      if (parameter(63) .NE. "x0") then
    1998                         res@trXMinF = stringtofloat(parameter(63))
    1999                      else
    2000                         res@trXMinF            = minikm
    2001                      end if
    2002                   else
    2003                      res@trXMinF            = xs
    2004                   end if
    2005                   if (.not. isvar("xe")) then
    2006                      if (parameter(65) .NE. "xdim") then
    2007                         res@trXMaxF = stringtofloat(parameter(65))
    2008                      else
    2009                         res@trXMaxF            = maxikm
    2010                      end if
     1673                  if (xs .EQ. -1) then
     1674                     res@trXMinF            = minikm
     1675                  else
     1676                     res@trXMinF            = xs
     1677                  end if
     1678                  if (xe .EQ. -1) then       
     1679                     res@trXMaxF            = maxikm
    20111680                  else
    20121681                     res@trXMaxF            = xe 
     
    20241693                  res@gsnLeftString      = vNam(varn)
    20251694                  res@gsnRightString     = unit(varn)
    2026                   if (.not. isvar("xs")) then
    2027                      if (parameter(63) .NE. "x0") then
    2028                         res@trXMinF = stringtofloat(parameter(63))
    2029                      else
    2030                         res@trXMinF            = minikh
    2031                      end if
    2032                   else
    2033                      res@trXMinF            = xs
    2034                   end if
    2035                   if (.not. isvar("xe")) then
    2036                      if (parameter(65) .NE. "xdim") then
    2037                         res@trXMaxF = stringtofloat(parameter(65))
    2038                      else
    2039                         res@trXMaxF            = maxikh
    2040                      end if
     1695                  if (xs .EQ. -1) then
     1696                     res@trXMinF            = minikh
     1697                  else
     1698                     res@trXMinF            = xs
     1699                  end if
     1700                  if (xe .EQ. -1) then       
     1701                     res@trXMaxF            = maxikh
    20411702                  else
    20421703                     res@trXMaxF            = xe 
     
    20551716                  res@gsnLeftString      = vNam(varn)
    20561717                  res@gsnRightString     = unit(varn)
    2057                   if (.not. isvar("xs")) then
    2058                      if (parameter(63) .NE. "x0") then
    2059                         res@trXMinF = stringtofloat(parameter(63))
    2060                      else
    2061                         res@trXMinF            = miniwpup
    2062                      end if
    2063                   else
    2064                      res@trXMinF            = xs
    2065                   end if
    2066                   if (.not. isvar("xe")) then
    2067                      if (parameter(65) .NE. "xdim") then
    2068                         res@trXMaxF = stringtofloat(parameter(65))
    2069                      else
    2070                         res@trXMaxF            = maxiwpup
    2071                      end if
     1718                  if (xs .EQ. -1) then
     1719                     res@trXMinF            = miniwpup
     1720                  else
     1721                     res@trXMinF            = xs
     1722                  end if
     1723                  if (xe .EQ. -1) then       
     1724                     res@trXMaxF            = maxiwpup
    20721725                  else
    20731726                     res@trXMaxF            = xe 
     
    20851738                  res@gsnLeftString      = vNam(varn)
    20861739                  res@gsnRightString     = unit(varn)
    2087                   if (.not. isvar("xs")) then
    2088                      if (parameter(63) .NE. "x0") then
    2089                         res@trXMinF = stringtofloat(parameter(63))
    2090                      else
    2091                         res@trXMinF            = miniwsus
    2092                      end if
    2093                   else
    2094                      res@trXMinF            = xs
    2095                   end if
    2096                   if (.not. isvar("xe")) then
    2097                      if (parameter(65) .NE. "xdim") then
    2098                         res@trXMaxF = stringtofloat(parameter(65))
    2099                      else
    2100                         res@trXMaxF            = maxiwsus
    2101                      end if
     1740                  if (xs .EQ. -1) then
     1741                     res@trXMinF            = miniwsus
     1742                  else
     1743                     res@trXMinF            = xs
     1744                  end if
     1745                  if (xe .EQ. -1) then       
     1746                     res@trXMaxF            = maxiwsus
    21021747                  else
    21031748                     res@trXMaxF            = xe 
     
    21151760                  res@gsnLeftString      = vNam(varn)
    21161761                  res@gsnRightString     = unit(varn)
    2117                   if (.not. isvar("xs")) then
    2118                      if (parameter(63) .NE. "x0") then
    2119                         res@trXMinF = stringtofloat(parameter(63))
    2120                      else
    2121                         res@trXMinF            = miniwu
    2122                      end if
    2123                   else
    2124                      res@trXMinF            = xs
    2125                   end if
    2126                   if (.not. isvar("xe")) then
    2127                      if (parameter(65) .NE. "xdim") then
    2128                         res@trXMaxF = stringtofloat(parameter(65))
    2129                      else
    2130                         res@trXMaxF            = maxiwu
    2131                      end if
     1762                  if (xs .EQ. -1) then
     1763                     res@trXMinF            = miniwu
     1764                  else
     1765                     res@trXMinF            = xs
     1766                  end if
     1767                  if (xe .EQ. -1) then       
     1768                     res@trXMaxF            = maxiwu
    21321769                  else
    21331770                     res@trXMaxF            = xe 
     
    21461783                  res@gsnLeftString      = vNam(varn)
    21471784                  res@gsnRightString     = unit(varn)
    2148                   if (.not. isvar("xs")) then
    2149                      if (parameter(63) .NE. "x0") then
    2150                         res@trXMinF = stringtofloat(parameter(63))
    2151                      else
    2152                         res@trXMinF            = miniwpvp
    2153                      end if
    2154                   else
    2155                      res@trXMinF            = xs
    2156                   end if
    2157                   if (.not. isvar("xe")) then
    2158                      if (parameter(65) .NE. "xdim") then
    2159                         res@trXMaxF = stringtofloat(parameter(65))
    2160                      else
    2161                         res@trXMaxF            = maxiwpvp
    2162                      end if
     1785                  if (xs .EQ. -1) then
     1786                     res@trXMinF            = miniwpvp
     1787                  else
     1788                     res@trXMinF            = xs
     1789                  end if
     1790                  if (xe .EQ. -1) then       
     1791                     res@trXMaxF            = maxiwpvp
    21631792                  else
    21641793                     res@trXMaxF            = xe 
     
    21761805                  res@gsnLeftString      = vNam(varn)
    21771806                  res@gsnRightString     = unit(varn)
    2178                   if (.not. isvar("xs")) then
    2179                      if (parameter(63) .NE. "x0") then
    2180                         res@trXMinF = stringtofloat(parameter(63))
    2181                      else
    2182                         res@trXMinF            = miniwsvs
    2183                      end if
    2184                   else
    2185                      res@trXMinF            = xs
    2186                   end if
    2187                   if (.not. isvar("xe")) then
    2188                      if (parameter(65) .NE. "xdim") then
    2189                         res@trXMaxF = stringtofloat(parameter(65))
    2190                      else
    2191                         res@trXMaxF            = maxiwsvs
    2192                      end if
     1807                  if (xs .EQ. -1) then
     1808                     res@trXMinF            = miniwsvs
     1809                  else
     1810                     res@trXMinF            = xs
     1811                  end if
     1812                  if (xe .EQ. -1) then       
     1813                     res@trXMaxF            = maxiwsvs
    21931814                  else
    21941815                     res@trXMaxF            = xe 
     
    22061827                  res@gsnLeftString      = vNam(varn)
    22071828                  res@gsnRightString     = unit(varn)
    2208                   if (.not. isvar("xs")) then
    2209                      if (parameter(63) .NE. "x0") then
    2210                         res@trXMinF = stringtofloat(parameter(63))
    2211                      else
    2212                         res@trXMinF            = miniwv
    2213                      end if
    2214                   else
    2215                      res@trXMinF            = xs
    2216                   end if
    2217                   if (.not. isvar("xe")) then
    2218                      if (parameter(65) .NE. "xdim") then
    2219                         res@trXMaxF = stringtofloat(parameter(65))
    2220                      else
    2221                         res@trXMaxF            = maxiwv
    2222                      end if
     1829                  if (xs .EQ. -1) then
     1830                     res@trXMinF            = miniwv
     1831                  else
     1832                     res@trXMinF            = xs
     1833                  end if
     1834                  if (xe .EQ. -1) then       
     1835                     res@trXMaxF            = maxiwv
    22231836                  else
    22241837                     res@trXMaxF            = xe 
     
    22371850                  res@gsnLeftString      = vNam(varn)
    22381851                  res@gsnRightString     = unit(varn)
    2239                   if (.not. isvar("xs")) then
    2240                      if (parameter(63) .NE. "x0") then
    2241                         res@trXMinF = stringtofloat(parameter(63))
    2242                      else
    2243                         res@trXMinF            = miniwpptp
    2244                      end if
    2245                   else
    2246                      res@trXMinF            = xs
    2247                   end if
    2248                   if (.not. isvar("xe")) then
    2249                      if (parameter(65) .NE. "xdim") then
    2250                         res@trXMaxF = stringtofloat(parameter(65))
    2251                      else
    2252                         res@trXMaxF            = maxiwpptp
    2253                      end if
     1852                  if (xs .EQ. -1) then
     1853                     res@trXMinF            = miniwpptp
     1854                  else
     1855                     res@trXMinF            = xs
     1856                  end if
     1857                  if (xe .EQ. -1) then       
     1858                     res@trXMaxF            = maxiwpptp
    22541859                  else
    22551860                     res@trXMaxF            = xe 
     
    22671872                  res@gsnLeftString      = vNam(varn)
    22681873                  res@gsnRightString     = unit(varn)
    2269                   if (.not. isvar("xs")) then
    2270                      if (parameter(63) .NE. "x0") then
    2271                         res@trXMinF = stringtofloat(parameter(63))
    2272                      else
    2273                         res@trXMinF            = miniwspts
    2274                      end if
    2275                   else
    2276                      res@trXMinF            = xs
    2277                   end if
    2278                   if (.not. isvar("xe")) then
    2279                      if (parameter(65) .NE. "xdim") then
    2280                         res@trXMaxF = stringtofloat(parameter(65))
    2281                      else
    2282                         res@trXMaxF            = maxiwspts
    2283                      end if
     1874                  if (xs .EQ. -1) then
     1875                     res@trXMinF            = miniwspts
     1876                  else
     1877                     res@trXMinF            = xs
     1878                  end if
     1879                  if (xe .EQ. -1) then       
     1880                     res@trXMaxF            = maxiwspts
    22841881                  else
    22851882                     res@trXMaxF            = xe 
     
    22971894                  res@gsnLeftString      = vNam(varn)
    22981895                  res@gsnRightString     = unit(varn)
    2299                   if (.not. isvar("xs")) then
    2300                      if (parameter(63) .NE. "x0") then
    2301                         res@trXMinF = stringtofloat(parameter(63))
    2302                      else
    2303                         res@trXMinF            = miniwpt
    2304                      end if
    2305                   else
    2306                      res@trXMinF            = xs
    2307                   end if
    2308                   if (.not. isvar("xe")) then
    2309                      if (parameter(65) .NE. "xdim") then
    2310                         res@trXMaxF = stringtofloat(parameter(65))
    2311                      else
    2312                         res@trXMaxF            = maxiwpt
    2313                      end if
     1896                  if (xs .EQ. -1) then
     1897                     res@trXMinF            = miniwpt
     1898                  else
     1899                     res@trXMinF            = xs
     1900                  end if
     1901                  if (xe .EQ. -1) then       
     1902                     res@trXMaxF            = maxiwpt
    23141903                  else
    23151904                     res@trXMaxF            = xe 
     
    23281917                  res@gsnLeftString      = vNam(varn)
    23291918                  res@gsnRightString     = unit(varn)
    2330                   if (.not. isvar("xs")) then
    2331                      if (parameter(63) .NE. "x0") then
    2332                         res@trXMinF = stringtofloat(parameter(63))
    2333                      else
    2334                         res@trXMinF            = miniwsptsBC
    2335                      end if
    2336                   else
    2337                      res@trXMinF            = xs
    2338                   end if
    2339                   if (.not. isvar("xe")) then
    2340                      if (parameter(65) .NE. "xdim") then
    2341                         res@trXMaxF = stringtofloat(parameter(65))
    2342                      else
    2343                         res@trXMaxF            = maxiwsptsBC
    2344                      end if
    2345                   else
    2346                      res@trXMaxF            = xe 
    2347                   end if
     1919                  if (xs .EQ. -1) then
     1920                     res@trXMinF            = miniwsptsBC
     1921                  else
     1922                     res@trXMinF            = xs
     1923                  end if
     1924                  if (xe .EQ. -1) then       
     1925                     res@trXMaxF            = maxiwsptsBC
     1926                  else
     1927                     res@trXMaxF            = xe 
     1928                  end if
    23481929                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
    23491930               end if
     
    23581939                  res@gsnLeftString      = vNam(varn)
    23591940                  res@gsnRightString     = unit(varn)
    2360                   if (.not. isvar("xs")) then
    2361                      if (parameter(63) .NE. "x0") then
    2362                         res@trXMinF = stringtofloat(parameter(63))
    2363                      else
    2364                         res@trXMinF            = miniwptBC
    2365                      end if
    2366                   else
    2367                      res@trXMinF            = xs
    2368                   end if
    2369                   if (.not. isvar("xe")) then
    2370                      if (parameter(65) .NE. "xdim") then
    2371                         res@trXMaxF = stringtofloat(parameter(65))
    2372                      else
    2373                         res@trXMaxF            = maxiwptBC
    2374                      end if
     1941                  if (xs .EQ. -1) then
     1942                     res@trXMinF            = miniwptBC
     1943                  else
     1944                     res@trXMinF            = xs
     1945                  end if
     1946                  if (xe .EQ. -1) then       
     1947                     res@trXMaxF            = maxiwptBC
    23751948                  else
    23761949                     res@trXMaxF            = xe 
     
    23891962                  res@gsnLeftString      = vNam(varn)
    23901963                  res@gsnRightString     = unit(varn)
    2391                   if (.not. isvar("xs")) then
    2392                      if (parameter(63) .NE. "x0") then
    2393                         res@trXMinF = stringtofloat(parameter(63))
    2394                      else
    2395                         res@trXMinF            = miniwpvptp
    2396                      end if
    2397                   else
    2398                      res@trXMinF            = xs
    2399                   end if
    2400                   if (.not. isvar("xe")) then
    2401                      if (parameter(65) .NE. "xdim") then
    2402                         res@trXMaxF = stringtofloat(parameter(65))
    2403                      else
    2404                         res@trXMaxF            = maxiwpvptp
    2405                      end if
    2406                   else
    2407                      res@trXMaxF            = xe 
    2408                   end if
     1964                  if (xs .EQ. -1) then
     1965                     res@trXMinF            = miniwpvptp
     1966                  else
     1967                     res@trXMinF            = xs
     1968                  end if
     1969                  if (xe .EQ. -1) then       
     1970                     res@trXMaxF            = maxiwpvptp
     1971                  else
     1972                     res@trXMaxF            = xe 
     1973                  end if
    24091974                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
    24101975               end if
     
    24191984                  res@gsnLeftString      = vNam(varn)
    24201985                  res@gsnRightString     = unit(varn)
    2421                   if (.not. isvar("xs")) then
    2422                      if (parameter(63) .NE. "x0") then
    2423                         res@trXMinF = stringtofloat(parameter(63))
    2424                      else
    2425                         res@trXMinF            = miniwsvpts
    2426                      end if
    2427                   else
    2428                      res@trXMinF            = xs
    2429                   end if
    2430                   if (.not. isvar("xe")) then
    2431                      if (parameter(65) .NE. "xdim") then
    2432                         res@trXMaxF = stringtofloat(parameter(65))
    2433                      else
    2434                         res@trXMaxF            = maxiwsvpts
    2435                      end if
    2436                   else
    2437                      res@trXMaxF            = xe 
    2438                   end if
     1986                  if (xs .EQ. -1) then
     1987                     res@trXMinF            = miniwsvpts
     1988                  else
     1989                     res@trXMinF            = xs
     1990                  end if
     1991                  if (xe .EQ. -1) then       
     1992                     res@trXMaxF            = maxiwsvpts
     1993                  else
     1994                     res@trXMaxF            = xe 
     1995                  end if
    24391996                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
    24401997               end if
     
    24492006                  res@gsnLeftString      = vNam(varn)
    24502007                  res@gsnRightString     = unit(varn)
    2451                   if (.not. isvar("xs")) then
    2452                      if (parameter(63) .NE. "x0") then
    2453                         res@trXMinF = stringtofloat(parameter(63))
    2454                      else
    2455                         res@trXMinF            = miniwvpt
    2456                      end if
    2457                   else
    2458                      res@trXMinF            = xs
    2459                   end if
    2460                   if (.not. isvar("xe")) then
    2461                      if (parameter(65) .NE. "xdim") then
    2462                         res@trXMaxF = stringtofloat(parameter(65))
    2463                      else
    2464                         res@trXMaxF            = maxiwvpt
    2465                      end if
     2008                  if (xs .EQ. -1) then
     2009                     res@trXMinF            = miniwvpt
     2010                  else
     2011                     res@trXMinF            = xs
     2012                  end if
     2013                  if (xe .EQ. -1) then       
     2014                     res@trXMaxF            = maxiwvpt
    24662015                  else
    24672016                     res@trXMaxF            = xe 
     
    24802029                  res@gsnLeftString      = vNam(varn)
    24812030                  res@gsnRightString     = unit(varn)
    2482                   if (.not. isvar("xs")) then
    2483                      if (parameter(63) .NE. "x0") then
    2484                         res@trXMinF = stringtofloat(parameter(63))
    2485                      else
    2486                         res@trXMinF            = miniwpqp
    2487                      end if
    2488                   else
    2489                      res@trXMinF            = xs
    2490                   end if
    2491                   if (.not. isvar("xe")) then
    2492                      if (parameter(65) .NE. "xdim") then
    2493                         res@trXMaxF = stringtofloat(parameter(65))
    2494                      else
    2495                         res@trXMaxF            = maxiwpqp
    2496                      end if
     2031                  if (xs .EQ. -1) then
     2032                     res@trXMinF            = miniwpqp
     2033                  else
     2034                     res@trXMinF            = xs
     2035                  end if
     2036                  if (xe .EQ. -1) then       
     2037                     res@trXMaxF            = maxiwpqp
    24972038                  else
    24982039                     res@trXMaxF            = xe 
     
    25102051                  res@gsnLeftString      = vNam(varn)
    25112052                  res@gsnRightString     = unit(varn)
    2512                   if (.not. isvar("xs")) then
    2513                      if (parameter(63) .NE. "x0") then
    2514                         res@trXMinF = stringtofloat(parameter(63))
    2515                      else
    2516                         res@trXMinF            = miniwsqs
    2517                      end if
    2518                   else
    2519                      res@trXMinF            = xs
    2520                   end if
    2521                   if (.not. isvar("xe")) then
    2522                      if (parameter(65) .NE. "xdim") then
    2523                         res@trXMaxF = stringtofloat(parameter(65))
    2524                      else
    2525                         res@trXMaxF            = maxiwsqs
    2526                      end if
     2053                  if (xs .EQ. -1) then
     2054                     res@trXMinF            = miniwsqs
     2055                  else
     2056                     res@trXMinF            = xs
     2057                  end if
     2058                  if (xe .EQ. -1) then       
     2059                     res@trXMaxF            = maxiwsqs
    25272060                  else
    25282061                     res@trXMaxF            = xe 
     
    25402073                  res@gsnLeftString      = vNam(varn)
    25412074                  res@gsnRightString     = unit(varn)
    2542                   if (.not. isvar("xs")) then
    2543                      if (parameter(63) .NE. "x0") then
    2544                         res@trXMinF = stringtofloat(parameter(63))
    2545                      else
    2546                         res@trXMinF            = miniwq
    2547                      end if
    2548                   else
    2549                      res@trXMinF            = xs
    2550                   end if
    2551                   if (.not. isvar("xe")) then
    2552                      if (parameter(65) .NE. "xdim") then
    2553                         res@trXMaxF = stringtofloat(parameter(65))
    2554                      else
    2555                         res@trXMaxF            = maxiwq
    2556                      end if
    2557                   else
    2558                      res@trXMaxF            = xe 
    2559                   end if
     2075                  if (xs .EQ. -1) then
     2076                     res@trXMinF            = miniwq
     2077                  else
     2078                     res@trXMinF            = xs
     2079                  end if
     2080                  if (xe .EQ. -1) then       
     2081                     res@trXMaxF            = maxiwq
     2082                  else
     2083                     res@trXMaxF            = xe 
     2084                  end if
    25602085                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
    25612086               end if
     
    25712096                  res@gsnLeftString      = vNam(varn)
    25722097                  res@gsnRightString     = unit(varn)
    2573                   if (.not. isvar("xs")) then
    2574                      if (parameter(63) .NE. "x0") then
    2575                         res@trXMinF = stringtofloat(parameter(63))
    2576                      else
    2577                         res@trXMinF            = miniwpqvp
    2578                      end if
    2579                   else
    2580                      res@trXMinF            = xs
    2581                   end if
    2582                   if (.not. isvar("xe")) then
    2583                      if (parameter(65) .NE. "xdim") then
    2584                         res@trXMaxF = stringtofloat(parameter(65))
    2585                      else
    2586                         res@trXMaxF            = maxiwpqvp
    2587                      end if
    2588                   else
    2589                      res@trXMaxF            = xe 
    2590                   end if
     2098                  if (xs .EQ. -1) then
     2099                     res@trXMinF            = miniwpqvp
     2100                  else
     2101                     res@trXMinF            = xs
     2102                  end if
     2103                  if (xe .EQ. -1) then       
     2104                     res@trXMaxF            = maxiwpqvp
     2105                  else
     2106                     res@trXMaxF            = xe 
     2107                  end if
    25912108                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
    25922109               end if
     
    26012118                  res@gsnLeftString      = vNam(varn)
    26022119                  res@gsnRightString     = unit(varn)
    2603                   if (.not. isvar("xs")) then
    2604                      if (parameter(63) .NE. "x0") then
    2605                         res@trXMinF = stringtofloat(parameter(63))
    2606                      else
    2607                         res@trXMinF            = miniwsqvs
    2608                      end if
    2609                   else
    2610                      res@trXMinF            = xs
    2611                   end if
    2612                   if (.not. isvar("xe")) then
    2613                      if (parameter(65) .NE. "xdim") then
    2614                         res@trXMaxF = stringtofloat(parameter(65))
    2615                      else
    2616                         res@trXMaxF            = maxiwsqvs
    2617                      end if
     2120                  if (xs .EQ. -1) then
     2121                     res@trXMinF            = miniwsqvs
     2122                  else
     2123                     res@trXMinF            = xs
     2124                  end if
     2125                  if (xe .EQ. -1) then       
     2126                     res@trXMaxF            = maxiwsqvs
    26182127                  else
    26192128                     res@trXMaxF            = xe 
     
    26312140                  res@gsnLeftString      = vNam(varn)
    26322141                  res@gsnRightString     = unit(varn)
    2633                   if (.not. isvar("xs")) then
    2634                      if (parameter(63) .NE. "x0") then
    2635                         res@trXMinF = stringtofloat(parameter(63))
    2636                      else
    2637                         res@trXMinF            = miniwqv
    2638                      end if
    2639                   else
    2640                      res@trXMinF            = xs
    2641                   end if
    2642                   if (.not. isvar("xe")) then
    2643                      if (parameter(65) .NE. "xdim") then
    2644                         res@trXMaxF = stringtofloat(parameter(65))
    2645                      else
    2646                         res@trXMaxF            = maxiwqv
    2647                      end if
     2142                  if (xs .EQ. -1) then
     2143                     res@trXMinF            = miniwqv
     2144                  else
     2145                     res@trXMinF            = xs
     2146                  end if
     2147                  if (xe .EQ. -1) then       
     2148                     res@trXMaxF            = maxiwqv
    26482149                  else
    26492150                     res@trXMaxF            = xe 
     
    26622163                  res@gsnLeftString      = vNam(varn)
    26632164                  res@gsnRightString     = unit(varn)
    2664                   if (.not. isvar("xs")) then
    2665                      if (parameter(63) .NE. "x0") then
    2666                         res@trXMinF = stringtofloat(parameter(63))
    2667                      else
    2668                         res@trXMinF            = miniwpsp
    2669                      end if
    2670                   else
    2671                      res@trXMinF            = xs
    2672                   end if
    2673                   if (.not. isvar("xe")) then
    2674                      if (parameter(65) .NE. "xdim") then
    2675                         res@trXMaxF = stringtofloat(parameter(65))
    2676                      else
    2677                         res@trXMaxF            = maxiwpsp
    2678                      end if
     2165                  if (xs .EQ. -1) then
     2166                     res@trXMinF            = miniwpsp
     2167                  else
     2168                     res@trXMinF            = xs
     2169                  end if
     2170                  if (xe .EQ. -1) then       
     2171                     res@trXMaxF            = maxiwpsp
    26792172                  else
    26802173                     res@trXMaxF            = xe 
     
    26922185                  res@gsnLeftString      = vNam(varn)
    26932186                  res@gsnRightString     = unit(varn)
    2694                   if (.not. isvar("xs")) then
    2695                      if (parameter(63) .NE. "x0") then
    2696                         res@trXMinF = stringtofloat(parameter(63))
    2697                      else
    2698                         res@trXMinF            = miniwsss
    2699                      end if
    2700                   else
    2701                      res@trXMinF            = xs
    2702                   end if
    2703                   if (.not. isvar("xe")) then
    2704                      if (parameter(65) .NE. "xdim") then
    2705                         res@trXMaxF = stringtofloat(parameter(65))
    2706                      else
    2707                         res@trXMaxF            = maxiwsss
    2708                      end if
     2187                  if (xs .EQ. -1) then
     2188                     res@trXMinF            = miniwsss
     2189                  else
     2190                     res@trXMinF            = xs
     2191                  end if
     2192                  if (xe .EQ. -1) then       
     2193                     res@trXMaxF            = maxiwsss
    27092194                  else
    27102195                     res@trXMaxF            = xe 
     
    27222207                  res@gsnLeftString      = vNam(varn)
    27232208                  res@gsnRightString     = unit(varn)
    2724                   if (.not. isvar("xs")) then
    2725                      if (parameter(63) .NE. "x0") then
    2726                         res@trXMinF = stringtofloat(parameter(63))
    2727                      else
    2728                         res@trXMinF            = miniws
    2729                      end if
    2730                   else
    2731                      res@trXMinF            = xs
    2732                   end if
    2733                   if (.not. isvar("xe")) then
    2734                      if (parameter(65) .NE. "xdim") then
    2735                         res@trXMaxF = stringtofloat(parameter(65))
    2736                      else
    2737                         res@trXMaxF            = maxiws
    2738                      end if
     2209                  if (xs .EQ. -1) then
     2210                     res@trXMinF            = miniws
     2211                  else
     2212                     res@trXMinF            = xs
     2213                  end if
     2214                  if (xe .EQ. -1) then       
     2215                     res@trXMaxF            = maxiws
    27392216                  else
    27402217                     res@trXMaxF            = xe 
     
    27532230                  res@gsnLeftString      = vNam(varn)
    27542231                  res@gsnRightString     = unit(varn)
    2755                   if (.not. isvar("xs")) then
    2756                      if (parameter(63) .NE. "x0") then
    2757                         res@trXMinF = stringtofloat(parameter(63))
    2758                      else
    2759                         res@trXMinF            = miniwpsap
    2760                      end if
    2761                   else
    2762                      res@trXMinF            = xs
    2763                   end if
    2764                   if (.not. isvar("xe")) then
    2765                      if (parameter(65) .NE. "xdim") then
    2766                         res@trXMaxF = stringtofloat(parameter(65))
    2767                      else
    2768                         res@trXMaxF            = maxiwpsap
    2769                      end if
    2770                   else
    2771                      res@trXMaxF            = xe 
    2772                   end if
     2232                  if (xs .EQ. -1) then
     2233                     res@trXMinF            = miniwpsap
     2234                  else
     2235                     res@trXMinF            = xs
     2236                  end if
     2237                  if (xe .EQ. -1) then       
     2238                     res@trXMaxF            = maxiwpsap
     2239                  else
     2240                     res@trXMaxF            = xe 
     2241                  end if
    27732242                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
    27742243               end if
     
    27832252                  res@gsnLeftString      = vNam(varn)
    27842253                  res@gsnRightString     = unit(varn)
    2785                   if (.not. isvar("xs")) then
    2786                      if (parameter(63) .NE. "x0") then
    2787                         res@trXMinF = stringtofloat(parameter(63))
    2788                      else
    2789                         res@trXMinF            = miniwssas
    2790                      end if
    2791                   else
    2792                      res@trXMinF            = xs
    2793                   end if
    2794                   if (.not. isvar("xe")) then
    2795                      if (parameter(65) .NE. "xdim") then
    2796                         res@trXMaxF = stringtofloat(parameter(65))
    2797                      else
    2798                         res@trXMaxF            = maxiwssas
    2799                      end if
    2800                   else
    2801                      res@trXMaxF            = xe 
    2802                   end if
     2254                  if (xs .EQ. -1) then
     2255                     res@trXMinF            = miniwssas
     2256                  else
     2257                     res@trXMinF            = xs
     2258                  end if
     2259                  if (xe .EQ. -1) then       
     2260                     res@trXMaxF            = maxiwssas
     2261                  else
     2262                     res@trXMaxF            = xe 
     2263                  end if
    28032264                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
    28042265               end if
     
    28132274                  res@gsnLeftString      = vNam(varn)
    28142275                  res@gsnRightString     = unit(varn)
    2815                   if (.not. isvar("xs")) then
    2816                      if (parameter(63) .NE. "x0") then
    2817                         res@trXMinF = stringtofloat(parameter(63))
    2818                      else
    2819                         res@trXMinF            = miniwsa
    2820                      end if
    2821                   else
    2822                      res@trXMinF            = xs
    2823                   end if
    2824                   if (.not. isvar("xe")) then
    2825                      if (parameter(65) .NE. "xdim") then
    2826                         res@trXMaxF = stringtofloat(parameter(65))
    2827                      else
    2828                         res@trXMaxF            = maxiwsa
    2829                      end if
    2830                   else
    2831                      res@trXMaxF            = xe 
    2832                   end if
     2276                  if (xs .EQ. -1) then
     2277                     res@trXMinF            = miniwsa
     2278                  else
     2279                     res@trXMinF            = xs
     2280                  end if
     2281                  if (xe .EQ. -1) then       
     2282                     res@trXMaxF            = maxiwsa
     2283                  else
     2284                     res@trXMaxF            = xe 
     2285                  end if
    28332286                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
    28342287               end if
     
    28442297                  res@gsnLeftString      = vNam(varn)
    28452298                  res@gsnRightString     = unit(varn)
    2846                   if (.not. isvar("xs")) then
    2847                      if (parameter(63) .NE. "x0") then
    2848                         res@trXMinF = stringtofloat(parameter(63))
    2849                      else
    2850                         res@trXMinF            = minius2
    2851                      end if
    2852                   else
    2853                      res@trXMinF            = xs
    2854                   end if
    2855                   if (.not. isvar("xe")) then
    2856                      if (parameter(65) .NE. "xdim") then
    2857                         res@trXMaxF = stringtofloat(parameter(65))
    2858                      else
    2859                         res@trXMaxF            = maxius2
    2860                      end if
    2861                   else
    2862                      res@trXMaxF            = xe 
    2863                   end if
     2299                  if (xs .EQ. -1) then
     2300                     res@trXMinF            = minius2
     2301                  else
     2302                     res@trXMinF            = xs
     2303                  end if
     2304                  if (xe .EQ. -1) then       
     2305                     res@trXMaxF            = maxius2
     2306                  else
     2307                     res@trXMaxF            = xe 
     2308                  end if
    28642309                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
    28652310               end if
     
    28742319                  res@gsnLeftString      = vNam(varn)
    28752320                  res@gsnRightString     = unit(varn)
    2876                   if (.not. isvar("xs")) then
    2877                      if (parameter(63) .NE. "x0") then
    2878                         res@trXMinF = stringtofloat(parameter(63))
    2879                      else
    2880                         res@trXMinF            = minivs2
    2881                      end if
    2882                   else
    2883                      res@trXMinF            = xs
    2884                   end if
    2885                   if (.not. isvar("xe")) then
    2886                      if (parameter(65) .NE. "xdim") then
    2887                         res@trXMaxF = stringtofloat(parameter(65))
    2888                      else
    2889                         res@trXMaxF            = maxivs2
    2890                      end if
    2891                   else
    2892                      res@trXMaxF            = xe 
    2893                   end if
     2321                  if (xs .EQ. -1) then
     2322                     res@trXMinF            = minivs2
     2323                  else
     2324                     res@trXMinF            = xs
     2325                  end if
     2326                  if (xe .EQ. -1) then       
     2327                     res@trXMaxF            = maxivs2
     2328                  else
     2329                     res@trXMaxF            = xe 
     2330                  end if
    28942331                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
    28952332               end if
     
    29042341                  res@gsnLeftString      = vNam(varn)
    29052342                  res@gsnRightString     = unit(varn)
    2906                   if (.not. isvar("xs")) then
    2907                      if (parameter(63) .NE. "x0") then
    2908                         res@trXMinF = stringtofloat(parameter(63))
    2909                      else
    2910                         res@trXMinF            = miniws2
    2911                      end if
    2912                   else
    2913                      res@trXMinF            = xs
    2914                   end if
    2915                   if (.not. isvar("xe")) then
    2916                      if (parameter(65) .NE. "xdim") then
    2917                         res@trXMaxF = stringtofloat(parameter(65))
    2918                      else
    2919                         res@trXMaxF            = maxiws2
    2920                      end if
    2921                   else
    2922                      res@trXMaxF            = xe 
    2923                   end if
     2343                  if (xs .EQ. -1) then
     2344                     res@trXMinF            = miniws2
     2345                  else
     2346                     res@trXMinF            = xs
     2347                  end if
     2348                  if (xe .EQ. -1) then       
     2349                     res@trXMaxF            = maxiws2
     2350                  else
     2351                     res@trXMaxF            = xe 
     2352                  end if
    29242353                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
    29252354               end if
     
    29352364                  res@gsnLeftString      = vNam(varn)
    29362365                  res@gsnRightString     = unit(varn)
    2937                   if (.not. isvar("xs")) then
    2938                      if (parameter(63) .NE. "x0") then
    2939                         res@trXMinF = stringtofloat(parameter(63))
    2940                      else
    2941                         res@trXMinF            = miniwsususodz
    2942                      end if
    2943                   else
    2944                      res@trXMinF            = xs
    2945                   end if
    2946                   if (.not. isvar("xe")) then
    2947                      if (parameter(65) .NE. "xdim") then
    2948                         res@trXMaxF = stringtofloat(parameter(65))
    2949                      else
    2950                         res@trXMaxF            = maxiwsususodz
    2951                      end if
    2952                   else
    2953                      res@trXMaxF            = xe 
    2954                   end if
     2366                  if (xs .EQ. -1) then
     2367                     res@trXMinF            = miniwsususodz
     2368                  else
     2369                     res@trXMinF            = xs
     2370                  end if
     2371                  if (xe .EQ. -1) then       
     2372                     res@trXMaxF            = maxiwsususodz
     2373                  else
     2374                     res@trXMaxF            = xe 
     2375                  end if
    29552376                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
    29562377               end if 
     
    29652386                  res@gsnLeftString      = vNam(varn)
    29662387                  res@gsnRightString     = unit(varn)
    2967                   if (.not. isvar("xs")) then
    2968                      if (parameter(63) .NE. "x0") then
    2969                         res@trXMinF = stringtofloat(parameter(63))
    2970                      else
    2971                         res@trXMinF            = miniwspsodz
    2972                      end if
    2973                   else
    2974                      res@trXMinF            = xs
    2975                   end if
    2976                   if (.not. isvar("xe")) then
    2977                      if (parameter(65) .NE. "xdim") then
    2978                         res@trXMaxF = stringtofloat(parameter(65))
    2979                      else
    2980                         res@trXMaxF            = maxiwspsodz
    2981                      end if
    2982                   else
    2983                      res@trXMaxF            = xe 
    2984                   end if
     2388                  if (xs .EQ. -1) then
     2389                     res@trXMinF            = miniwspsodz
     2390                  else
     2391                     res@trXMinF            = xs
     2392                  end if
     2393                  if (xe .EQ. -1) then       
     2394                     res@trXMaxF            = maxiwspsodz
     2395                  else
     2396                     res@trXMaxF            = xe 
     2397                  end if
    29852398                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
    29862399               end if
     
    29952408                  res@gsnLeftString      = vNam(varn)
    29962409                  res@gsnRightString     = unit(varn)
    2997                   if (.not. isvar("xs")) then
    2998                      if (parameter(63) .NE. "x0") then
    2999                         res@trXMinF = stringtofloat(parameter(63))
    3000                      else
    3001                         res@trXMinF            = miniwpeodz
    3002                      end if
    3003                   else
    3004                      res@trXMinF            = xs
    3005                   end if
    3006                   if (.not. isvar("xe")) then
    3007                      if (parameter(65) .NE. "xdim") then
    3008                         res@trXMaxF = stringtofloat(parameter(65))
    3009                      else
    3010                         res@trXMaxF            = maxiwpeodz
    3011                      end if
    3012                   else
    3013                      res@trXMaxF            = xe 
    3014                   end if
     2410                  if (xs .EQ. -1) then
     2411                     res@trXMinF            = miniwpeodz
     2412                  else
     2413                     res@trXMinF            = xs
     2414                  end if
     2415                  if (xe .EQ. -1) then       
     2416                     res@trXMaxF            = maxiwpeodz
     2417                  else
     2418                     res@trXMaxF            = xe 
     2419                  end if
    30152420                  plot(n) = gsn_csm_xy(wks,data(varn,:,:),z,res)
    30162421               end if
     
    30392444   if (count_var .EQ. 0) then
    30402445      print(" ")
    3041       print("The variables 'var=°"+var+"°' do not exist on your input file")
     2446      print("The variables 'var="+var+"' do not exist on your input file;")
     2447      print("be sure to have one comma berfore and after each variable")
    30422448      print(" ")
    30432449      exit
     
    30482454      string_len=new(12,integer)
    30492455      multi_dash=new(no_files,string)
    3050       if (.not. isvar("name_legend_1"))
    3051          multi_legend(0)="  "+parameter(83)
    3052       else
    3053          multi_legend(0)="  "+name_legend_1
    3054       end if
     2456      multi_legend(0)="  "+name_legend_1
    30552457      string_len(0)=strlen(multi_legend(0))
    3056       if (.not. isvar("name_legend_2"))
    3057          multi_legend(1)="  "+parameter(87)
    3058       else
    3059          multi_legend(1)="  "+name_legend_2
    3060       end if
     2458      multi_legend(1)="  "+name_legend_2
    30612459      string_len(1)=strlen(multi_legend(1))
    3062       if (.not. isvar("name_legend_3"))
    3063          multi_legend(2)="  "+parameter(91)
    3064       else
    3065          multi_legend(2)="  "+name_legend_3
    3066       end if
     2460      multi_legend(2)="  "+name_legend_3
    30672461      string_len(2)=strlen(multi_legend(2))
    3068       if (.not. isvar("name_legend_4"))
    3069          multi_legend(3)="  "+parameter(95)
    3070       else
    3071          multi_legend(3)="  "+name_legend_4
    3072       end if
     2462      multi_legend(3)="  "+name_legend_4
    30732463      string_len(3)=strlen(multi_legend(3))
    3074       if (.not. isvar("name_legend_5"))
    3075          multi_legend(4)="  "+parameter(99)
    3076       else
    3077          multi_legend(4)="  "+name_legend_5
    3078       end if
     2464      multi_legend(4)="  "+name_legend_5
    30792465      string_len(4)=strlen(multi_legend(4))
    3080       if (.not. isvar("name_legend_6"))
    3081          multi_legend(5)="  "+parameter(103)
    3082       else
    3083          multi_legend(5)="  "+name_legend_6
    3084       end if
     2466      multi_legend(5)="  "+name_legend_6
    30852467      string_len(5)=strlen(multi_legend(5))
    3086       if (.not. isvar("name_legend_7"))
    3087          multi_legend(6)="  "+parameter(107)
    3088       else
    3089          multi_legend(6)="  "+name_legend_7
    3090       end if
     2468      multi_legend(6)="  "+name_legend_7
    30912469      string_len(6)=strlen(multi_legend(6))
    3092       if (.not. isvar("name_legend_8"))
    3093          multi_legend(7)="  "+parameter(111)
    3094       else
    3095          multi_legend(7)="  "+name_legend_8
    3096       end if
     2470      multi_legend(7)="  "+name_legend_8
    30972471      string_len(7)=strlen(multi_legend(7))
    3098       if (.not. isvar("name_legend_9"))
    3099          multi_legend(8)="  "+parameter(115)
    3100       else
    3101          multi_legend(8)="  "+name_legend_9
    3102       end if
     2472      multi_legend(8)="  "+name_legend_9
    31032473      string_len(8)=strlen(multi_legend(8))
    3104       if (.not. isvar("name_legend_10"))
    3105          multi_legend(9)="  "+parameter(119)
    3106       else
    3107          multi_legend(9)="  "+name_legend_10
    3108       end if
     2474      multi_legend(9)="  "+name_legend_10
    31092475      string_len(9)=strlen(multi_legend(9))
    3110       if (.not. isvar("name_legend_11"))
    3111          multi_legend(10)="  "+parameter(123)
    3112       else
    3113          multi_legend(10)="  "+name_legend_11
    3114       end if
     2476      multi_legend(10)="  "+name_legend_11
    31152477      string_len(10)=strlen(multi_legend(10))
    3116       if (.not. isvar("name_legend_12"))
    3117          multi_legend(11)="  "+parameter(127)
    3118       else
    3119          multi_legend(11)="  "+name_legend_12
    3120       end if
     2478      multi_legend(11)="  "+name_legend_12
    31212479      string_len(11)=strlen(multi_legend(11))
    31222480      do ml=1,no_files
     
    32352593         end if
    32362594
    3237          if (.not. isvar("var")) then
    3238             if (parameter(21) .NE. "variables") then
    3239                var=parameter(21)
    3240                check = isStrSubset( var,","+vNam(varn)+"," )
    3241             end if
    3242          else         
     2595         if (var .NE. "all") then     
    32432596            check = isStrSubset( var,","+vNam(varn)+"," )
    32442597         end if     
     
    32802633            res@trYMinF            = min_z
    32812634            res@trYMaxF            = max_z 
    3282             if (.not. isvar("xs")) then
    3283                if (parameter(63) .NE. "x0") then
    3284                   res@trXMinF = stringtofloat(parameter(63))
    3285                else
    3286                   res@trXMinF = min(data(varn,:,:))
    3287                end if
     2635            if (xs .EQ. -1) then
     2636               res@trXMinF = min(data(varn,:,:))
    32882637            else
    32892638               res@trXMinF = xs
    32902639            end if
    3291             if (.not. isvar("xe")) then
    3292                if (parameter(65) .NE. "xdim") then
    3293                   res@trXMaxF = stringtofloat(parameter(65))
    3294                else
    3295                   res@trXMaxF = max(data(varn,:,:))
    3296             end if
     2640            if (xe .EQ. -1) then
     2641               res@trXMaxF = max(data(varn,:,:))
    32972642            else
    32982643               res@trXMaxF = xe 
     
    33042649                  res@gsnLeftString      = "u, v and w"
    33052650                  res@gsnRightString     = unit(varn)
    3306                   if (.not. isvar("xs")) then
    3307                      if (parameter(63) .NE. "x0") then
    3308                         res@trXMinF = stringtofloat(parameter(63))
    3309                      else
    3310                         res@trXMinF = min((/miniu,miniv,miniw/))
    3311                      end if
     2651                  if (xs .EQ. -1) then
     2652                     res@trXMinF = min((/miniu,miniv,miniw/))
    33122653                  else
    33132654                     res@trXMinF = xs
    33142655                  end if
    3315                   if (.not. isvar("xe")) then
    3316                      if (parameter(65) .NE. "xdim") then
    3317                         res@trXMaxF = stringtofloat(parameter(65))
    3318                      else
    3319                         res@trXMaxF = max((/maxiu,maxiv,maxiw/))
    3320                      end if
     2656                  if (xe .EQ. -1) then
     2657                     res@trXMaxF = max((/maxiu,maxiv,maxiw/))
    33212658                  else
    33222659                     res@trXMaxF = xe 
     
    33552692                  res@gsnLeftString      = "pt, vpt and lpt"
    33562693                  res@gsnRightString     = unit(varn)
    3357                   if (.not. isvar("xs")) then
    3358                      if (parameter(63) .NE. "x0") then
    3359                         res@trXMinF = stringtofloat(parameter(63))
    3360                      else
    3361                         res@trXMinF = min((/minipt,minivpt,minilpt/))
    3362                      end if
     2694                  if (xs .EQ. -1) then
     2695                     res@trXMinF = min((/minipt,minivpt,minilpt/))
    33632696                  else
    33642697                     res@trXMinF = xs
    33652698                  end if
    3366                   if (.not. isvar("xe")) then
    3367                      if (parameter(65) .NE. "xdim") then
    3368                         res@trXMaxF = stringtofloat(parameter(65))
    3369                      else
    3370                         res@trXMaxF = max((/maxipt,maxivpt,maxilpt/))
    3371                      end if
     2699                  if (xe .EQ. -1) then
     2700                     res@trXMaxF = max((/maxipt,maxivpt,maxilpt/))
    33722701                  else
    33732702                     res@trXMaxF = xe 
     
    34062735                  res@gsnLeftString      = "q, qv and ql"
    34072736                  res@gsnRightString     = unit(varn)
    3408                   if (.not. isvar("xs")) then
    3409                      if (parameter(63) .NE. "x0") then
    3410                         res@trXMinF = stringtofloat(parameter(63))
    3411                      else
    3412                         res@trXMinF = min((/miniq,miniqv,miniql/))
    3413                      end if
     2737                  if (xs .EQ. -1) then
     2738                     res@trXMinF = min((/miniq,miniqv,miniql/))
    34142739                  else
    34152740                     res@trXMinF = xs
    34162741                  end if
    3417                   if (.not. isvar("xe")) then
    3418                      if (parameter(65) .NE. "xdim") then
    3419                         res@trXMaxF = stringtofloat(parameter(65))
    3420                      else
    3421                         res@trXMaxF = max((/maxiq,maxiqv,maxiql/))
    3422                      end if
     2742                  if (xe .EQ. -1) then
     2743                     res@trXMaxF = max((/maxiq,maxiqv,maxiql/))
    34232744                  else
    34242745                     res@trXMaxF = xe 
    3425                   end if
     2746                  end if 
    34262747
    34272748                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
     
    34582779                  res@gsnLeftString      = "e and es"
    34592780                  res@gsnRightString     = unit(varn)
    3460                   if (.not. isvar("xs")) then
    3461                      if (parameter(63) .NE. "x0") then
    3462                         res@trXMinF = stringtofloat(parameter(63))
    3463                      else
    3464                         res@trXMinF = min((/minie,minies/))
    3465                      end if
     2781                  if (xs .EQ. -1) then
     2782                     res@trXMinF = min((/minie,minies/))
    34662783                  else
    34672784                     res@trXMinF = xs
    34682785                  end if
    3469                   if (.not. isvar("xe")) then
    3470                      if (parameter(65) .NE. "xdim") then
    3471                         res@trXMaxF = stringtofloat(parameter(65))
    3472                      else
    3473                         res@trXMaxF = max((/maxie,maxies/))
    3474                      end if
     2786                  if (xe .EQ. -1) then
     2787                     res@trXMaxF = max((/maxie,maxies/))
    34752788                  else
    34762789                     res@trXMaxF = xe 
    3477                   end if
    3478 
     2790                  end if 
     2791                 
    34792792                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
    34802793
     
    35092822                  res@gsnLeftString      = "km and kh"
    35102823                  res@gsnRightString     = unit(varn)
    3511                   if (.not. isvar("xs")) then
    3512                      if (parameter(63) .NE. "x0") then
    3513                         res@trXMinF = stringtofloat(parameter(63))
    3514                      else
    3515                         res@trXMinF = min((/minikm,minikh/))
    3516                      end if
     2824                  if (xs .EQ. -1) then
     2825                     res@trXMinF = min((/minikm,minikh/))
    35172826                  else
    35182827                     res@trXMinF = xs
    35192828                  end if
    3520                   if (.not. isvar("xe")) then
    3521                      if (parameter(65) .NE. "xdim") then
    3522                         res@trXMaxF = stringtofloat(parameter(65))
    3523                      else
    3524                         res@trXMaxF = max((/maxikm,maxikh/))
    3525                      end if
     2829                  if (xe .EQ. -1) then
     2830                     res@trXMaxF = max((/maxikm,maxikh/))
    35262831                  else
    35272832                     res@trXMaxF = xe 
    3528                   end if
     2833                  end if 
    35292834
    35302835                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
     
    35612866                  res@gsnLeftString      = "wpup, wsus and wu"
    35622867                  res@gsnRightString     = unit(varn)
    3563                   if (.not. isvar("xs")) then
    3564                      if (parameter(63) .NE. "x0") then
    3565                         res@trXMinF = stringtofloat(parameter(63))
    3566                      else
    3567                         res@trXMinF = min((/miniwpup,miniwsus,miniwu/))
    3568                      end if
     2868                  if (xs .EQ. -1) then
     2869                     res@trXMinF = min((/miniwpup,miniwsus,miniwu/))
    35692870                  else
    35702871                     res@trXMinF = xs
    35712872                  end if
    3572                   if (.not. isvar("xe")) then
    3573                      if (parameter(65) .NE. "xdim") then
    3574                         res@trXMaxF = stringtofloat(parameter(65))
    3575                      else
    3576                         res@trXMaxF = max((/maxiwpup,maxiwsus,maxiwu/))
    3577                      end if
     2873                  if (xe .EQ. -1) then
     2874                     res@trXMaxF = max((/maxiwpup,maxiwsus,maxiwu/))
    35782875                  else
    35792876                     res@trXMaxF = xe 
    3580                   end if
     2877                  end if 
    35812878
    35822879                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
     
    36122909                  res@gsnLeftString      = "wpvp, wsus and wv"
    36132910                  res@gsnRightString     = unit(varn)
    3614                   if (.not. isvar("xs")) then
    3615                      if (parameter(63) .NE. "x0") then
    3616                         res@trXMinF = stringtofloat(parameter(63))
    3617                      else
    3618                         res@trXMinF = min((/miniwpvp,miniwsvs,miniwv/))
    3619                      end if
     2911                  if (xs .EQ. -1) then
     2912                     res@trXMinF = min((/miniwpvp,miniwsvs,miniwv/))
    36202913                  else
    36212914                     res@trXMinF = xs
    36222915                  end if
    3623                   if (.not. isvar("xe")) then
    3624                      if (parameter(65) .NE. "xdim") then
    3625                         res@trXMaxF = stringtofloat(parameter(65))
    3626                      else
    3627                         res@trXMaxF = max((/maxiwpvp,maxiwsvs,maxiwv/))
    3628                      end if
     2916                  if (xe .EQ. -1) then
     2917                     res@trXMaxF = max((/maxiwpvp,maxiwsvs,maxiwv/))
    36292918                  else
    36302919                     res@trXMaxF = xe 
    36312920                  end if
    3632 
     2921                 
    36332922                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
    36342923
     
    36632952                  res@gsnLeftString      = "wpptp, wspts and wv"
    36642953                  res@gsnRightString     = unit(varn)
    3665                   if (.not. isvar("xs")) then
    3666                      if (parameter(63) .NE. "x0") then
    3667                         res@trXMinF = stringtofloat(parameter(63))
    3668                      else
    3669                         res@trXMinF = min((/miniwpptp,miniwspts,miniwpt/))
    3670                      end if
     2954                  if (xs .EQ. -1) then
     2955                     res@trXMinF = min((/miniwpptp,miniwspts,miniwpt/))
    36712956                  else
    36722957                     res@trXMinF = xs
    36732958                  end if
    3674                   if (.not. isvar("xe")) then
    3675                      if (parameter(65) .NE. "xdim") then
    3676                         res@trXMaxF = stringtofloat(parameter(65))
    3677                      else
    3678                         res@trXMaxF = max((/maxiwpptp,maxiwspts,maxiwpt/))
    3679                      end if
     2959                  if (xe .EQ. -1) then
     2960                     res@trXMaxF = max((/maxiwpptp,maxiwspts,maxiwpt/))
    36802961                  else
    36812962                     res@trXMaxF = xe 
    3682                   end if
     2963                  end if 
    36832964
    36842965                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
     
    37142995                  res@gsnLeftString      = "wsptsBC and wptBC"
    37152996                  res@gsnRightString     = unit(varn)
    3716                   if (.not. isvar("xs")) then
    3717                      if (parameter(63) .NE. "x0") then
    3718                         res@trXMinF = stringtofloat(parameter(63))
    3719                      else
    3720                         res@trXMinF = min((/miniwsptsBC,miniwptBC/))
    3721                      end if
     2997                  if (xs .EQ. -1) then
     2998                     res@trXMinF = min((/miniwsptsBC,miniwptBC/))
    37222999                  else
    37233000                     res@trXMinF = xs
    37243001                  end if
    3725                   if (.not. isvar("xe")) then
    3726                      if (parameter(65) .NE. "xdim") then
    3727                         res@trXMaxF = stringtofloat(parameter(65))
    3728                      else
    3729                         res@trXMaxF = max((/maxiwsptsBC,maxiwptBC/))
    3730                      end if
     3002                  if (xe .EQ. -1) then
     3003                     res@trXMaxF = max((/maxiwsptsBC,maxiwptBC/))
    37313004                  else
    37323005                     res@trXMaxF = xe 
    3733                   end if
     3006                  end if 
    37343007
    37353008                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
     
    37653038                  res@gsnLeftString      = "wpvptp, wsvpts and wv"
    37663039                  res@gsnRightString     = unit(varn)
    3767                   if (.not. isvar("xs")) then
    3768                      if (parameter(63) .NE. "x0") then
    3769                         res@trXMinF = stringtofloat(parameter(63))
    3770                      else
    3771                         res@trXMinF = min((/miniwpvptp,miniwsvpts,miniwvpt/))
    3772                      end if
     3040                  if (xs .EQ. -1) then
     3041                     res@trXMinF = min((/miniwpvptp,miniwsvpts,miniwvpt/))
    37733042                  else
    37743043                     res@trXMinF = xs
    37753044                  end if
    3776                   if (.not. isvar("xe")) then
    3777                      if (parameter(65) .NE. "xdim") then
    3778                         res@trXMaxF = stringtofloat(parameter(65))
    3779                      else
    3780                         res@trXMaxF = max((/maxiwpvptp,maxiwsvpts,maxiwvpt/))
    3781                      end if
     3045                  if (xe .EQ. -1) then
     3046                     res@trXMaxF = max((/maxiwpvptp,maxiwsvpts,maxiwvpt/))
    37823047                  else
    37833048                     res@trXMaxF = xe 
    3784                   end if
    3785 
     3049                  end if 
     3050                 
    37863051                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
    37873052
     
    38163081                  res@gsnLeftString      = "wpqp, wsqs and wq"
    38173082                  res@gsnRightString     = unit(varn)
    3818                   if (.not. isvar("xs")) then
    3819                      if (parameter(63) .NE. "x0") then
    3820                         res@trXMinF = stringtofloat(parameter(63))
    3821                      else
    3822                         res@trXMinF = min((/miniwpqp,miniwsqs,miniwq/))
    3823                      end if
     3083                  if (xs .EQ. -1) then
     3084                     res@trXMinF = min((/miniwpqp,miniwsqs,miniwq/))
    38243085                  else
    38253086                     res@trXMinF = xs
    38263087                  end if
    3827                   if (.not. isvar("xe")) then
    3828                      if (parameter(65) .NE. "xdim") then
    3829                         res@trXMaxF = stringtofloat(parameter(65))
    3830                      else
    3831                         res@trXMaxF = max((/maxiwpqp,maxiwsqs,maxiwq/))
    3832                      end if
     3088                  if (xe .EQ. -1) then
     3089                     res@trXMaxF = max((/maxiwpqp,maxiwsqs,maxiwq/))
    38333090                  else
    38343091                     res@trXMaxF = xe 
    3835                   end if
    3836 
     3092                  end if 
     3093                 
    38373094                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
    38383095
     
    38673124                  res@gsnLeftString      = "wpqvp, wsqvs and wqv"
    38683125                  res@gsnRightString     = unit(varn)
    3869                   if (.not. isvar("xs")) then
    3870                      if (parameter(63) .NE. "x0") then
    3871                         res@trXMinF = stringtofloat(parameter(63))
    3872                      else
    3873                         res@trXMinF = min((/miniwpqp,miniwsqvs,miniwqv/))
    3874                      end if
     3126                  if (xs .EQ. -1) then
     3127                     res@trXMinF = min((/miniwpqp,miniwsqvs,miniwqv/))
    38753128                  else
    38763129                     res@trXMinF = xs
    38773130                  end if
    3878                   if (.not. isvar("xe")) then
    3879                      if (parameter(65) .NE. "xdim") then
    3880                         res@trXMaxF = stringtofloat(parameter(65))
    3881                      else
    3882                         res@trXMaxF = max((/maxiwpqp,maxiwsqvs,maxiwqv/))
    3883                      end if
     3131                  if (xe .EQ. -1) then
     3132                     res@trXMaxF = max((/maxiwpqp,maxiwsqvs,maxiwqv/))
    38843133                  else
    38853134                     res@trXMaxF = xe 
    3886                   end if
    3887 
     3135                  end if 
     3136                 
    38883137                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
    38893138
     
    39183167                  res@gsnLeftString      = "wpsp, wsss and ws"
    39193168                  res@gsnRightString     = unit(varn)
    3920                   if (.not. isvar("xs")) then
    3921                      if (parameter(63) .NE. "x0") then
    3922                         res@trXMinF = stringtofloat(parameter(63))
    3923                      else
    3924                         res@trXMinF = min((/miniwpsp,miniwsss,miniws/))
    3925                      end if
     3169                  if (xs .EQ. -1) then
     3170                     res@trXMinF = min((/miniwpsp,miniwsss,miniws/))
    39263171                  else
    39273172                     res@trXMinF = xs
    39283173                  end if
    3929                   if (.not. isvar("xe")) then
    3930                      if (parameter(65) .NE. "xdim") then
    3931                         res@trXMaxF = stringtofloat(parameter(65))
    3932                      else
    3933                         res@trXMaxF = max((/maxiwpsp,maxiwsss,maxiws/))
    3934                      end if
     3174                  if (xe .EQ. -1) then
     3175                     res@trXMaxF = max((/maxiwpsp,maxiwsss,maxiws/))
    39353176                  else
    39363177                     res@trXMaxF = xe 
    3937                   end if
     3178                  end if 
    39383179
    39393180                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
     
    39693210                  res@gsnLeftString      = "wpsap, wssas and wsa"
    39703211                  res@gsnRightString     = unit(varn)
    3971                   if (.not. isvar("xs")) then
    3972                      if (parameter(63) .NE. "x0") then
    3973                         res@trXMinF = stringtofloat(parameter(63))
    3974                      else
    3975                         res@trXMinF = min((/miniwpsap,miniwssas,miniwsa/))
    3976                      end if
     3212                  if (xs .EQ. -1) then
     3213                     res@trXMinF = min((/miniwpsap,miniwssas,miniwsa/))
    39773214                  else
    39783215                     res@trXMinF = xs
    39793216                  end if
    3980                   if (.not. isvar("xe")) then
    3981                      if (parameter(65) .NE. "xdim") then
    3982                         res@trXMaxF = stringtofloat(parameter(65))
    3983                      else
    3984                         res@trXMaxF = max((/maxiwpsap,maxiwssas,maxiwsa/))
    3985                      end if
     3217                  if (xe .EQ. -1) then
     3218                     res@trXMaxF = max((/maxiwpsap,maxiwssas,maxiwsa/))
    39863219                  else
    39873220                     res@trXMaxF = xe 
    3988                   end if
     3221                  end if 
    39893222
    39903223                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
     
    40213254                  res@gsnLeftString      = "us2, vs2 and ws2"
    40223255                  res@gsnRightString     = unit(varn)
    4023                   if (.not. isvar("xs")) then
    4024                      if (parameter(63) .NE. "x0") then
    4025                         res@trXMinF = stringtofloat(parameter(63))
    4026                      else
    4027                         res@trXMinF = min((/minius2,minivs2,miniws2/))
    4028                      end if
     3256                  if (xs .EQ. -1) then
     3257                     res@trXMinF = min((/minius2,minivs2,miniws2/))
    40293258                  else
    40303259                     res@trXMinF = xs
    40313260                  end if
    4032                   if (.not. isvar("xe")) then
    4033                      if (parameter(65) .NE. "xdim") then
    4034                         res@trXMaxF = stringtofloat(parameter(65))
    4035                      else
    4036                         res@trXMaxF = max((/maxius2,maxivs2,maxiws2/))
    4037                      end if
    4038                   else
     3261                  if (xe .EQ. -1) then
     3262                     res@trXMaxF = max((/maxius2,maxivs2,maxiws2/))
     3263                  else
    40393264                     res@trXMaxF = xe 
    4040                   end if
    4041 
     3265                  end if 
     3266                 
    40423267                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
    40433268
     
    40733298                  res@gsnLeftString      = "wsususodz, wspsodz and ws2"
    40743299                  res@gsnRightString     = unit(varn)
    4075                   if (.not. isvar("xs")) then
    4076                      if (parameter(63) .NE. "x0") then
    4077                         res@trXMinF = stringtofloat(parameter(63))
    4078                      else
    4079                         res@trXMinF = min((/miniwsususodz,miniwspsodz,miniwpeodz/))
    4080                      end if
     3300                  if (xs .EQ. -1) then
     3301                     res@trXMinF = min((/miniwsususodz,miniwspsodz,miniwpeodz/))
    40813302                  else
    40823303                     res@trXMinF = xs
    40833304                  end if
    4084                   if (.not. isvar("xe")) then
    4085                      if (parameter(65) .NE. "xdim") then
    4086                         res@trXMaxF = stringtofloat(parameter(65))
    4087                      else
    4088                         res@trXMaxF = max((/maxiwsususodz,maxiwspsodz,maxiwpeodz/))
    4089                      end if
     3305                  if (xe .EQ. -1) then
     3306                     res@trXMaxF = max((/maxiwsususodz,maxiwspsodz,maxiwpeodz/))
    40903307                  else
    40913308                     res@trXMaxF = xe 
    4092                   end if
    4093 
     3309                  end if 
     3310                 
    40943311                  plot(n) =  gsn_csm_xy(wks,data(varn,:,:),z,res)
    40953312
     
    41263343         end if
    41273344      end do
    4128    end if     
     3345   end if
     3346   
     3347   com_var_avail=new(count_var,string)   
    41293348
    41303349   if (combine .EQ. 1) then
     
    41453364         end if
    41463365
    4147          if (.not. isvar("var")) then
    4148             if (parameter(21) .NE. "variables") then
    4149                var=parameter(21)               
    4150                check = isStrSubset( var,","+vNam(varn)+"," )
    4151             end if
    4152          else         
     3366         if (var .NE. "all") then         
    41533367            check = isStrSubset( var,","+vNam(varn)+"," )
    41543368         end if     
     
    41853399
    41863400            z=z/norm
    4187            
     3401           
     3402            com_var_avail(n_o)=vNam(varn)
     3403           
    41883404            com=isStrSubset( c_var,","+vNam(varn)+"," )
    41893405       
     
    41993415                     res@gsnLeftString  = "Combined Plot of "+c_var
    42003416                     res@gsnRightString = unit(varn)
    4201                      if (.not. isvar("xs")) then
    4202                         if (parameter(63) .NE. "x0") then
    4203                            res@trXMinF = stringtofloat(parameter(63))
    4204                         else
    4205                            res@trXMinF = min(mini)
    4206                         end if
     3417                     if (xs .EQ. -1) then
     3418                        res@trXMinF = min(mini)
    42073419                     else
    42083420                        res@trXMinF = xs
    42093421                     end if
    4210                      if (.not. isvar("xe")) then
    4211                         if (parameter(65) .NE. "xdim") then
    4212                            res@trXMaxF = stringtofloat(parameter(65))
    4213                         else
    4214                            res@trXMaxF = max(maxi)
    4215                         end if
     3422                     if (xe .EQ. -1) then
     3423                        res@trXMaxF = max(maxi)
    42163424                     else
    42173425                        res@trXMaxF = xe 
     
    42343442            overlay(plot_o(0),plot_o(1))
    42353443         else
    4236             if (.not. isvar("var") .AND. parameter(21) .EQ. "variables") then
    4237                print(" ")
    4238                print("'c_var'(= "+c_var+") is not conform with existing variables on the input file")
    4239                print(" ")
    4240             else
    4241                print(" ")
    4242                print("'c_var'(= "+c_var+") must include two variables of the general plots ('var' = "+var+")")
    4243                print(" ")
    4244             end if
     3444            print(" ")
     3445            print("combining is not possible,")
     3446            print("'c_var'(= "+c_var+") must include two variables of the general plots = ")
     3447            print("- "+com_var_avail)
     3448            print("be sure to have one comma berfore and after the variable")
     3449            print(" ")
     3450            exit 
    42453451         end if
    42463452      end if
     
    42503456            overlay(plot_o(0),plot_o(2))
    42513457         else
    4252             if (.not. isvar("var") .AND. parameter(21) .EQ. "variables") then
    4253                print(" ")
    4254                print("'c_var'(= "+c_var+") is not conform with existing variables on the input file")
    4255                print(" ")
    4256             else
    4257                print(" ")
    4258                print("'c_var'(= "+c_var+") must include three variables of the general plots ('var' = "+var+")")
    4259                print(" ")
    4260             end if
     3458            print(" ")
     3459            print("combining is not possible,")
     3460            print("'c_var'(= "+c_var+") must include three variables of the general plots = ")
     3461            print("- "+com_var_avail)
     3462            print("be sure to have one comma berfore and after the variable")
     3463            print(" ")
     3464            exit
    42613465         end if
    42623466      end if
  • palm/trunk/SCRIPTS/NCL/spectra.ncl

    r183 r190  
    22load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
    33load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
    4  
     4
     5;***************************************************
     6; load ncl_preferences.ncl
     7;***************************************************
     8   
     9if (isfilepresent("~/ncl_preferences.ncl")) then
     10   loadscript("~/ncl_preferences.ncl")
     11else
     12  if (isfilepresent("~/palm/current_version/trunk/SCRIPTS/NCL/ncl_preferences.ncl")) then
     13     loadscript( "~/palm/current_version/trunk/SCRIPTS/NCL/ncl_preferences.ncl")
     14  else
     15      print(" ")
     16      print("'ncl_preferences.ncl' does not exist in $home or $home/palm/current_version/trunk/SCRIPTS/NCL/")
     17      print(" ")
     18      exit
     19   end if
     20end if
     21   
    522begin
    6 
    7    ; ***************************************************
    8    ; read parameter_list
    9    ; ***************************************************
    10 
    11    if (isfilepresent("~/.ncl_preferences")) then
    12       parameter = asciiread("~/.ncl_preferences",129,"string")
    13       delete(parameter@_FillValue)
    14    else
    15       if (isfilepresent("~/palm/current_version/trunk/SCRIPTS/NCL/.ncl_preferences")) then
    16          parameter = asciiread("~/palm/current_version/trunk/SCRIPTS/NCL/.ncl_preferences",129,"string")
    17          delete(parameter@_FillValue)
    18       else
    19          print(" ")
    20          print("'.ncl_preferences' does not exist in '~/palm/current_version/trunk/SCRIPTS/NCL/'")
    21          print(" ")
    22          exit
    23       end if
    24    end if
    25 
    26    if ( .not. isvar("file_1") ) then                     
    27       if (parameter(7) .EQ. "File in") then
    28          print(" ")
    29          print("Please provide 1st input file 'file_1=' either in prompt or parameter_list")
    30          print(" ")
    31          exit
    32       else
    33          file_in = parameter(7)
    34       end if   
     23     
     24   if (cross_sections .NE. 0 .OR. profiles .NE. 0 .OR. timeseries .NE. 0 .OR. spectra .NE. 1)then
     25      print(" ")
     26      print("Please specify the used script in 'ncl_preferences.ncl' (Line 7-10)")
     27      print(" ")
     28      print("Set 'spectra' equal 1 and the other variables equal 0")
     29      print(" ")
     30      exit
     31   end if
     32
     33   ;***************************************************
     34   ; set up default parameter values and strings
     35   ;***************************************************
     36 
     37   if (file_1 .EQ. "File in") then
     38      print(" ")
     39      print("Please provide 1st input file 'file_1=' in 'ncl_preferences.ncl'")
     40      print(" ")
     41      exit
    3542   else
    3643      file_in = file_1   
     
    3845   if (.not. isfilepresent(file_in)) then
    3946      print(" ")
    40       print("Your 1st input file: '"+file_in+"' does not exist")
     47      print("1st input file: '"+file_in+"' does not exist")
    4148      print(" ")
    4249      exit
    4350   end if
    4451
    45    if ( .not. isvar("format_out") ) then               
    46       format_out = "x11"
    47       if (parameter(9) .NE. "x11") then
    48          format_out = parameter(9) 
    49          if (format_out .NE. "x11" .AND. format_out .NE. "pdf" .AND. format_out .NE. "eps" .AND. format_out .NE. "ps" .AND. format_out .NE. "epsi" .AND. format_out .NE. "ncgm")then
    50             print(" ")
    51             print("Your 'format_out = "+format_out+"' is invalid and set to'x11'")
    52             print(" ")
    53          end if 
    54       end if
    55    else
    56       if (format_out .NE. "x11" .AND. format_out .NE. "pdf" .AND. format_out .NE. "eps" .AND. format_out .NE. "ps" .AND. format_out .NE. "epsi" .AND. format_out .NE. "ncgm")then
    57          print(" ")
    58          print("Your 'format_out = "+format_out+"' is invalid and set to'x11'")
    59          print(" ")
    60       end if   
    61    end if
    62 
    63    if ( .not. isvar("file_out") ) then           
    64       file_out = "test"
    65       if (parameter(11) .NE. "test_ts") then
    66          file_out = parameter(11) 
    67      end if     
    68    end if
    69    if ( .not. isvar("no_columns") ) then       
    70       no_columns = 1
    71       if (parameter(17) .NE. "1") then
    72          no_columns = stringtointeger(parameter(17)) 
    73       end if
    74    end if
    75    if ( .not. isvar("no_lines") ) then                 
    76       no_lines = 2
    77       if (parameter(19) .NE. "2") then
    78          no_lines = stringtointeger(parameter(19)) 
    79       end if
     52   if (format_out .NE. "x11" .AND. format_out .NE. "pdf" .AND. format_out .NE. "eps" .AND. format_out .NE. "ps" .AND. format_out .NE. "epsi" .AND. format_out .NE. "ncgm")then
     53      print(" ")
     54      print("'format_out = "+format_out+"' is invalid and set to'x11'")
     55      print(" ")
     56      format_out="x11"
    8057   end if
    81 
    82    if (.not. isvar("logy"))then
    83       logy = 0
    84       if (stringtointeger(parameter(77)) .NE. 0) then
    85          logy = stringtointeger(parameter(77))
    86          if (stringtointeger(parameter(77)) .NE. 1) then
    87             print(" ")
    88             print("Your 'logy'= "+logy+" is invalid and set to 0")
    89             print(" ")
    90             logy = 0
    91          end if   
    92       end if
    93    else
    94       if (logy .NE. 0 .AND. logy .NE. 1)then
    95          print(" ")
    96          print("Your 'logy'= "+logy+" is invalid and set to 0")
    97          print(" ")
    98          logy = 0
    99       end if   
    100    end if
    101 
    102    if ( .not. isvar("sort") ) then                     
    103       sort = "layer"
    104       if (parameter(51) .NE. "layer") then
    105          sort = parameter(51) 
    106          if (sort .NE. "time") then
    107             print(" ")
    108             print("Your 'sort'= "+sort+" is invalid and set to 'layer'")
    109             print(" ")
    110             sort = "layer" 
    111          end if
    112       end if
    113    else
    114       if (sort .NE. "time" .OR. sort .NE. "layer")then
    115          print(" ")
    116          print("Your 'sort'= "+sort+" is invalid and set to 'layer'")
    117          print(" ")
    118          sort = "layer"   
    119       end if
    120    end if
    121 
    122    if ( .not. isvar("black") ) then                     
     58   
     59   if (logx .NE. 0 .AND. logx .NE. 1)then
     60      print(" ")
     61      print("'logx'= "+logx+" is invalid and set to 1")
     62      print(" ")
     63      logx = 1
     64   end if 
     65   
     66   if (logy .NE. 0 .AND. logy .NE. 1)then
     67      print(" ")
     68      print("'logy'= "+logy+" is invalid and set to 1")
     69      print(" ")
     70      logy = 1
     71   end if   
     72 
     73   if (normy .EQ. 0.) then
     74      print(" ")
     75      print("You cannot normalise the y-axis with 0, 'normy' is set to 1.0")
     76      print(" ")
     77      normy = 1.0
     78   end if
     79   if (normx .EQ. 0.) then
     80      print(" ")
     81      print("You cannot normalise the x-axis with 0, 'normx' is set to 1.0")
     82      print(" ")
     83      normx= 1.0
     84   end if
     85   
     86   if (sort .NE. "height" .AND. sort .NE. "time") then 
     87      print(" ")
     88      print("'sort'= "+sort+" is invalid and set to 'height'")
     89      print(" ")
     90      sort = "height" 
     91   end if
     92   
     93   if (black .NE. 0 .AND. black .NE. 1)then
     94      print(" ")
     95      print("'black'= "+black+" is invalid and set to 0")
     96      print(" ")
    12397      black = 0
    124       if (parameter(31) .NE. "0") then
    125          black = stringtointeger(parameter(31))
    126          if (stringtointeger(parameter(31)) .NE. 1) then
    127             print(" ")
    128             print("Your 'black'= "+black+" is invalid and set to 0")
    129             print(" ")
    130             black = 0
    131          end if
    132       end if
    133    else
    134       if (black .NE. 0 .AND. black .NE. 1)then
    135          print(" ")
    136          print("Your 'black'= "+black+" is invalid and set to 0")
    137          print(" ")
    138          black = 0
    139       end if
    140    end if
    141    if ( .not. isvar("dash") ) then                     
     98   end if
     99 
     100   if (dash .NE. 0 .AND. dash .NE. 1)then
     101      print(" ")
     102      print("'dash'= "+dash+" is invalid and set to 0")
     103      print(" ")
    142104      dash = 0
    143       if (parameter(29) .NE. "0") then
    144          dash = stringtointeger(parameter(29))
    145          if (stringtointeger(parameter(29)) .NE. 1) then
    146             print(" ")
    147             print("Your 'dash'= "+dash+" is invalid and set to 0")
    148             print(" ")
    149             dash = 0
    150          end if 
    151       end if
    152    else
    153       if (dash .NE. 0 .AND. dash .NE. 1)then
    154          print(" ")
    155          print("Your 'dash'= "+dash+" is invalid and set to 0")
    156          print(" ")
    157          dash = 0
    158       end if
    159    end if
    160 
    161    if ( .not. isvar("norm") ) then             
    162       norm = 1.0
    163       if (parameter(79) .NE. "1") then
    164          norm = stringtofloat(parameter(79))
    165          if (stringtofloat(parameter(79)) .EQ. 0) then
    166             print(" ")
    167             print("You cannot normalise with 0, 'norm' is set to 1")
    168             print(" ")
    169             norm = 1.0
    170          end if
    171       end if
    172    else
    173       if (norm .EQ. 0) then
    174          print(" ")
    175          print("You cannot normalise with 0, 'norm' is set to 1")
    176          print(" ")
    177          norm = 1.0
    178       end if
    179    end if
     105   end if
     106
     107   ;***************************************************
     108   ; open input file
     109   ;***************************************************
    180110
    181111   f=addfile(file_in,"r")
     
    183113   vNam = getfilevarnames(f)
    184114   print(" ")
    185    print("Variable in input file: " + vNam)
     115   print("Variables in input file:")
     116   print("- "+ vNam)
    186117   print(" ")
    187118   dim = dimsizes(vNam)
     
    192123   delta_t=t_all(nt-1)/nt
    193124   
     125   k_x=f->k_x
     126   dimx=dimsizes(k_x)
     127   k_y=f->k_y
     128   dimy=dimsizes(k_y)
     129   
     130   
     131   dim_level=dimsizes(height_level)
     132
    194133   do i=0,dim-1
    195134      if (vNam(i) .EQ. "zu_sp")then
    196          zu=f->zu_sp
    197          z=zu
    198          dimz=dimsizes(zu)
     135         zu=f->zu_sp     
     136         if (height_level(0) .EQ. -1)then
     137            dimz=dimsizes(zu)
     138         else
     139            if (dim_level .GT. dimsizes(zu))then
     140               print(" ")
     141               print("'height_level' has more elements than available height levels in input file (= "+dimz+")")
     142               print(" ")
     143               exit
     144            else
     145               zuh=new(dim_level,double)
     146               do le=0,dim_level-1
     147                  zuh(le)=zu(height_level(le))
     148               end do
     149               dimz=dim_level
     150            end if   
     151         end if 
    199152      else
    200153         if (vNam(i) .EQ. "zw_sp")then
    201             zw=f->zw_sp
    202             z=zw
    203             dimz=dimsizes(zw)
     154            zw=f->zw_sp
     155            if (height_level(0) .EQ. -1)then             
     156               dimz=dimsizes(zw)
     157            else
     158               if (dim_level .GT. dimsizes(zw))then
     159                  print(" ")
     160                  print("'height_level' has more elements than available height levels in input file (= "+dimz+")")
     161                  print(" ")
     162                  exit
     163               else
     164                  zwh=new(dim_level,double)
     165                  do le=0,dim_level-1
     166                     zwh(le)=zw(height_level(le))
     167                  end do
     168                  dimz=dim_level
     169               end if   
     170            end if
    204171         end if
    205172      end if
    206173   end do
    207    
    208    ; ****************************************************       
     174
     175   ;****************************************************       
    209176   ; start of time step and different types of mistakes that could be done
    210    ; ****************************************************
    211    
    212    if ( .not. isvar("start_time_step") ) then           
     177   ;****************************************************
     178   
     179   if (start_time_step .EQ. -1.d) then         
    213180      start_time_step=t_all(0)/3600
    214       if (parameter(13) .NE. "t(0)") then
    215          if (stringtodouble(parameter(13)) .GT. t_all(nt-1)/3600)then
    216             print(" ")
    217             print("'start_time_step' = "+ parameter(13) +"h is greater than last time step = " + t_all(nt-1)+"s = "+t_all(nt-1)/3600+"h")
    218             print(" ")
    219             print("Please select another 'start_time_step'")
    220             print(" ")
    221             exit
    222          end if
    223          if (stringtofloat(parameter(13)) .LT. t_all(0)/3600)then
    224             print(" ")
    225             print("'start_time_step' = "+ parameter(13) +"h is lower than first time step = " + t_all(0)+"s = "+t_all(0)/3600+"h")           
    226             exit
    227          end if
    228          start_time_step=stringtodouble(parameter(13))
    229       end if
    230    else
     181   else
    231182      if (start_time_step .GT. t_all(nt-1)/3600)then
    232183         print(" ")
     
    243194      end if
    244195   end if
    245    start_time_step = start_time_step*3600
    246196
    247197   do i=0,nt-1     
    248       if (start_time_step .GE. t_all(i)-delta_t/2 .AND. start_time_step .LT. t_all(i)+delta_t/2)then
     198      if (start_time_step .GE. (t_all(i)-delta_t/2)/3600 .AND. start_time_step .LT. (t_all(i)+delta_t/2)/3600)then
    249199         st=i
    250200         break
     
    252202   end do
    253203   
    254    ; ****************************************************
     204   if (.not. isvar("st"))then
     205      print(" ")
     206      print("'start_time_step' = "+ start_time_step +"h is invalid")
     207      print(" ")
     208      print("Please select another 'start_time_step'")
     209      print(" ")
     210      exit
     211   end if
     212   
     213   ;****************************************************
    255214   ; end of time step and different types of mistakes that could be done
    256    ; ****************************************************
    257 
    258    if ( .not. isvar("end_time_step") ) then             
     215   ;****************************************************
     216
     217   if (end_time_step .EQ. -1.d) then           
    259218      end_time_step = t_all(nt-1)/3600
    260       if (parameter(15) .NE. "t(end)") then
    261          if (stringtodouble(parameter(15)) .GT. t_all(nt-1)/3600)then
    262             print(" ")
    263             print("'end_time_step' = "+ parameter(15) +"h is greater than last time step = " + t_all(nt-1)+"s = "+t_all(nt-1)/3600+"h")
    264             print(" ")
    265             print("Please select another 'end_time_step'") 
    266             print(" ")
    267             exit
    268          end if
    269          if (stringtodouble(parameter(15)) .LT. start_time_step/3600)then
    270             print(" ")
    271             print("'end_time_step' = "+ parameter(15) +"h is lower than 'start_time_step' = "+start_time_step/3600+"h")
    272             print(" ")
    273             print("Please select another 'start_time_step' or 'end_time_step'")
    274             print(" ")
    275             exit
    276          end if
    277          end_time_step = stringtodouble(parameter(15))
    278       end if   
    279219   else
    280220      if (end_time_step .GT. t_all(nt-1)/3600)then
     
    295235      end if
    296236   end if
    297    end_time_step = end_time_step*3600
    298237
    299238   do i=0,nt-1     
    300       if (end_time_step .GE. t_all(i)-delta_t/2 .AND. end_time_step .LT. t_all(i)+delta_t/2)then
     239      if (end_time_step .GE. (t_all(i)-delta_t/2)/3600 .AND. end_time_step .LT. (t_all(i)+delta_t/2)/3600)then
    301240         et=i
    302241         break
    303242      end if
    304243   end do
     244   
     245   if (.not. isvar("et"))then
     246      print(" ")
     247      print("'end_time_step' = "+ end_time_step +"h is invalid")
     248      print(" ")
     249      print("Please select another 'end_time_step'")
     250      print(" ")
     251      exit
     252   end if
    305253
    306254   delete(start_time_step)
     
    316264   dimt = end_time_step-start_time_step+1
    317265 
    318    ; ***************************************************
     266   ;***************************************************
    319267   ; set up recourses
    320    ; ***************************************************
     268   ;***************************************************
    321269     
    322270   res = True
     
    337285   res@pmLegendDisplayMode     = "Always"
    338286   res@pmLegendSide            = "Top"
    339    res@pmLegendParallelPosF    = 1.15
     287   res@pmLegendParallelPosF    = 1.2
    340288   res@pmLegendOrthogonalPosF  = -1.0
    341289   res@pmLegendWidthF          = 0.12
     
    345293      res@pmLegendHeightF         = 0.04*dimz
    346294   end if
    347    res@lgLabelFontHeightF     = .02
    348    res@lgTitleFontHeightF     = .02
    349    res@txFontHeightF      = 0.02
    350    res@tiXAxisFontHeightF = 0.02
    351    res@tiYAxisFontHeightF = 0.02
    352    
    353    if (logy .EQ. 1) then
     295   res@lgLabelFontHeightF     = .025
     296   res@lgTitleFontHeightF     = .025
     297   res@txFontHeightF      = 0.025
     298   res@tiXAxisFontHeightF = 0.025
     299   res@tiYAxisFontHeightF = 0.025
     300   
     301   if (logx .EQ. 1) then
    354302      res@trXLog = True
     303   else
     304      res@trXLog = False
     305   end if
     306   if (logy .EQ. 1)then
    355307      res@trYLog = True
    356    else
    357       res@trXLog = False
     308   else 
    358309      res@trYLog = False
    359310   end if
     
    379330      res@lgTitleString = "Height [m]" 
    380331      do p=0,dimz-1
    381          legend_label_zu(p)=round(zu(p),3)
    382          legend_label_zw(p)=round(zw(p),3)
     332         if (height_level(0) .EQ. -1)then
     333            legend_label_zu(p)=round(zu(p),3)
     334            legend_label_zw(p)=round(zw(p),3)
     335         else
     336            legend_label_zu(p)=round(zuh(p),3)
     337            legend_label_zw(p)=round(zwh(p),3)
     338         end if
    383339      end do
    384340   end if
    385 
    386    if ( black .eq. 0 ) then 
    387       res@xyLineColors = ispan(2,237,235/np)
     341   
     342   step=round(235/(np-1),3)
     343   if (black .eq. 0 ) then 
     344      res@xyLineColors = ispan(2,237,step)
    388345   end if
    389346   if ( dash .eq. 0 ) then
    390       res@xyMonoDashPattern       = True
     347      res@xyMonoDashPattern = True
    391348   end if
    392349
    393350   wks=gsn_open_wks(format_out,file_out)
    394351   gsn_define_colormap(wks,"rainbow+white")
     352
     353   temp=new((/dimt,dimz,dimx/),float)
    395354
    396355   n=0
     
    403362      end if
    404363
    405       if (.not. isvar("var")) then
    406          if (parameter(21) .NE. "variables") then
    407             var=parameter(21)
    408             check = isStrSubset( var,","+vNam(varn)+"," )
    409          end if
    410       else         
     364      if (var .NE. "all") then
    411365         check = isStrSubset( var,","+vNam(varn)+"," )
    412366      end if
    413367
    414       if(check) then
    415 
     368      if(check) then 
     369     
    416370         temp = f->$vNam(varn)$(start_time_step:end_time_step,0:dimz-1,:)
    417 
    418          temp=temp/norm  ;SMOOTHING: #temp=smth9(temp/norm, 0.50, -0.25, False)#
    419    
     371           
    420372         a=getvardims(temp)
    421          b=dimsizes(a)           
     373         b=dimsizes(a)
     374
     375         if (height_level(0) .NE. -1)then
     376            do te=0,dimz-1
     377               temp(:,te,:) = f->$vNam(varn)$(start_time_step:end_time_step,height_level(te),:)       
     378            end do
     379         end if
     380
     381         temp=temp/(normy*normx)  ;SMOOTHING: #temp=smth9(temp/norm, 0.50, -0.25, False)#
     382           
    422383         do i=0,b-1           
    423384            if (isStrSubset( a(i),"zu_sp" ))then
    424385               legend_label_z=legend_label_zu
     386               if (height_level(0) .NE. -1)then
     387                  z=zuh
     388               else
     389                  z=zu
     390               end if
    425391            else
    426392               if (isStrSubset( a(i),"zw_sp" ))then
    427                   legend_label_z=legend_label_zw     
     393                  legend_label_z=legend_label_zw
     394                  if (height_level(0) .NE. -1)then
     395                     z=zwh
     396                  else
     397                     z=zw
     398                  end if   
    428399               end if
    429400            end if
    430401         end do 
     402
    431403         if (isStrSubset(vNam(varn),"x"))then
    432404            x_axis = f->k_x
    433             res@tiXAxisString = "k_x"
     405            x_axis = x_axis/normx
     406            if (normx .NE. 1.)then
     407               res@tiXAxisString = "k_x / "+normx
     408            else
     409               res@tiXAxisString = "k_x"
     410            end if
    434411         else
    435412            x_axis = f->k_y
    436             res@tiXAxisString = "k_y"
     413            x_axis = x_axis/normx
     414            if (normx .NE. 1.)then
     415               res@tiXAxisString = "k_y / "+normx
     416            else
     417               res@tiXAxisString = "k_y"
     418            end if
    437419         end if
    438420       
    439421         if (sort .EQ. "time")
    440             do p=dimz-1,0,1 
    441                do q=0,dimt-1
    442                   do r=0,dimsizes(x_axis)-1
    443                      if (temp(q,p,r) .EQ. 0)then
    444                         st=p+start_time_step
    445                         print(" ")
    446                         print("'"+vNam(varn)+"("+st+","+q+","+r+")' is equal 0; Logarithmic scale for y-axis cannot be used")
    447                         print(" ")
    448                         res@trYLog = False
    449                      end if
     422            do p=dimz-1,0,1
     423               if (logy .EQ. 1)then 
     424                  do q=0,dimt-1
     425                     do r=0,dimsizes(x_axis)-1
     426                        if (temp(q,p,r) .EQ. 0)then
     427                           st=p+start_time_step
     428                           print(" ")
     429                           print("'"+vNam(varn)+"("+st+","+q+","+r+")' is equal 0; Logarithmic scale for y-axis and height "+z(p)+" cannot be used")
     430                           print(" ")
     431                           res@trYLog = False
     432                        end if
     433                     end do
    450434                  end do
    451                end do
     435               end if
    452436               res@trXMinF = min(x_axis)
    453437               res@trXMaxF = max(x_axis)
    454438               res@gsnLeftString      = vNam(varn)
    455439               res@gsnRightString     = "Height = "+z(p)+"m"
    456                if (norm .NE. 1)then
    457                   res@tiYAxisString      = vNam(varn)+" / "+norm
     440               if (normy .NE. 1.)then
     441                  res@tiYAxisString      = vNam(varn)+" / "+normy
    458442               else
    459443                  res@tiYAxisString      = vNam(varn)
     
    464448            end do
    465449         else
    466             if (sort .EQ. "layer")
    467                do p=dimt-1,0,1
     450            if (sort .EQ. "height")
     451               do p=0,dimt-1         
    468452                  do q=0,dimz-1
    469453                     do r=0,dimsizes(x_axis)-1
     
    471455                           st=p+start_time_step
    472456                           print(" ")
    473                            print("'"+vNam(varn)+"("+st+","+q+","+r+")' is equal 0; Logarithmic scale for y-axis cannot be used")
     457                           print("'"+vNam(varn)+"("+st+","+q+","+r+")' is equal 0; Logarithmic scale for y-axis and time "+legend_label(p)+" cannot be used")
    474458                           print(" ")
    475459                           res@trYLog = False
     
    481465                  res@gsnLeftString      = vNam(varn)
    482466                  res@gsnRightString     = "Time = "+legend_label(p)+"h"
    483                   if (norm .NE. 1)then
    484                      res@tiYAxisString      = vNam(varn)+" / "+norm
     467                  if (normy .NE. 1.)then
     468                     res@tiYAxisString      = vNam(varn)+" / "+normy
    485469                  else
    486470                     res@tiYAxisString      = vNam(varn)
     
    490474                  n=n+1
    491475               end do
    492             else
    493                print(" ")
    494                print("Please choose 'sort' either equal 'time' or 'height'")
    495                print(" ")
    496                exit
    497476            end if
    498         end if
     477        end if
    499478         delete(temp)
    500479         delete(x_axis)
     
    504483   if (n .EQ. 0) then
    505484      print(" ")
    506       print("The variables 'var=°"+var+"°' do not exist on your input file")
     485      print("The variables 'var="+var+"' do not exist on your input file;")
     486      print("be sure to have one comma berfore and after each variable")
    507487      print(" ")
    508488      exit
  • palm/trunk/SCRIPTS/NCL/timeseries.ncl

    r175 r190  
    1 load "$NCARG_ROOT/lib/ncarg/nclex/gsun/gsn_code.ncl"
     16load "$NCARG_ROOT/lib/ncarg/nclex/gsun/gsn_code.ncl"
    22load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
    33load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
    44load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl"
    5 
     5 
     6;***************************************************
     7; load ncl_preferences.ncl
     8;***************************************************
     9   
     10if (isfilepresent("~/ncl_preferences.ncl")) then
     11   loadscript("~/ncl_preferences.ncl")
     12else
     13  if (isfilepresent("~/palm/current_version/trunk/SCRIPTS/NCL/ncl_preferences.ncl")) then
     14     loadscript( "~/palm/current_version/trunk/SCRIPTS/NCL/ncl_preferences.ncl")
     15  else
     16      print(" ")
     17      print("'ncl_preferences.ncl' does not exist in $home or $home/palm/current_version/trunk/SCRIPTS/NCL/")
     18      print(" ")
     19      exit
     20   end if
     21end if
     22   
    623begin
    7  
    8    ; ***************************************************
    9    ; read parameter_list
    10    ; ***************************************************
    11    
    12    if (isfilepresent("~/.ncl_preferences")) then
    13       parameter = asciiread("~/.ncl_preferences",129,"string")
    14       delete(parameter@_FillValue)
    15    else
    16       if (isfilepresent("~/palm/current_version/trunk/SRIPTS/NCL/.ncl_preferences")) then
    17          parameter = asciiread("~/palm/current_version/trunk/SRIPTS/NCL/.ncl_preferences",129,"string")
    18          delete(parameter@_FillValue)
    19       else
    20          print(" ")
    21          print("'.ncl_preferences' is not present in '~/palm/current_version/trunk/SRIPTS/NCL/'")
    22          print(" ")
    23          exit
    24       end if
     24     
     25   if (cross_sections .NE. 0 .OR. profiles .NE. 0 .OR. timeseries .NE. 1 .OR. spectra .NE. 0)then
     26      print(" ")
     27      print("Please specify the used script in 'ncl_preferences.ncl' (Line 7-10)")
     28      print(" ")
     29      print("Set 'timeseries' equal 1 and the other variables equal 0")
     30      print(" ")
     31      exit
    2532   end if
    2633
    27    ; ***************************************************
    28    ; set up default parameter values and strings if not assigned in prompt or parameter list
    29    ; ***************************************************
     34   ;***************************************************
     35   ; set up default parameter values and strings
     36   ;***************************************************
    3037 
    31    if ( .not. isvar("file_1") ) then                     
    32       if (parameter(7) .EQ. "File in") then
    33          print(" ")
    34          print("Please provide 1st input file 'file_1=' either in prompt or parameter_list")
    35          print(" ")
    36          exit
    37       else
    38          file_in = parameter(7)
    39       end if   
     38   if (file_1 .EQ. "File in") then
     39      print(" ")
     40      print("Please provide 1st input file 'file_1=' in 'ncl_preferences.ncl'")
     41      print(" ")
     42      exit
    4043   else
    4144      file_in = file_1   
     
    4346   if (.not. isfilepresent(file_in)) then
    4447      print(" ")
    45       print("Your 1st input file: '"+file_in+"' does not exist")
     48      print("1st input file: '"+file_in+"' does not exist")
    4649      print(" ")
    4750      exit
    4851   end if
    4952
    50    if ( .not. isvar("format_out") ) then               
    51       format_out = "x11"
    52       if (parameter(9) .NE. "x11") then
    53          format_out = parameter(9) 
    54          if (format_out .NE. "x11" .AND. format_out .NE. "pdf" .AND. format_out .NE. "eps" .AND. format_out .NE. "ps" .AND. format_out .NE. "epsi" .AND. format_out .NE. "ncgm")then
    55             print(" ")
    56             print("Your 'format_out = "+format_out+"' is invalid and set to'x11'")
    57             print(" ")
    58          end if 
    59       end if
    60    else
    61       if (format_out .NE. "x11" .AND. format_out .NE. "pdf" .AND. format_out .NE. "eps" .AND. format_out .NE. "ps" .AND. format_out .NE. "epsi" .AND. format_out .NE. "ncgm")then
    62          print(" ")
    63          print("Your 'format_out = "+format_out+"' is invalid and set to'x11'")
    64          print(" ")
    65       end if   
    66    end if
    67 
    68    if ( .not. isvar("file_out") ) then                  ; path+name of output file
    69       file_out = "test"
    70       if (parameter(11) .NE. "test") then
    71          file_out = parameter(11) 
    72       end if     
    73    end if
    74 
    75    if ( .not. isvar("no_columns") ) then                ; number of plots in one row
    76       no_columns = 1
    77       if (parameter(17) .NE. "1") then
    78          no_columns = stringtointeger(parameter(17)) 
    79       end if
    80    end if
    81 
    82    if ( .not. isvar("no_lines") ) then                  ; number of plot-lines on one sheet
    83       no_lines = 2
    84       if (parameter(19) .NE. "2") then
    85          no_lines = stringtointeger(parameter(19)) 
    86       end if
     53   if (format_out .NE. "x11" .AND. format_out .NE. "pdf" .AND. format_out .NE. "eps" .AND. format_out .NE. "ps" .AND. format_out .NE. "epsi" .AND. format_out .NE. "ncgm")then
     54      print(" ")
     55      print("'format_out = "+format_out+"' is invalid and set to'x11'")
     56      print(" ")
     57      format_out="x11"
    8758   end if 
    8859
    89    if ( .not. isvar("var") ) then                       ; variable name
    90       check = True
    91    end if
    92 
    93    if ( .not. isvar("over") ) then                      ; switches overlaying plots on
     60   if (over .NE. 0 .AND. over .NE. 1) then
     61      print(" ")
     62      print("'over'= "+over+" is invalid and set to 0")
     63      print(" ")
    9464      over = 0
    95       if (stringtointeger(parameter(37)) .NE. 0) then
    96          over = stringtointeger(parameter(37))
    97          if (stringtointeger(parameter(37)) .NE. 1) then
    98             print(" ")
    99             print("Your 'over'= "+over+" is invalid and set to 0")
    100             print(" ")
    101             over = 0
    102          end if   
    103       end if
    104    else
    105       if (over .NE. 0 .AND. over .NE. 1)then
    106          print(" ")
    107          print("Your 'over'= "+over+" is invalid and set to 0")
    108          print(" ")
    109          over = 0
    110       end if
    111    end if
    112 
    113    ; ***************************************************
     65   end if   
     66 
     67
     68   ;***************************************************
    11469   ; open input file
    115    ; ***************************************************
     70   ;***************************************************
    11671
    11772   f  = addfile(file_in , "r" )
     
    11974   vNam  = getfilevarnames(f)
    12075   print(" ")
    121    print("Variable on netCDF file: " + vNam)
     76   print("Variables in input file:")
     77   print("- "+ vNam)
    12278   print(" ")
    12379   dim = dimsizes(vNam)
     
    13187   nt  = dimsizes(t_all)
    13288   delta_t=t_all(nt-1)/nt
    133 
    134    ; ****************************************************       
     89   
     90   ;****************************************************       
    13591   ; start of time step and different types of mistakes that could be done
    136    ; ****************************************************
    137 
    138    if ( .not. isvar("start_time_step") ) then           
    139       start_time_step=t_all(0)/3600
    140       if (parameter(13) .NE. "t(0)") then
    141          if (stringtodouble(parameter(13)) .GE. t_all(nt-1)/3600)
    142             print(" ")
    143             print("'start_time_step' = "+ parameter(13) +"h is equal or greater than last time step = " + t_all(nt-1)+"s = "+t_all(nt-1)/3600+"h")
    144             print(" ")
    145             print("Please select another 'start_time_step'")
    146             print(" ")
    147             exit
    148          end if
    149          if (stringtofloat(parameter(13)) .LT. t_all(0)/3600)
    150             print(" ")
    151             print("'start_time_step' = "+ parameter(13) +"h is lower than first time step = " + t_all(0)+"s = "+t_all(0)/3600+"h")
    152             print(" ")
    153             print("Please select another 'start_time_step'")
    154             print(" ")
    155             exit
    156          end if
    157          start_time_step=stringtodouble(parameter(13))
    158       end if
     92   ;****************************************************
     93
     94   if (start_time_step .EQ. -1.) then           
     95      start_time_step=t_all(0)/3600     
    15996   else
    16097      if (start_time_step .GE. t_all(nt-1)/3600)
     
    175112      end if
    176113   end if
    177    start_time_step = start_time_step*3600
    178114   do i=0,nt-2     
    179       if (start_time_step .GE. t_all(i)-delta_t/2 .AND. start_time_step .LT. t_all(i)+delta_t/2)then
     115      if (start_time_step .GE. (t_all(i)-delta_t/2)/3600 .AND. start_time_step .LT. (t_all(i)+delta_t/2)/3600)then
    180116         st=i
    181117         break
     
    185121      st=nt-2   
    186122   end if
    187      
    188    ; ****************************************************
     123   if (.not. isvar("st"))then
     124      print(" ")
     125      print("'start_time_step' = "+ start_time_step +"h is invalid")
     126      print(" ")
     127      print("Please select another 'start_time_step'")
     128      print(" ")
     129      exit
     130   end if
     131     
     132   ;****************************************************
    189133   ; end of time step and different types of mistakes that could be done
    190    ; ****************************************************
    191 
    192    if ( .not. isvar("end_time_step") ) then             
    193       end_time_step = t_all(nt-1)/3600
    194       if (parameter(15) .NE. "t(end)") then
    195          if (stringtodouble(parameter(15)) .LE. t_all(0)/3600)
    196             print(" ")
    197             print("'end_time_step' = "+parameter(15)+ "h is lower or equal than first time step = " + t_all(0)+"s = "+t_all(0)/3600+"h")
    198             print(" ")
    199             print("Please select another 'end_time_step'")
    200             print(" ")
    201             exit
    202          end if
    203          if (stringtodouble(parameter(15)) .GT. t_all(nt-1)/3600)
    204             print(" ")
    205             print("'end_time_step' = "+ parameter(15) +"h is greater than last time step = " + t_all(nt-1)+"s = "+t_all(nt-1)/3600+"h")
    206             print(" ")
    207             print("Please select another 'end_time_step'") 
    208             print(" ")
    209             exit
    210          end if
    211          if (stringtodouble(parameter(15)) .LE. start_time_step/3600)
    212             print(" ")
    213             print("'end_time_step' = "+ parameter(15) +"h is equal or lower than 'start_time_step' = "+parameter(13)+"h")
    214             print(" ")
    215             print("Please select another 'start_time_step' or 'end_time_step'")
    216             print(" ")
    217             exit
    218          end if
    219          end_time_step = stringtodouble(parameter(15))
    220       end if   
     134   ;****************************************************
     135
     136   if (end_time_step .EQ. -1.) then             
     137      end_time_step = t_all(nt-1)/3600 
    221138   else
    222139      if (end_time_step .LE. t_all(0)/3600)
     
    245162      end if
    246163   end if
    247    end_time_step = end_time_step*3600
    248164   do i=0,nt-1     
    249       if (end_time_step .GE. t_all(i)-delta_t/2 .AND. end_time_step .LT. t_all(i)+delta_t/2)then
     165      if (end_time_step .GE. (t_all(i)-delta_t/2)/3600 .AND. end_time_step .LT. (t_all(i)+delta_t/2)/3600)then
    250166         et=i
    251167         break
    252168      end if
    253169   end do
     170   
     171   if (.not. isvar("et"))then
     172      print(" ")
     173      print("'end_time_step' = "+ end_time_step +"h is invalid")
     174      print(" ")
     175      print("Please select another 'end_time_step'")
     176      print(" ")
     177      exit
     178   end if
    254179 
    255180   delete(start_time_step)
     
    358283         check = True
    359284      end if
    360       if( isvar("var") ) then                   
    361          check = isStrSubset( var,","+vNam(varn)+"," )
    362       end if
    363       if (parameter(21) .NE. "variables") then
    364          var = parameter(21)
     285 
     286      if (var .NE. "all") then
    365287         check = isStrSubset( var,","+vNam(varn)+"," )
    366288      end if
     
    519441   if (count_var .EQ. 0) then
    520442      print(" ")
    521       print("The variables 'var=°"+var+"°' do not exist on your input file")
     443      print("The variables 'var="+var+"' do not exist on your input file;")
     444      print("be sure to have one comma berfore and after each variable")
    522445      print(" ")
    523446      exit
     
    531454         check = True
    532455      end if     
    533       if( isvar("var") ) then                   
    534          check = isStrSubset( var,","+vNam(varn)+"," )
    535       end if
    536       if (parameter(21) .NE. "variables") then
    537          var = parameter(21)
     456   
     457      if (var .NE. "all") then
    538458         check = isStrSubset( var,","+vNam(varn)+"," )
    539459      end if
     
    709629         check = True
    710630      end if   
    711       if( isvar("var") ) then                   
    712          check = isStrSubset( var,","+vNam(varn)+"," )
    713       end if
    714       if (parameter(21) .NE. "variables") then
    715          var = parameter(21)
     631 
     632      if (var.NE. "all") then
    716633         check = isStrSubset( var,","+vNam(varn)+"," )
    717634      end if
Note: See TracChangeset for help on using the changeset viewer.