15from dataclasses
import dataclass
18import collections.abc
as _abc
19from typing
import List, Tuple
26COMIN_ZAXIS_3D_HALF = 3
31 @brief variable handle for accessing data
33 Implements the `__array__` (and `__cuda_array_interface__`) interface.
36 def __init__(self, handle):
43 print(
"Warning: cant import numpy", file=_sys.stderr)
46 return self.
_np.asarray(_comin._var_get_buffer(self.
_handle))
49 def __cuda_array_interface__(self):
50 host_buf = _comin._var_get_buffer(self.
_handle)
52 "shape": host_buf.shape,
53 "typestr": self.
_np.dtype(host_buf.format).str,
54 "data": (_comin._var_get_device_ptr(self.
_handle),
False),
56 "strides": host_buf.strides,
61 return _comin._var_get_dim_semantics(self.
_handle)
69 if s == COMIN_DIM_SEMANTICS_UNUSED
71 data = self.
_np.squeeze(self.
_np.asarray(self), axis=unused_dims)
75 _comin_dim_semantics_get_name(s)
77 if s != COMIN_DIM_SEMANTICS_UNUSED
85 return _comin._var_get_ncontained(self.
_handle)
90 if COMIN_DIM_SEMANTICS_LEVEL
in ds:
92 ds.index(COMIN_DIM_SEMANTICS_NPROMA),
93 ds.index(COMIN_DIM_SEMANTICS_LEVEL),
94 ds.index(COMIN_DIM_SEMANTICS_BLOCK),
98 ds.index(COMIN_DIM_SEMANTICS_NPROMA),
99 ds.index(COMIN_DIM_SEMANTICS_BLOCK),
101 missing_dims = {*range(5)}.difference({*pos})
102 return self.
_np.asarray(self).transpose(*pos, *missing_dims)[..., 0, 0]
106 return _comin._var_get_descriptor(self.
_handle)
111 Represents an Entry Point.
113 Can be used as a function decorator or as an argument for @ref var_get.
116 def __init__(self, ep_int):
119 def __call__(self, fun):
120 _comin._callback_register(self.
_ep, fun)
127for _ep
in range(1, _comin._EP_DESTRUCTOR() + 1):
128 _name = _comin.callback_get_ep_name(_ep)
134 @brief Registers a callback function for a given endpoint.
136 @param ep The endpoint to register the callback for.
140 _comin._callback_register(ep, fun)
146def var_get(context: List[entry_point], var_descriptor: Tuple[str, int], flag: int):
147 """get variable object, arguments: [entry point], (name string, domain id), access flag)"""
148 return variable(_comin._var_get(context, var_descriptor, flag))
151@dataclass(frozen=True)
154 @brief plugin information
157 @param name Plugin name
158 @param options Options string
159 @param comm Communicator name
170 @brief Extract options as list of strings
172 Extract the argument from the options string like as the
173 script was called from the command line. This is supposed to
174 be passed to `argparse.ArgumentParser.parse_args`.
180 """returns object describing the current plugin"""
181 return plugin_info(**_comin._current_get_plugin_info())
185 def __init__(self, properties, jg=0):
186 self.properties = properties
190 return self.properties.keys()
192 def __getattr__(self, key):
193 val = _comin._descrdata_eval_property(self.properties[key], jg=self.jg)
194 if isinstance(val, dict):
195 return _descrdata(val, jg=self.jg)
201 """returns descriptive data for a given domain, arguments: jg"""
202 return _descrdata(_comin._descrdata_get_domain(), jg=jg)
206 """returns global descriptive data object"""
207 return _descrdata(_comin._descrdata_get_global())
211 """List of exposed variables (descriptors)"""
212 current = _comin._var_get_descr_list_head()
214 while current
is not None:
215 yield _comin._var_get_descr_list_var_desc(current)
216 current = _comin._var_get_descr_list_next(current)
218 if current
is not None:
219 _comin._var_descr_list_iterator_delete(current)
223 """sets metadata for a requested field, arguments: name string, domain id, metadata key, metadata value"""
224 for n, v
in kwargs.items():
225 _comin._metadata_set(var_descriptor, n, v)
230 Metadata mapping for a variable
233 def __init__(self, var_descr):
236 def __getitem__(self, key):
237 return _comin.metadata_get(self.
descr, key)
240 it = _comin._metadata_get_iterator_begin(self.
descr)
241 end = _comin._metadata_get_iterator_end(self.
descr)
242 while not _comin._metadata_iterator_compare(it, end):
243 yield _comin._metadata_iterator_get_key(it)
244 _comin._metadata_iterator_next(it)
245 _comin._metadata_iterator_delete(it)
246 _comin._metadata_iterator_delete(end)
253@dataclass(frozen=True)
256 @brief simulation interface information
271 """returns simulation interval
273 @see simulation_interval
279COMIN_FLAG_READ = 1 << 1
280COMIN_FLAG_WRITE = 1 << 2
281COMIN_FLAG_SYNC_HALO = 1 << 3
282COMIN_FLAG_DEVICE = 1 << 4
284COMIN_HGRID_UNSTRUCTURED_CELL = 1
285COMIN_HGRID_UNSTRUCTURED_EDGE = 2
286COMIN_HGRID_UNSTRUCTURED_VERTEX = 3
288COMIN_VAR_DATATYPE_DOUBLE = 1
289COMIN_VAR_DATATYPE_FLOAT = 2
290COMIN_VAR_DATATYPE_INT = 3
292COMIN_DIM_SEMANTICS_UNDEF = 1
293COMIN_DIM_SEMANTICS_NPROMA = 2
294COMIN_DIM_SEMANTICS_BLOCK = 3
295COMIN_DIM_SEMANTICS_UNBLOCK = 4
296COMIN_DIM_SEMANTICS_LEVEL = 5
297COMIN_DIM_SEMANTICS_CONTAINER = 6
298COMIN_DIM_SEMANTICS_OTHER = 7
299COMIN_DIM_SEMANTICS_UNUSED = 8
302def _comin_dim_semantics_get_name(ds):
304 COMIN_DIM_SEMANTICS_UNDEF:
"undef",
305 COMIN_DIM_SEMANTICS_NPROMA:
"nproma",
306 COMIN_DIM_SEMANTICS_BLOCK:
"block",
307 COMIN_DIM_SEMANTICS_UNBLOCK:
"unblock",
308 COMIN_DIM_SEMANTICS_LEVEL:
"level",
309 COMIN_DIM_SEMANTICS_CONTAINER:
"container",
310 COMIN_DIM_SEMANTICS_OTHER:
"other",
311 COMIN_DIM_SEMANTICS_UNUSED:
"unused",
args(self)
Extract options as list of strings.
Represents an Entry Point.
variable handle for accessing data
simulation interface information
simulation_interval descrdata_get_simulation_interval()
returns simulation interval
var_get(List[entry_point] context, Tuple[str, int] var_descriptor, int flag)
get variable object, arguments: [entry point], (name string, domain id), access flag)
metadata_set(Tuple[str, int] var_descriptor, **kwargs)
sets metadata for a requested field, arguments: name string, domain id, metadata key,...
var_descr_list()
List of exposed variables (descriptors)
_descrdata descrdata_get_domain(int jg)
returns descriptive data for a given domain, arguments: jg
plugin_info current_get_plugin_info()
returns object describing the current plugin
_descrdata descrdata_get_global()
returns global descriptive data object
register_callback(entry_point ep)
Registers a callback function for a given endpoint.