modules.c 57.5 KB
Newer Older
Uwe Schulzweida's avatar
Uwe Schulzweida committed
1
2
3
4
/*
  This file is part of CDO. CDO is a collection of Operators to
  manipulate and analyse Climate model Data.

5
  Copyright (C) 2003-2016 Uwe Schulzweida, <uwe.schulzweida AT mpimet.mpg.de>
Uwe Schulzweida's avatar
Uwe Schulzweida committed
6
7
8
9
10
11
12
13
14
15
16
17
  See COPYING file for copying and redistribution conditions.

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; version 2 of the License.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
*/

Uwe Schulzweida's avatar
Uwe Schulzweida committed
18
#if defined(HAVE_CONFIG_H)
Ralf Mueller's avatar
Ralf Mueller committed
19
20
21
#  include "config.h"
#endif

Ralf Mueller's avatar
Ralf Mueller committed
22
#include <cdi.h>
23
#include "cdo_int.h"
Uwe Schulzweida's avatar
Uwe Schulzweida committed
24
25
26
27
28
#include "operator_help.h"
#include "modules.h"
#include "error.h"


29
#define  MAX_MOD_OPERATORS  128               // maximum number of operators for a module
Uwe Schulzweida's avatar
Uwe Schulzweida committed
30
31

typedef struct {
32
33
34
35
36
37
38
  void  *(*func)(void *);                     // Module
  const char **help;                          // Help
  const char  *operators[MAX_MOD_OPERATORS];  // Operator names
  short  mode;                                // Module mode: 0:intern 1:extern
  short  number;                              // Allowed number type
  short  streamInCnt;                         // Number of input streams
  short  streamOutCnt;                        // Number of output streams
Uwe Schulzweida's avatar
Uwe Schulzweida committed
39
}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
40
modules_t;
Uwe Schulzweida's avatar
Uwe Schulzweida committed
41
42


