vortex-nwp 2.0.0b1__py3-none-any.whl → 2.1.0__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 +75 -47
- vortex/algo/__init__.py +3 -2
- vortex/algo/components.py +944 -618
- vortex/algo/mpitools.py +802 -497
- vortex/algo/mpitools_templates/__init__.py +1 -0
- 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 +436 -227
- vortex/data/outflow.py +15 -15
- vortex/data/providers.py +185 -163
- vortex/data/resources.py +48 -42
- vortex/data/stores.py +540 -417
- vortex/data/sync_templates/__init__.py +0 -0
- 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 +416 -275
- vortex/nwp/algo/fpserver.py +683 -307
- vortex/nwp/algo/ifsnaming.py +205 -145
- vortex/nwp/algo/ifsroot.py +215 -122
- vortex/nwp/algo/monitoring.py +137 -76
- vortex/nwp/algo/mpitools.py +330 -190
- vortex/nwp/algo/odbtools.py +637 -353
- vortex/nwp/algo/oopsroot.py +454 -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 +110 -121
- 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 +341 -162
- vortex/tools/lfi.py +423 -216
- vortex/tools/listings.py +109 -40
- vortex/tools/names.py +218 -156
- vortex/tools/net.py +655 -299
- vortex/tools/parallelism.py +93 -61
- vortex/tools/prestaging.py +55 -31
- vortex/tools/schedulers.py +172 -105
- vortex/tools/services.py +403 -334
- vortex/tools/storage.py +293 -358
- vortex/tools/surfex.py +24 -24
- vortex/tools/systems.py +1234 -643
- vortex/tools/targets.py +156 -100
- vortex/util/__init__.py +1 -1
- vortex/util/config.py +378 -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.1.0.dist-info/METADATA +67 -0
- vortex_nwp-2.1.0.dist-info/RECORD +144 -0
- {vortex_nwp-2.0.0b1.dist-info → vortex_nwp-2.1.0.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.1.0.dist-info/licenses}/LICENSE +0 -0
- {vortex_nwp-2.0.0b1.dist-info → vortex_nwp-2.1.0.dist-info}/top_level.txt +0 -0
vortex/nwp/data/stores.py
CHANGED
|
@@ -25,31 +25,29 @@ class BdpeStore(Store):
|
|
|
25
25
|
_footprint = [
|
|
26
26
|
compressionpipeline,
|
|
27
27
|
dict(
|
|
28
|
-
info
|
|
29
|
-
attr
|
|
30
|
-
scheme
|
|
31
|
-
values
|
|
28
|
+
info="Access the BDPE database",
|
|
29
|
+
attr=dict(
|
|
30
|
+
scheme=dict(
|
|
31
|
+
values=["bdpe"],
|
|
32
32
|
),
|
|
33
|
-
netloc
|
|
34
|
-
values
|
|
33
|
+
netloc=dict(
|
|
34
|
+
values=["bdpe.archive.fr"],
|
|
35
35
|
),
|
|
36
36
|
),
|
|
37
|
-
priority
|
|
38
|
-
level = footprints.priorities.top.DEFAULT
|
|
39
|
-
),
|
|
37
|
+
priority=dict(level=footprints.priorities.top.DEFAULT),
|
|
40
38
|
),
|
|
41
39
|
]
|
|
42
40
|
|
|
43
41
|
@property
|
|
44
42
|
def realkind(self):
|
|
45
|
-
return
|
|
43
|
+
return "bdpe"
|
|
46
44
|
|
|
47
45
|
def bdpelocate(self, remote, options):
|
|
48
46
|
"""Reasonably close to whatever 'remote location' could mean.
|
|
49
47
|
|
|
50
48
|
e.g.: ``bdpe://bdpe.archive.fr/EXPE/date/BDPE_num+term``
|
|
51
49
|
"""
|
|
52
|
-
return self.scheme +
|
|
50
|
+
return self.scheme + "://" + self.netloc + remote["path"]
|
|
53
51
|
|
|
54
52
|
def bdpecheck(self, remote, options):
|
|
55
53
|
"""Cannot check a BDPE call a priori."""
|
|
@@ -71,21 +69,27 @@ class BdpeStore(Store):
|
|
|
71
69
|
|
|
72
70
|
# Check that local is a file (i.e not a virtual container)
|
|
73
71
|
if not isinstance(local, str):
|
|
74
|
-
raise TypeError(
|
|
72
|
+
raise TypeError(
|
|
73
|
+
"The BDPE provider can not deal with virtual containers"
|
|
74
|
+
)
|
|
75
75
|
|
|
76
76
|
# remote['path'] looks like '/OPER_SEC_DEV_True_10_3/20151105T0000P/BDPE_42+06:00'
|
|
77
|
-
_, targetmix, str_date, more = remote[
|
|
78
|
-
p_target, f_target, domain, s_archive, timeout, retries =
|
|
79
|
-
|
|
77
|
+
_, targetmix, str_date, more = remote["path"].split("/")
|
|
78
|
+
p_target, f_target, domain, s_archive, timeout, retries = (
|
|
79
|
+
targetmix.split("_")
|
|
80
|
+
)
|
|
81
|
+
productid, str_term = more[5:].split("+")
|
|
80
82
|
|
|
81
83
|
# the 'oper' domain is allowed only to the operational suite
|
|
82
|
-
if domain ==
|
|
83
|
-
if not vortex.ticket().glove.profile ==
|
|
84
|
-
logger.warning(
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
84
|
+
if domain == "oper":
|
|
85
|
+
if not vortex.ticket().glove.profile == "oper":
|
|
86
|
+
logger.warning(
|
|
87
|
+
"Only profile 'oper' can use 'soprano_domain=oper'. Using 'dev' instead."
|
|
88
|
+
)
|
|
89
|
+
domain = "dev"
|
|
90
|
+
|
|
91
|
+
if str_date == "most_recent":
|
|
92
|
+
bdpe_date = "/"
|
|
89
93
|
else:
|
|
90
94
|
bdpe_date = date.Date(str_date).ymdhms
|
|
91
95
|
bdpe_term = date.Time(str_term).fmtraw
|
|
@@ -93,7 +97,7 @@ class BdpeStore(Store):
|
|
|
93
97
|
productid, # id
|
|
94
98
|
bdpe_date, # date: yyyymmddhhmmss
|
|
95
99
|
bdpe_term, # term: HHHHmm
|
|
96
|
-
local,
|
|
100
|
+
local, # local filename
|
|
97
101
|
]
|
|
98
102
|
extraenv = dict(
|
|
99
103
|
BDPE_CIBLE_PREFEREE=p_target,
|
|
@@ -102,31 +106,37 @@ class BdpeStore(Store):
|
|
|
102
106
|
BDPE_TIMEOUT=timeout,
|
|
103
107
|
BDPE_RETRYS=retries,
|
|
104
108
|
)
|
|
105
|
-
if s_archive ==
|
|
106
|
-
extraenv[
|
|
109
|
+
if s_archive == "True":
|
|
110
|
+
extraenv["BDPE_LECTURE_ARCHIVE_AUTORISEE"] = "oui"
|
|
107
111
|
|
|
108
|
-
wsinterpreter = self.system.default_target.get(
|
|
109
|
-
|
|
112
|
+
wsinterpreter = self.system.default_target.get(
|
|
113
|
+
"bdpe:wsclient_interpreter", None
|
|
114
|
+
)
|
|
115
|
+
wscommand = self.system.default_target.get("bdpe:wsclient_path", None)
|
|
110
116
|
if wscommand is None:
|
|
111
|
-
raise RuntimeError(
|
|
117
|
+
raise RuntimeError(
|
|
118
|
+
"bdpe:wsclient_path has to be set in the target config"
|
|
119
|
+
)
|
|
112
120
|
|
|
113
121
|
args.insert(0, wscommand)
|
|
114
122
|
if wsinterpreter is not None:
|
|
115
123
|
args.insert(0, wsinterpreter)
|
|
116
124
|
|
|
117
|
-
logger.debug(
|
|
125
|
+
logger.debug("lirepe_cmd: %s", " ".join(args))
|
|
118
126
|
|
|
119
127
|
with self.system.env.delta_context(**extraenv):
|
|
120
128
|
rc = self.system.spawn(args, output=False, fatal=False)
|
|
121
129
|
rc = rc and self.system.path.exists(local)
|
|
122
130
|
|
|
123
|
-
diagfile = local +
|
|
131
|
+
diagfile = local + ".diag"
|
|
124
132
|
if not rc:
|
|
125
|
-
logger.warning(
|
|
126
|
-
|
|
127
|
-
|
|
133
|
+
logger.warning(
|
|
134
|
+
"Something went wrong with the following command: %s",
|
|
135
|
+
" ".join(args),
|
|
136
|
+
)
|
|
137
|
+
if not rc or bdpe_date == "/":
|
|
128
138
|
if self.system.path.exists(diagfile):
|
|
129
|
-
logger.warning(
|
|
139
|
+
logger.warning("The %s file is:", diagfile)
|
|
130
140
|
self.system.cat(diagfile)
|
|
131
141
|
if rc and self._actual_cpipeline:
|
|
132
142
|
# Deal with compressed files in the BDPE using the optional attribute
|
|
@@ -136,10 +146,13 @@ class BdpeStore(Store):
|
|
|
136
146
|
self._actual_cpipeline.file2uncompress(tempfile, local)
|
|
137
147
|
rc = rc and self.system.path.exists(local)
|
|
138
148
|
if not rc:
|
|
139
|
-
logger.warning(
|
|
149
|
+
logger.warning(
|
|
150
|
+
"Something went wrong while uncompressing the file %s.",
|
|
151
|
+
tempfile,
|
|
152
|
+
)
|
|
140
153
|
|
|
141
154
|
# Final step : deal with format specific packing
|
|
142
|
-
rc = rc and self.system.forceunpack(local, fmt=options.get(
|
|
155
|
+
rc = rc and self.system.forceunpack(local, fmt=options.get("fmt"))
|
|
143
156
|
|
|
144
157
|
if self.system.path.exists(diagfile):
|
|
145
158
|
self.system.remove(diagfile)
|
vortex/nwp/data/surfex.py
CHANGED
|
@@ -10,7 +10,7 @@ from ..syntax.stdattrs import gvar
|
|
|
10
10
|
__all__ = []
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
@namebuilding_delete(
|
|
13
|
+
@namebuilding_delete("src")
|
|
14
14
|
class PGDRaw(ModelGeoResource):
|
|
15
15
|
"""
|
|
16
16
|
SURFEX climatological resource.
|
|
@@ -18,34 +18,39 @@ class PGDRaw(ModelGeoResource):
|
|
|
18
18
|
|
|
19
19
|
:note: OBSOLETE classes do not use.
|
|
20
20
|
"""
|
|
21
|
+
|
|
21
22
|
_abstract = True
|
|
22
23
|
_footprint = [
|
|
23
24
|
gvar,
|
|
24
25
|
dict(
|
|
25
|
-
info
|
|
26
|
-
attr
|
|
27
|
-
gvar
|
|
28
|
-
default
|
|
26
|
+
info="Surfex climatological file",
|
|
27
|
+
attr=dict(
|
|
28
|
+
gvar=dict(
|
|
29
|
+
default="pgd_[nativefmt]",
|
|
29
30
|
),
|
|
30
|
-
)
|
|
31
|
-
)
|
|
31
|
+
),
|
|
32
|
+
),
|
|
32
33
|
]
|
|
33
|
-
_extension_remap = dict(netcdf=
|
|
34
|
+
_extension_remap = dict(netcdf="nc")
|
|
34
35
|
|
|
35
36
|
@property
|
|
36
37
|
def realkind(self):
|
|
37
|
-
return
|
|
38
|
+
return "pgd"
|
|
38
39
|
|
|
39
40
|
def olive_basename(self):
|
|
40
41
|
"""OLIVE specific naming convention."""
|
|
41
|
-
return
|
|
42
|
+
return "PGDFILE-" + self.geometry.area + "." + self.nativefmt
|
|
42
43
|
|
|
43
44
|
def namebuilding_info(self):
|
|
44
45
|
nbi = super().namebuilding_info()
|
|
45
46
|
nbi.update(
|
|
46
47
|
# will work only with the @cen namebuilder:
|
|
47
|
-
cen_rawbasename=(
|
|
48
|
-
|
|
48
|
+
cen_rawbasename=(
|
|
49
|
+
"PGD_"
|
|
50
|
+
+ self.geometry.area
|
|
51
|
+
+ "."
|
|
52
|
+
+ self._extension_remap.get(self.nativefmt, self.nativefmt)
|
|
53
|
+
)
|
|
49
54
|
# With the standard provider, the usual keys will be used...
|
|
50
55
|
)
|
|
51
56
|
return nbi
|
|
@@ -58,16 +63,17 @@ class PGDLFI(PGDRaw):
|
|
|
58
63
|
|
|
59
64
|
:note: OBSOLETE classes do not use.
|
|
60
65
|
"""
|
|
66
|
+
|
|
61
67
|
_footprint = dict(
|
|
62
|
-
info
|
|
63
|
-
attr
|
|
64
|
-
kind
|
|
65
|
-
values
|
|
68
|
+
info="Grid-point data consts",
|
|
69
|
+
attr=dict(
|
|
70
|
+
kind=dict(
|
|
71
|
+
values=["pgdlfi"],
|
|
66
72
|
),
|
|
67
|
-
nativefmt
|
|
68
|
-
default
|
|
69
|
-
)
|
|
70
|
-
)
|
|
73
|
+
nativefmt=dict(
|
|
74
|
+
default="lfi",
|
|
75
|
+
),
|
|
76
|
+
),
|
|
71
77
|
)
|
|
72
78
|
|
|
73
79
|
|
|
@@ -78,16 +84,17 @@ class PGDFA(PGDRaw):
|
|
|
78
84
|
|
|
79
85
|
:note: OBSOLETE classes do not use.
|
|
80
86
|
"""
|
|
87
|
+
|
|
81
88
|
_footprint = dict(
|
|
82
|
-
info
|
|
83
|
-
attr
|
|
84
|
-
kind
|
|
85
|
-
values
|
|
89
|
+
info="Grid-point data consts",
|
|
90
|
+
attr=dict(
|
|
91
|
+
kind=dict(
|
|
92
|
+
values=["pgdfa"],
|
|
86
93
|
),
|
|
87
|
-
nativefmt
|
|
88
|
-
default
|
|
89
|
-
)
|
|
90
|
-
)
|
|
94
|
+
nativefmt=dict(
|
|
95
|
+
default="fa",
|
|
96
|
+
),
|
|
97
|
+
),
|
|
91
98
|
)
|
|
92
99
|
|
|
93
100
|
|
|
@@ -98,52 +105,56 @@ class PGDNC(PGDRaw):
|
|
|
98
105
|
|
|
99
106
|
:note: OBSOLETE classes do not use.
|
|
100
107
|
"""
|
|
108
|
+
|
|
101
109
|
_footprint = dict(
|
|
102
|
-
info
|
|
103
|
-
attr
|
|
104
|
-
kind
|
|
105
|
-
values
|
|
110
|
+
info="Grid-point data consts",
|
|
111
|
+
attr=dict(
|
|
112
|
+
kind=dict(
|
|
113
|
+
values=["pgdnc"],
|
|
106
114
|
),
|
|
107
|
-
nativefmt
|
|
108
|
-
default
|
|
109
|
-
)
|
|
110
|
-
)
|
|
115
|
+
nativefmt=dict(
|
|
116
|
+
default="netcdf",
|
|
117
|
+
),
|
|
118
|
+
),
|
|
111
119
|
)
|
|
112
120
|
|
|
113
121
|
|
|
114
|
-
@namebuilding_delete(
|
|
122
|
+
@namebuilding_delete("src")
|
|
115
123
|
class PGDWithGeo(ModelGeoResource):
|
|
116
124
|
"""
|
|
117
125
|
SURFEX climatological resource.
|
|
118
126
|
A Genvkey can be provided.
|
|
119
127
|
"""
|
|
128
|
+
|
|
120
129
|
_footprint = [
|
|
121
130
|
gvar,
|
|
122
131
|
dict(
|
|
123
|
-
info
|
|
124
|
-
attr
|
|
125
|
-
kind
|
|
126
|
-
values
|
|
132
|
+
info="Surfex climatological file",
|
|
133
|
+
attr=dict(
|
|
134
|
+
kind=dict(
|
|
135
|
+
values=[
|
|
136
|
+
"pgd",
|
|
137
|
+
],
|
|
127
138
|
),
|
|
128
|
-
nativefmt
|
|
129
|
-
values
|
|
130
|
-
default
|
|
139
|
+
nativefmt=dict(
|
|
140
|
+
values=["fa", "lfi", "netcdf", "txt"],
|
|
141
|
+
default="fa",
|
|
131
142
|
),
|
|
132
|
-
gvar
|
|
133
|
-
default
|
|
143
|
+
gvar=dict(
|
|
144
|
+
default="pgd_[geometry::gco_grid_def]_[nativefmt]",
|
|
134
145
|
),
|
|
135
|
-
)
|
|
136
|
-
)
|
|
146
|
+
),
|
|
147
|
+
),
|
|
137
148
|
]
|
|
138
|
-
_extension_remap = dict(netcdf=
|
|
149
|
+
_extension_remap = dict(netcdf="nc")
|
|
139
150
|
|
|
140
151
|
@property
|
|
141
152
|
def realkind(self):
|
|
142
|
-
return
|
|
153
|
+
return "pgd"
|
|
143
154
|
|
|
144
155
|
def olive_basename(self):
|
|
145
156
|
"""OLIVE specific naming convention."""
|
|
146
|
-
return
|
|
157
|
+
return "PGDFILE-" + self.geometry.area + "." + self.nativefmt
|
|
147
158
|
|
|
148
159
|
|
|
149
160
|
class CoverParams(ModelGeoResource):
|
|
@@ -151,30 +162,29 @@ class CoverParams(ModelGeoResource):
|
|
|
151
162
|
Class of a tar-zip set of coefficients for radiative transfers computations.
|
|
152
163
|
A Genvkey can be given.
|
|
153
164
|
"""
|
|
165
|
+
|
|
154
166
|
_footprint = [
|
|
155
167
|
gvar,
|
|
156
168
|
dict(
|
|
157
|
-
info
|
|
158
|
-
attr
|
|
159
|
-
kind
|
|
160
|
-
values
|
|
161
|
-
remap
|
|
169
|
+
info="Coefficients of RRTM scheme",
|
|
170
|
+
attr=dict(
|
|
171
|
+
kind=dict(
|
|
172
|
+
values=["coverparams", "surfexcover"],
|
|
173
|
+
remap=dict(surfexcover="coverparams"),
|
|
162
174
|
),
|
|
163
|
-
source
|
|
164
|
-
optional
|
|
165
|
-
default
|
|
166
|
-
values
|
|
175
|
+
source=dict(
|
|
176
|
+
optional=True,
|
|
177
|
+
default="ecoclimap",
|
|
178
|
+
values=["ecoclimap", "ecoclimap1", "ecoclimap2"],
|
|
167
179
|
),
|
|
168
|
-
gvar
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
)
|
|
172
|
-
)
|
|
180
|
+
gvar=dict(default="[source]_covers_param"),
|
|
181
|
+
),
|
|
182
|
+
),
|
|
173
183
|
]
|
|
174
184
|
|
|
175
185
|
@property
|
|
176
186
|
def realkind(self):
|
|
177
|
-
return
|
|
187
|
+
return "coverparams"
|
|
178
188
|
|
|
179
189
|
|
|
180
190
|
class IsbaParams(ModelGeoResource):
|
|
@@ -182,25 +192,24 @@ class IsbaParams(ModelGeoResource):
|
|
|
182
192
|
Class of surface (vegetations, etc.) coefficients.
|
|
183
193
|
A Genvkey can be given.
|
|
184
194
|
"""
|
|
195
|
+
|
|
185
196
|
_footprint = [
|
|
186
197
|
gvar,
|
|
187
198
|
dict(
|
|
188
|
-
info
|
|
189
|
-
attr
|
|
190
|
-
kind
|
|
191
|
-
values
|
|
192
|
-
remap
|
|
193
|
-
),
|
|
194
|
-
gvar = dict(
|
|
195
|
-
default = 'analyse_isba'
|
|
199
|
+
info="ISBA parameters",
|
|
200
|
+
attr=dict(
|
|
201
|
+
kind=dict(
|
|
202
|
+
values=["isba", "isbaan"],
|
|
203
|
+
remap=dict(isbaan="isba"),
|
|
196
204
|
),
|
|
197
|
-
|
|
198
|
-
|
|
205
|
+
gvar=dict(default="analyse_isba"),
|
|
206
|
+
),
|
|
207
|
+
),
|
|
199
208
|
]
|
|
200
209
|
|
|
201
210
|
@property
|
|
202
211
|
def realkind(self):
|
|
203
|
-
return
|
|
212
|
+
return "isba"
|
|
204
213
|
|
|
205
214
|
|
|
206
215
|
class SandDB(ModelGeoResource):
|
|
@@ -208,26 +217,24 @@ class SandDB(ModelGeoResource):
|
|
|
208
217
|
Class of a tar-zip (.dir/.hdr) file containing surface sand database.
|
|
209
218
|
A Genvkey can be given.
|
|
210
219
|
"""
|
|
220
|
+
|
|
211
221
|
_footprint = [
|
|
212
222
|
gvar,
|
|
213
223
|
dict(
|
|
214
|
-
info
|
|
215
|
-
attr
|
|
216
|
-
kind
|
|
217
|
-
values
|
|
218
|
-
),
|
|
219
|
-
source = dict(
|
|
224
|
+
info="Database for quantity of sand in soil",
|
|
225
|
+
attr=dict(
|
|
226
|
+
kind=dict(
|
|
227
|
+
values=["sand"],
|
|
220
228
|
),
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
)
|
|
229
|
+
source=dict(),
|
|
230
|
+
gvar=dict(default="[source]_[kind]"),
|
|
231
|
+
),
|
|
232
|
+
),
|
|
226
233
|
]
|
|
227
234
|
|
|
228
235
|
@property
|
|
229
236
|
def realkind(self):
|
|
230
|
-
return
|
|
237
|
+
return "sand"
|
|
231
238
|
|
|
232
239
|
|
|
233
240
|
class ClayDB(ModelGeoResource):
|
|
@@ -235,26 +242,24 @@ class ClayDB(ModelGeoResource):
|
|
|
235
242
|
Class of a tar-zip (.dir/.hdr) file containing surface clay database.
|
|
236
243
|
A Genvkey can be given.
|
|
237
244
|
"""
|
|
245
|
+
|
|
238
246
|
_footprint = [
|
|
239
247
|
gvar,
|
|
240
248
|
dict(
|
|
241
|
-
info
|
|
242
|
-
attr
|
|
243
|
-
kind
|
|
244
|
-
values
|
|
245
|
-
),
|
|
246
|
-
source = dict(
|
|
249
|
+
info="Database for quantity of clay in soil",
|
|
250
|
+
attr=dict(
|
|
251
|
+
kind=dict(
|
|
252
|
+
values=["clay"],
|
|
247
253
|
),
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
)
|
|
254
|
+
source=dict(),
|
|
255
|
+
gvar=dict(default="[source]_[kind]"),
|
|
256
|
+
),
|
|
257
|
+
),
|
|
253
258
|
]
|
|
254
259
|
|
|
255
260
|
@property
|
|
256
261
|
def realkind(self):
|
|
257
|
-
return
|
|
262
|
+
return "clay"
|
|
258
263
|
|
|
259
264
|
|
|
260
265
|
class OrographyDB(ModelGeoResource):
|
|
@@ -262,26 +267,24 @@ class OrographyDB(ModelGeoResource):
|
|
|
262
267
|
Class of a tar-zip (.dir/.hdr) file containing orography database.
|
|
263
268
|
A Genvkey can be given.
|
|
264
269
|
"""
|
|
270
|
+
|
|
265
271
|
_footprint = [
|
|
266
272
|
gvar,
|
|
267
273
|
dict(
|
|
268
|
-
info
|
|
269
|
-
attr
|
|
270
|
-
kind
|
|
271
|
-
values
|
|
272
|
-
),
|
|
273
|
-
source = dict(
|
|
274
|
-
),
|
|
275
|
-
gvar = dict(
|
|
276
|
-
default = '[source]_[kind]_[geometry::rnice_u]'
|
|
274
|
+
info="Database for orography",
|
|
275
|
+
attr=dict(
|
|
276
|
+
kind=dict(
|
|
277
|
+
values=["orography"],
|
|
277
278
|
),
|
|
278
|
-
|
|
279
|
-
|
|
279
|
+
source=dict(),
|
|
280
|
+
gvar=dict(default="[source]_[kind]_[geometry::rnice_u]"),
|
|
281
|
+
),
|
|
282
|
+
),
|
|
280
283
|
]
|
|
281
284
|
|
|
282
285
|
@property
|
|
283
286
|
def realkind(self):
|
|
284
|
-
return
|
|
287
|
+
return "orography"
|
|
285
288
|
|
|
286
289
|
|
|
287
290
|
class SurfaceTypeDB(ModelGeoResource):
|
|
@@ -289,26 +292,24 @@ class SurfaceTypeDB(ModelGeoResource):
|
|
|
289
292
|
Class of a tar-zip (.dir/.hdr) file containing surface type database.
|
|
290
293
|
A Genvkey can be given.
|
|
291
294
|
"""
|
|
295
|
+
|
|
292
296
|
_footprint = [
|
|
293
297
|
gvar,
|
|
294
298
|
dict(
|
|
295
|
-
info
|
|
296
|
-
attr
|
|
297
|
-
kind
|
|
298
|
-
values
|
|
299
|
+
info="Database for surface type",
|
|
300
|
+
attr=dict(
|
|
301
|
+
kind=dict(
|
|
302
|
+
values=["surface_type"],
|
|
299
303
|
),
|
|
300
|
-
source
|
|
301
|
-
),
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
),
|
|
305
|
-
)
|
|
306
|
-
)
|
|
304
|
+
source=dict(),
|
|
305
|
+
gvar=dict(default="[source]_[kind]"),
|
|
306
|
+
),
|
|
307
|
+
),
|
|
307
308
|
]
|
|
308
309
|
|
|
309
310
|
@property
|
|
310
311
|
def realkind(self):
|
|
311
|
-
return
|
|
312
|
+
return "surface_type"
|
|
312
313
|
|
|
313
314
|
|
|
314
315
|
class BathymetryDB(ModelGeoResource):
|
|
@@ -316,23 +317,21 @@ class BathymetryDB(ModelGeoResource):
|
|
|
316
317
|
Class of file containing bathymetry database.
|
|
317
318
|
A Genvkey can be given.
|
|
318
319
|
"""
|
|
320
|
+
|
|
319
321
|
_footprint = [
|
|
320
322
|
gvar,
|
|
321
323
|
dict(
|
|
322
|
-
info
|
|
323
|
-
attr
|
|
324
|
-
kind
|
|
325
|
-
values
|
|
326
|
-
),
|
|
327
|
-
source = dict(
|
|
328
|
-
),
|
|
329
|
-
gvar = dict(
|
|
330
|
-
default = '[source]_[kind]_[geometry::rnice_u]'
|
|
324
|
+
info="Database for bathymetry",
|
|
325
|
+
attr=dict(
|
|
326
|
+
kind=dict(
|
|
327
|
+
values=["bathymetry"],
|
|
331
328
|
),
|
|
332
|
-
|
|
333
|
-
|
|
329
|
+
source=dict(),
|
|
330
|
+
gvar=dict(default="[source]_[kind]_[geometry::rnice_u]"),
|
|
331
|
+
),
|
|
332
|
+
),
|
|
334
333
|
]
|
|
335
334
|
|
|
336
335
|
@property
|
|
337
336
|
def realkind(self):
|
|
338
|
-
return
|
|
337
|
+
return "bathymetry"
|
vortex/nwp/syntax/__init__.py
CHANGED