vortex-nwp 2.0.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 +159 -0
- vortex/algo/__init__.py +13 -0
- vortex/algo/components.py +2462 -0
- vortex/algo/mpitools.py +1953 -0
- vortex/algo/mpitools_templates/__init__.py +1 -0
- vortex/algo/mpitools_templates/envelope_wrapper_default.tpl +27 -0
- vortex/algo/mpitools_templates/envelope_wrapper_mpiauto.tpl +29 -0
- vortex/algo/mpitools_templates/wrapstd_wrapper_default.tpl +18 -0
- vortex/algo/serversynctools.py +171 -0
- vortex/config.py +112 -0
- vortex/data/__init__.py +19 -0
- vortex/data/abstractstores.py +1510 -0
- vortex/data/containers.py +835 -0
- vortex/data/contents.py +622 -0
- vortex/data/executables.py +275 -0
- vortex/data/flow.py +119 -0
- vortex/data/geometries.ini +2689 -0
- vortex/data/geometries.py +799 -0
- vortex/data/handlers.py +1230 -0
- vortex/data/outflow.py +67 -0
- vortex/data/providers.py +487 -0
- vortex/data/resources.py +207 -0
- vortex/data/stores.py +1390 -0
- vortex/data/sync_templates/__init__.py +0 -0
- vortex/gloves.py +309 -0
- vortex/layout/__init__.py +20 -0
- vortex/layout/contexts.py +577 -0
- vortex/layout/dataflow.py +1220 -0
- vortex/layout/monitor.py +969 -0
- vortex/nwp/__init__.py +14 -0
- vortex/nwp/algo/__init__.py +21 -0
- vortex/nwp/algo/assim.py +537 -0
- vortex/nwp/algo/clim.py +1086 -0
- vortex/nwp/algo/coupling.py +831 -0
- vortex/nwp/algo/eda.py +840 -0
- vortex/nwp/algo/eps.py +785 -0
- vortex/nwp/algo/forecasts.py +886 -0
- vortex/nwp/algo/fpserver.py +1303 -0
- vortex/nwp/algo/ifsnaming.py +463 -0
- vortex/nwp/algo/ifsroot.py +404 -0
- vortex/nwp/algo/monitoring.py +263 -0
- vortex/nwp/algo/mpitools.py +694 -0
- vortex/nwp/algo/odbtools.py +1258 -0
- vortex/nwp/algo/oopsroot.py +916 -0
- vortex/nwp/algo/oopstests.py +220 -0
- vortex/nwp/algo/request.py +660 -0
- vortex/nwp/algo/stdpost.py +1641 -0
- vortex/nwp/data/__init__.py +30 -0
- vortex/nwp/data/assim.py +380 -0
- vortex/nwp/data/boundaries.py +314 -0
- vortex/nwp/data/climfiles.py +521 -0
- vortex/nwp/data/configfiles.py +153 -0
- vortex/nwp/data/consts.py +954 -0
- vortex/nwp/data/ctpini.py +149 -0
- vortex/nwp/data/diagnostics.py +209 -0
- vortex/nwp/data/eda.py +147 -0
- vortex/nwp/data/eps.py +432 -0
- vortex/nwp/data/executables.py +1045 -0
- vortex/nwp/data/fields.py +111 -0
- vortex/nwp/data/gridfiles.py +380 -0
- vortex/nwp/data/logs.py +584 -0
- vortex/nwp/data/modelstates.py +363 -0
- vortex/nwp/data/monitoring.py +193 -0
- vortex/nwp/data/namelists.py +696 -0
- vortex/nwp/data/obs.py +840 -0
- vortex/nwp/data/oopsexec.py +74 -0
- vortex/nwp/data/providers.py +207 -0
- vortex/nwp/data/query.py +206 -0
- vortex/nwp/data/stores.py +160 -0
- vortex/nwp/data/surfex.py +337 -0
- vortex/nwp/syntax/__init__.py +9 -0
- vortex/nwp/syntax/stdattrs.py +437 -0
- vortex/nwp/tools/__init__.py +10 -0
- vortex/nwp/tools/addons.py +40 -0
- vortex/nwp/tools/agt.py +67 -0
- vortex/nwp/tools/bdap.py +59 -0
- vortex/nwp/tools/bdcp.py +41 -0
- vortex/nwp/tools/bdm.py +24 -0
- vortex/nwp/tools/bdmp.py +54 -0
- vortex/nwp/tools/conftools.py +1661 -0
- vortex/nwp/tools/drhook.py +66 -0
- vortex/nwp/tools/grib.py +294 -0
- vortex/nwp/tools/gribdiff.py +104 -0
- vortex/nwp/tools/ifstools.py +203 -0
- vortex/nwp/tools/igastuff.py +273 -0
- vortex/nwp/tools/mars.py +68 -0
- vortex/nwp/tools/odb.py +657 -0
- vortex/nwp/tools/partitioning.py +258 -0
- vortex/nwp/tools/satrad.py +71 -0
- vortex/nwp/util/__init__.py +6 -0
- vortex/nwp/util/async.py +212 -0
- vortex/nwp/util/beacon.py +40 -0
- vortex/nwp/util/diffpygram.py +447 -0
- vortex/nwp/util/ens.py +279 -0
- vortex/nwp/util/hooks.py +139 -0
- vortex/nwp/util/taskdeco.py +85 -0
- vortex/nwp/util/usepygram.py +697 -0
- vortex/nwp/util/usetnt.py +101 -0
- vortex/proxy.py +6 -0
- vortex/sessions.py +374 -0
- vortex/syntax/__init__.py +9 -0
- vortex/syntax/stdattrs.py +867 -0
- vortex/syntax/stddeco.py +185 -0
- vortex/toolbox.py +1117 -0
- vortex/tools/__init__.py +20 -0
- vortex/tools/actions.py +523 -0
- vortex/tools/addons.py +316 -0
- vortex/tools/arm.py +96 -0
- vortex/tools/compression.py +325 -0
- vortex/tools/date.py +27 -0
- vortex/tools/ddhpack.py +10 -0
- vortex/tools/delayedactions.py +782 -0
- vortex/tools/env.py +541 -0
- vortex/tools/folder.py +834 -0
- vortex/tools/grib.py +738 -0
- vortex/tools/lfi.py +953 -0
- vortex/tools/listings.py +423 -0
- vortex/tools/names.py +637 -0
- vortex/tools/net.py +2124 -0
- vortex/tools/odb.py +10 -0
- vortex/tools/parallelism.py +368 -0
- vortex/tools/prestaging.py +210 -0
- vortex/tools/rawfiles.py +10 -0
- vortex/tools/schedulers.py +480 -0
- vortex/tools/services.py +940 -0
- vortex/tools/storage.py +996 -0
- vortex/tools/surfex.py +61 -0
- vortex/tools/systems.py +3976 -0
- vortex/tools/targets.py +440 -0
- vortex/util/__init__.py +9 -0
- vortex/util/config.py +1122 -0
- vortex/util/empty.py +24 -0
- vortex/util/helpers.py +216 -0
- vortex/util/introspection.py +69 -0
- vortex/util/iosponge.py +80 -0
- vortex/util/roles.py +49 -0
- vortex/util/storefunctions.py +129 -0
- vortex/util/structs.py +26 -0
- vortex/util/worker.py +162 -0
- vortex_nwp-2.0.0.dist-info/METADATA +67 -0
- vortex_nwp-2.0.0.dist-info/RECORD +144 -0
- vortex_nwp-2.0.0.dist-info/WHEEL +5 -0
- vortex_nwp-2.0.0.dist-info/licenses/LICENSE +517 -0
- vortex_nwp-2.0.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Data resources (mostly NWP).
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
# Recursive inclusion of packages with potential FootprintBase classes
|
|
6
|
+
from . import boundaries as boundaries
|
|
7
|
+
from . import climfiles as climfiles
|
|
8
|
+
from . import consts as consts
|
|
9
|
+
from . import diagnostics as diagnostics
|
|
10
|
+
from . import executables as executables
|
|
11
|
+
from . import fields as fields
|
|
12
|
+
from . import assim as assim
|
|
13
|
+
from . import gridfiles as gridfiles
|
|
14
|
+
from . import logs as logs
|
|
15
|
+
from . import modelstates as modelstates
|
|
16
|
+
from . import namelists as namelists
|
|
17
|
+
from . import obs as obs
|
|
18
|
+
from . import surfex as surfex
|
|
19
|
+
from . import eps as eps
|
|
20
|
+
from . import eda as eda
|
|
21
|
+
from . import providers as providers
|
|
22
|
+
from . import stores as stores
|
|
23
|
+
from . import query as query
|
|
24
|
+
from . import monitoring as monitoring
|
|
25
|
+
from . import ctpini as ctpini
|
|
26
|
+
from . import oopsexec as oopsexec
|
|
27
|
+
from . import configfiles as configfiles
|
|
28
|
+
|
|
29
|
+
#: No automatic export
|
|
30
|
+
__all__ = []
|
vortex/nwp/data/assim.py
ADDED
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Various resources needed to build ad Data Assimilmation system.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from bronx.fancies import loggers
|
|
6
|
+
from bronx.stdtypes.date import Time
|
|
7
|
+
|
|
8
|
+
from vortex.data.flow import FlowResource, GeoFlowResource
|
|
9
|
+
from vortex.data.contents import JsonDictContent
|
|
10
|
+
from vortex.data.executables import Script
|
|
11
|
+
from vortex.syntax.stddeco import namebuilding_append, namebuilding_insert
|
|
12
|
+
from vortex.syntax.stdattrs import FmtInt, term_deco
|
|
13
|
+
from ..syntax.stdattrs import gvar
|
|
14
|
+
|
|
15
|
+
#: Automatic export off
|
|
16
|
+
__all__ = []
|
|
17
|
+
|
|
18
|
+
logger = loggers.getLogger(__name__)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@namebuilding_insert(
|
|
22
|
+
"geo", lambda s: s._geo2basename_info(add_stretching=False)
|
|
23
|
+
)
|
|
24
|
+
class _BackgroundErrorInfo(GeoFlowResource):
|
|
25
|
+
"""
|
|
26
|
+
A generic class for data in grib format related to the background error.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
_abstract = True
|
|
30
|
+
_footprint = [
|
|
31
|
+
term_deco,
|
|
32
|
+
gvar,
|
|
33
|
+
dict(
|
|
34
|
+
info="Background standard deviation",
|
|
35
|
+
attr=dict(
|
|
36
|
+
term=dict(optional=True, default=3),
|
|
37
|
+
nativefmt=dict(
|
|
38
|
+
default="grib",
|
|
39
|
+
),
|
|
40
|
+
gvar=dict(default="errgrib_t[geometry:truncation]"),
|
|
41
|
+
),
|
|
42
|
+
),
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
@property
|
|
46
|
+
def realkind(self):
|
|
47
|
+
return "bgstdinfo"
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class BackgroundStdError(_BackgroundErrorInfo):
|
|
51
|
+
"""Background error standard deviation.
|
|
52
|
+
|
|
53
|
+
stage:
|
|
54
|
+
* unbal/vor: unbalanced variables fields
|
|
55
|
+
* scr: obs. related fields
|
|
56
|
+
* profile: full variables global and latitude bands horizontal averages
|
|
57
|
+
* full: full variables fields
|
|
58
|
+
|
|
59
|
+
origin:
|
|
60
|
+
* ens: diagnosed from an ensemble
|
|
61
|
+
* diag: diagnosed from randomized (a priori climatological) covariances
|
|
62
|
+
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
_footprint = dict(
|
|
66
|
+
info="Background error standard deviation",
|
|
67
|
+
attr=dict(
|
|
68
|
+
kind=dict(
|
|
69
|
+
values=["bgstderr", "bg_stderr", "bgerrstd"],
|
|
70
|
+
remap=dict(autoremap="first"),
|
|
71
|
+
),
|
|
72
|
+
stage=dict(
|
|
73
|
+
optional=True,
|
|
74
|
+
default="unbal",
|
|
75
|
+
values=["scr", "vor", "full", "unbal", "profile"],
|
|
76
|
+
remap=dict(vor="unbal"),
|
|
77
|
+
),
|
|
78
|
+
origin=dict(
|
|
79
|
+
optional=True,
|
|
80
|
+
values=["ens", "diag"],
|
|
81
|
+
default="ens",
|
|
82
|
+
),
|
|
83
|
+
gvar=dict(default="errgrib_vor_monthly"),
|
|
84
|
+
nativefmt=dict(
|
|
85
|
+
values=["grib", "ascii"],
|
|
86
|
+
default="grib",
|
|
87
|
+
),
|
|
88
|
+
),
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
@property
|
|
92
|
+
def realkind(self):
|
|
93
|
+
return "bgstderr"
|
|
94
|
+
|
|
95
|
+
def namebuilding_info(self):
|
|
96
|
+
"""Generic information for names fabric, with radical = ``bcor``."""
|
|
97
|
+
infos = super().namebuilding_info()
|
|
98
|
+
infos["src"].append(self.stage)
|
|
99
|
+
if self.stage != "scr":
|
|
100
|
+
infos["src"].append(self.origin)
|
|
101
|
+
return infos
|
|
102
|
+
|
|
103
|
+
def archive_basename(self):
|
|
104
|
+
"""OP ARCHIVE specific naming convention."""
|
|
105
|
+
if self.stage in ("unbal",):
|
|
106
|
+
return "(errgribfix:igakey)"
|
|
107
|
+
else:
|
|
108
|
+
return "errgrib_" + self.stage
|
|
109
|
+
|
|
110
|
+
def olive_basename(self):
|
|
111
|
+
"""OLIVE specific naming convention."""
|
|
112
|
+
if self.stage in ("unbal",):
|
|
113
|
+
return "errgribvor"
|
|
114
|
+
else:
|
|
115
|
+
return "sigma_b"
|
|
116
|
+
|
|
117
|
+
def gget_basename(self):
|
|
118
|
+
"""GGET specific naming convention."""
|
|
119
|
+
return dict(suffix=".m{:02d}".format(self.date.month))
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
@namebuilding_append("src", lambda s: s.variable)
|
|
123
|
+
class SplitBackgroundStdError(BackgroundStdError):
|
|
124
|
+
"""Background error standard deviation, for a given variable."""
|
|
125
|
+
|
|
126
|
+
_footprint = dict(
|
|
127
|
+
info="Background error standard deviation",
|
|
128
|
+
attr=dict(
|
|
129
|
+
variable=dict(
|
|
130
|
+
info="Variable contained in this resource.",
|
|
131
|
+
),
|
|
132
|
+
gvar=dict(default="errgrib_vor_[variable]_monthly"),
|
|
133
|
+
),
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
class BackgroundErrorNorm(_BackgroundErrorInfo):
|
|
138
|
+
"""Background error normalisation data for wavelet covariances."""
|
|
139
|
+
|
|
140
|
+
_footprint = [
|
|
141
|
+
dict(
|
|
142
|
+
info="Background error normalisation data for wavelet covariances",
|
|
143
|
+
attr=dict(
|
|
144
|
+
kind=dict(
|
|
145
|
+
values=["bgstdrenorm", "bgerrnorm"],
|
|
146
|
+
remap=dict(autoremap="first"),
|
|
147
|
+
),
|
|
148
|
+
gvar=dict(default="srenorm_t[geometry:truncation]"),
|
|
149
|
+
),
|
|
150
|
+
)
|
|
151
|
+
]
|
|
152
|
+
|
|
153
|
+
@property
|
|
154
|
+
def realkind(self):
|
|
155
|
+
return "bgstdrenorm"
|
|
156
|
+
|
|
157
|
+
def archive_basename(self):
|
|
158
|
+
"""OP ARCHIVE specific naming convention."""
|
|
159
|
+
return "srenorm.{!s}".format(self.geometry.truncation)
|
|
160
|
+
|
|
161
|
+
def olive_basename(self):
|
|
162
|
+
"""OLIVE specific naming convention."""
|
|
163
|
+
return "srenorm.t{!s}".format(self.geometry.truncation)
|
|
164
|
+
|
|
165
|
+
def archive_pathinfo(self):
|
|
166
|
+
"""Op Archive specific pathname needs."""
|
|
167
|
+
return dict(
|
|
168
|
+
nativefmt=self.nativefmt,
|
|
169
|
+
model=self.model,
|
|
170
|
+
date=self.date,
|
|
171
|
+
cutoff=self.cutoff,
|
|
172
|
+
arpege_aearp_directory="wavelet",
|
|
173
|
+
)
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
@namebuilding_insert(
|
|
177
|
+
"geo", lambda s: s._geo2basename_info(add_stretching=False)
|
|
178
|
+
)
|
|
179
|
+
class Wavelet(GeoFlowResource):
|
|
180
|
+
"""Background error wavelet covariances."""
|
|
181
|
+
|
|
182
|
+
_footprint = [
|
|
183
|
+
term_deco,
|
|
184
|
+
gvar,
|
|
185
|
+
dict(
|
|
186
|
+
info="Background error wavelet covariances",
|
|
187
|
+
attr=dict(
|
|
188
|
+
kind=dict(
|
|
189
|
+
values=["wavelet", "waveletcv"],
|
|
190
|
+
remap=dict(autoremap="first"),
|
|
191
|
+
),
|
|
192
|
+
gvar=dict(default="wavelet_cv_t[geometry:truncation]"),
|
|
193
|
+
term=dict(optional=True, default=3),
|
|
194
|
+
),
|
|
195
|
+
),
|
|
196
|
+
]
|
|
197
|
+
|
|
198
|
+
@property
|
|
199
|
+
def realkind(self):
|
|
200
|
+
return "wavelet"
|
|
201
|
+
|
|
202
|
+
def archive_basename(self):
|
|
203
|
+
"""OP ARCHIVE specific naming convention."""
|
|
204
|
+
return "wavelet.cv.{!s}".format(self.geometry.truncation)
|
|
205
|
+
|
|
206
|
+
def olive_basename(self):
|
|
207
|
+
"""OLIVE specific naming convention."""
|
|
208
|
+
return "wavelet.cv.t{!s}".format(self.geometry.truncation)
|
|
209
|
+
|
|
210
|
+
def archive_pathinfo(self):
|
|
211
|
+
"""Op Archive specific pathname needs."""
|
|
212
|
+
return dict(
|
|
213
|
+
nativefmt=self.nativefmt,
|
|
214
|
+
model=self.model,
|
|
215
|
+
date=self.date,
|
|
216
|
+
cutoff=self.cutoff,
|
|
217
|
+
arpege_aearp_directory=self.realkind,
|
|
218
|
+
)
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
@namebuilding_insert(
|
|
222
|
+
"geo", lambda s: s._geo2basename_info(add_stretching=False)
|
|
223
|
+
)
|
|
224
|
+
class RawControlVector(GeoFlowResource):
|
|
225
|
+
"""Raw Control Vector as issued by minimisation, playing the role of an Increment."""
|
|
226
|
+
|
|
227
|
+
_footprint = dict(
|
|
228
|
+
info="Raw Control Vector",
|
|
229
|
+
attr=dict(
|
|
230
|
+
kind=dict(
|
|
231
|
+
values=["rawcv", "rcv", "increment", "minimcv"],
|
|
232
|
+
remap=dict(autoremap="first"),
|
|
233
|
+
),
|
|
234
|
+
),
|
|
235
|
+
)
|
|
236
|
+
|
|
237
|
+
@property
|
|
238
|
+
def realkind(self):
|
|
239
|
+
return "rawcv"
|
|
240
|
+
|
|
241
|
+
def olive_basename(self):
|
|
242
|
+
"""OLIVE specific naming convention."""
|
|
243
|
+
return "MININCR"
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
@namebuilding_insert(
|
|
247
|
+
"geo", lambda s: s._geo2basename_info(add_stretching=False)
|
|
248
|
+
)
|
|
249
|
+
class InternalMinim(GeoFlowResource):
|
|
250
|
+
"""Generic class for resources internal to minimisation."""
|
|
251
|
+
|
|
252
|
+
_abstract = True
|
|
253
|
+
_footprint = dict(
|
|
254
|
+
attr=dict(
|
|
255
|
+
nativefmt=dict(
|
|
256
|
+
values=["fa", "lfi", "grib"],
|
|
257
|
+
default="fa",
|
|
258
|
+
),
|
|
259
|
+
term=dict(
|
|
260
|
+
type=Time,
|
|
261
|
+
optional=True,
|
|
262
|
+
default=Time(-3),
|
|
263
|
+
),
|
|
264
|
+
)
|
|
265
|
+
)
|
|
266
|
+
|
|
267
|
+
def olive_suffixtr(self):
|
|
268
|
+
"""Return BR or HR specific OLIVE suffix according to geo streching."""
|
|
269
|
+
return "HR" if self.geometry.stretching > 1 else "BR"
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
class StartingPointMinim(InternalMinim):
|
|
273
|
+
"""Guess as reprocessed by the minimisation."""
|
|
274
|
+
|
|
275
|
+
_footprint = dict(
|
|
276
|
+
info="Starting Point Output Minim",
|
|
277
|
+
attr=dict(
|
|
278
|
+
kind=dict(
|
|
279
|
+
values=["stpmin"],
|
|
280
|
+
),
|
|
281
|
+
),
|
|
282
|
+
)
|
|
283
|
+
|
|
284
|
+
@property
|
|
285
|
+
def realkind(self):
|
|
286
|
+
return "stpmin"
|
|
287
|
+
|
|
288
|
+
def olive_basename(self):
|
|
289
|
+
"""OLIVE specific naming convention."""
|
|
290
|
+
return "STPMIN" + self.olive_suffixtr()
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
class AnalysedStateMinim(InternalMinim):
|
|
294
|
+
"""Analysed state as produced by the minimisation."""
|
|
295
|
+
|
|
296
|
+
_footprint = dict(
|
|
297
|
+
info="Analysed Output Minim",
|
|
298
|
+
attr=dict(
|
|
299
|
+
kind=dict(
|
|
300
|
+
values=["anamin"],
|
|
301
|
+
),
|
|
302
|
+
),
|
|
303
|
+
)
|
|
304
|
+
|
|
305
|
+
@property
|
|
306
|
+
def realkind(self):
|
|
307
|
+
return "anamin"
|
|
308
|
+
|
|
309
|
+
def olive_basename(self):
|
|
310
|
+
"""OLIVE specific naming convention."""
|
|
311
|
+
return "ANAMIN" + self.olive_suffixtr()
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
class PrecevMap(FlowResource):
|
|
315
|
+
"""Map of the precondionning eigenvectors as produced by minimisation."""
|
|
316
|
+
|
|
317
|
+
_footprint = dict(
|
|
318
|
+
info="Prec EV Map",
|
|
319
|
+
attr=dict(
|
|
320
|
+
kind=dict(
|
|
321
|
+
values=["precevmap"],
|
|
322
|
+
),
|
|
323
|
+
clscontents=dict(
|
|
324
|
+
default=JsonDictContent,
|
|
325
|
+
),
|
|
326
|
+
nativefmt=dict(
|
|
327
|
+
values=["json"],
|
|
328
|
+
default="json",
|
|
329
|
+
),
|
|
330
|
+
),
|
|
331
|
+
)
|
|
332
|
+
|
|
333
|
+
@property
|
|
334
|
+
def realkind(self):
|
|
335
|
+
return "precevmap"
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
@namebuilding_append("src", lambda s: str(s.evnum))
|
|
339
|
+
class Precev(FlowResource):
|
|
340
|
+
"""Precondionning eigenvectors as produced by minimisation."""
|
|
341
|
+
|
|
342
|
+
_footprint = dict(
|
|
343
|
+
info="Starting Point Output Minim",
|
|
344
|
+
attr=dict(
|
|
345
|
+
kind=dict(
|
|
346
|
+
values=["precev"],
|
|
347
|
+
),
|
|
348
|
+
evnum=dict(
|
|
349
|
+
type=FmtInt,
|
|
350
|
+
args=dict(fmt="03"),
|
|
351
|
+
),
|
|
352
|
+
),
|
|
353
|
+
)
|
|
354
|
+
|
|
355
|
+
@property
|
|
356
|
+
def realkind(self):
|
|
357
|
+
return "precev"
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
class IOassignScript(Script):
|
|
361
|
+
"""Scripts for IOASSIGN."""
|
|
362
|
+
|
|
363
|
+
_footprint = [
|
|
364
|
+
gvar,
|
|
365
|
+
dict(
|
|
366
|
+
info="Script for IOASSIGN",
|
|
367
|
+
attr=dict(
|
|
368
|
+
kind=dict(values=["ioassign_script"]),
|
|
369
|
+
gvar=dict(default="ioassign_script_[purpose]"),
|
|
370
|
+
purpose=dict(
|
|
371
|
+
info="The purpose of the script",
|
|
372
|
+
values=["merge", "create"],
|
|
373
|
+
),
|
|
374
|
+
),
|
|
375
|
+
),
|
|
376
|
+
]
|
|
377
|
+
|
|
378
|
+
@property
|
|
379
|
+
def realkind(self):
|
|
380
|
+
return "ioassign_script"
|