modules.c 59.4 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.

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

233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
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);
256
void *EcaPd(void *argument);
257
258
259
260
261
262
263
264
265
266
267
268
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
269
270
271
272
273
void *Fdns(void *argument);
void *Strwin(void *argument);
void *Strbre(void *argument);
void *Strgal(void *argument);
void *Hurr(void *argument);
274

Uwe Schulzweida's avatar
Uwe Schulzweida committed
275
//void *Hi(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
276
void *Wct(void *argument);
Uwe Schulzweida's avatar
Uwe Schulzweida committed
277

278
279
280
281
void *Magplot(void *argument);
void *Magvector(void *argument);
void *Maggraph(void *argument);

282
283
284
// HIRLAM_EXTENSIONS
void *Selmulti(void *argument);   // "selmulti", "delmulti"
void *WindTrans(void *argument);  // "uvDestag", "rotuvN", "rotuvNorth", "projuvLatLon"
285
void *Samplegrid(void *argument); // "samplegrid", "subgrid"
286

Uwe Schulzweida's avatar
Uwe Schulzweida committed
287

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

516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
#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
539
/*
540
541
#define  EcaR10mmOperators      {"eca_r10mm"}
#define  EcaR20mmOperators      {"eca_r20mm"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
542
543
*/
#define  EcaPdOperators         {"eca_pd", "eca_r10mm", "eca_r20mm"}
544
545
546
547
548
549
550
551
552
553
554
555
#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
556
#define  FdnsOperators          {"fdns"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
557

Uwe Schulzweida's avatar
Uwe Schulzweida committed
558
559
560
561
#define  StrwinOperators        {"strwin"}
#define  StrbreOperators        {"strbre"}
#define  StrgalOperators        {"strgal"}
#define  HurrOperators          {"hurr"}
562
563

#define  HiOperators            {"hi"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
564
#define  WctOperators           {"wct"}
565

566
#define  MagplotOperators       {"contour", "shaded", "grfill"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
567
#define  MagvectorOperators     {"vector"}
568
#define  MaggraphOperators      {"graph"}
Uwe Schulzweida's avatar
Uwe Schulzweida committed
569

570
571
572
// HIRLAM_EXTENSIONS
#define  SelmultiOperators      {"selmulti", "delmulti", "changemulti"}
#define  WindTransOperators     {"uvDestag", "rotuvN","rotuvNorth", "projuvLatLon"}
573
#define  SamplegridOperators    {"samplegrid", "subgrid"}
574
575


Uwe Schulzweida's avatar
Uwe Schulzweida committed
576
static modules_t Modules[] =
Uwe Schulzweida's avatar
Uwe Schulzweida committed
577
{
Uwe Schulzweida's avatar
Uwe Schulzweida committed
578
579
  // stream in  -1 means: unlimited number of input streams
  // stream out -1 means: usage of obase
Uwe Schulzweida's avatar
Uwe Schulzweida committed
580
  /*
581
582
    function        help function      operator names          mode number     num streams
                                                                    type       in  out
Uwe Schulzweida's avatar
Uwe Schulzweida committed
583
  */
584
585
586
587
588
589
590
591
592
593
594
595
596
  { 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
597
  { CMOR,           NULL,              CMOROperators,          1,   CDI_REAL,  1,  0 },
Uwe Schulzweida's avatar
Uwe Schulzweida committed
598
  { CMOR_lite,      CMORliteHelp,      CMORliteOperators,      1,   CDI_REAL,  1,  1 },
Uwe Schulzweida's avatar
Uwe Schulzweida committed
599
  { CMOR_table,     NULL,              CMORtableOperators,     1,   CDI_REAL,  0,  0 },
600
601
602
603
604
605
606
607
608
609
  { 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 },
610
  { Deltat,         NULL,              DeltatOperators,        1,   CDI_REAL,  1,  1 },
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
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
  { 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 },
  { Log,            NULL,              LogOperators,           0,   CDI_REAL,  1,  0 },
661
  { MapReduce,      MapReduceHelp,     MapReduceOperators,     1,   CDI_REAL,  1,  1 },
662
663
664
665
666
667
668
669
670
671
672
673
  { 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 },
674
  { Nmldump,        NULL,              NmldumpOperators,       0,   CDI_REAL,  0,  0 },
675
676
  { Output,         OutputHelp,        OutputOperators,        1,   CDI_REAL, -1,  0 },
  { Output,         OutputtabHelp,     OutputtabOperators,     1,   CDI_REAL, -1,  0 },
Uwe Schulzweida's avatar
Uwe Schulzweida committed
677
  { Outputgmt,      OutputgmtHelp,     OutputgmtOperators,     1,   CDI_REAL,  1,  0 },
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
  { 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
704
  { Selindex,       NULL,              SelindexOperators,      1,   CDI_BOTH,  1,  1 },
705
706
707
708
709
710
  { 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 },
Uwe Schulzweida's avatar
Uwe Schulzweida committed
711
  { Setattribute,   SetattributeHelp,  SetattributeOperators,  1,   CDI_BOTH,  1,  1 },
712
  { Setbox,         SetboxHelp,        SetboxOperators,        1,   CDI_REAL,  1,  1 },
Uwe Schulzweida's avatar
Uwe Schulzweida committed
713
  { Setgatt,        NULL,              SetgattOperators,       1,   CDI_BOTH,  1,  1 },
714
715
716
717
  { 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 },
718
  { Setpartab,      SetHelp,           SetcodetabOperators,    1,   CDI_REAL,  1,  1 },
719
720
721
722
  { 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
723
  { Shiftxy,        ShiftxyHelp,       ShiftxyOperators,       1,   CDI_REAL,  1,  1 },
724
725
  { Showinfo,       ShowinfoHelp,      ShowinfoOperators,      1,   CDI_BOTH,  1,  0 },
  { Sinfo,          SinfoHelp,         SinfoOperators,         1,   CDI_BOTH, -1,  0 },
726
  { Smooth,         SmoothHelp,        SmoothOperators,        1,   CDI_REAL,  1,  1 },
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
  { 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 },
Uwe Schulzweida's avatar
Uwe Schulzweida committed
750
  { Timcumsum,      TimcumsumHelp,     TimcumsumOperators,     1,   CDI_BOTH,  1,  1 },
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
  { 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
781
  { Verifygrid,     NULL,              VerifygridOperators,    1,   CDI_REAL,  1,  0 },
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
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
  { 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
842
843
844
  { Magplot,        MagplotHelp,       MagplotOperators,       1,   CDI_REAL,  1,  1 },
  { Magvector,      MagvectorHelp,     MagvectorOperators,     1,   CDI_REAL,  1,  1 },
  { Maggraph,       MaggraphHelp,      MaggraphOperators,      1,   CDI_REAL, -1,  1 },
845
  // HIRLAM_EXTENSIONS
846
  { Samplegrid,     SamplegridHelp,    SamplegridOperators,    1,   CDI_REAL,  1,  1 },
847
848
  { Selmulti,       NULL,              SelmultiOperators,      1,   CDI_REAL,  1,  1 },
  { WindTrans,      NULL,              WindTransOperators,     1,   CDI_REAL,  1,  1 },
Uwe Schulzweida's avatar
Uwe Schulzweida committed
849
850
};							       
							       
Uwe Schulzweida's avatar
Uwe Schulzweida committed
851
852
static int NumModules = sizeof(Modules) / sizeof(Modules[0]);

853
static const char *opalias[][2] =
Uwe Schulzweida's avatar
Uwe Schulzweida committed
854
{
Uwe Schulzweida's avatar
Uwe Schulzweida committed
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878