Uwe Schulzweida's avatar
Uwe Schulzweida committed
43
void *Adisit(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
44
void *Afterburner(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
45
46
47
void *Arith(void *argument);
void *Arithc(void *argument);
void *Arithdays(void *argument);
48
void *Arithlat(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
49
void *Cat(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
50
void *CDItest(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
51
void *CDIread(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
52
void *CDIwrite(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
53
void *Change(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
54
void *Change_e5slm(void *argument);
55
void *Cloudlayer(void *argument);
56
void *CMOR(void *argument);
57
void *Collgrid(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
58
void *Command(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
59
60
void *Comp(void *argument);
void *Compc(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
61
void *Complextorect(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
62
63
64
void *Cond(void *argument);
void *Cond2(void *argument);
void *Condc(void *argument);
Ralf Mueller's avatar
Ralf Mueller committed
65
void *Consecstat(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
66
void *Copy(void *argument);
67
void *Deltat(void *argument);
68
void *Deltime(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
69
void *Derivepar(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
70
71
void *Detrend(void *argument);
void *Diff(void *argument);
72
void *Distgrid(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
73
void *Duplicate(void *argument);
74
void *Echam5ini(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
75
void *Enlarge(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
76
void *Enlargegrid(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
77
void *Ensstat(void *argument);
78
void *Ensstat3(void *argument);
79
void *Ensval(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
80
void *Eofcoeff(void *argument);
81
void *Eofcoeff3d(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
82
void *EOFs(void *argument);
83
void *EOF3d(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
84
void *Expr(void *argument);
85
void *FC(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
86
87
void *Filedes(void *argument);
void *Fillmiss(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
88
void *Filter(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
89
90
void *Fldrms(void *argument);
void *Fldstat(void *argument);
91
void *Fldstat2(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
92
void *Fourier(void *argument);
93
void *Gengrid(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
94
void *Gradsdes(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
95
void *Gridboxstat(void *argument);
96
void *Gridcell(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
97
void *Gridsearch(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
98
void *Harmonic(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
99
void *Histogram(void *argument);
100
void *Importamsr(void *argument);
101
void *Importbinary(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
102
103
void *Importcmsaf(void *argument);
void *Importobs(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
104
105
106
107
void *Info(void *argument);
void *Input(void *argument);
void *Intgrid(void *argument);
void *Intgridtraj(void *argument);
108
void *Intlevel(void *argument);
109
void *Intlevel3d(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
110
void *Inttime(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
111
void *Intntime(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
112
113
void *Intyear(void *argument);
void *Invert(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
114
void *Invertlev(void *argument);
115
void *Isosurface(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
116
void *Kvl(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
117
void *Log(void *argument);
118
void *MapReduce(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
119
120
121
122
123
void *Maskbox(void *argument);
void *Mastrfu(void *argument);
void *Math(void *argument);
void *Merge(void *argument);
void *Mergegrid(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
124
void *Mergetime(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
125
void *Merstat(void *argument);
126
void *Monarith(void *argument);
127
void *Mrotuv(void *argument);
128
void *Mrotuvb(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
129
130
131
132
void *Ninfo(void *argument);
void *Nmltest(void *argument);
void *Output(void *argument);
void *Outputgmt(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
133
void *Pack(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
134
void *Pardup(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
135
void *Pinfo(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
136
void *Pressure(void *argument);
137
void *Regres(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
138
void *Remap(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
139
void *Remapeta(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
140
void *Replace(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
141
void *Replacevalues(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
142
void *Rotuv(void *argument);
143
void *Rhopot(void *argument);
144
void *Runpctl(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
145
void *Runstat(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
146
void *Seascount(void *argument);
147
void *Seaspctl(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
148
149
void *Seasstat(void *argument);
void *Selbox(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
150
void *Selindex(void *argument);
151
void *Select(void *argument);
152
void *Selvar(void *argument);
153
void *Seloperator(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
154
155
156
void *Selrec(void *argument);
void *Seltime(void *argument);
void *Set(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
157
void *Setbox(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
158
159
160
161
void *Setgatt(void *argument);
void *Setgrid(void *argument);
void *Sethalo(void *argument);
void *Setmiss(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
162
void *Setpartab(void *argument);
163
void *Setrcaname(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
164
165
void *Settime(void *argument);
void *Setzaxis(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
166
void *Shiftxy(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
167
168
void *Showinfo(void *argument);
void *Sinfo(void *argument);
169
void *Smooth(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
170
void *Sort(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
171
void *Sorttimestamp(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
172
173
void *Specinfo(void *argument);
void *Spectral(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
174
void *Spectrum(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
175
176
void *Split(void *argument);
void *Splitrec(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
177
void *Splitsel(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
178
179
180
void *Splittime(void *argument);
void *Splityear(void *argument);
void *Subtrend(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
181
void *Tee(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
182
183
184
185
void *Template1(void *argument);
void *Template2(void *argument);
void *Test(void *argument);
void *Test2(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
186
void *Testdata(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
187
void *Tests(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
188
void *Timsort(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
189
void *Timcount(void *argument);
190
void *Timpctl(void *argument);
191
192
void *Timselpctl(void *argument);
void *Timselstat(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
193
void *XTimstat(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
194
void *Timstat(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
195
void *Timstat2(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
196
void *Timstat3(void *argument);
197
void *Tinfo(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
198
void *Tocomplex(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
199
void *Transpose(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
200
201
void *Trend(void *argument);
void *Trms(void *argument);
202
void *Tstepcount(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
203
204
void *Vargen(void *argument);
void *Varrms(void *argument);
205
void *Vertintml(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
206
void *Vertintap(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
207
void *Vertstat(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
208
void *Vertcum(void *argument);
209
void *Vertwind(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
210
void *Verifygrid(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
211
void *Wind(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
212
213
void *Writegrid(void *argument);
void *Writerandom(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
214
void *YAR(void *argument);
215
void *Yearmonstat(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
216
void *Ydayarith(void *argument);
217
void *Ydaypctl(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
218
void *Ydaystat(void *argument);
219
220
void *Ydrunpctl(void *argument);
void *Ydrunstat(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
221
222
void *Yhourarith(void *argument);
void *Yhourstat(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
223
void *Ymonarith(void *argument);
224
void *Ymonpctl(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
225
void *Ymonstat(void *argument);
226
void *Yseaspctl(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
227
228
void *Yseasstat(void *argument);
void *Zonstat(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
229

230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
void *EcaCfd(void *argument);
void *EcaCsu(void *argument);
void *EcaCwdi(void *argument);
void *EcaCwfi(void *argument);
void *EcaEtr(void *argument);
void *EcaFd(void *argument);
void *EcaGsl(void *argument);
void *EcaHd(void *argument);
void *EcaHwdi(void *argument);
void *EcaHwfi(void *argument);
void *EcaId(void *argument);
void *EcaSu(void *argument);
void *EcaTr(void *argument);
void *EcaTg10p(void *argument);
void *EcaTg90p(void *argument);
void *EcaTn10p(void *argument);
void *EcaTn90p(void *argument);
void *EcaTx10p(void *argument);
void *EcaTx90p(void *argument);

void *EcaCdd(void *argument);
void *EcaCwd(void *argument);
void *EcaRr1(void *argument);
253
void *EcaPd(void *argument);
254
255
256
257
258
259
260
261
262
263
264
265
void *EcaR75p(void *argument);
void *EcaR75ptot(void *argument);
void *EcaR90p(void *argument);
void *EcaR90ptot(void *argument);
void *EcaR95p(void *argument);
void *EcaR95ptot(void *argument);
void *EcaR99p(void *argument);
void *EcaR99ptot(void *argument);
void *EcaRx1day(void *argument);
void *EcaRx5day(void *argument);
void *EcaSdii(void *argument);

Uwe Schulzweida's avatar
Uwe Schulzweida committed
266
267
268
269
270
void *Fdns(void *argument);
void *Strwin(void *argument);
void *Strbre(void *argument);
void *Strgal(void *argument);
void *Hurr(void *argument);
271

Uwe Schulzweida's avatar
Uwe Schulzweida committed
272
//void *Hi(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
273
void *Wct(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
274

275
276
277
278
void *Magplot(void *argument);
void *Magvector(void *argument);
void *Maggraph(void *argument);

Uwe Schulzweida's avatar
Uwe Schulzweida committed
279

Uwe Schulzweida's avatar
Uwe Schulzweida committed
280
#define  AdisitOperators        {"adisit", "adipot"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
281
#define  AfterburnerOperators   {"after"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
282
#define  ArithOperators         {"add",  "sub",  "mul",  "div", "min", "max", "atan2"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
283
#define  ArithcOperators        {"addc", "subc", "mulc", "divc", "mod"}
284
#define  ArithdaysOperators     {"muldpm", "divdpm", "muldpy", "divdpy", "muldoy"}
285
#define  ArithlatOperators      {"mulcoslat", "divcoslat"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
286
#define  CatOperators           {"cat"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
287
#define  CDItestOperators       {"ncopy"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
288
#define  CDIreadOperators       {"cdiread"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
289
#define  CDIwriteOperators      {"cdiwrite"}
290
#define  ChangeOperators        {"chcode", "chtabnum", "chparam", "chname", "chunit", "chlevel", "chlevelc", "chlevelv", "chltype"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
291
#define  Change_e5slmOperators  {"change_e5slm", "change_e5lsm", "change_e5mask"}
292
#define  CloudlayerOperators    {"cloudlayer"}
293
#define  CMOROperators          {"cmor"}
294
#define  CollgridOperators      {"collgrid"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
295
#define  CommandOperators       {"command", "com", "cmd"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
296
297
#define  CompOperators          {"eq",  "ne",  "le",  "lt",  "ge",  "gt"}
#define  CompcOperators         {"eqc", "nec", "lec", "ltc", "gec", "gtc"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
298
#define  ComplextorectOperators {"complextorect"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
299
300
301
#define  CondOperators          {"ifthen",  "ifnotthen"}
#define  Cond2Operators         {"ifthenelse"}
#define  CondcOperators         {"ifthenc", "ifnotthenc"}
Ralf Mueller's avatar
Ralf Mueller committed
302
#define  ConsecstatOperators    {"consects", "consecsum"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
303
#define  CopyOperators          {"copy", "selall", "szip"}
304
#define  DeltatOperators        {"deltat"}
305
#define  DeltimeOperators       {"delday", "del29feb"}
306
#define  DeriveparOperators     {"gheight", "sealevelpressure"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
307
#define  DetrendOperators       {"detrend"}
308
#define  DiffOperators          {"diff", "diffp", "diffn", "diffc"}
309
#define  DistgridOperators      {"distgrid"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
310
#define  DuplicateOperators     {"duplicate"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
311
312
#define  Echam5iniOperators     {"import_e5ml", "import_e5res", \
                                 "export_e5ml", "export_e5res"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
313
#define  EnlargeOperators       {"enlarge"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
314
#define  EnlargegridOperators   {"enlargegrid"}
315
#define  EnsstatOperators       {"ensmin", "ensmax", "enssum", "ensmean", "ensavg", "ensvar", "ensvar1", "ensstd", "ensstd1", "enspctl"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
316
317
#define  Ensstat3Operators      {"ensrkhistspace", "ensrkhisttime", "ensroc"}
#define  EnsvalOperators        {"enscrps", "ensbrs"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
318
#define  EofcoeffOperators      {"eofcoeff"}
319
#define  Eofcoeff3dOperators    {"eofcoeff3d"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
320
#define  EOFsOperators          {"eof", "eofspatial", "eoftime"}
321
#define  EOF3dOperators         {"eof3d","eof3dspatial","eof3dtime"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
322
#define  ExprOperators          {"expr", "exprf", "aexpr", "aexprf"}
323
#define  FCOperators            {"fc2sp", "sp2fc", "fc2gp", "gp2fc"}
324
#define  FiledesOperators       {"filedes", "griddes", "griddes2", "zaxisdes", "vct", "vct2", "codetab", \
Uwe Schulzweida's avatar
Uwe Schulzweida committed
325
                                 "vlist", "partab", "partab2", "spartab"}
326
#define  FillmissOperators      {"fillmiss", "fillmiss2"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
327
#define  FilterOperators        {"bandpass", "highpass", "lowpass"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
328
#define  FldrmsOperators        {"fldrms"}
329
#define  FldstatOperators       {"fldmin", "fldmax", "fldsum", "fldmean", "fldavg", "fldstd", "fldstd1", "fldvar", "fldvar1", "fldpctl"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
330
331
#define  FldcorOperators        {"fldcor"}
#define  FldcovarOperators      {"fldcovar"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
332
#define  FourierOperators       {"fourier"}
333
#define  GengridOperators       {"gengrid"}
334
#define  GradsdesOperators      {"gradsdes", "dumpmap"}
335
#define  GridboxstatOperators   {"gridboxmin", "gridboxmax", "gridboxsum", "gridboxmean", "gridboxavg", "gridboxstd", "gridboxstd1", "gridboxvar", "gridboxvar1"}
336
#define  GridcellOperators      {"gridarea", "gridweights", "gridmask", "griddx", "griddy"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
337
#define  GridsearchOperators    {"testpointsearch", "testcellsearch"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
338
#define  HarmonicOperators      {"harmonic"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
339
#define  HistogramOperators     {"histcount", "histsum", "histmean", "histfreq"}
340
#define  ImportamsrOperators    {"import_amsr"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
341
#define  ImportbinaryOperators  {"import_binary"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
342
343
#define  ImportcmsafOperators   {"import_cmsaf"}
#define  ImportobsOperators     {"import_obs"}
344
#define  InfoOperators          {"info", "infop", "infon", "infoc", "map"}
345
#define  InputOperators         {"input", "inputsrv", "inputext"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
346
#define  IntgridOperators       {"intgridbil", "intpoint", "interpolate", "boxavg", "thinout"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
347
#define  IntgridtrajOperators   {"intgridtraj"}
348
#define  IntlevelOperators      {"intlevel", "intlevelx"}
349
#define  Intlevel3dOperators    {"intlevel3d", "intlevelx3d"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
350
#define  InttimeOperators       {"inttime"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
351
#define  IntntimeOperators      {"intntime"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
352
#define  IntyearOperators       {"intyear"}
353
#define  InvertOperators        {"invertlat", "invertlon", "invertlatdes", "invertlondes", "invertlatdata", "invertlondata"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
354
#define  InvertlevOperators     {"invertlev"}
355
#define  IsosurfaceOperators    {"isosurface"}
356
#define  KvlOperators           {"read_cmor_table", "conv_cmor_table"}
357
#define  LogOperators           {"dumplogs", "daylogs", "monlogs", "dumplogo", "snamelogo", "scalllogo", "smemlogo", "stimelogo", "sperclogo"}
358
#define  MapReduceOperators     {"reducegrid"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
359
#define  MaskboxOperators       {"masklonlatbox", "maskindexbox"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
360
#define  MaskregionOperators    {"maskregion"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
361
#define  MastrfuOperators       {"mastrfu"}
362
#define  MathOperators          {"abs", "int", "nint", "sqr", "sqrt", "exp", "ln", "log10", "sin", \
363
                                 "cos", "tan", "asin", "acos", "atan", "pow", "reci"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
364
365
#define  MergeOperators         {"merge"}
#define  MergegridOperators     {"mergegrid"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
366
#define  MergetimeOperators     {"mergetime"}
367
#define  MerstatOperators       {"mermin", "mermax", "mersum", "mermean", "meravg", "merstd", "merstd1", "mervar", "mervar1", "merpctl"}
368
#define  MonarithOperators      {"monadd", "monsub", "monmul", "mondiv"}
369
370
#define  MrotuvOperators        {"mrotuv"}
#define  MrotuvbOperators       {"mrotuvb"}
371
#define  NinfoOperators         {"nyear", "nmon", "ndate", "ntime", "ncode", "npar", "nlevel", "ngridpoints", "ngrids"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
372
#define  NmltestOperators       {"nmltest"}
373
#define  OutputOperators        {"output", "outputint", "outputsrv", "outputext", "outputf", "outputts", \
Uwe Schulzweida's avatar
Uwe Schulzweida committed
374
375
                                 "outputfld", "outputarr", "outputxyz"}
#define  OutputtabOperators     {"outputtab"}
376
#define  OutputgmtOperators     {"gmtxyz", "gmtcells", "outputcenter2", "outputcentercpt", \
Uwe Schulzweida's avatar
Uwe Schulzweida committed
377
                                 "outputboundscpt", "outputvector", "outputtri", "outputvrml"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
378
#define  PackOperators          {"pack"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
379
#define  PardupOperators        {"pardup", "parmul"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
380
#define  PinfoOperators         {"pinfo", "pinfov"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
381
#define  PressureOperators      {"pressure_fl", "pressure_hl", "deltap"}
382
#define  RegresOperators        {"regres"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
383
#define  RemapOperators         {"remap"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
384
#define  RemapbilOperators      {"remapbil", "genbil"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
385
#define  RemapbicOperators      {"remapbic", "genbic"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
386
#define  RemapnnOperators       {"remapnn", "gennn"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
387
#define  RemapdisOperators      {"remapdis", "gendis"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
388
389
#define  RemapyconOperators     {"remapycon", "genycon"}
#define  RemapconOperators      {"remapcon", "gencon"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
390
#define  Remapcon2Operators     {"remapcon2", "gencon2"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
391
392
#define  RemaplafOperators      {"remaplaf", "genlaf"}
#define    RemapgridOperators   {"remapsum"}
393
#define  RemapetaOperators      {"remapeta", "remapeta_s", "remapeta_z"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
394
#define  ReplaceOperators       {"replace"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
395
#define  ReplacevaluesOperators {"setvals", "setrtoc", "setrtoc2"}
396
#define  RhopotOperators        {"rhopot"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
397
#define  RotuvOperators         {"rotuvb"}
398
#define  RunpctlOperators       {"runpctl"}
399
#define  RunstatOperators       {"runmin", "runmax", "runsum", "runmean", "runavg", "runstd", "runstd1", "runvar", "runvar1"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
400
#define  SeascountOperators     {"seascount"}
401
#define  SeaspctlOperators      {"seaspctl"}
402
#define  SeasstatOperators      {"seasmin", "seasmax", "seassum", "seasmean", "seasavg", "seasstd", "seasstd1", "seasvar", "seasvar1"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
403
#define  SelboxOperators        {"sellonlatbox", "selindexbox"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
404
#define  SelindexOperators      {"selindex"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
405
#define  SelectOperators        {"select", "delete"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
406
#define  SelvarOperators        {"selparam", "selcode", "selname", "selstdname", "sellevel", "sellevidx", "selgrid", \
407
                                 "selzaxis", "selzaxisname", "seltabnum", "delparam", "delcode", "delname", "selltype"}
408
#define  SeloperatorOperators   {"seloperator"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
409
#define  SelrecOperators        {"selrec"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
410
#define  SeltimeOperators       {"seltimestep", "selyear", "selseason", "selmonth", "selday", "selhour", "seldate", \
411
                                 "seltime", "selsmon"}
412
#define  SetOperators           {"setcode", "setparam", "setname", "setunit", "setlevel", "setltype", "settabnum"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
413
#define  SetboxOperators        {"setclonlatbox", "setcindexbox"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
414
#define  SetgattOperators       {"setgatt", "setgatts"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
415
#define  SetgridOperators       {"setgrid", "setgridtype", "setgridarea", "setgridmask", "unsetgridmask", "setgridnumber", "setgriduri"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
416
#define  SethaloOperators       {"sethalo", "tpnhalo"}
417
#define  SetmissOperators       {"setmissval", "setctomiss", "setmisstoc", "setrtomiss", "setvrange"}
418
#define  SetmisstonnOperators   {"setmisstonn", "setmisstodis"}
419
#define  SetcodetabOperators    {"setcodetab"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
420
#define  SetpartabOperators     {"setpartabc", "setpartabp", "setpartabn"}
421
#define  SetrcanameOperators    {"setrcaname"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
422
#define  SettimeOperators       {"setyear", "setmon", "setday", "setdate", "settime", "settunits", \
Uwe Schulzweida's avatar
Uwe Schulzweida committed
423
                                 "settaxis", "settbounds", "setreftime", "setcalendar", "shifttime"}
424
#define  SetzaxisOperators      {"setzaxis", "genlevelbounds"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
425
#define  ShiftxyOperators       {"shiftx", "shifty"}
Ralf Mueller's avatar
Ralf Mueller committed
426
#define  ShowinfoOperators      {"showyear", "showmon", "showdate", "showtime", "showtimestamp", "showcode", "showunit", \
Uwe Schulzweida's avatar
Uwe Schulzweida committed
427
                                 "showparam", "showname", "showstdname", "showlevel", "showltype", "showformat"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
428
#define  SinfoOperators         {"sinfo", "sinfop", "sinfon", "sinfoc", "seinfo", "seinfop", "seinfon", "seinfoc"}
429
#define  SmoothOperators        {"smooth", "smooth9"}
430
#define  SortOperators          {"sortcode", "sortparam", "sortname", "sortlevel"}
431
#define  SorttimestampOperators {"sorttimestamp", "sorttaxis"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
432
433
#define  SpecinfoOperators      {"specinfo"}
#define  SpectralOperators      {"gp2sp", "gp2spl", "sp2gp", "sp2gpl", "sp2sp", "spcut"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
434
#define  SpectrumOperators      {"spectrum"}
435
#define  SplitOperators         {"splitcode", "splitparam", "splitname", "splitlevel", "splitgrid", "splitzaxis", "splittabnum"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
436
#define  SplitrecOperators      {"splitrec"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
437
#define  SplitselOperators      {"splitsel"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
438
#define  SplittimeOperators     {"splithour", "splitday", "splitmon", "splitseas"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
439
#define  SplityearOperators     {"splityear", "splityearmon"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
440
#define  SubtrendOperators      {"subtrend"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
441
#define  TeeOperators           {"tee"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
442
443
444
445
#define  Template1Operators     {"template1"}
#define  Template2Operators     {"template2"}
#define  TestOperators          {"test"}
#define  Test2Operators         {"test2"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
446
#define  TestdataOperators      {"testdata"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
447
#define  TestsOperators         {"normal", "studentt", "chisquare", "beta", "fisher"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
448
#define  TimsortOperators       {"timsort"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
449
450
451
452
453
#define  TimcountOperators      {"timcount"}
#define    YearcountOperators   {"yearcount"}
#define    MoncountOperators    {"moncount"}
#define    DaycountOperators    {"daycount"}
#define    HourcountOperators   {"hourcount"}
454
455
456
457
458
#define  TimpctlOperators       {"timpctl"}
#define    YearpctlOperators    {"yearpctl"}
#define    MonpctlOperators     {"monpctl"}
#define    DaypctlOperators     {"daypctl"}
#define    HourpctlOperators    {"hourpctl"}
459
#define  TimselpctlOperators    {"timselpctl"}
460
#define  TimselstatOperators    {"timselmin", "timselmax", "timselsum", "timselmean", "timselavg", "timselvar", "timselvar1", "timselstd", "timselstd1"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
461
#define  XTimstatOperators      {"xtimmin",  "xtimmax",  "xtimsum",  "xtimmean",  "xtimavg",  "xtimvar",  "xtimvar1",  "xtimstd",  "xtimstd1", \
Uwe Schulzweida's avatar
Uwe Schulzweida committed
462
                                 "xyearmin", "xyearmax", "xyearsum", "xyearmean", "xyearavg", "xyearvar", "xyearvar1", "xyearstd", "xyearstd1", \
Uwe Schulzweida's avatar
Uwe Schulzweida committed
463
                                 "xmonmin",  "xmonmax",  "xmonsum",  "xmonmean",  "xmonavg",  "xmonvar",  "xmonvar1",  "xmonstd",  "xmonstd1"}
464
465
466
467
468
#define  TimstatOperators       {"timmin",  "timmax",  "timsum",  "timmean",  "timavg",  "timvar",  "timvar1",  "timstd",  "timstd1"}
#define    YearstatOperators    {"yearmin", "yearmax", "yearsum", "yearmean", "yearavg", "yearvar", "yearvar1", "yearstd", "yearstd1"}
#define    MonstatOperators     {"monmin",  "monmax",  "monsum",  "monmean",  "monavg",  "monvar",  "monvar1",  "monstd",  "monstd1"}
#define    DaystatOperators     {"daymin",  "daymax",  "daysum",  "daymean",  "dayavg",  "dayvar",  "dayvar1",  "daystd",  "daystd1"}
#define    HourstatOperators    {"hourmin", "hourmax", "hoursum", "hourmean", "houravg", "hourvar", "hourvar1", "hourstd", "hourstd1"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
469
470
#define  TimcorOperators        {"timcor"}
#define  TimcovarOperators      {"timcovar"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
471
#define  Timstat3Operators      {"meandiff2test", "varquot2test"}
472
#define  TinfoOperators         {"tinfo"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
473
#define  TocomplexOperators     {"retocomplex", "imtocomplex"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
474
#define  TransposeOperators     {"transxy"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
475
476
#define  TrendOperators         {"trend"}
#define  TrmsOperators          {"trms"}
477
#define  TstepcountOperators    {"tstepcount"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
478
#define  VargenOperators        {"random", "const", "sincos", "coshill", "for", "topo", "temp", "mask", "stdatm"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
479
#define  VarrmsOperators        {"varrms"}
480
#define  VertintmlOperators     {"ml2pl", "ml2hl", "ml2plx", "ml2hlx", "ml2pl_lp", "ml2hl_lp", "ml2plx_lp", "ml2hlx_lp"}
481
#define  VertintapOperators     {"ap2pl", "ap2plx", "ap2pl_lp", "ap2plx_lp", "ap2hl", "ap2hlx"}
482
#define  VertstatOperators      {"vertmin", "vertmax", "vertsum", "vertint", "vertmean", "vertavg", "vertstd", "vertstd1", "vertvar", "vertvar1"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
483
#define  VertcumOperators       {"vertcum", "vertcumhl"}
484
#define  VertwindOperators      {"vertwind"}
485
#define  VerifygridOperators    {"verifygrid"}
Uwe Schulzweida's avatar
update    
Uwe Schulzweida committed
486
#define  WindOperators          {"uv2dv", "uv2dvl", "dv2uv", "dv2uvl", "dv2ps"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
487
#define  WritegridOperators     {"writegrid"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
488
#define  WriterandomOperators   {"writerandom"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
489
#define  YAROperators           {"yarbil", "yarnn", "yarcon"}
490
#define  YearmonstatOperators   {"yearmonmean", "yearmonavg"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
491
#define  YdayarithOperators     {"ydayadd", "ydaysub", "ydaymul", "ydaydiv"}
492
#define  YdaypctlOperators      {"ydaypctl"}
493
#define  YdaystatOperators      {"ydaymin", "ydaymax", "ydaysum", "ydaymean", "ydayavg", "ydaystd", "ydaystd1", "ydayvar", "ydayvar1"}
494
#define  YdrunpctlOperators     {"ydrunpctl"}
495
#define  YdrunstatOperators     {"ydrunmin", "ydrunmax", "ydrunsum", "ydrunmean", "ydrunavg", "ydrunstd", "ydrunstd1", "ydrunvar", "ydrunvar1"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
496
#define  YhourarithOperators    {"yhouradd", "yhoursub", "yhourmul", "yhourdiv"}
497
#define  YhourstatOperators     {"yhourmin", "yhourmax", "yhoursum", "yhourmean", "yhouravg", "yhourstd", "yhourstd1", "yhourvar", "yhourvar1"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
498
499
#define  YmonarithOperators     {"ymonadd", "ymonsub", "ymonmul", "ymondiv"}
#define  YseasarithOperators    {"yseasadd", "yseassub", "yseasmul", "yseasdiv"}
500
#define  YmonpctlOperators      {"ymonpctl"}
501
#define  YmonstatOperators      {"ymonmin", "ymonmax", "ymonsum", "ymonmean", "ymonavg", "ymonstd", "ymonstd1", "ymonvar", "ymonvar1"}
502
#define  YseaspctlOperators     {"yseaspctl"}
503
#define  YseasstatOperators     {"yseasmin", "yseasmax", "yseassum", "yseasmean", "yseasavg", "yseasstd", "yseasstd1", "yseasvar", "yseasvar1"}
504
#define  ZonstatOperators       {"zonmin", "zonmax", "zonrange", "zonsum", "zonmean", "zonavg", "zonstd", "zonstd1", "zonvar", "zonvar1", "zonpctl"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
505

506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
#define  EcaCfdOperators        {"eca_cfd"}
#define  EcaCsuOperators        {"eca_csu"}
#define  EcaCwfiOperators       {"eca_cwfi"}
#define  EcaHwdiOperators       {"eca_hwdi"}
#define  EcaEtrOperators        {"eca_etr"}
#define  EcaFdOperators         {"eca_fd"}
#define  EcaGslOperators        {"eca_gsl"}
#define  EcaHdOperators         {"eca_hd"}
#define  EcaCwdiOperators       {"eca_cwdi"}
#define  EcaHwfiOperators       {"eca_hwfi"}
#define  EcaIdOperators         {"eca_id"}
#define  EcaSuOperators         {"eca_su"}
#define  EcaTrOperators         {"eca_tr"}
#define  EcaTg10pOperators      {"eca_tg10p"}
#define  EcaTg90pOperators      {"eca_tg90p"}
#define  EcaTn10pOperators      {"eca_tn10p"}
#define  EcaTn90pOperators      {"eca_tn90p"}
#define  EcaTx10pOperators      {"eca_tx10p"}
#define  EcaTx90pOperators      {"eca_tx90p"}

#define  EcaCddOperators        {"eca_cdd"}
#define  EcaCwdOperators        {"eca_cwd"}
#define  EcaRr1Operators        {"eca_rr1"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
529
/*
530
531
#define  EcaR10mmOperators      {"eca_r10mm"}
#define  EcaR20mmOperators      {"eca_r20mm"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
532
533
*/
#define  EcaPdOperators         {"eca_pd", "eca_r10mm", "eca_r20mm"}
534
535
536
537
538
539
540
541
542
543
544
545
#define  EcaR75pOperators       {"eca_r75p"}
#define  EcaR75ptotOperators    {"eca_r75ptot"}
#define  EcaR90pOperators       {"eca_r90p"}
#define  EcaR90ptotOperators    {"eca_r90ptot"}
#define  EcaR95pOperators       {"eca_r95p"}
#define  EcaR95ptotOperators    {"eca_r95ptot"}
#define  EcaR99pOperators       {"eca_r99p"}
#define  EcaR99ptotOperators    {"eca_r99ptot"}
#define  EcaRx1dayOperators     {"eca_rx1day"}
#define  EcaRx5dayOperators     {"eca_rx5day"}
#define  EcaSdiiOperators       {"eca_sdii"}

Uwe Schulzweida's avatar
Uwe Schulzweida committed
546
#define  FdnsOperators          {"fdns"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
547

Uwe Schulzweida's avatar
Uwe Schulzweida committed
548
549
550
551
#define  StrwinOperators        {"strwin"}
#define  StrbreOperators        {"strbre"}
#define  StrgalOperators        {"strgal"}
#define  HurrOperators          {"hurr"}
552
553

#define  HiOperators            {"hi"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
554
#define  WctOperators           {"wct"}
555

556
#define  MagplotOperators       {"contour", "shaded", "grfill"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
557
#define  MagvectorOperators     {"vector"}
558
#define  MaggraphOperators      {"graph"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
559

Uwe Schulzweida's avatar
Uwe Schulzweida committed
560
static modules_t Modules[] =
Uwe Schulzweida's avatar
Uwe Schulzweida committed
561
{
Uwe Schulzweida's avatar
Uwe Schulzweida committed
562
563
  // stream in  -1 means: unlimited number of input streams
  // stream out -1 means: usage of obase
Uwe Schulzweida's avatar
Uwe Schulzweida committed
564
  /*
565
566
    function        help function      operator names          mode number     num streams
                                                                    type       in  out
Uwe Schulzweida's avatar
Uwe Schulzweida committed
567
  */
568
569
570
571
572
573
574
575
576
577
578
579
580
  { Adisit,         AdisitHelp,        AdisitOperators,        1,   CDI_REAL,  1,  1 },
  { Afterburner,    AfterburnerHelp,   AfterburnerOperators,   1,   CDI_REAL, -1,  1 },
  { Arith,          ArithHelp,         ArithOperators,         1,   CDI_REAL,  2,  1 },
  { Arithc,         ArithcHelp,        ArithcOperators,        1,   CDI_REAL,  1,  1 },
  { Arithdays,      ArithdaysHelp,     ArithdaysOperators,     1,   CDI_REAL,  1,  1 },
  { Arithlat,       NULL,              ArithlatOperators,      1,   CDI_REAL,  1,  1 },
  { Cat,            CopyHelp,          CatOperators,           1,   CDI_REAL, -1,  1 },
  { CDItest,        NULL,              CDItestOperators,       1,   CDI_REAL,  1,  1 },
  { CDIread,        NULL,              CDIreadOperators,       1,   CDI_REAL,  1,  0 },
  { CDIwrite,       NULL,              CDIwriteOperators,      1,   CDI_REAL,  0,  1 },
  { Change,         ChangeHelp,        ChangeOperators,        1,   CDI_REAL,  1,  1 },
  { Change_e5slm,   NULL,              Change_e5slmOperators,  0,   CDI_REAL,  1,  1 },
  { Cloudlayer,     NULL,              CloudlayerOperators,    1,   CDI_REAL,  1,  1 },
Uwe Schulzweida's avatar
Uwe Schulzweida committed
581
  { CMOR,           CMORHelp,          CMOROperators,          1,   CDI_REAL,  1,  0 },
582
583
584
585
586
587
588
589
590
591
  { Collgrid,       CollgridHelp,      CollgridOperators,      1,   CDI_REAL, -1,  1 },
  { Command,        NULL,              CommandOperators,       0,   CDI_REAL,  1,  0 },
  { Comp,           CompHelp,          CompOperators,          1,   CDI_REAL,  2,  1 },
  { Compc,          CompcHelp,         CompcOperators,         1,   CDI_REAL,  1,  1 },
  { Complextorect,  NULL,              ComplextorectOperators, 1,   CDI_COMP,  1,  2 },
  { Cond,           CondHelp,          CondOperators,          1,   CDI_REAL,  2,  1 },
  { Cond2,          Cond2Help,         Cond2Operators,         1,   CDI_REAL,  3,  1 },
  { Condc,          CondcHelp,         CondcOperators,         1,   CDI_REAL,  1,  1 },
  { Consecstat,     ConsecstatHelp,    ConsecstatOperators,    1,   CDI_REAL,  1,  1 },
  { Copy,           CopyHelp,          CopyOperators,          1,   CDI_REAL, -1,  1 },
592
  { Deltat,         NULL,              DeltatOperators,        1,   CDI_REAL,  1,  1 },
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
  { Deltime,        NULL,              DeltimeOperators,       1,   CDI_REAL,  1,  1 },
  { Derivepar,      DeriveparHelp,     DeriveparOperators,     1,   CDI_REAL,  1,  1 },
  { Detrend,        DetrendHelp,       DetrendOperators,       1,   CDI_REAL,  1,  1 },
  { Diff,           DiffHelp,          DiffOperators,          1,   CDI_REAL,  2,  0 },
  { Distgrid,       DistgridHelp,      DistgridOperators,      1,   CDI_REAL,  1,  1 },
  { Duplicate,      DuplicateHelp,     DuplicateOperators,     1,   CDI_REAL,  1,  1 },
  { Echam5ini,      NULL,              Echam5iniOperators,     1,   CDI_REAL,  1,  1 },
  { Enlarge,        EnlargeHelp,       EnlargeOperators,       1,   CDI_REAL,  1,  1 },
  { Enlargegrid,    NULL,              EnlargegridOperators,   0,   CDI_REAL,  1,  1 },
  { Ensstat,        EnsstatHelp,       EnsstatOperators,       1,   CDI_REAL, -1,  1 },
  { Ensstat3,       Ensstat2Help,      Ensstat3Operators,      1,   CDI_REAL, -1,  1 },
  { Ensval,         EnsvalHelp,        EnsvalOperators,        1,   CDI_REAL, -1,  1 },
  { Eofcoeff,       EofcoeffHelp,      EofcoeffOperators,      1,   CDI_REAL,  2, -1 },
  { Eofcoeff3d,     EofcoeffHelp,      Eofcoeff3dOperators,    1,   CDI_REAL,  2, -1 },
  { EOFs,           EOFsHelp,          EOFsOperators,          1,   CDI_REAL,  1,  2 },
  { EOF3d,          EOFsHelp,          EOF3dOperators,         1,   CDI_REAL,  1,  2 },
  { Expr,           ExprHelp,          ExprOperators,          1,   CDI_REAL,  1,  1 },
  { FC,             NULL,              FCOperators,            1,   CDI_REAL,  1,  1 },
  { Filedes,        FiledesHelp,       FiledesOperators,       1,   CDI_BOTH,  1,  0 },
  { Fillmiss,       NULL,              FillmissOperators,      1,   CDI_REAL,  1,  1 },
  { Filter,         FilterHelp,        FilterOperators,        1,   CDI_REAL,  1,  1 },
  { Fldrms,         NULL,              FldrmsOperators,        1,   CDI_REAL,  2,  1 },
  { Fldstat,        FldstatHelp,       FldstatOperators,       1,   CDI_REAL,  1,  1 },
  { Fldstat2,       FldcorHelp,        FldcorOperators,        1,   CDI_REAL,  2,  1 },
  { Fldstat2,       FldcovarHelp,      FldcovarOperators,      1,   CDI_REAL,  2,  1 },
  { Fourier,        NULL,              FourierOperators,       1,   CDI_COMP,  1,  1 },
  { Gengrid,        NULL,              GengridOperators,       1,   CDI_REAL,  2,  1 },
  { Gradsdes,       GradsdesHelp,      GradsdesOperators,      1,   CDI_REAL,  1,  0 },
  { Gridboxstat,    GridboxstatHelp,   GridboxstatOperators,   1,   CDI_REAL,  1,  1 },
  { Gridcell,       GridcellHelp,      GridcellOperators,      1,   CDI_REAL,  1,  1 },
  { Gridsearch,     NULL,              GridsearchOperators,    0,   CDI_REAL,  0,  0 },
  { Harmonic,       NULL,              HarmonicOperators,      1,   CDI_REAL,  1,  1 },
  { Histogram,      HistogramHelp,     HistogramOperators,     1,   CDI_REAL,  1,  1 },
  { Importamsr,     ImportamsrHelp,    ImportamsrOperators,    1,   CDI_REAL,  1,  1 },
  { Importbinary,   ImportbinaryHelp,  ImportbinaryOperators,  1,   CDI_REAL,  1,  1 },
  { Importcmsaf,    ImportcmsafHelp,   ImportcmsafOperators,   1,   CDI_REAL,  1,  1 },
  { Importobs,      NULL,              ImportobsOperators,     1,   CDI_REAL,  1,  1 },
  { Info,           InfoHelp,          InfoOperators,          1,   CDI_BOTH, -1,  0 },
  { Input,          InputHelp,         InputOperators,         1,   CDI_REAL,  0,  1 },
  { Intgrid,        NULL,              IntgridOperators,       1,   CDI_REAL,  1,  1 },
  { Intgridtraj,    NULL,              IntgridtrajOperators,   1,   CDI_REAL,  1,  1 },
  { Intlevel,       IntlevelHelp,      IntlevelOperators,      1,   CDI_REAL,  1,  1 },
  { Intlevel3d,     Intlevel3dHelp,    Intlevel3dOperators,    1,   CDI_REAL,  2,  1 },
  { Inttime,        InttimeHelp,       InttimeOperators,       1,   CDI_REAL,  1,  1 },
  { Intntime,       InttimeHelp,       IntntimeOperators,      1,   CDI_REAL,  1,  1 },
  { Intyear,        IntyearHelp,       IntyearOperators,       1,   CDI_REAL,  2, -1 },
  { Invert,         InvertHelp,        InvertOperators,        1,   CDI_REAL,  1,  1 },
  { Invertlev,      InvertlevHelp,     InvertlevOperators,     1,   CDI_REAL,  1,  1 },
  { Isosurface,     NULL,              IsosurfaceOperators,    1,   CDI_REAL,  1,  1 },
  { Kvl,            NULL,              KvlOperators,           1,   CDI_REAL,  0,  0 },
  { Log,            NULL,              LogOperators,           0,   CDI_REAL,  1,  0 },
644
  { MapReduce,      MapReduceHelp,     MapReduceOperators,     1,   CDI_REAL,  1,  1 },
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
  { Maskbox,        MaskboxHelp,       MaskboxOperators,       1,   CDI_REAL,  1,  1 },
  { Maskbox,        MaskregionHelp,    MaskregionOperators,    1,   CDI_REAL,  1,  1 },
  { Mastrfu,        MastrfuHelp,       MastrfuOperators,       1,   CDI_REAL,  1,  1 },
  { Math,           MathHelp,          MathOperators,          1,   CDI_BOTH,  1,  1 },
  { Merge,          MergeHelp,         MergeOperators,         1,   CDI_REAL, -1,  1 },
  { Mergetime,      MergeHelp,         MergetimeOperators,     1,   CDI_REAL, -1,  1 },
  { Mergegrid,      MergegridHelp,     MergegridOperators,     1,   CDI_REAL,  2,  1 },
  { Merstat,        MerstatHelp,       MerstatOperators,       1,   CDI_REAL,  1,  1 },
  { Monarith,       MonarithHelp,      MonarithOperators,      1,   CDI_REAL,  2,  1 },
  { Mrotuv,         NULL,              MrotuvOperators,        1,   CDI_REAL,  1,  2 },
  { Mrotuvb,        NULL,              MrotuvbOperators,       1,   CDI_REAL,  2,  1 },
  { Ninfo,          NinfoHelp,         NinfoOperators,         1,   CDI_BOTH,  1,  0 },
  { Nmltest,        NULL,              NmltestOperators,       0,   CDI_REAL,  0,  0 },
  { Output,         OutputHelp,        OutputOperators,        1,   CDI_REAL, -1,  0 },
  { Output,         OutputtabHelp,     OutputtabOperators,     1,   CDI_REAL, -1,  0 },
Uwe Schulzweida's avatar
Uwe Schulzweida committed
660
  { Outputgmt,      OutputgmtHelp,     OutputgmtOperators,     1,   CDI_REAL,  1,  0 },
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
  { Pack,           NULL,              PackOperators,          1,   CDI_REAL,  1,  1 },
  { Pardup,         NULL,              PardupOperators,        1,   CDI_REAL,  1,  1 },
  { Pinfo,          NULL,              PinfoOperators,         1,   CDI_REAL,  1,  1 },
  { Pressure,       NULL,              PressureOperators,      1,   CDI_REAL,  1,  1 },
  { Regres,         RegresHelp,        RegresOperators,        1,   CDI_REAL,  1,  1 },
  { Remap,          RemapHelp,         RemapOperators,         1,   CDI_REAL,  1,  1 },
  { Remap,          RemapbilHelp,      RemapbilOperators,      1,   CDI_REAL,  1,  1 },
  { Remap,          RemapbicHelp,      RemapbicOperators,      1,   CDI_REAL,  1,  1 },
  { Remap,          RemapnnHelp,       RemapnnOperators,       1,   CDI_REAL,  1,  1 },
  { Remap,          RemapdisHelp,      RemapdisOperators,      1,   CDI_REAL,  1,  1 },
  { Remap,          RemapyconHelp,     RemapyconOperators,     1,   CDI_REAL,  1,  1 },
  { Remap,          RemapconHelp,      RemapconOperators,      1,   CDI_REAL,  1,  1 },
  { Remap,          Remapcon2Help,     Remapcon2Operators,     1,   CDI_REAL,  1,  1 },
  { Remap,          RemaplafHelp,      RemaplafOperators,      1,   CDI_REAL,  1,  1 },
  { Remap,          NULL,              RemapgridOperators,     1,   CDI_REAL,  1,  1 },
  { Remapeta,       RemapetaHelp,      RemapetaOperators,      1,   CDI_REAL,  1,  1 },
  { Replace,        ReplaceHelp,       ReplaceOperators,       1,   CDI_REAL,  2,  1 },
  { Replacevalues,  ReplacevaluesHelp, ReplacevaluesOperators, 1,   CDI_REAL,  1,  1 },
  { Rhopot,         RhopotHelp,        RhopotOperators,        1,   CDI_REAL,  1,  1 },
  { Rotuv,          RotuvbHelp,        RotuvOperators,         1,   CDI_REAL,  1,  1 },
  { Runpctl,        RunpctlHelp,       RunpctlOperators,       1,   CDI_REAL,  1,  1 },
  { Runstat,        RunstatHelp,       RunstatOperators,       1,   CDI_REAL,  1,  1 },
  { Seascount,      NULL,              SeascountOperators,     1,   CDI_BOTH,  1,  1 },
  { Seaspctl,       SeaspctlHelp,      SeaspctlOperators,      1,   CDI_REAL,  3,  1 },
  { Seasstat,       SeasstatHelp,      SeasstatOperators,      1,   CDI_REAL,  1,  1 },
  { Selbox,         SelboxHelp,        SelboxOperators,        1,   CDI_BOTH,  1,  1 },
Uwe Schulzweida's avatar
Uwe Schulzweida committed
687
  { Selindex,       NULL,              SelindexOperators,      1,   CDI_BOTH,  1,  1 },
688
689
690
691
692
693
694
695
696
697
698
699
  { Select,         SelectHelp,        SelectOperators,        1,   CDI_BOTH, -1,  1 },
  { Selvar,         SelvarHelp,        SelvarOperators,        1,   CDI_BOTH,  1,  1 },
  { Selrec,         SelvarHelp,        SelrecOperators,        1,   CDI_BOTH,  1,  1 },
  { Seloperator,    NULL,              SeloperatorOperators,   1,   CDI_REAL,  1,  1 },
  { Seltime,        SeltimeHelp,       SeltimeOperators,       1,   CDI_BOTH,  1,  1 },
  { Set,            SetHelp,           SetOperators,           1,   CDI_BOTH,  1,  1 },
  { Setbox,         SetboxHelp,        SetboxOperators,        1,   CDI_REAL,  1,  1 },
  { Setgatt,        SetgattHelp,       SetgattOperators,       1,   CDI_BOTH,  1,  1 },
  { Setgrid,        SetgridHelp,       SetgridOperators,       1,   CDI_BOTH,  1,  1 },
  { Sethalo,        SethaloHelp,       SethaloOperators,       1,   CDI_REAL,  1,  1 },
  { Setmiss,        SetmissHelp,       SetmissOperators,       1,   CDI_REAL,  1,  1 },
  { Fillmiss,       SetmissHelp,       SetmisstonnOperators,   1,   CDI_REAL,  1,  1 },
700
  { Setpartab,      SetHelp,           SetcodetabOperators,    1,   CDI_REAL,  1,  1 },
701
702
703
704
  { Setpartab,      SetpartabHelp,     SetpartabOperators,     1,   CDI_REAL,  1,  1 },
  { Setrcaname,     NULL,              SetrcanameOperators,    1,   CDI_REAL,  1,  1 },
  { Settime,        SettimeHelp,       SettimeOperators,       1,   CDI_BOTH,  1,  1 },
  { Setzaxis,       SetzaxisHelp,      SetzaxisOperators,      1,   CDI_BOTH,  1,  1 },
Uwe Schulzweida's avatar
Uwe Schulzweida committed
705
  { Shiftxy,        NULL,              ShiftxyOperators,       1,   CDI_REAL,  1,  1 },
706
707
  { Showinfo,       ShowinfoHelp,      ShowinfoOperators,      1,   CDI_BOTH,  1,  0 },
  { Sinfo,          SinfoHelp,         SinfoOperators,         1,   CDI_BOTH, -1,  0 },
708
  { Smooth,         SmoothHelp,        SmoothOperators,        1,   CDI_REAL,  1,  1 },
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
  { Sort,           NULL,              SortOperators,          1,   CDI_REAL,  1,  1 },
  { Sorttimestamp,  NULL,              SorttimestampOperators, 1,   CDI_REAL, -1,  1 },
  { Specinfo,       NULL,              SpecinfoOperators,      1,   CDI_REAL,  0,  0 },
  { Spectral,       SpectralHelp,      SpectralOperators,      1,   CDI_REAL,  1,  1 },
  { Spectrum,       NULL,              SpectrumOperators,      1,   CDI_REAL,  1,  1 },
  { Split,          SplitHelp,         SplitOperators,         1,   CDI_BOTH,  1, -1 },
  { Splitrec,       SplitHelp,         SplitrecOperators,      1,   CDI_BOTH,  1, -1 },
  { Splitsel,       SplitselHelp,      SplitselOperators,      1,   CDI_BOTH,  1, -1 },
  { Splittime,      SplittimeHelp,     SplittimeOperators,     1,   CDI_BOTH,  1, -1 },
  { Splityear,      SplittimeHelp,     SplityearOperators,     1,   CDI_BOTH,  1, -1 },
  { Subtrend,       SubtrendHelp,      SubtrendOperators,      1,   CDI_REAL,  3,  1 },
  { Tee,            NULL,              TeeOperators,           1,   CDI_REAL,  2,  1 },
  { Template1,      NULL,              Template1Operators,     0,   CDI_REAL,  1,  1 },
  { Template2,      NULL,              Template2Operators,     0,   CDI_REAL,  1,  1 },
  { Test,           NULL,              TestOperators,          0,   CDI_REAL,  1,  1 },
  { Test2,          NULL,              Test2Operators,         0,   CDI_REAL,  2,  1 },
  { Testdata,       NULL,              TestdataOperators,      0,   CDI_REAL,  1,  1 },
  { Tests,          NULL,              TestsOperators,         0,   CDI_REAL,  1,  1 },
  { Timcount,       NULL,              TimcountOperators,      1,   CDI_BOTH,  1,  1 },
  { Timcount,       NULL,              YearcountOperators,     1,   CDI_BOTH,  1,  1 },
  { Timcount,       NULL,              MoncountOperators,      1,   CDI_BOTH,  1,  1 },
  { Timcount,       NULL,              DaycountOperators,      1,   CDI_BOTH,  1,  1 },
  { Timcount,       NULL,              HourcountOperators,     1,   CDI_BOTH,  1,  1 },
  { Timpctl,        TimpctlHelp,       TimpctlOperators,       1,   CDI_REAL,  3,  1 },
  { Timpctl,        YearpctlHelp,      YearpctlOperators,      1,   CDI_REAL,  3,  1 },
  { Timpctl,        MonpctlHelp,       MonpctlOperators,       1,   CDI_REAL,  3,  1 },
  { Timpctl,        DaypctlHelp,       DaypctlOperators,       1,   CDI_REAL,  3,  1 },
  { Timpctl,        HourpctlHelp,      HourpctlOperators,      1,   CDI_REAL,  3,  1 },
  { Timselpctl,     TimselpctlHelp,    TimselpctlOperators,    1,   CDI_REAL,  3,  1 },
  { Timsort,        TimsortHelp,       TimsortOperators,       1,   CDI_REAL,  1,  1 },
  { Timselstat,     TimselstatHelp,    TimselstatOperators,    1,   CDI_REAL,  1,  1 },
  { XTimstat,       NULL,              XTimstatOperators,      0,   CDI_BOTH,  1,  1 },
  { Timstat,        TimstatHelp,       TimstatOperators,       1,   CDI_BOTH,  1,  1 },
  { Timstat,        YearstatHelp,      YearstatOperators,      1,   CDI_BOTH,  1,  1 },
  { Timstat,        MonstatHelp,       MonstatOperators,       1,   CDI_BOTH,  1,  1 },
  { Timstat,        DaystatHelp,       DaystatOperators,       1,   CDI_BOTH,  1,  1 },
  { Timstat,        HourstatHelp,      HourstatOperators,      1,   CDI_BOTH,  1,  1 },
  { Timstat2,       TimcorHelp,        TimcorOperators,        1,   CDI_REAL,  2,  1 },
  { Timstat2,       TimcovarHelp,      TimcovarOperators,      1,   CDI_REAL,  2,  1 },
  { Timstat3,       NULL,              Timstat3Operators,      1,   CDI_REAL,  2,  1 },
  { Tinfo,          NULL,              TinfoOperators,         1,   CDI_BOTH,  1,  0 },
  { Tocomplex,      NULL,              TocomplexOperators,     1,   CDI_REAL,  1,  1 },
  { Transpose,      NULL,              TransposeOperators,     1,   CDI_REAL,  1,  1 },
  { Trend,          TrendHelp,         TrendOperators,         1,   CDI_REAL,  1,  2 },
  { Trms,           NULL,              TrmsOperators,          0,   CDI_REAL,  2,  1 },
  { Tstepcount,     NULL,              TstepcountOperators,    1,   CDI_REAL,  1,  1 },
  { Vargen,         VargenHelp,        VargenOperators,        1,   CDI_REAL,  0,  1 },
  { Varrms,         NULL,              VarrmsOperators,        0,   CDI_REAL,  2,  1 },
  { Vertintml,      VertintmlHelp,     VertintmlOperators,     1,   CDI_REAL,  1,  1 },
  { Vertintap,      VertintapHelp,     VertintapOperators,     1,   CDI_REAL,  1,  1 },
  { Vertstat,       VertstatHelp,      VertstatOperators,      1,   CDI_REAL,  1,  1 },
  { Vertcum,        NULL,              VertcumOperators,       1,   CDI_REAL,  1,  1 },
  { Vertwind,       NULL,              VertwindOperators,      1,   CDI_REAL,  1,  1 },
Uwe Schulzweida's avatar
Uwe Schulzweida committed
762
  { Verifygrid,     NULL,              VerifygridOperators,    1,   CDI_REAL,  1,  0 },
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
  { Wind,           WindHelp,          WindOperators,          1,   CDI_REAL,  1,  1 },
  { Writegrid,      NULL,              WritegridOperators,     1,   CDI_REAL,  1,  1 },  /* no cdi output */
  { Writerandom,    NULL,              WriterandomOperators,   1,   CDI_REAL,  1,  1 },
  { YAR,            NULL,              YAROperators,           0,   CDI_REAL,  1,  1 },
  { Yearmonstat,    YearmonstatHelp,   YearmonstatOperators,   1,   CDI_REAL,  1,  1 },
  { Ydayarith,      YdayarithHelp,     YdayarithOperators,     1,   CDI_REAL,  2,  1 },
  { Ydaypctl,       YdaypctlHelp,      YdaypctlOperators,      1,   CDI_REAL,  3,  1 },
  { Ydaystat,       YdaystatHelp,      YdaystatOperators,      1,   CDI_REAL,  1,  1 },
  { Ydrunpctl,      YdrunpctlHelp,     YdrunpctlOperators,     1,   CDI_REAL,  3,  1 },
  { Ydrunstat,      YdrunstatHelp,     YdrunstatOperators,     1,   CDI_REAL,  1,  1 },
  { Yhourarith,     YhourarithHelp,    YhourarithOperators,    1,   CDI_REAL,  2,  1 },
  { Yhourstat,      YhourstatHelp,     YhourstatOperators,     1,   CDI_REAL,  1,  1 },
  { Ymonarith,      YmonarithHelp,     YmonarithOperators,     1,   CDI_REAL,  2,  1 },
  { Ymonarith,      YseasarithHelp,    YseasarithOperators,    1,   CDI_REAL,  2,  1 },
  { Ymonpctl,       YmonpctlHelp,      YmonpctlOperators,      1,   CDI_REAL,  3,  1 },
  { Ymonstat,       YmonstatHelp,      YmonstatOperators,      1,   CDI_REAL,  1,  1 },
  { Yseaspctl,      YseaspctlHelp,     YseaspctlOperators,     1,   CDI_REAL,  3,  1 },
  { Yseasstat,      YseasstatHelp,     YseasstatOperators,     1,   CDI_REAL,  1,  1 },
  { Zonstat,        ZonstatHelp,       ZonstatOperators,       1,   CDI_REAL,  1,  1 },
  { EcaCfd,         EcaCfdHelp,        EcaCfdOperators,        1,   CDI_REAL,  1,  1 },
  { EcaCsu,         EcaCsuHelp,        EcaCsuOperators,        1,   CDI_REAL,  1,  1 },
  { EcaCwdi,        EcaCwdiHelp,       EcaCwdiOperators,       1,   CDI_REAL,  2,  1 },
  { EcaCwfi,        EcaCwfiHelp,       EcaCwfiOperators,       1,   CDI_REAL,  2,  1 },
  { EcaEtr,         EcaEtrHelp,        EcaEtrOperators,        1,   CDI_REAL,  2,  1 },
  { EcaFd,          EcaFdHelp,         EcaFdOperators,         1,   CDI_REAL,  1,  1 },
  { EcaGsl,         EcaGslHelp,        EcaGslOperators,        1,   CDI_REAL,  2,  1 },
  { EcaHd,          EcaHdHelp,         EcaHdOperators,         1,   CDI_REAL,  1,  1 },
  { EcaHwdi,        EcaHwdiHelp,       EcaHwdiOperators,       1,   CDI_REAL,  2,  1 },
  { EcaHwfi,        EcaHwfiHelp,       EcaHwfiOperators,       1,   CDI_REAL,  2,  1 },
  { EcaId,          EcaIdHelp,         EcaIdOperators,         1,   CDI_REAL,  1,  1 },
  { EcaSu,          EcaSuHelp,         EcaSuOperators,         1,   CDI_REAL,  1,  1 },
  { EcaTr,          EcaTrHelp,         EcaTrOperators,         1,   CDI_REAL,  1,  1 },
  { EcaTg10p,       EcaTg10pHelp,      EcaTg10pOperators,      1,   CDI_REAL,  2,  1 },
  { EcaTg90p,       EcaTg90pHelp,      EcaTg90pOperators,      1,   CDI_REAL,  2,  1 },
  { EcaTn10p,       EcaTn10pHelp,      EcaTn10pOperators,      1,   CDI_REAL,  2,  1 },
  { EcaTn90p,       EcaTn90pHelp,      EcaTn90pOperators,      1,   CDI_REAL,  2,  1 },
  { EcaTx10p,       EcaTx10pHelp,      EcaTx10pOperators,      1,   CDI_REAL,  2,  1 },
  { EcaTx90p,       EcaTx90pHelp,      EcaTx90pOperators,      1,   CDI_REAL,  2,  1 },
  { EcaCdd,         EcaCddHelp,        EcaCddOperators,        1,   CDI_REAL,  1,  1 },
  { EcaCwd,         EcaCwdHelp,        EcaCwdOperators,        1,   CDI_REAL,  1,  1 },
  { EcaRr1,         EcaRr1Help,        EcaRr1Operators,        1,   CDI_REAL,  1,  1 },
  { EcaPd,          EcaPdHelp,         EcaPdOperators,         1,   CDI_REAL,  1,  1 },
  { EcaR75p,        EcaR75pHelp,       EcaR75pOperators,       1,   CDI_REAL,  2,  1 },
  { EcaR75ptot,     EcaR75ptotHelp,    EcaR75ptotOperators,    1,   CDI_REAL,  2,  1 },
  { EcaR90p,        EcaR90pHelp,       EcaR90pOperators,       1,   CDI_REAL,  2,  1 },
  { EcaR90ptot,     EcaR90ptotHelp,    EcaR90ptotOperators,    1,   CDI_REAL,  2,  1 },
  { EcaR95p,        EcaR95pHelp,       EcaR95pOperators,       1,   CDI_REAL,  2,  1 },
  { EcaR95ptot,     EcaR95ptotHelp,    EcaR95ptotOperators,    1,   CDI_REAL,  2,  1 },
  { EcaR99p,        EcaR99pHelp,       EcaR99pOperators,       1,   CDI_REAL,  2,  1 },
  { EcaR99ptot,     EcaR99ptotHelp,    EcaR99ptotOperators,    1,   CDI_REAL,  2,  1 },
  { EcaRx1day,      EcaRx1dayHelp,     EcaRx1dayOperators,     1,   CDI_REAL,  1,  1 },
  { EcaRx5day,      EcaRx5dayHelp,     EcaRx5dayOperators,     1,   CDI_REAL,  1,  1 },
  { EcaSdii,        EcaSdiiHelp,       EcaSdiiOperators,       1,   CDI_REAL,  1,  1 },
  { Fdns,           FdnsHelp,          FdnsOperators,          1,   CDI_REAL,  2,  1 },
  { Strwin,         StrwinHelp,        StrwinOperators,        1,   CDI_REAL,  1,  1 },
  { Strbre,         StrbreHelp,        StrbreOperators,        1,   CDI_REAL,  1,  1 },
  { Strgal,         StrgalHelp,        StrgalOperators,        1,   CDI_REAL,  1,  1 },
  { Hurr,           HurrHelp,          HurrOperators,          1,   CDI_REAL,  1,  1 },
  /*  { Hi,             NULL,              HiOperators,        1,   CDI_REAL,  3,  1 }, */
  { Wct,            WctHelp,           WctOperators,           1,   CDI_REAL,  2,  1 },
Uwe Schulzweida's avatar
Uwe Schulzweida committed
823
824
825
  { Magplot,        MagplotHelp,       MagplotOperators,       1,   CDI_REAL,  1,  1 },
  { Magvector,      MagvectorHelp,     MagvectorOperators,     1,   CDI_REAL,  1,  1 },
  { Maggraph,       MaggraphHelp,      MaggraphOperators,      1,   CDI_REAL, -1,  1 },
Uwe Schulzweida's avatar
Uwe Schulzweida committed
826
827
};							       
							       
Uwe Schulzweida's avatar
Uwe Schulzweida committed
828
829
static int NumModules = sizeof(Modules) / sizeof(Modules[0]);

830
static const char *opalias[][2] =
Uwe Schulzweida's avatar
Uwe Schulzweida committed
831
{
Uwe Schulzweida's avatar
Uwe Schulzweida committed
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
  {"afterburner",         "after"},
  {"anomaly",             "ymonsub"},
  {"deltap_fl",           "deltap"},
  {"diffv",               "diffn"},
  {"covar0",              "timcovar"},
  {"covar0r",             "fldcovar"},
  {"gather",              "collgrid"},
  {"geopotheight",        "gheight"},
  {"ggstat",              "info"},
  {"ggstats",             "sinfo"},
  {"globavg",             "fldavg"},
  {"import_grads",        "import_binary"},
  {"infos",               "sinfo"},
  {"infov",               "infon"},
  {"intgrid",             "intgridbil"},
  {"log",                 "ln"},
  {"lmean",               "ymonmean"},
  {"lmmean",              "ymonmean"},
  {"lmavg",               "ymonavg"},
  {"lmstd",               "ymonstd"},
  {"lsmean",              "yseasmean"},
  {"chvar",               "chname"},
  {"ncode",               "npar"},
  {"nvar",                "npar"},
  {"outputkey",           "outputtab"},
857
858
  {"vardes",              "codetab"},
  {"pardes",              "codetab"},
Uwe Schulzweida's avatar
Uwe Schulzweida committed
859
  {"selvar",              "selname"},
Uwe Schulzweida's avatar
Uwe Schulzweida committed
860
861
862
863
864
865
866
867
  {"delvar",              "delname"},
  {"remapcon1",           "remaplaf"},
  {"remapdis1",           "remapnn"},
  {"scatter",             "distgrid"},
  {"showvar",             "showname"},
  {"selgridname",         "selgrid"},
  {"setvar",              "setname"},
  {"setpartabv",          "setpartabn"},
868
  {"setpartab",           "setcodetab"},
Uwe Schulzweida's avatar
Uwe Schulzweida committed
869
870
871
872
873
  {"sinfov",              "sinfon"},
  {"sortvar",             "sortname"},
  {"splitvar",            "splitname"},
  {"sort",                "timsort"},
  {"eca_r1mm",            "eca_rr1"},
Uwe Schulzweida's avatar
Uwe Schulzweida committed
874
875
  {"fpressure",           "pressure_fl"},
  {"hpressure",           "pressure_hl"},
Uwe Schulzweida's avatar
Uwe Schulzweida committed
876
  {"ensrkhist_space",     "ensrkhistspace"},
Uwe Schulzweida's avatar
Uwe Schulzweida committed
877
878
  {"ensrkhist_time",      "ensrkhisttime"},
  {"gridverify",          "verifygrid"},
879
880
  {"outputcenter",        "gmtxyz"},
  {"outputbounds",        "gmtcells"},
Uwe Schulzweida's avatar
Uwe Schulzweida committed
881
882
  {"selseas",             "selseason"},
  {"selmon",              "selmonth"},
Uwe Schulzweida's avatar
Uwe Schulzweida committed
883
884
885
886
};

static int nopalias = sizeof(opalias) / (2*sizeof(opalias[0][0]));

887
888
889

static
int similar(const char *a, const char *b, int alen, int blen)
Uwe Schulzweida's avatar
Uwe Schulzweida committed
890
{
891
892
893
  if ( alen > 2 && blen > 2 && strstr(b, a) )
    return TRUE;

Uwe Schulzweida's avatar
Uwe Schulzweida committed
894
895
  while ( *a && *b && *a == *b )
    { 
896
897
      a++;
      b++;
Uwe Schulzweida's avatar
Uwe Schulzweida committed
898
899
    }
  if ( !*a && !*b )
900
    return TRUE;
Uwe Schulzweida's avatar
Uwe Schulzweida committed
901
  /*
902
    printf("%d %d %s %s\n", alen, blen, a, b);
Uwe Schulzweida's avatar