ICON Community Interface 0.4.0
Loading...
Searching...
No Matches
test_var_shapes.py
Go to the documentation of this file.
1import comin
2
3import numpy as np
4from itertools import product
5
7domains = [comin.descrdata_get_domain(jg) for jg in range(1, glob.n_dom + 1)]
8
9test_space = product(
10 range(1, glob.n_dom + 1),
11 [comin.COMIN_ZAXIS_2D, comin.COMIN_ZAXIS_3D, comin.COMIN_ZAXIS_3D_HALF],
12 [
13 comin.COMIN_HGRID_UNSTRUCTURED_CELL,
14 comin.COMIN_HGRID_UNSTRUCTURED_EDGE,
15 comin.COMIN_HGRID_UNSTRUCTURED_VERTEX,
16 ],
17)
18
19for jg, zaxis, hgrid in test_space:
20 descr = (f"{zaxis}_{hgrid}", jg)
21 comin.var_request_add(descr, False)
22 comin.metadata_set(descr, zaxis_id=zaxis, hgrid_id=hgrid)
23
24
25@comin.EP_SECONDARY_CONSTRUCTOR
27 global var_handles
28 var_handles = {
29 (jg, zaxis, hgrid): comin.var_get(
30 [comin.EP_ATM_TIMELOOP_BEFORE],
31 (f"{zaxis}_{hgrid}", jg),
32 comin.COMIN_FLAG_READ,
33 )
34 for jg, zaxis, hgrid in test_space
35 }
36
37
38@comin.EP_ATM_TIMELOOP_BEFORE
40 global var_handles
41 for jg, zaxis, hgrid in test_space:
42 var = var_handles[(jg, zaxis, hgrid)]
43 shape = np.shape(var)
44 dim_sema = var.dim_semantics
45
46 assert shape[dim_sema.index(comin.COMIN_DIM_SEMANTICS_NPROMA)] == glob.nproma
47
48 assert (
49 shape[dim_sema.index(comin.COMIN_DIM_SEMANTICS_BLOCK)]
50 == {
51 comin.COMIN_HGRID_UNSTRUCTURED_CELL: domains[jg].cells.nblks,
52 comin.COMIN_HGRID_UNSTRUCTURED_EDGE: domains[jg].edges.nblks,
53 comin.COMIN_HGRID_UNSTRUCTURED_VERTEX: domains[jg].verts.nblks,
54 }[hgrid]
55 )
56
57 dim = len(np.squeeze(var).shape)
58 if zaxis == comin.COMIN_ZAXIS_2D:
59 assert comin.COMIN_DIM_SEMANTICS_LEVEL not in dim_sema
60 assert dim == 2
61 else:
62 assert (
63 shape[dim_sema.index(comin.COMIN_DIM_SEMANTICS_LEVEL)]
64 == {
65 comin.COMIN_ZAXIS_3D: glob.nlev,
66 comin.COMIN_ZAXIS_3D: glob.nlev + 1,
67 }[zaxis]
68 )
69 assert dim == 3
var_get(context, var_descriptor, flag)
get variable object, arguments: [entry point], (name string, domain id), access flag)
Definition comin.py:107
metadata_set(var_descriptor, **kwargs)
sets metadata for a requested field, arguments: name string, domain id, metadata key,...
Definition comin.py:189
descrdata_get_domain(jg)
returns descriptive data for a given domain, arguments: jg
Definition comin.py:167
descrdata_get_global()
returns global descriptive data object
Definition comin.py:172