source: palm/trunk/SCRIPTS/palmplot @ 1038

Last change on this file since 1038 was 776, checked in by heinze, 13 years ago

Bugfixes: increase of binary_version due to output of lpt_av, palmplot: adjustment for DKRZ (ibmh)

  • Property svn:executable set to *
  • Property svn:keywords set to Id
File size: 5.2 KB
RevLine 
[513]1#!/bin/ksh
2# palmplot - script for running the NCL scripts
3# $Id: palmplot 776 2011-10-31 08:02:51Z raasch $
4
5    # Using the available NCL scripts via the shell script palmplot
6
7    # Last changes
8    # 16/03/10 - Rieke - initial revision
[526]9    # 30/03/10 - Rieke - substituting double quotes (") with a character
10    #                    variable (dq) containing double quotes
[529]11    # 31/03/10 - Rieke - list of variable names can be specified using
12    #                    blank separated lists instead of comma
13    #                    separated lists
[530]14    # 01/04/10 - Rieke - bugfix - treatment of special character *
15    #                    in NCL variables containing lists corrected
[566]16    # 23/08/10 - Rieke - bugfix - "" had to be added in if-queries
17    # 30/09/10 - Rieke - Link to new online documentation of PALM NCL scripts
[776]18    # 31/10/11 - Rieke - Adjustement so that palmplot also works on
19    #                    DKRZ (ibmh)
[513]20
21
22 # SHORT INTRODUCTION FOR USING THIS SCRIPT
23 if [[ "$1" = "?"  || "$1" = "--help" || "$1" = "-h" ]]
24  then
25    (printf "\n   palmplot is designed to run the NCL scripts of PALM \n"
26     printf "\n   palmplot can be called as follows:"
[529]27     printf "\n   palmplot script_identifier file_1=OUTPUT/test.nc file_out=test format_out=pdf var='pt w\"pt\" w*pt* u' no_rows=2 ...\n"
[513]28     printf "\n   script_identifier has to be one of the following:"
29     printf "\n    xy, xz, yz, pr, ts, sp"
[566]30     printf "\n   in dependence on the data that wants to be plotted\n"
[513]31     printf "\n   the further arguments control the plot"
32     printf "\n   they can also be set in the configuration file .ncl.config"
[566]33     printf "\n   a documentation is available at"
34     printf "\n   http://palm.muk.uni-hannover.de/wiki/doc/app/ncl \n\n")
[513]35     exit
36 fi
37
38
39 # DEFINITION OF VARIABLES
40 a=""
41 arg=""
[529]42 b=""
[513]43 key=""
44 script=""
45 value=""
46 CMDLINE=""
47 STRINGPARAMS=""
48 STRINGPARAMS_CO=""
49 STRINGPARAMS_CS=""
50 STRINGPARAMS_PR="" 
51 STRINGPARAMS_SP=""
52 STRINGPARAMS_TS=""
[529]53 STRINGPARAMS_VA=""
[513]54
55
56 # LIST OF THE PARAMETERS OF THE NCL SCRIPTS WHICH NCL EXPECTED TO BE STRINGS
57 # CO: PARAMETERS WHICH ARE COMMON FOR ALL NCL SCRIPTS
58 # CS: cross_sections.ncl PR: profiles.ncl SP: spectra.ncl TS: timeseries.ncl
[529]59 # VA: PARAMETERS WHICH CONTAIN LISTS OF VARIABLE NAMES
[513]60 STRINGPARAMS_CO="file_1 format_out file_out var "
61 STRINGPARAMS_CS="sort mode fill_mode unit_x unit_y unit_z vec1 vec2 plotvec"
62 STRINGPARAMS_PR="file_2 file_3 file_4 file_5 file_6 name_legend_1 name_legend_2 name_legend_3 name_legend_4 name_legend_5 name_legend_6 c_var"
63 STRINGPARAMS_SP="sort unit_x unit_y"
64 STRINGPARAMS_TS="unit_t"
[529]65 STRINGPARAMS_VA="var c_var vec1 vec2 plotvec"
[513]66
67
68 # CHOICE OF THE PARTICULAR NCL SCRIPT
69 if [[ "$1" == "xy" ]]
70  then
71    script="cross_sections.ncl"
72    STRINGPARAMS=$STRINGPARAMS_CO$STRINGPARAMS_CS
73    CMDLINE="xyc=1 "
74  elif [[ "$1" == "xz" ]]
75    then
76    script="cross_sections.ncl"
77    STRINGPARAMS=$STRINGPARAMS_CO$STRINGPARAMS_CS
78    CMDLINE="xzc=1 "
79  elif [[ "$1" == "yz" ]]
80    then
81    script="cross_sections.ncl"
82    STRINGPARAMS=$STRINGPARAMS_CO$STRINGPARAMS_CS
83    CMDLINE="yzc=1 "
84  elif [[ "$1" == "pr" ]]
85    then
86    script="profiles.ncl"
87    STRINGPARAMS=$STRINGPARAMS_CO$STRINGPARAMS_PR
88  elif [[ "$1" == "ts" ]]
89    then
90    script="timeseries.ncl"
91    STRINGPARAMS=$STRINGPARAMS_CO$STRINGPARAMS_TS
92  elif [[ "$1" == "sp" ]]
93    then
94    script="spectra.ncl"
95    STRINGPARAMS=$STRINGPARAMS_CO$STRINGPARAMS_SP
96   else
97     (printf "\n  first argument has to be one of the following:"
98      printf "\n   xy, xz, yz, pr, ts or sp \n" 
99      printf "\n  type \"palmplot ?\" for information about the usage of this script\n")
100     exit
101 fi
102
103 # SHIFTING THE FIRST COMMAND LINE ARGUMENT
104 shift 
105
106 # PROCESSING THE COMMAND LINE ARGUMENTS
107 while [ $# -gt 0 ] 
108 do
109    arg=$1
110    key=${arg%%=*}
111    value=${arg#*=}
[529]112
[513]113    # ALLOWING RELATIVE AND ABSOLUTE FILE PATHS
114    if [[ "$key" ==  @(file_*) && "$value" != @(~/*|/*) ]]
115    then
116       value=$PWD/$value
117    fi
118     
[526]119    # PROCESSING STRINGS
[513]120    for a in $STRINGPARAMS
121    do
122      if [ "$key" = "$a" ]
123      then
[529]124
125         # PROCESSING STRINGS CONTAINING LISTS OF VARIABLES
126         for b in $STRINGPARAMS_VA
127         do
128           if [ "$key" = "$b" ]
129           then
130              if [[ "$value" != "all" ]]
131              then
132                 # SUBSTITUTING BLANKS WITH COMMAS IN
133                 # PARAMETERS CONTAINING LISTS OF VARIABLES
[530]134                 value=`echo $value | sed 's/ /,/g'`   
[549]135                 # ALLOWING THE USAGE OF COMMA SEPARATED LIST AS WELL   
136           
137                 if [[ "$value" == "${value#,}" ]]
[529]138                 then
139                    value=,$value
140                 fi
[549]141                 if [[ "$value" == "${value%,}" ]]
[529]142                 then
143                    value=$value,
[549]144                 fi         
[530]145                 value=${value/%\*,,/\*,}                 
[529]146                 break
147              fi
148           fi
149         done
150
[526]151         # SUBSTITUTING DOUBLE QUOTES - REQUIRED BY NCL
152         value=`echo $value | sed 's/\"/\"+dq+\"/g'`
153         # SETTING ENTIRE STRING IN DOUBLE QUOTES - REQUIRED BY NCL
[513]154         value=\"$value\"
155      fi
156    done
157
[776]158    CMDLINE=$CMDLINE"$key=$value "
[513]159    shift
160 done
161
162 # EXECUTING THE PARTICULAR NCL SCRIPT
163 cd $PALM_BIN/NCL
[526]164 ncl 'dq=str_get_dq()' $script $CMDLINE 
[513]165
166
167
168
169
170
Note: See TracBrowser for help on using the repository browser.