vortex-nwp 2.0.0b1__py3-none-any.whl → 2.0.0b2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- vortex/__init__.py +59 -45
- vortex/algo/__init__.py +3 -2
- vortex/algo/components.py +940 -614
- vortex/algo/mpitools.py +802 -497
- vortex/algo/serversynctools.py +34 -33
- vortex/config.py +19 -22
- vortex/data/__init__.py +9 -3
- vortex/data/abstractstores.py +593 -655
- vortex/data/containers.py +217 -162
- vortex/data/contents.py +65 -39
- vortex/data/executables.py +93 -102
- vortex/data/flow.py +40 -34
- vortex/data/geometries.py +228 -132
- vortex/data/handlers.py +428 -225
- vortex/data/outflow.py +15 -15
- vortex/data/providers.py +185 -163
- vortex/data/resources.py +48 -42
- vortex/data/stores.py +544 -413
- vortex/gloves.py +114 -87
- vortex/layout/__init__.py +1 -8
- vortex/layout/contexts.py +150 -84
- vortex/layout/dataflow.py +353 -202
- vortex/layout/monitor.py +264 -128
- vortex/nwp/__init__.py +5 -2
- vortex/nwp/algo/__init__.py +14 -5
- vortex/nwp/algo/assim.py +205 -151
- vortex/nwp/algo/clim.py +683 -517
- vortex/nwp/algo/coupling.py +447 -225
- vortex/nwp/algo/eda.py +437 -229
- vortex/nwp/algo/eps.py +403 -231
- vortex/nwp/algo/forecasts.py +420 -271
- vortex/nwp/algo/fpserver.py +683 -307
- vortex/nwp/algo/ifsnaming.py +205 -145
- vortex/nwp/algo/ifsroot.py +210 -122
- vortex/nwp/algo/monitoring.py +132 -76
- vortex/nwp/algo/mpitools.py +321 -191
- vortex/nwp/algo/odbtools.py +617 -353
- vortex/nwp/algo/oopsroot.py +449 -273
- vortex/nwp/algo/oopstests.py +90 -56
- vortex/nwp/algo/request.py +287 -206
- vortex/nwp/algo/stdpost.py +878 -522
- vortex/nwp/data/__init__.py +22 -4
- vortex/nwp/data/assim.py +125 -137
- vortex/nwp/data/boundaries.py +121 -68
- vortex/nwp/data/climfiles.py +193 -211
- vortex/nwp/data/configfiles.py +73 -69
- vortex/nwp/data/consts.py +426 -401
- vortex/nwp/data/ctpini.py +59 -43
- vortex/nwp/data/diagnostics.py +94 -66
- vortex/nwp/data/eda.py +50 -51
- vortex/nwp/data/eps.py +195 -146
- vortex/nwp/data/executables.py +440 -434
- vortex/nwp/data/fields.py +63 -48
- vortex/nwp/data/gridfiles.py +183 -111
- vortex/nwp/data/logs.py +250 -217
- vortex/nwp/data/modelstates.py +180 -151
- vortex/nwp/data/monitoring.py +72 -99
- vortex/nwp/data/namelists.py +254 -202
- vortex/nwp/data/obs.py +400 -308
- vortex/nwp/data/oopsexec.py +22 -20
- vortex/nwp/data/providers.py +90 -65
- vortex/nwp/data/query.py +71 -82
- vortex/nwp/data/stores.py +49 -36
- vortex/nwp/data/surfex.py +136 -137
- vortex/nwp/syntax/__init__.py +1 -1
- vortex/nwp/syntax/stdattrs.py +173 -111
- vortex/nwp/tools/__init__.py +2 -2
- vortex/nwp/tools/addons.py +22 -17
- vortex/nwp/tools/agt.py +24 -12
- vortex/nwp/tools/bdap.py +16 -5
- vortex/nwp/tools/bdcp.py +4 -1
- vortex/nwp/tools/bdm.py +3 -0
- vortex/nwp/tools/bdmp.py +14 -9
- vortex/nwp/tools/conftools.py +728 -378
- vortex/nwp/tools/drhook.py +12 -8
- vortex/nwp/tools/grib.py +65 -39
- vortex/nwp/tools/gribdiff.py +22 -17
- vortex/nwp/tools/ifstools.py +82 -42
- vortex/nwp/tools/igastuff.py +167 -143
- vortex/nwp/tools/mars.py +14 -2
- vortex/nwp/tools/odb.py +234 -125
- vortex/nwp/tools/partitioning.py +61 -37
- vortex/nwp/tools/satrad.py +27 -12
- vortex/nwp/util/async.py +83 -55
- vortex/nwp/util/beacon.py +10 -10
- vortex/nwp/util/diffpygram.py +174 -86
- vortex/nwp/util/ens.py +144 -63
- vortex/nwp/util/hooks.py +30 -19
- vortex/nwp/util/taskdeco.py +28 -24
- vortex/nwp/util/usepygram.py +278 -172
- vortex/nwp/util/usetnt.py +31 -17
- vortex/sessions.py +72 -39
- vortex/syntax/__init__.py +1 -1
- vortex/syntax/stdattrs.py +410 -171
- vortex/syntax/stddeco.py +31 -22
- vortex/toolbox.py +327 -192
- vortex/tools/__init__.py +11 -2
- vortex/tools/actions.py +125 -59
- vortex/tools/addons.py +111 -92
- vortex/tools/arm.py +42 -22
- vortex/tools/compression.py +72 -69
- vortex/tools/date.py +11 -4
- vortex/tools/delayedactions.py +242 -132
- vortex/tools/env.py +75 -47
- vortex/tools/folder.py +342 -171
- vortex/tools/grib.py +311 -149
- vortex/tools/lfi.py +423 -216
- vortex/tools/listings.py +109 -40
- vortex/tools/names.py +218 -156
- vortex/tools/net.py +632 -298
- vortex/tools/parallelism.py +93 -61
- vortex/tools/prestaging.py +55 -31
- vortex/tools/schedulers.py +172 -105
- vortex/tools/services.py +402 -333
- vortex/tools/storage.py +293 -358
- vortex/tools/surfex.py +24 -24
- vortex/tools/systems.py +1211 -631
- vortex/tools/targets.py +156 -100
- vortex/util/__init__.py +1 -1
- vortex/util/config.py +377 -327
- vortex/util/empty.py +2 -2
- vortex/util/helpers.py +56 -24
- vortex/util/introspection.py +18 -12
- vortex/util/iosponge.py +8 -4
- vortex/util/roles.py +4 -6
- vortex/util/storefunctions.py +39 -13
- vortex/util/structs.py +3 -3
- vortex/util/worker.py +29 -17
- vortex_nwp-2.0.0b2.dist-info/METADATA +66 -0
- vortex_nwp-2.0.0b2.dist-info/RECORD +142 -0
- {vortex_nwp-2.0.0b1.dist-info → vortex_nwp-2.0.0b2.dist-info}/WHEEL +1 -1
- vortex/layout/appconf.py +0 -109
- vortex/layout/jobs.py +0 -1276
- vortex/layout/nodes.py +0 -1424
- vortex/layout/subjobs.py +0 -464
- vortex_nwp-2.0.0b1.dist-info/METADATA +0 -50
- vortex_nwp-2.0.0b1.dist-info/RECORD +0 -146
- {vortex_nwp-2.0.0b1.dist-info → vortex_nwp-2.0.0b2.dist-info}/LICENSE +0 -0
- {vortex_nwp-2.0.0b1.dist-info → vortex_nwp-2.0.0b2.dist-info}/top_level.txt +0 -0
vortex/nwp/data/executables.py
CHANGED
|
@@ -4,8 +4,20 @@ Various Resources for executables used in NWP.
|
|
|
4
4
|
|
|
5
5
|
import vortex
|
|
6
6
|
|
|
7
|
-
from vortex.data.executables import
|
|
8
|
-
|
|
7
|
+
from vortex.data.executables import (
|
|
8
|
+
Script,
|
|
9
|
+
GnuScript,
|
|
10
|
+
BlackBox,
|
|
11
|
+
NWPModel,
|
|
12
|
+
SurfaceModel,
|
|
13
|
+
OceanographicModel,
|
|
14
|
+
)
|
|
15
|
+
from ..syntax.stdattrs import (
|
|
16
|
+
gvar,
|
|
17
|
+
arpifs_cycle,
|
|
18
|
+
gmkpack_compiler_identification_deco,
|
|
19
|
+
executable_flavour_deco,
|
|
20
|
+
)
|
|
9
21
|
from ..syntax.stdattrs import ArpIfsSimplifiedCycle
|
|
10
22
|
|
|
11
23
|
#: No automatic export
|
|
@@ -14,22 +26,29 @@ __all__ = []
|
|
|
14
26
|
|
|
15
27
|
def gmkpack_bin_deco(cls):
|
|
16
28
|
"""Add the necessary method to look into gmkpack directories."""
|
|
29
|
+
|
|
17
30
|
def guess_binary_sources(self, provider):
|
|
18
31
|
"""Return the sources location baseld on gmkpack layout."""
|
|
19
32
|
sh = vortex.ticket().sh
|
|
20
33
|
srcdirs = []
|
|
21
|
-
if provider.realkind ==
|
|
34
|
+
if provider.realkind == "remote" and provider.tube in (
|
|
35
|
+
"file",
|
|
36
|
+
"symlink",
|
|
37
|
+
):
|
|
22
38
|
packroot = sh.path.dirname(provider.pathname(self))
|
|
23
|
-
srcroot = sh.path.join(packroot,
|
|
39
|
+
srcroot = sh.path.join(packroot, "src")
|
|
24
40
|
if sh.path.exists(srcroot):
|
|
25
41
|
insrc = sh.listdir(srcroot)
|
|
26
|
-
if
|
|
27
|
-
srcdirs.append(
|
|
28
|
-
for inter in [
|
|
29
|
-
|
|
42
|
+
if "local" in insrc:
|
|
43
|
+
srcdirs.append("local")
|
|
44
|
+
for inter in [
|
|
45
|
+
d
|
|
46
|
+
for d in sorted(insrc, reverse=True)
|
|
47
|
+
if d.startswith("inter")
|
|
48
|
+
]:
|
|
30
49
|
srcdirs.append(inter)
|
|
31
|
-
if
|
|
32
|
-
srcdirs.append(
|
|
50
|
+
if "main" in insrc:
|
|
51
|
+
srcdirs.append("main")
|
|
33
52
|
srcdirs = [sh.path.join(srcroot, d) for d in srcdirs]
|
|
34
53
|
return srcdirs
|
|
35
54
|
|
|
@@ -47,66 +66,79 @@ class IFSModel(NWPModel):
|
|
|
47
66
|
gmkpack_compiler_identification_deco,
|
|
48
67
|
gvar,
|
|
49
68
|
dict(
|
|
50
|
-
info
|
|
51
|
-
attr
|
|
52
|
-
gvar
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
kind = dict(
|
|
56
|
-
values = ['ifsmodel', 'mfmodel'],
|
|
69
|
+
info="IFS Model",
|
|
70
|
+
attr=dict(
|
|
71
|
+
gvar=dict(default="master_[model]"),
|
|
72
|
+
kind=dict(
|
|
73
|
+
values=["ifsmodel", "mfmodel"],
|
|
57
74
|
),
|
|
58
|
-
model
|
|
59
|
-
outcast
|
|
75
|
+
model=dict(
|
|
76
|
+
outcast=["aladin", "arome"],
|
|
60
77
|
),
|
|
61
|
-
)
|
|
62
|
-
)
|
|
78
|
+
),
|
|
79
|
+
),
|
|
63
80
|
]
|
|
64
81
|
|
|
65
82
|
@property
|
|
66
83
|
def realkind(self):
|
|
67
|
-
return
|
|
84
|
+
return "ifsmodel"
|
|
68
85
|
|
|
69
86
|
def iga_pathinfo(self):
|
|
70
87
|
"""Standard path information for IGA inline cache."""
|
|
71
|
-
return dict(
|
|
72
|
-
model=self.model
|
|
73
|
-
)
|
|
88
|
+
return dict(model=self.model)
|
|
74
89
|
|
|
75
90
|
def iga_basename(self):
|
|
76
91
|
"""Standard expected basename for IGA inline cache."""
|
|
77
|
-
return
|
|
78
|
-
|
|
79
|
-
def command_line(
|
|
80
|
-
|
|
81
|
-
|
|
92
|
+
return "ARPEGE"
|
|
93
|
+
|
|
94
|
+
def command_line(
|
|
95
|
+
self,
|
|
96
|
+
model="arpifs",
|
|
97
|
+
vmodel="meteo",
|
|
98
|
+
name="XRUN",
|
|
99
|
+
conf=1,
|
|
100
|
+
timescheme="sli",
|
|
101
|
+
timestep=600,
|
|
102
|
+
fcterm=0,
|
|
103
|
+
fcunit="h",
|
|
104
|
+
):
|
|
82
105
|
"""
|
|
83
106
|
Build command line for execution as a single string.
|
|
84
107
|
Depending on the cycle it may returns nothing.
|
|
85
108
|
"""
|
|
86
|
-
if self.cycle <
|
|
87
|
-
return
|
|
88
|
-
|
|
109
|
+
if self.cycle < "cy41":
|
|
110
|
+
return (
|
|
111
|
+
"-v{:s} -e{:s} -c{:d} -a{:s} -t{:g} -f{:s}{:d} -m{:s}".format(
|
|
112
|
+
vmodel,
|
|
113
|
+
name,
|
|
114
|
+
conf,
|
|
115
|
+
timescheme,
|
|
116
|
+
timestep,
|
|
117
|
+
fcunit,
|
|
118
|
+
fcterm,
|
|
119
|
+
model,
|
|
120
|
+
)
|
|
89
121
|
)
|
|
90
122
|
else:
|
|
91
|
-
return
|
|
123
|
+
return ""
|
|
92
124
|
|
|
93
125
|
|
|
94
126
|
class Arome(IFSModel):
|
|
95
127
|
"""Dedicated to local area model."""
|
|
96
128
|
|
|
97
129
|
_footprint = dict(
|
|
98
|
-
info
|
|
99
|
-
attr
|
|
100
|
-
model
|
|
101
|
-
values
|
|
102
|
-
outcast
|
|
130
|
+
info="ALADIN / AROME Local Area Model",
|
|
131
|
+
attr=dict(
|
|
132
|
+
model=dict(
|
|
133
|
+
values=["aladin", "arome"],
|
|
134
|
+
outcast=set(),
|
|
103
135
|
),
|
|
104
|
-
)
|
|
136
|
+
),
|
|
105
137
|
)
|
|
106
138
|
|
|
107
139
|
def command_line(self, **kw):
|
|
108
140
|
"""Enforce aladin model option."""
|
|
109
|
-
kw.setdefault(
|
|
141
|
+
kw.setdefault("model", "aladin")
|
|
110
142
|
return super().command_line(**kw)
|
|
111
143
|
|
|
112
144
|
|
|
@@ -116,24 +148,26 @@ class NemoModel(OceanographicModel):
|
|
|
116
148
|
_footprint = [
|
|
117
149
|
gvar,
|
|
118
150
|
dict(
|
|
119
|
-
info
|
|
120
|
-
attr
|
|
121
|
-
gvar
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
151
|
+
info="NEMO",
|
|
152
|
+
attr=dict(
|
|
153
|
+
gvar=dict(default="master_[model]"),
|
|
154
|
+
kind=dict(
|
|
155
|
+
values=[
|
|
156
|
+
"nemomodel",
|
|
157
|
+
],
|
|
126
158
|
),
|
|
127
|
-
model
|
|
128
|
-
values
|
|
159
|
+
model=dict(
|
|
160
|
+
values=[
|
|
161
|
+
"nemo",
|
|
162
|
+
],
|
|
129
163
|
),
|
|
130
|
-
)
|
|
131
|
-
)
|
|
164
|
+
),
|
|
165
|
+
),
|
|
132
166
|
]
|
|
133
167
|
|
|
134
168
|
@property
|
|
135
169
|
def realkind(self):
|
|
136
|
-
return
|
|
170
|
+
return "nemo"
|
|
137
171
|
|
|
138
172
|
|
|
139
173
|
@gmkpack_bin_deco
|
|
@@ -144,21 +178,21 @@ class Prep(BlackBox):
|
|
|
144
178
|
arpifs_cycle,
|
|
145
179
|
gvar,
|
|
146
180
|
dict(
|
|
147
|
-
info
|
|
148
|
-
attr
|
|
149
|
-
gvar
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
181
|
+
info="Prep utility to interpolate Surfex files",
|
|
182
|
+
attr=dict(
|
|
183
|
+
gvar=dict(default="master_prep"),
|
|
184
|
+
kind=dict(
|
|
185
|
+
values=[
|
|
186
|
+
"prep",
|
|
187
|
+
],
|
|
154
188
|
),
|
|
155
|
-
)
|
|
156
|
-
)
|
|
189
|
+
),
|
|
190
|
+
),
|
|
157
191
|
]
|
|
158
192
|
|
|
159
193
|
@property
|
|
160
194
|
def realkind(self):
|
|
161
|
-
return
|
|
195
|
+
return "prep"
|
|
162
196
|
|
|
163
197
|
|
|
164
198
|
@gmkpack_bin_deco
|
|
@@ -168,21 +202,21 @@ class PGD(BlackBox):
|
|
|
168
202
|
_footprint = [
|
|
169
203
|
gvar,
|
|
170
204
|
dict(
|
|
171
|
-
info
|
|
172
|
-
attr
|
|
173
|
-
gvar
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
205
|
+
info="PGD utility to create Surfex clim files",
|
|
206
|
+
attr=dict(
|
|
207
|
+
gvar=dict(default="master_pgd"),
|
|
208
|
+
kind=dict(
|
|
209
|
+
values=[
|
|
210
|
+
"buildpgd",
|
|
211
|
+
],
|
|
178
212
|
),
|
|
179
|
-
)
|
|
180
|
-
)
|
|
213
|
+
),
|
|
214
|
+
),
|
|
181
215
|
]
|
|
182
216
|
|
|
183
217
|
@property
|
|
184
218
|
def realkind(self):
|
|
185
|
-
return
|
|
219
|
+
return "buildpgd"
|
|
186
220
|
|
|
187
221
|
|
|
188
222
|
@gmkpack_bin_deco
|
|
@@ -192,24 +226,24 @@ class OfflineSurfex(SurfaceModel):
|
|
|
192
226
|
_footprint = [
|
|
193
227
|
gvar,
|
|
194
228
|
dict(
|
|
195
|
-
info
|
|
196
|
-
attr
|
|
197
|
-
gvar
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
kind = dict(
|
|
201
|
-
values = ['offline', 'soda'],
|
|
229
|
+
info="Surfex executable",
|
|
230
|
+
attr=dict(
|
|
231
|
+
gvar=dict(default="master_offline"),
|
|
232
|
+
kind=dict(
|
|
233
|
+
values=["offline", "soda"],
|
|
202
234
|
),
|
|
203
|
-
model
|
|
204
|
-
values
|
|
235
|
+
model=dict(
|
|
236
|
+
values=[
|
|
237
|
+
"surfex",
|
|
238
|
+
],
|
|
205
239
|
),
|
|
206
|
-
)
|
|
207
|
-
)
|
|
240
|
+
),
|
|
241
|
+
),
|
|
208
242
|
]
|
|
209
243
|
|
|
210
244
|
@property
|
|
211
245
|
def realkind(self):
|
|
212
|
-
return
|
|
246
|
+
return "offline"
|
|
213
247
|
|
|
214
248
|
|
|
215
249
|
@gmkpack_bin_deco
|
|
@@ -219,22 +253,20 @@ class ProGrid(BlackBox):
|
|
|
219
253
|
_footprint = [
|
|
220
254
|
gvar,
|
|
221
255
|
dict(
|
|
222
|
-
info
|
|
223
|
-
attr
|
|
224
|
-
gvar
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
values = ['progrid', 'gribtool'],
|
|
229
|
-
remap = dict(gribtool = 'progrid'),
|
|
256
|
+
info="ProGrid utility for grib conversion",
|
|
257
|
+
attr=dict(
|
|
258
|
+
gvar=dict(default="master_progrid"),
|
|
259
|
+
kind=dict(
|
|
260
|
+
values=["progrid", "gribtool"],
|
|
261
|
+
remap=dict(gribtool="progrid"),
|
|
230
262
|
),
|
|
231
|
-
)
|
|
232
|
-
)
|
|
263
|
+
),
|
|
264
|
+
),
|
|
233
265
|
]
|
|
234
266
|
|
|
235
267
|
@property
|
|
236
268
|
def realkind(self):
|
|
237
|
-
return
|
|
269
|
+
return "progrid"
|
|
238
270
|
|
|
239
271
|
|
|
240
272
|
@gmkpack_bin_deco
|
|
@@ -244,22 +276,20 @@ class ProTool(BlackBox):
|
|
|
244
276
|
_footprint = [
|
|
245
277
|
gvar,
|
|
246
278
|
dict(
|
|
247
|
-
info
|
|
248
|
-
attr
|
|
249
|
-
gvar
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
values = ['protool', 'addsurf'],
|
|
254
|
-
remap = dict(addsurf='protool'),
|
|
279
|
+
info="ProTool utility for field manipulation",
|
|
280
|
+
attr=dict(
|
|
281
|
+
gvar=dict(default="master_addsurf"),
|
|
282
|
+
kind=dict(
|
|
283
|
+
values=["protool", "addsurf"],
|
|
284
|
+
remap=dict(addsurf="protool"),
|
|
255
285
|
),
|
|
256
|
-
)
|
|
257
|
-
)
|
|
286
|
+
),
|
|
287
|
+
),
|
|
258
288
|
]
|
|
259
289
|
|
|
260
290
|
@property
|
|
261
291
|
def realkind(self):
|
|
262
|
-
return
|
|
292
|
+
return "protool"
|
|
263
293
|
|
|
264
294
|
|
|
265
295
|
@gmkpack_bin_deco
|
|
@@ -269,16 +299,14 @@ class SstNetcdf2Ascii(BlackBox):
|
|
|
269
299
|
_footprint = [
|
|
270
300
|
gvar,
|
|
271
301
|
dict(
|
|
272
|
-
info
|
|
273
|
-
attr
|
|
274
|
-
gvar
|
|
275
|
-
|
|
302
|
+
info="Tool to change the format of NetCDF sst files",
|
|
303
|
+
attr=dict(
|
|
304
|
+
gvar=dict(default="master_sst_netcdf"),
|
|
305
|
+
kind=dict(
|
|
306
|
+
values=["sst_netcdf"],
|
|
276
307
|
),
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
)
|
|
280
|
-
)
|
|
281
|
-
)
|
|
308
|
+
),
|
|
309
|
+
),
|
|
282
310
|
]
|
|
283
311
|
|
|
284
312
|
|
|
@@ -289,21 +317,19 @@ class SstGrb2Ascii(BlackBox):
|
|
|
289
317
|
_footprint = [
|
|
290
318
|
gvar,
|
|
291
319
|
dict(
|
|
292
|
-
info
|
|
293
|
-
attr
|
|
294
|
-
gvar
|
|
295
|
-
|
|
320
|
+
info="Tool to change the format of grib sst files",
|
|
321
|
+
attr=dict(
|
|
322
|
+
gvar=dict(default="master_lectbdap"),
|
|
323
|
+
kind=dict(
|
|
324
|
+
values=["lectbdap"],
|
|
296
325
|
),
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
)
|
|
300
|
-
)
|
|
301
|
-
)
|
|
326
|
+
),
|
|
327
|
+
),
|
|
302
328
|
]
|
|
303
329
|
|
|
304
330
|
def command_line(self, year, month, day, hour, lon, lat):
|
|
305
331
|
"""Build the command line to launch the executable."""
|
|
306
|
-
return
|
|
332
|
+
return "-y{year} -m{month} -d{day} -r{hour} -o{lon} -a{lat}".format(
|
|
307
333
|
year=year, month=month, day=day, hour=hour, lon=lon, lat=lat
|
|
308
334
|
)
|
|
309
335
|
|
|
@@ -315,16 +341,12 @@ class IceGrb2Ascii(BlackBox):
|
|
|
315
341
|
_footprint = [
|
|
316
342
|
gvar,
|
|
317
343
|
dict(
|
|
318
|
-
info
|
|
319
|
-
attr
|
|
320
|
-
gvar
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
values = ['ice_grb']
|
|
325
|
-
)
|
|
326
|
-
)
|
|
327
|
-
)
|
|
344
|
+
info="Ice_grib executable to convert sea ice grib files into ascii files",
|
|
345
|
+
attr=dict(
|
|
346
|
+
gvar=dict(default="master_ice_grb"),
|
|
347
|
+
kind=dict(values=["ice_grb"]),
|
|
348
|
+
),
|
|
349
|
+
),
|
|
328
350
|
]
|
|
329
351
|
|
|
330
352
|
|
|
@@ -335,25 +357,21 @@ class IceNCDF2Ascii(BlackBox):
|
|
|
335
357
|
_footprint = [
|
|
336
358
|
gvar,
|
|
337
359
|
dict(
|
|
338
|
-
info
|
|
339
|
-
attr
|
|
340
|
-
gvar
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
values = ['ice_netcdf']
|
|
345
|
-
)
|
|
346
|
-
)
|
|
347
|
-
)
|
|
360
|
+
info="Ice_netcdf executable to convert sea ice NetCDF files into obsoul files",
|
|
361
|
+
attr=dict(
|
|
362
|
+
gvar=dict(default="master_ice_netcdf"),
|
|
363
|
+
kind=dict(values=["ice_netcdf"]),
|
|
364
|
+
),
|
|
365
|
+
),
|
|
348
366
|
]
|
|
349
367
|
|
|
350
368
|
def command_line(self, file_in_hn, file_in_hs, param, file_out):
|
|
351
369
|
"""Build the command line to launch the executable."""
|
|
352
|
-
return
|
|
370
|
+
return "{file_in_hn} {file_in_hs} {param} {file_out}".format(
|
|
353
371
|
file_in_hn=file_in_hn,
|
|
354
372
|
file_in_hs=file_in_hs,
|
|
355
373
|
param=param,
|
|
356
|
-
file_out=file_out
|
|
374
|
+
file_out=file_out,
|
|
357
375
|
)
|
|
358
376
|
|
|
359
377
|
|
|
@@ -363,27 +381,25 @@ class IOAssign(BlackBox):
|
|
|
363
381
|
_footprint = [
|
|
364
382
|
gvar,
|
|
365
383
|
dict(
|
|
366
|
-
info
|
|
367
|
-
attr
|
|
368
|
-
kind
|
|
369
|
-
values
|
|
370
|
-
remap
|
|
371
|
-
),
|
|
372
|
-
gvar = dict(
|
|
373
|
-
default = 'master_ioassign'
|
|
384
|
+
info="ProTool utility for field manipulation",
|
|
385
|
+
attr=dict(
|
|
386
|
+
kind=dict(
|
|
387
|
+
values=["ioassign", "odbioassign"],
|
|
388
|
+
remap=dict(odbioassign="ioassign"),
|
|
374
389
|
),
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
390
|
+
gvar=dict(default="master_ioassign"),
|
|
391
|
+
iotool=dict(
|
|
392
|
+
optional=True,
|
|
393
|
+
default="create_ioassign",
|
|
394
|
+
access="rwx",
|
|
379
395
|
),
|
|
380
|
-
)
|
|
381
|
-
)
|
|
396
|
+
),
|
|
397
|
+
),
|
|
382
398
|
]
|
|
383
399
|
|
|
384
400
|
@property
|
|
385
401
|
def realkind(self):
|
|
386
|
-
return
|
|
402
|
+
return "ioassign"
|
|
387
403
|
|
|
388
404
|
|
|
389
405
|
@gmkpack_bin_deco
|
|
@@ -394,29 +410,27 @@ class Batodb(BlackBox):
|
|
|
394
410
|
arpifs_cycle,
|
|
395
411
|
gvar,
|
|
396
412
|
dict(
|
|
397
|
-
info
|
|
398
|
-
attr
|
|
399
|
-
kind
|
|
400
|
-
values
|
|
401
|
-
remap
|
|
402
|
-
),
|
|
403
|
-
gvar = dict(
|
|
404
|
-
default = 'master_batodb'
|
|
413
|
+
info="Batodb conversion program",
|
|
414
|
+
attr=dict(
|
|
415
|
+
kind=dict(
|
|
416
|
+
values=["bator", "batodb"],
|
|
417
|
+
remap=dict(bator="batodb"),
|
|
405
418
|
),
|
|
406
|
-
|
|
407
|
-
|
|
419
|
+
gvar=dict(default="master_batodb"),
|
|
420
|
+
),
|
|
421
|
+
),
|
|
408
422
|
]
|
|
409
423
|
|
|
410
424
|
@property
|
|
411
425
|
def realkind(self):
|
|
412
|
-
return
|
|
426
|
+
return "batodb"
|
|
413
427
|
|
|
414
428
|
def command_line(self, dataid=None, date=None):
|
|
415
429
|
"""Build the command-line."""
|
|
416
430
|
cmdstuff = list()
|
|
417
|
-
if dataid ==
|
|
418
|
-
cmdstuff.append(
|
|
419
|
-
return
|
|
431
|
+
if dataid == "hh" and date is not None:
|
|
432
|
+
cmdstuff.append("{0.hh:s}".format(date))
|
|
433
|
+
return " ".join(cmdstuff)
|
|
420
434
|
|
|
421
435
|
|
|
422
436
|
@gmkpack_bin_deco
|
|
@@ -426,31 +440,40 @@ class Odbtools(BlackBox):
|
|
|
426
440
|
_footprint = [
|
|
427
441
|
gvar,
|
|
428
442
|
dict(
|
|
429
|
-
info
|
|
430
|
-
attr
|
|
431
|
-
kind
|
|
432
|
-
values
|
|
433
|
-
),
|
|
434
|
-
gvar = dict(
|
|
435
|
-
default = 'master_odbtools'
|
|
443
|
+
info="Odbtools shuffle program",
|
|
444
|
+
attr=dict(
|
|
445
|
+
kind=dict(
|
|
446
|
+
values=["odbtools"],
|
|
436
447
|
),
|
|
437
|
-
|
|
438
|
-
|
|
448
|
+
gvar=dict(default="master_odbtools"),
|
|
449
|
+
),
|
|
450
|
+
),
|
|
439
451
|
]
|
|
440
452
|
|
|
441
453
|
@property
|
|
442
454
|
def realkind(self):
|
|
443
|
-
return
|
|
444
|
-
|
|
445
|
-
def command_line(
|
|
455
|
+
return "odbtools"
|
|
456
|
+
|
|
457
|
+
def command_line(
|
|
458
|
+
self,
|
|
459
|
+
dbin="ECMA",
|
|
460
|
+
dbout="CCMA",
|
|
461
|
+
npool=1,
|
|
462
|
+
nslot=1,
|
|
463
|
+
fcma=None,
|
|
464
|
+
masksize=None,
|
|
465
|
+
date=None,
|
|
466
|
+
):
|
|
446
467
|
"""Build command line for execution as a single string."""
|
|
447
|
-
cmdline =
|
|
468
|
+
cmdline = "-i{:s} -o{:s} -b1 -a{:d} -T{:d}".format(
|
|
469
|
+
dbin.upper(), dbout.upper(), npool, nslot
|
|
470
|
+
)
|
|
448
471
|
if fcma is not None:
|
|
449
|
-
cmdline = cmdline +
|
|
472
|
+
cmdline = cmdline + " -F{:s}".format(fcma.upper())
|
|
450
473
|
if masksize is not None:
|
|
451
|
-
cmdline = cmdline +
|
|
474
|
+
cmdline = cmdline + " -n{:d}".format(int(masksize))
|
|
452
475
|
if date is not None:
|
|
453
|
-
cmdline = cmdline +
|
|
476
|
+
cmdline = cmdline + " -B" + date.ymdh
|
|
454
477
|
return cmdline
|
|
455
478
|
|
|
456
479
|
|
|
@@ -461,16 +484,14 @@ class FcqODB(BlackBox):
|
|
|
461
484
|
_footprint = [
|
|
462
485
|
gvar,
|
|
463
486
|
dict(
|
|
464
|
-
info
|
|
465
|
-
attr
|
|
466
|
-
kind
|
|
467
|
-
values
|
|
487
|
+
info="Flags calculation program",
|
|
488
|
+
attr=dict(
|
|
489
|
+
kind=dict(
|
|
490
|
+
values=["fcqodb"],
|
|
468
491
|
),
|
|
469
|
-
gvar
|
|
470
|
-
default = 'master_fcqodb'
|
|
471
|
-
)
|
|
492
|
+
gvar=dict(default="master_fcqodb"),
|
|
472
493
|
),
|
|
473
|
-
)
|
|
494
|
+
),
|
|
474
495
|
]
|
|
475
496
|
|
|
476
497
|
|
|
@@ -481,21 +502,19 @@ class VarBCTool(BlackBox):
|
|
|
481
502
|
_footprint = [
|
|
482
503
|
gvar,
|
|
483
504
|
dict(
|
|
484
|
-
info
|
|
485
|
-
attr
|
|
486
|
-
kind
|
|
487
|
-
values
|
|
488
|
-
),
|
|
489
|
-
gvar = dict(
|
|
490
|
-
default = 'master_merge_varbc'
|
|
505
|
+
info="VarBC merger program",
|
|
506
|
+
attr=dict(
|
|
507
|
+
kind=dict(
|
|
508
|
+
values=["varbctool"],
|
|
491
509
|
),
|
|
492
|
-
|
|
493
|
-
|
|
510
|
+
gvar=dict(default="master_merge_varbc"),
|
|
511
|
+
),
|
|
512
|
+
),
|
|
494
513
|
]
|
|
495
514
|
|
|
496
515
|
@property
|
|
497
516
|
def realkind(self):
|
|
498
|
-
return
|
|
517
|
+
return "varbctool"
|
|
499
518
|
|
|
500
519
|
|
|
501
520
|
class LopezMix(BlackBox):
|
|
@@ -504,22 +523,20 @@ class LopezMix(BlackBox):
|
|
|
504
523
|
_footprint = [
|
|
505
524
|
gvar,
|
|
506
525
|
dict(
|
|
507
|
-
info
|
|
508
|
-
attr
|
|
509
|
-
kind
|
|
510
|
-
values
|
|
511
|
-
remap
|
|
512
|
-
),
|
|
513
|
-
gvar = dict(
|
|
514
|
-
default = 'master_surfmix'
|
|
526
|
+
info="Surface mix",
|
|
527
|
+
attr=dict(
|
|
528
|
+
kind=dict(
|
|
529
|
+
values=["lopezmix", "lopez", "mastsurf", "surfmix"],
|
|
530
|
+
remap=dict(autoremap="first"),
|
|
515
531
|
),
|
|
516
|
-
|
|
517
|
-
|
|
532
|
+
gvar=dict(default="master_surfmix"),
|
|
533
|
+
),
|
|
534
|
+
),
|
|
518
535
|
]
|
|
519
536
|
|
|
520
537
|
@property
|
|
521
538
|
def realkind(self):
|
|
522
|
-
return
|
|
539
|
+
return "lopezmix"
|
|
523
540
|
|
|
524
541
|
|
|
525
542
|
class MasterDiag(BlackBox):
|
|
@@ -530,42 +547,38 @@ class MasterDiag(BlackBox):
|
|
|
530
547
|
arpifs_cycle,
|
|
531
548
|
gvar,
|
|
532
549
|
dict(
|
|
533
|
-
info
|
|
534
|
-
attr
|
|
535
|
-
gvar
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
values = ['masterdiag', 'masterdiagpi'],
|
|
540
|
-
remap = dict(masterdiagpi='masterdiag'),
|
|
550
|
+
info="MasterDiag abstract class utility for diagnostics computation",
|
|
551
|
+
attr=dict(
|
|
552
|
+
gvar=dict(default="master_diag_[diagnostic]"),
|
|
553
|
+
kind=dict(
|
|
554
|
+
values=["masterdiag", "masterdiagpi"],
|
|
555
|
+
remap=dict(masterdiagpi="masterdiag"),
|
|
541
556
|
),
|
|
542
|
-
diagnostic
|
|
543
|
-
info
|
|
544
|
-
optional
|
|
545
|
-
values
|
|
546
|
-
remap
|
|
557
|
+
diagnostic=dict(
|
|
558
|
+
info="The type of diagnostic to be performed.",
|
|
559
|
+
optional=True,
|
|
560
|
+
values=["voisin", "neighbour", "aromepi", "labo"],
|
|
561
|
+
remap=dict(neighbour="voisin"),
|
|
547
562
|
),
|
|
548
|
-
)
|
|
549
|
-
)
|
|
563
|
+
),
|
|
564
|
+
),
|
|
550
565
|
]
|
|
551
566
|
|
|
552
567
|
@property
|
|
553
568
|
def realkind(self):
|
|
554
|
-
return
|
|
569
|
+
return "masterdiag"
|
|
555
570
|
|
|
556
571
|
|
|
557
572
|
class MasterDiagLabo(MasterDiag):
|
|
558
573
|
"""binary to compute a diagnostic with some gribs for cycle after the 46th."""
|
|
559
574
|
|
|
560
575
|
_footprint = dict(
|
|
561
|
-
attr
|
|
562
|
-
diagnostic
|
|
563
|
-
default
|
|
576
|
+
attr=dict(
|
|
577
|
+
diagnostic=dict(
|
|
578
|
+
default="labo",
|
|
564
579
|
)
|
|
565
580
|
),
|
|
566
|
-
only
|
|
567
|
-
after_cycle = ArpIfsSimplifiedCycle('cy46')
|
|
568
|
-
)
|
|
581
|
+
only=dict(after_cycle=ArpIfsSimplifiedCycle("cy46")),
|
|
569
582
|
)
|
|
570
583
|
|
|
571
584
|
|
|
@@ -573,14 +586,12 @@ class MasterDiagPi(MasterDiag):
|
|
|
573
586
|
"""binary to compute a diagnostic with some gribs for cycle before the 46th."""
|
|
574
587
|
|
|
575
588
|
_footprint = dict(
|
|
576
|
-
attr
|
|
577
|
-
diagnostic
|
|
578
|
-
default
|
|
589
|
+
attr=dict(
|
|
590
|
+
diagnostic=dict(
|
|
591
|
+
default="aromepi",
|
|
579
592
|
)
|
|
580
593
|
),
|
|
581
|
-
only=dict(
|
|
582
|
-
before_cycle = ArpIfsSimplifiedCycle('cy46')
|
|
583
|
-
)
|
|
594
|
+
only=dict(before_cycle=ArpIfsSimplifiedCycle("cy46")),
|
|
584
595
|
)
|
|
585
596
|
|
|
586
597
|
|
|
@@ -588,26 +599,27 @@ class IOPoll(Script):
|
|
|
588
599
|
"""
|
|
589
600
|
The IOPoll script. A Genvkey can be given.
|
|
590
601
|
"""
|
|
602
|
+
|
|
591
603
|
_footprint = [
|
|
592
604
|
gvar,
|
|
593
605
|
dict(
|
|
594
|
-
info=
|
|
606
|
+
info="IOPoll script",
|
|
595
607
|
attr=dict(
|
|
596
608
|
kind=dict(
|
|
597
|
-
optional
|
|
598
|
-
values=[
|
|
599
|
-
remap=dict(autoremap=
|
|
609
|
+
optional=False,
|
|
610
|
+
values=["iopoll", "io_poll"],
|
|
611
|
+
remap=dict(autoremap="first"),
|
|
600
612
|
),
|
|
601
613
|
gvar=dict(
|
|
602
|
-
default=
|
|
614
|
+
default="tools_io_poll",
|
|
603
615
|
),
|
|
604
|
-
)
|
|
605
|
-
)
|
|
616
|
+
),
|
|
617
|
+
),
|
|
606
618
|
]
|
|
607
619
|
|
|
608
620
|
@property
|
|
609
621
|
def realkind(self):
|
|
610
|
-
return
|
|
622
|
+
return "iopoll"
|
|
611
623
|
|
|
612
624
|
|
|
613
625
|
class LFITools(BlackBox):
|
|
@@ -616,21 +628,21 @@ class LFITools(BlackBox):
|
|
|
616
628
|
_footprint = [
|
|
617
629
|
gvar,
|
|
618
630
|
dict(
|
|
619
|
-
info
|
|
620
|
-
attr
|
|
621
|
-
kind
|
|
622
|
-
values
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
default = 'master_lfitools'
|
|
631
|
+
info="Tool to handle LFI/FA files",
|
|
632
|
+
attr=dict(
|
|
633
|
+
kind=dict(
|
|
634
|
+
values=[
|
|
635
|
+
"lfitools",
|
|
636
|
+
],
|
|
626
637
|
),
|
|
627
|
-
|
|
628
|
-
|
|
638
|
+
gvar=dict(default="master_lfitools"),
|
|
639
|
+
),
|
|
640
|
+
),
|
|
629
641
|
]
|
|
630
642
|
|
|
631
643
|
@property
|
|
632
644
|
def realkind(self):
|
|
633
|
-
return
|
|
645
|
+
return "lfitools"
|
|
634
646
|
|
|
635
647
|
|
|
636
648
|
class SFXTools(BlackBox):
|
|
@@ -639,21 +651,21 @@ class SFXTools(BlackBox):
|
|
|
639
651
|
_footprint = [
|
|
640
652
|
gvar,
|
|
641
653
|
dict(
|
|
642
|
-
info
|
|
643
|
-
attr
|
|
644
|
-
kind
|
|
645
|
-
values
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
default = 'master_sfxtools'
|
|
654
|
+
info="Tool that handles Surfex files",
|
|
655
|
+
attr=dict(
|
|
656
|
+
kind=dict(
|
|
657
|
+
values=[
|
|
658
|
+
"sfxtools",
|
|
659
|
+
],
|
|
649
660
|
),
|
|
650
|
-
|
|
651
|
-
|
|
661
|
+
gvar=dict(default="master_sfxtools"),
|
|
662
|
+
),
|
|
663
|
+
),
|
|
652
664
|
]
|
|
653
665
|
|
|
654
666
|
@property
|
|
655
667
|
def realkind(self):
|
|
656
|
-
return
|
|
668
|
+
return "sfxtools"
|
|
657
669
|
|
|
658
670
|
|
|
659
671
|
@gmkpack_bin_deco
|
|
@@ -663,21 +675,19 @@ class Combi(BlackBox):
|
|
|
663
675
|
_footprint = [
|
|
664
676
|
gvar,
|
|
665
677
|
dict(
|
|
666
|
-
info
|
|
667
|
-
attr
|
|
668
|
-
kind
|
|
669
|
-
values
|
|
670
|
-
),
|
|
671
|
-
gvar = dict(
|
|
672
|
-
default = 'master_combi'
|
|
678
|
+
info="Tool to build EPS initial conditions",
|
|
679
|
+
attr=dict(
|
|
680
|
+
kind=dict(
|
|
681
|
+
values=["combi"],
|
|
673
682
|
),
|
|
674
|
-
|
|
675
|
-
|
|
683
|
+
gvar=dict(default="master_combi"),
|
|
684
|
+
),
|
|
685
|
+
),
|
|
676
686
|
]
|
|
677
687
|
|
|
678
688
|
@property
|
|
679
689
|
def realkind(self):
|
|
680
|
-
return
|
|
690
|
+
return "combi"
|
|
681
691
|
|
|
682
692
|
|
|
683
693
|
@gmkpack_bin_deco
|
|
@@ -687,21 +697,19 @@ class Gobptout(BlackBox):
|
|
|
687
697
|
_footprint = [
|
|
688
698
|
gvar,
|
|
689
699
|
dict(
|
|
690
|
-
info
|
|
691
|
-
attr
|
|
692
|
-
gvar
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
kind = dict(
|
|
696
|
-
values = ['gobptout'],
|
|
700
|
+
info="Gobptout utility for grib conversion",
|
|
701
|
+
attr=dict(
|
|
702
|
+
gvar=dict(default="master_gobtout"),
|
|
703
|
+
kind=dict(
|
|
704
|
+
values=["gobptout"],
|
|
697
705
|
),
|
|
698
|
-
)
|
|
699
|
-
)
|
|
706
|
+
),
|
|
707
|
+
),
|
|
700
708
|
]
|
|
701
709
|
|
|
702
710
|
@property
|
|
703
711
|
def realkind(self):
|
|
704
|
-
return
|
|
712
|
+
return "gobptout"
|
|
705
713
|
|
|
706
714
|
|
|
707
715
|
@gmkpack_bin_deco
|
|
@@ -711,21 +719,19 @@ class Clust(BlackBox):
|
|
|
711
719
|
_footprint = [
|
|
712
720
|
gvar,
|
|
713
721
|
dict(
|
|
714
|
-
info
|
|
715
|
-
attr
|
|
716
|
-
kind
|
|
717
|
-
values
|
|
718
|
-
),
|
|
719
|
-
gvar = dict(
|
|
720
|
-
default = 'master_clust'
|
|
722
|
+
info="Tool that selects a subset of EPS members using the Clustering method",
|
|
723
|
+
attr=dict(
|
|
724
|
+
kind=dict(
|
|
725
|
+
values=["clust"],
|
|
721
726
|
),
|
|
722
|
-
|
|
723
|
-
|
|
727
|
+
gvar=dict(default="master_clust"),
|
|
728
|
+
),
|
|
729
|
+
),
|
|
724
730
|
]
|
|
725
731
|
|
|
726
732
|
@property
|
|
727
733
|
def realkind(self):
|
|
728
|
-
return
|
|
734
|
+
return "clust"
|
|
729
735
|
|
|
730
736
|
|
|
731
737
|
@gmkpack_bin_deco
|
|
@@ -735,21 +741,19 @@ class PertSurf(BlackBox):
|
|
|
735
741
|
_footprint = [
|
|
736
742
|
gvar,
|
|
737
743
|
dict(
|
|
738
|
-
info
|
|
739
|
-
attr
|
|
740
|
-
kind
|
|
741
|
-
values
|
|
742
|
-
),
|
|
743
|
-
gvar = dict(
|
|
744
|
-
default = 'master_pertsurf'
|
|
744
|
+
info="Tool that adds perturbations to surface fields",
|
|
745
|
+
attr=dict(
|
|
746
|
+
kind=dict(
|
|
747
|
+
values=["pertsurf"],
|
|
745
748
|
),
|
|
746
|
-
|
|
747
|
-
|
|
749
|
+
gvar=dict(default="master_pertsurf"),
|
|
750
|
+
),
|
|
751
|
+
),
|
|
748
752
|
]
|
|
749
753
|
|
|
750
754
|
@property
|
|
751
755
|
def realkind(self):
|
|
752
|
-
return
|
|
756
|
+
return "pertsurf"
|
|
753
757
|
|
|
754
758
|
|
|
755
759
|
@gmkpack_bin_deco
|
|
@@ -762,21 +766,19 @@ class AddPearp(BlackBox):
|
|
|
762
766
|
_footprint = [
|
|
763
767
|
gvar,
|
|
764
768
|
dict(
|
|
765
|
-
info
|
|
766
|
-
attr
|
|
767
|
-
kind
|
|
768
|
-
values
|
|
769
|
-
),
|
|
770
|
-
gvar = dict(
|
|
771
|
-
default = 'master_addpearp'
|
|
769
|
+
info="Tool that adds perturbations taken from a given PEARP member",
|
|
770
|
+
attr=dict(
|
|
771
|
+
kind=dict(
|
|
772
|
+
values=["addpearp"],
|
|
772
773
|
),
|
|
773
|
-
|
|
774
|
-
|
|
774
|
+
gvar=dict(default="master_addpearp"),
|
|
775
|
+
),
|
|
776
|
+
),
|
|
775
777
|
]
|
|
776
778
|
|
|
777
779
|
@property
|
|
778
780
|
def realkind(self):
|
|
779
|
-
return
|
|
781
|
+
return "addpearp"
|
|
780
782
|
|
|
781
783
|
|
|
782
784
|
class BDMExecutableBUFR(Script):
|
|
@@ -785,45 +787,47 @@ class BDMExecutableBUFR(Script):
|
|
|
785
787
|
_footprint = [
|
|
786
788
|
gvar,
|
|
787
789
|
dict(
|
|
788
|
-
info
|
|
789
|
-
attr
|
|
790
|
-
source
|
|
791
|
-
values
|
|
790
|
+
info="Executable to extract BDM files using Oulan",
|
|
791
|
+
attr=dict(
|
|
792
|
+
source=dict(
|
|
793
|
+
values=["alim.awk", "alim_olive.awk"],
|
|
792
794
|
),
|
|
793
|
-
kind
|
|
794
|
-
optional
|
|
795
|
-
values
|
|
795
|
+
kind=dict(
|
|
796
|
+
optional=False,
|
|
797
|
+
values=[
|
|
798
|
+
"bdm_bufr_extract",
|
|
799
|
+
],
|
|
796
800
|
),
|
|
797
801
|
gvar=dict(
|
|
798
|
-
values=[
|
|
799
|
-
default=
|
|
802
|
+
values=["extract_stuff"],
|
|
803
|
+
default="extract_stuff",
|
|
800
804
|
),
|
|
801
|
-
language
|
|
802
|
-
default
|
|
803
|
-
values
|
|
804
|
-
optional
|
|
805
|
-
)
|
|
806
|
-
)
|
|
807
|
-
)
|
|
805
|
+
language=dict(
|
|
806
|
+
default="awk",
|
|
807
|
+
values=["awk"],
|
|
808
|
+
optional=True,
|
|
809
|
+
),
|
|
810
|
+
),
|
|
811
|
+
),
|
|
808
812
|
]
|
|
809
813
|
|
|
810
814
|
@property
|
|
811
815
|
def realkind(self):
|
|
812
|
-
return
|
|
816
|
+
return "bdm_bufr_extract"
|
|
813
817
|
|
|
814
818
|
def gget_urlquery(self):
|
|
815
819
|
"""GGET specific query : ``extract``."""
|
|
816
|
-
return
|
|
820
|
+
return "extract=" + self.source
|
|
817
821
|
|
|
818
822
|
def command_line(self, **opts):
|
|
819
823
|
"""Returns optional attribute :attr:`rawopts`."""
|
|
820
824
|
args = []
|
|
821
|
-
if
|
|
822
|
-
args.append(opts[
|
|
825
|
+
if "query" in opts:
|
|
826
|
+
args.append(opts["query"]) # The query name
|
|
823
827
|
superraw = super().command_line(**opts)
|
|
824
828
|
if superraw:
|
|
825
829
|
args.append(superraw) # Other arguments provided by the user
|
|
826
|
-
return
|
|
830
|
+
return " ".join(args)
|
|
827
831
|
|
|
828
832
|
|
|
829
833
|
class BDMExecutableOulan(BlackBox):
|
|
@@ -832,22 +836,24 @@ class BDMExecutableOulan(BlackBox):
|
|
|
832
836
|
_footprint = [
|
|
833
837
|
gvar,
|
|
834
838
|
dict(
|
|
835
|
-
info
|
|
836
|
-
attr
|
|
837
|
-
kind
|
|
838
|
-
values
|
|
839
|
+
info="Executable to extract BDM BUFR files",
|
|
840
|
+
attr=dict(
|
|
841
|
+
kind=dict(
|
|
842
|
+
values=[
|
|
843
|
+
"bdm_oulan_extract",
|
|
844
|
+
],
|
|
839
845
|
),
|
|
840
846
|
gvar=dict(
|
|
841
|
-
values=[
|
|
842
|
-
default=
|
|
847
|
+
values=["master_oulan"],
|
|
848
|
+
default="master_oulan",
|
|
843
849
|
),
|
|
844
|
-
)
|
|
845
|
-
)
|
|
850
|
+
),
|
|
851
|
+
),
|
|
846
852
|
]
|
|
847
853
|
|
|
848
854
|
@property
|
|
849
855
|
def realkind(self):
|
|
850
|
-
return
|
|
856
|
+
return "bdm_obsoul_extract"
|
|
851
857
|
|
|
852
858
|
|
|
853
859
|
class ExecMonitoring(BlackBox):
|
|
@@ -856,16 +862,14 @@ class ExecMonitoring(BlackBox):
|
|
|
856
862
|
_footprint = [
|
|
857
863
|
gvar,
|
|
858
864
|
dict(
|
|
859
|
-
info
|
|
860
|
-
attr
|
|
861
|
-
gvar
|
|
862
|
-
|
|
865
|
+
info="Executable to compute monitoring statistics",
|
|
866
|
+
attr=dict(
|
|
867
|
+
gvar=dict(default="master_monitoring"),
|
|
868
|
+
kind=dict(
|
|
869
|
+
values=["exec_monitoring"],
|
|
863
870
|
),
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
)
|
|
867
|
-
)
|
|
868
|
-
)
|
|
871
|
+
),
|
|
872
|
+
),
|
|
869
873
|
]
|
|
870
874
|
|
|
871
875
|
|
|
@@ -875,21 +879,19 @@ class ExecReverser(BlackBox):
|
|
|
875
879
|
_footprint = [
|
|
876
880
|
gvar,
|
|
877
881
|
dict(
|
|
878
|
-
info=
|
|
882
|
+
info="Executable to compute initial state for Ctpini",
|
|
879
883
|
attr=dict(
|
|
880
|
-
gvar=dict(
|
|
881
|
-
default="master_involive_km"
|
|
882
|
-
),
|
|
884
|
+
gvar=dict(default="master_involive_km"),
|
|
883
885
|
kind=dict(
|
|
884
|
-
values=[
|
|
886
|
+
values=["exec_reverser"],
|
|
885
887
|
),
|
|
886
|
-
)
|
|
887
|
-
)
|
|
888
|
+
),
|
|
889
|
+
),
|
|
888
890
|
]
|
|
889
891
|
|
|
890
892
|
@property
|
|
891
893
|
def realkind(self):
|
|
892
|
-
return
|
|
894
|
+
return "exec_reverser"
|
|
893
895
|
|
|
894
896
|
|
|
895
897
|
@gmkpack_bin_deco
|
|
@@ -899,28 +901,30 @@ class Rgrid(BlackBox):
|
|
|
899
901
|
_footprint = [
|
|
900
902
|
gvar,
|
|
901
903
|
dict(
|
|
902
|
-
info
|
|
903
|
-
attr
|
|
904
|
-
kind
|
|
905
|
-
values
|
|
904
|
+
info="Executable to make a gaussian reduced grid",
|
|
905
|
+
attr=dict(
|
|
906
|
+
kind=dict(
|
|
907
|
+
values=[
|
|
908
|
+
"rgrid",
|
|
909
|
+
],
|
|
906
910
|
),
|
|
907
911
|
gvar=dict(
|
|
908
|
-
values=[
|
|
909
|
-
default=
|
|
912
|
+
values=["master_rgrid"],
|
|
913
|
+
default="master_rgrid",
|
|
910
914
|
),
|
|
911
|
-
)
|
|
912
|
-
)
|
|
915
|
+
),
|
|
916
|
+
),
|
|
913
917
|
]
|
|
914
918
|
|
|
915
919
|
@property
|
|
916
920
|
def realkind(self):
|
|
917
|
-
return
|
|
921
|
+
return "rgrid"
|
|
918
922
|
|
|
919
923
|
def command_line(self, **opts):
|
|
920
924
|
args = []
|
|
921
925
|
for k, v in opts.items():
|
|
922
|
-
args.extend([
|
|
923
|
-
return
|
|
926
|
+
args.extend(["-" + k, v])
|
|
927
|
+
return " ".join(args)
|
|
924
928
|
|
|
925
929
|
|
|
926
930
|
@gmkpack_bin_deco
|
|
@@ -930,16 +934,18 @@ class Festat(BlackBox):
|
|
|
930
934
|
_footprint = [
|
|
931
935
|
gvar,
|
|
932
936
|
dict(
|
|
933
|
-
info
|
|
934
|
-
attr
|
|
935
|
-
kind
|
|
936
|
-
values
|
|
937
|
+
info="Executable to compute the B matrix",
|
|
938
|
+
attr=dict(
|
|
939
|
+
kind=dict(
|
|
940
|
+
values=[
|
|
941
|
+
"festat",
|
|
942
|
+
],
|
|
937
943
|
),
|
|
938
|
-
gvar
|
|
939
|
-
optional
|
|
944
|
+
gvar=dict(
|
|
945
|
+
optional=True,
|
|
940
946
|
),
|
|
941
|
-
)
|
|
942
|
-
)
|
|
947
|
+
),
|
|
948
|
+
),
|
|
943
949
|
]
|
|
944
950
|
|
|
945
951
|
|
|
@@ -949,21 +955,25 @@ class EnsembleDiagScript(GnuScript):
|
|
|
949
955
|
_footprint = [
|
|
950
956
|
gvar,
|
|
951
957
|
dict(
|
|
952
|
-
info=
|
|
958
|
+
info="Script to compute some ensemble diagnostics.",
|
|
953
959
|
attr=dict(
|
|
954
960
|
kind=dict(
|
|
955
|
-
values
|
|
961
|
+
values=[
|
|
962
|
+
"ens_diag_script",
|
|
963
|
+
],
|
|
956
964
|
),
|
|
957
965
|
scope=dict(
|
|
958
|
-
values
|
|
959
|
-
|
|
960
|
-
|
|
966
|
+
values=[
|
|
967
|
+
"generic",
|
|
968
|
+
],
|
|
969
|
+
optional=True,
|
|
970
|
+
default="generic",
|
|
961
971
|
),
|
|
962
972
|
gvar=dict(
|
|
963
|
-
default
|
|
973
|
+
default="master_ensdiag_[scope]",
|
|
964
974
|
),
|
|
965
|
-
)
|
|
966
|
-
)
|
|
975
|
+
),
|
|
976
|
+
),
|
|
967
977
|
]
|
|
968
978
|
|
|
969
979
|
|
|
@@ -973,21 +983,19 @@ class DomeoForcing(BlackBox):
|
|
|
973
983
|
_footprint = [
|
|
974
984
|
gvar,
|
|
975
985
|
dict(
|
|
976
|
-
info
|
|
977
|
-
attr
|
|
978
|
-
kind
|
|
979
|
-
values
|
|
980
|
-
),
|
|
981
|
-
gvar = dict(
|
|
982
|
-
default = 'master_domeo_forcing'
|
|
986
|
+
info="Some binary that tweak forcing files for domeo use",
|
|
987
|
+
attr=dict(
|
|
988
|
+
kind=dict(
|
|
989
|
+
values=["domeo_forcing"],
|
|
983
990
|
),
|
|
984
|
-
|
|
985
|
-
|
|
991
|
+
gvar=dict(default="master_domeo_forcing"),
|
|
992
|
+
),
|
|
993
|
+
),
|
|
986
994
|
]
|
|
987
995
|
|
|
988
996
|
@property
|
|
989
997
|
def realkind(self):
|
|
990
|
-
return
|
|
998
|
+
return "domeo_forcing"
|
|
991
999
|
|
|
992
1000
|
|
|
993
1001
|
class DomeoScriptDataCor(Script):
|
|
@@ -996,24 +1004,22 @@ class DomeoScriptDataCor(Script):
|
|
|
996
1004
|
_footprint = [
|
|
997
1005
|
gvar,
|
|
998
1006
|
dict(
|
|
999
|
-
info
|
|
1000
|
-
attr
|
|
1001
|
-
kind
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
purpose = dict(
|
|
1005
|
-
values = ['forcing', 'crop'],
|
|
1007
|
+
info="correction script",
|
|
1008
|
+
attr=dict(
|
|
1009
|
+
kind=dict(values=["domeo_cor_script"]),
|
|
1010
|
+
purpose=dict(
|
|
1011
|
+
values=["forcing", "crop"],
|
|
1006
1012
|
),
|
|
1007
|
-
gvar
|
|
1008
|
-
default
|
|
1013
|
+
gvar=dict(
|
|
1014
|
+
default="scr_domeo_cor_[purpose]",
|
|
1009
1015
|
),
|
|
1010
|
-
)
|
|
1011
|
-
)
|
|
1016
|
+
),
|
|
1017
|
+
),
|
|
1012
1018
|
]
|
|
1013
1019
|
|
|
1014
1020
|
@property
|
|
1015
1021
|
def realkind(self):
|
|
1016
|
-
return
|
|
1022
|
+
return "domeo_cor_script"
|
|
1017
1023
|
|
|
1018
1024
|
|
|
1019
1025
|
class Xios(BlackBox):
|
|
@@ -1022,18 +1028,18 @@ class Xios(BlackBox):
|
|
|
1022
1028
|
_footprint = [
|
|
1023
1029
|
gvar,
|
|
1024
1030
|
dict(
|
|
1025
|
-
info
|
|
1026
|
-
attr
|
|
1027
|
-
kind
|
|
1028
|
-
values
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
default = 'master_xios'
|
|
1031
|
+
info="The XIOS I/O Server.",
|
|
1032
|
+
attr=dict(
|
|
1033
|
+
kind=dict(
|
|
1034
|
+
values=[
|
|
1035
|
+
"xios",
|
|
1036
|
+
],
|
|
1032
1037
|
),
|
|
1033
|
-
|
|
1034
|
-
|
|
1038
|
+
gvar=dict(default="master_xios"),
|
|
1039
|
+
),
|
|
1040
|
+
),
|
|
1035
1041
|
]
|
|
1036
1042
|
|
|
1037
1043
|
@property
|
|
1038
1044
|
def realkind(self):
|
|
1039
|
-
return
|
|
1045
|
+
return "xios"
|