source: palm/trunk/SCRIPTS/palmplot @ 2696

Last change on this file since 2696 was 2696, checked in by kanani, 7 years ago

Merge of branch palm4u into trunk

  • Property svn:executable set to *
  • Property svn:keywords set to Id
File size: 6.2 KB
Line 
1#!/bin/ksh
2#--------------------------------------------------------------------------------#
3# This file is part of the PALM model system.
4#
5# PALM is free software: you can redistribute it and/or modify it under the terms
6# of the GNU General Public License as published by the Free Software Foundation,
7# either version 3 of the License, or (at your option) any later version.
8#
9# PALM is distributed in the hope that it will be useful, but WITHOUT ANY
10# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
11# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License along with
14# PALM. If not, see <http://www.gnu.org/licenses/>.
15#
16# Copyright 1997-2017  Leibniz Universitaet Hannover
17#--------------------------------------------------------------------------------#
18#
19# Current revisions:
20# -----------------
21#
22# Former revisions:
23# -----------------
24# $Id: palmplot 2696 2017-12-14 17:12:51Z kanani $
25#
26# 1046 2012-11-09 14:38:45Z maronga
27# code put under GPL (PALM 3.9)
28#
29# palmplot - script for running the NCL scripts
30    # Using the available NCL scripts via the shell script palmplot
31
32    # Last changes
33    # 16/03/10 - Rieke - initial revision
34    # 30/03/10 - Rieke - substituting double quotes (") with a character
35    #                    variable (dq) containing double quotes
36    # 31/03/10 - Rieke - list of variable names can be specified using
37    #                    blank separated lists instead of comma
38    #                    separated lists
39    # 01/04/10 - Rieke - bugfix - treatment of special character *
40    #                    in NCL variables containing lists corrected
41    # 23/08/10 - Rieke - bugfix - "" had to be added in if-queries
42    # 30/09/10 - Rieke - Link to new online documentation of PALM NCL scripts
43    # 31/10/11 - Rieke - Adjustement so that palmplot also works on
44    #                    DKRZ (ibmh)
45
46
47 # SHORT INTRODUCTION FOR USING THIS SCRIPT
48 if [[ "$1" = "?"  || "$1" = "--help" || "$1" = "-h" ]]
49  then
50    (printf "\n   palmplot is designed to run the NCL scripts of PALM \n"
51     printf "\n   palmplot can be called as follows:"
52     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"
53     printf "\n   script_identifier has to be one of the following:"
54     printf "\n    xy, xz, yz, pr, ts, sp"
55     printf "\n   in dependence on the data that wants to be plotted\n"
56     printf "\n   the further arguments control the plot"
57     printf "\n   they can also be set in the configuration file .ncl.config"
58     printf "\n   a documentation is available at"
59     printf "\n   http://palm.muk.uni-hannover.de/wiki/doc/app/ncl \n\n")
60     exit
61 fi
62
63
64 # DEFINITION OF VARIABLES
65 a=""
66 arg=""
67 b=""
68 key=""
69 script=""
70 value=""
71 CMDLINE=""
72 STRINGPARAMS=""
73 STRINGPARAMS_CO=""
74 STRINGPARAMS_CS=""
75 STRINGPARAMS_PR="" 
76 STRINGPARAMS_SP=""
77 STRINGPARAMS_TS=""
78 STRINGPARAMS_VA=""
79
80
81 # LIST OF THE PARAMETERS OF THE NCL SCRIPTS WHICH NCL EXPECTED TO BE STRINGS
82 # CO: PARAMETERS WHICH ARE COMMON FOR ALL NCL SCRIPTS
83 # CS: cross_sections.ncl PR: profiles.ncl SP: spectra.ncl TS: timeseries.ncl
84 # VA: PARAMETERS WHICH CONTAIN LISTS OF VARIABLE NAMES
85 STRINGPARAMS_CO="file_1 format_out file_out var "
86 STRINGPARAMS_CS="sort mode fill_mode unit_x unit_y unit_z vec1 vec2 plotvec"
87 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"
88 STRINGPARAMS_SP="sort unit_x unit_y"
89 STRINGPARAMS_TS="unit_t"
90 STRINGPARAMS_VA="var c_var vec1 vec2 plotvec"
91
92
93 # CHOICE OF THE PARTICULAR NCL SCRIPT
94 if [[ "$1" == "xy" ]]
95  then
96    script="cross_sections.ncl"
97    STRINGPARAMS=$STRINGPARAMS_CO$STRINGPARAMS_CS
98    CMDLINE="xyc=1 "
99  elif [[ "$1" == "xz" ]]
100    then
101    script="cross_sections.ncl"
102    STRINGPARAMS=$STRINGPARAMS_CO$STRINGPARAMS_CS
103    CMDLINE="xzc=1 "
104  elif [[ "$1" == "yz" ]]
105    then
106    script="cross_sections.ncl"
107    STRINGPARAMS=$STRINGPARAMS_CO$STRINGPARAMS_CS
108    CMDLINE="yzc=1 "
109  elif [[ "$1" == "pr" ]]
110    then
111    script="profiles.ncl"
112    STRINGPARAMS=$STRINGPARAMS_CO$STRINGPARAMS_PR
113  elif [[ "$1" == "ts" ]]
114    then
115    script="timeseries.ncl"
116    STRINGPARAMS=$STRINGPARAMS_CO$STRINGPARAMS_TS
117  elif [[ "$1" == "sp" ]]
118    then
119    script="spectra.ncl"
120    STRINGPARAMS=$STRINGPARAMS_CO$STRINGPARAMS_SP
121   else
122     (printf "\n  first argument has to be one of the following:"
123      printf "\n   xy, xz, yz, pr, ts or sp \n" 
124      printf "\n  type \"palmplot ?\" for information about the usage of this script\n")
125     exit
126 fi
127
128 # SHIFTING THE FIRST COMMAND LINE ARGUMENT
129 shift 
130
131 # PROCESSING THE COMMAND LINE ARGUMENTS
132 while [ $# -gt 0 ] 
133 do
134    arg=$1
135    key=${arg%%=*}
136    value=${arg#*=}
137
138    # ALLOWING RELATIVE AND ABSOLUTE FILE PATHS
139    if [[ "$key" ==  @(file_*) && "$value" != @(~/*|/*) ]]
140    then
141       value=$PWD/$value
142    fi
143     
144    # PROCESSING STRINGS
145    for a in $STRINGPARAMS
146    do
147      if [ "$key" = "$a" ]
148      then
149
150         # PROCESSING STRINGS CONTAINING LISTS OF VARIABLES
151         for b in $STRINGPARAMS_VA
152         do
153           if [ "$key" = "$b" ]
154           then
155              if [[ "$value" != "all" ]]
156              then
157                 # SUBSTITUTING BLANKS WITH COMMAS IN
158                 # PARAMETERS CONTAINING LISTS OF VARIABLES
159                 value=`echo $value | sed 's/ /,/g'`   
160                 # ALLOWING THE USAGE OF COMMA SEPARATED LIST AS WELL   
161           
162                 if [[ "$value" == "${value#,}" ]]
163                 then
164                    value=,$value
165                 fi
166                 if [[ "$value" == "${value%,}" ]]
167                 then
168                    value=$value,
169                 fi         
170                 value=${value/%\*,,/\*,}                 
171                 break
172              fi
173           fi
174         done
175
176         # SUBSTITUTING DOUBLE QUOTES - REQUIRED BY NCL
177         value=`echo $value | sed 's/\"/\"+dq+\"/g'`
178         # SETTING ENTIRE STRING IN DOUBLE QUOTES - REQUIRED BY NCL
179         value=\"$value\"
180      fi
181    done
182
183    CMDLINE=$CMDLINE"$key=$value "
184    shift
185 done
186
187 # EXECUTING THE PARTICULAR NCL SCRIPT
188 cd $PALM_BIN/NCL
189 ncl 'dq=str_get_dq()' $script $CMDLINE 
190
191
192
193
194
195
Note: See TracBrowser for help on using the repository browser.