sdfr 1.4.3__py3-none-win_amd64.whl → 1.4.5__py3-none-win_amd64.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.
- sdfr/SDF.py +24 -10
- sdfr/_commit_info.py +2 -2
- sdfr/sdf_helper.py +64 -67
- sdfr/sdfc_shared.dll +0 -0
- {sdfr-1.4.3.dist-info → sdfr-1.4.5.dist-info}/METADATA +1 -1
- sdfr-1.4.5.dist-info/RECORD +12 -0
- sdfr-1.4.3.dist-info/RECORD +0 -12
- {sdfr-1.4.3.dist-info → sdfr-1.4.5.dist-info}/WHEEL +0 -0
- {sdfr-1.4.3.dist-info → sdfr-1.4.5.dist-info}/licenses/LICENSE +0 -0
- {sdfr-1.4.3.dist-info → sdfr-1.4.5.dist-info}/licenses/LICENSE_README.txt +0 -0
sdfr/SDF.py
CHANGED
|
@@ -340,6 +340,7 @@ class BlockList:
|
|
|
340
340
|
"""Contains all the blocks"""
|
|
341
341
|
|
|
342
342
|
def __init__(self, filename, convert=False, derived=True):
|
|
343
|
+
self._handle = None
|
|
343
344
|
clib = sdf_lib
|
|
344
345
|
self._clib = clib
|
|
345
346
|
clib.sdf_open.restype = ct.POINTER(SdfFile)
|
|
@@ -369,8 +370,8 @@ class BlockList:
|
|
|
369
370
|
self.Header = get_header(h.contents)
|
|
370
371
|
mesh_id_map = {}
|
|
371
372
|
mesh_vars = []
|
|
372
|
-
self._block_ids = {}
|
|
373
|
-
self._block_names = {}
|
|
373
|
+
self._block_ids = {"Header": self.Header}
|
|
374
|
+
self._block_names = {"Header": self.Header}
|
|
374
375
|
for n in range(h.contents.nblocks):
|
|
375
376
|
block = block.contents
|
|
376
377
|
block._handle = h
|
|
@@ -417,6 +418,7 @@ class BlockList:
|
|
|
417
418
|
if block.datatype_out != 0:
|
|
418
419
|
newblock = BlockLagrangianMesh(block)
|
|
419
420
|
newblock_mid = block
|
|
421
|
+
newblock_mid._grid_block = newblock
|
|
420
422
|
mesh_id_map[newblock.id] = newblock
|
|
421
423
|
elif blocktype == SdfBlockType.SDF_BLOCKTYPE_NAMEVALUE:
|
|
422
424
|
newblock = BlockNameValue(block)
|
|
@@ -430,6 +432,7 @@ class BlockList:
|
|
|
430
432
|
if block.datatype_out != 0:
|
|
431
433
|
newblock = BlockPlainMesh(block)
|
|
432
434
|
newblock_mid = block
|
|
435
|
+
newblock_mid._grid_block = newblock
|
|
433
436
|
mesh_id_map[newblock.id] = newblock
|
|
434
437
|
elif (
|
|
435
438
|
blocktype == SdfBlockType.SDF_BLOCKTYPE_POINT_DERIVED
|
|
@@ -474,6 +477,7 @@ class BlockList:
|
|
|
474
477
|
self._block_ids.update({nm: newblock})
|
|
475
478
|
nm = block_mid.name.decode() + "_mid"
|
|
476
479
|
self._block_names.update({nm: newblock})
|
|
480
|
+
newblock_mid._grid_block._grid_mid = newblock
|
|
477
481
|
|
|
478
482
|
for var in mesh_vars:
|
|
479
483
|
gid = var.grid_id
|
|
@@ -481,10 +485,12 @@ class BlockList:
|
|
|
481
485
|
var._grid = mesh_id_map[gid]
|
|
482
486
|
|
|
483
487
|
def __del__(self):
|
|
484
|
-
self.
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
+
if self._handle:
|
|
489
|
+
self._clib.sdf_stack_destroy.argtypes = [ct.c_void_p]
|
|
490
|
+
self._clib.sdf_close.argtypes = [ct.c_void_p]
|
|
491
|
+
self._clib.sdf_stack_destroy(self._handle)
|
|
492
|
+
self._clib.sdf_close(self._handle)
|
|
493
|
+
self._handle = None
|
|
488
494
|
|
|
489
495
|
@property
|
|
490
496
|
def name_dict(self):
|
|
@@ -600,6 +606,11 @@ class BlockPlainVariable(Block):
|
|
|
600
606
|
"""Associated mesh"""
|
|
601
607
|
return self._grid
|
|
602
608
|
|
|
609
|
+
@property
|
|
610
|
+
def grid_mid(self):
|
|
611
|
+
"""Associated median mesh"""
|
|
612
|
+
return self._grid._grid_mid
|
|
613
|
+
|
|
603
614
|
@property
|
|
604
615
|
def grid_id(self):
|
|
605
616
|
"""Associated mesh id"""
|
|
@@ -901,7 +912,10 @@ def get_header(h):
|
|
|
901
912
|
|
|
902
913
|
|
|
903
914
|
def get_run_info(block):
|
|
904
|
-
|
|
915
|
+
import datetime
|
|
916
|
+
from datetime import datetime as dtm
|
|
917
|
+
|
|
918
|
+
utc = datetime.timezone.utc
|
|
905
919
|
|
|
906
920
|
h = ct.cast(block.data, ct.POINTER(RunInfo)).contents
|
|
907
921
|
d = {}
|
|
@@ -910,9 +924,9 @@ def get_run_info(block):
|
|
|
910
924
|
d["sha1sum"] = h.sha1sum.decode()
|
|
911
925
|
d["compile_machine"] = h.compile_machine.decode()
|
|
912
926
|
d["compile_flags"] = h.compile_flags.decode()
|
|
913
|
-
d["compile_date"] =
|
|
914
|
-
d["run_date"] =
|
|
915
|
-
d["io_data"] =
|
|
927
|
+
d["compile_date"] = dtm.fromtimestamp(h.compile_date, utc).strftime("%c")
|
|
928
|
+
d["run_date"] = dtm.fromtimestamp(h.run_date, utc).strftime("%c")
|
|
929
|
+
d["io_data"] = dtm.fromtimestamp(h.io_date, utc).strftime("%c")
|
|
916
930
|
return d
|
|
917
931
|
|
|
918
932
|
|
sdfr/_commit_info.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
__commit_date__ = "
|
|
2
|
-
__commit_id__ = "
|
|
1
|
+
__commit_date__ = "Fri Jun 20 12:58:42 2025 +0100"
|
|
2
|
+
__commit_id__ = "64516dfe112baa107ced7cda226188b3db02ea7d"
|
sdfr/sdf_helper.py
CHANGED
|
@@ -888,7 +888,7 @@ def plot1d(
|
|
|
888
888
|
if title:
|
|
889
889
|
subplot.set_title(get_title(var), fontsize="large", y=1.03)
|
|
890
890
|
|
|
891
|
-
figure.
|
|
891
|
+
figure.set_layout_engine("tight")
|
|
892
892
|
figure.canvas.draw()
|
|
893
893
|
|
|
894
894
|
|
|
@@ -997,7 +997,7 @@ def plot_path(
|
|
|
997
997
|
elif figure is None:
|
|
998
998
|
figure = subplot.figure
|
|
999
999
|
subplot.axis(plot_path.axis)
|
|
1000
|
-
figure.
|
|
1000
|
+
figure.set_layout_engine("tight")
|
|
1001
1001
|
figure.canvas.draw()
|
|
1002
1002
|
return
|
|
1003
1003
|
|
|
@@ -1251,7 +1251,7 @@ def plot_path(
|
|
|
1251
1251
|
subplot.axis(lim)
|
|
1252
1252
|
|
|
1253
1253
|
if update:
|
|
1254
|
-
figure.
|
|
1254
|
+
figure.set_layout_engine("tight")
|
|
1255
1255
|
figure.canvas.draw()
|
|
1256
1256
|
|
|
1257
1257
|
|
|
@@ -1300,6 +1300,11 @@ def plot_rays(var, skip=1, rays=None, **kwargs):
|
|
|
1300
1300
|
kwargs["hold"] = True
|
|
1301
1301
|
return
|
|
1302
1302
|
|
|
1303
|
+
if rays:
|
|
1304
|
+
ray_list = [var.data[i] for i in rays]
|
|
1305
|
+
else:
|
|
1306
|
+
ray_list = var.data[ray_slice]
|
|
1307
|
+
|
|
1303
1308
|
if not isinstance(v, sdf.BlockLagrangianMesh):
|
|
1304
1309
|
k = "cbar_label"
|
|
1305
1310
|
if k not in kwargs or (
|
|
@@ -1311,30 +1316,26 @@ def plot_rays(var, skip=1, rays=None, **kwargs):
|
|
|
1311
1316
|
k0 = "vmin"
|
|
1312
1317
|
k1 = "vmax"
|
|
1313
1318
|
k = "vrange"
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
else:
|
|
1321
|
-
ray_list = var.data[ray_slice]
|
|
1319
|
+
vmin, vmax = 1e99, -1e99
|
|
1320
|
+
if (
|
|
1321
|
+
k not in kwargs
|
|
1322
|
+
and not (k0 in kwargs and k1 in kwargs)
|
|
1323
|
+
and len(ray_list) > 0
|
|
1324
|
+
):
|
|
1322
1325
|
for v in ray_list:
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
kwargs[k0] = vmin
|
|
1327
|
-
if k1 not in kwargs:
|
|
1328
|
-
kwargs[k1] = vmax
|
|
1326
|
+
if len(v.data) > 0:
|
|
1327
|
+
vmin = min(vmin, v.data.min())
|
|
1328
|
+
vmax = max(vmax, v.data.max())
|
|
1329
1329
|
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1330
|
+
if k0 not in kwargs:
|
|
1331
|
+
kwargs[k0] = vmin
|
|
1332
|
+
if k1 not in kwargs:
|
|
1333
|
+
kwargs[k1] = vmax
|
|
1334
1334
|
|
|
1335
1335
|
for v in ray_list:
|
|
1336
|
-
|
|
1337
|
-
|
|
1336
|
+
if len(v.data) > 0:
|
|
1337
|
+
plot_auto(v, update=False, **kwargs)
|
|
1338
|
+
kwargs["hold"] = True
|
|
1338
1339
|
|
|
1339
1340
|
plot_auto(var.data[0], axis_only=True, **kwargs)
|
|
1340
1341
|
kwargs["hold"] = True
|
|
@@ -1635,7 +1636,7 @@ def plot2d_array(
|
|
|
1635
1636
|
cbar.set_label(var_label, fontsize="large", x=1.2)
|
|
1636
1637
|
figure.canvas.draw()
|
|
1637
1638
|
|
|
1638
|
-
figure.
|
|
1639
|
+
figure.set_layout_engine("tight")
|
|
1639
1640
|
figure.canvas.draw()
|
|
1640
1641
|
|
|
1641
1642
|
|
|
@@ -1959,7 +1960,7 @@ def plot_levels(
|
|
|
1959
1960
|
# gs.update(right=1-tw/fw)
|
|
1960
1961
|
# ax.set_position([box.x0, box.y0, box.width + bw, box.height])
|
|
1961
1962
|
else:
|
|
1962
|
-
fig.
|
|
1963
|
+
fig.set_layout_engine("tight")
|
|
1963
1964
|
plt.draw()
|
|
1964
1965
|
|
|
1965
1966
|
|
|
@@ -2036,14 +2037,8 @@ def getdata(fname, wkd=None, verbose=True, squeeze=False):
|
|
|
2036
2037
|
except:
|
|
2037
2038
|
pass
|
|
2038
2039
|
|
|
2039
|
-
sdfdict =
|
|
2040
|
-
for key, value in data.__dict__.items():
|
|
2041
|
-
if hasattr(value, "id"):
|
|
2042
|
-
sdfdict[value.id] = value
|
|
2043
|
-
else:
|
|
2044
|
-
sdfdict[key] = value
|
|
2040
|
+
sdfdict = data._block_ids
|
|
2045
2041
|
|
|
2046
|
-
fdict = {}
|
|
2047
2042
|
table = {"time": "t"}
|
|
2048
2043
|
k = "Header"
|
|
2049
2044
|
if k in sdfdict:
|
|
@@ -2054,7 +2049,6 @@ def getdata(fname, wkd=None, verbose=True, squeeze=False):
|
|
|
2054
2049
|
var = h[k]
|
|
2055
2050
|
if verbose:
|
|
2056
2051
|
print(key + str(np.shape(var)) + " = " + k)
|
|
2057
|
-
fdict[key] = var
|
|
2058
2052
|
globals()[key] = var
|
|
2059
2053
|
builtins.__dict__[key] = var
|
|
2060
2054
|
|
|
@@ -2109,39 +2103,10 @@ def getdata(fname, wkd=None, verbose=True, squeeze=False):
|
|
|
2109
2103
|
dims = str(tuple(int(i) for i in sdfdict[k].dims))
|
|
2110
2104
|
if verbose:
|
|
2111
2105
|
print(key + dims + " = " + k)
|
|
2112
|
-
fdict[key] = var
|
|
2113
|
-
globals()[key] = var
|
|
2114
|
-
builtins.__dict__[key] = var
|
|
2115
|
-
|
|
2116
|
-
k = "grid"
|
|
2117
|
-
if k in sdfdict:
|
|
2118
|
-
vargrid = sdfdict[k]
|
|
2119
|
-
grid = vargrid
|
|
2120
|
-
keys = "x", "y", "z"
|
|
2121
|
-
for n in range(np.size(vargrid.dims)):
|
|
2122
|
-
key = keys[n]
|
|
2123
|
-
var = vargrid.data[n]
|
|
2124
|
-
dims = str(tuple(int(i) for i in sdfdict[k].dims))
|
|
2125
|
-
if verbose:
|
|
2126
|
-
print(key + dims + " = " + k)
|
|
2127
|
-
fdict[key] = var
|
|
2128
2106
|
globals()[key] = var
|
|
2129
2107
|
builtins.__dict__[key] = var
|
|
2130
2108
|
|
|
2131
|
-
|
|
2132
|
-
if k in sdfdict:
|
|
2133
|
-
vargrid = sdfdict[k]
|
|
2134
|
-
grid_mid = vargrid
|
|
2135
|
-
keys = "xc", "yc", "zc"
|
|
2136
|
-
for n in range(np.size(vargrid.dims)):
|
|
2137
|
-
key = keys[n]
|
|
2138
|
-
var = vargrid.data[n]
|
|
2139
|
-
dims = str(tuple(int(i) for i in sdfdict[k].dims))
|
|
2140
|
-
if verbose:
|
|
2141
|
-
print(key + dims + " = " + k)
|
|
2142
|
-
fdict[key] = var
|
|
2143
|
-
globals()[key] = var
|
|
2144
|
-
builtins.__dict__[key] = var
|
|
2109
|
+
_get_grid(data)
|
|
2145
2110
|
|
|
2146
2111
|
# Export particle arrays
|
|
2147
2112
|
for k, value in data.__dict__.items():
|
|
@@ -2158,7 +2123,6 @@ def getdata(fname, wkd=None, verbose=True, squeeze=False):
|
|
|
2158
2123
|
if isinstance(value, sdf.BlockPointVariable):
|
|
2159
2124
|
if verbose:
|
|
2160
2125
|
print(key + dims + " = " + value.name)
|
|
2161
|
-
fdict[key] = var
|
|
2162
2126
|
globals()[key] = var
|
|
2163
2127
|
builtins.__dict__[key] = var
|
|
2164
2128
|
else:
|
|
@@ -2171,7 +2135,6 @@ def getdata(fname, wkd=None, verbose=True, squeeze=False):
|
|
|
2171
2135
|
dims = str(tuple(int(i) for i in value.dims))
|
|
2172
2136
|
if verbose:
|
|
2173
2137
|
print(gkey + dims + " = " + k + " " + keys[n])
|
|
2174
|
-
fdict[gkey] = var
|
|
2175
2138
|
globals()[gkey] = var
|
|
2176
2139
|
builtins.__dict__[gkey] = var
|
|
2177
2140
|
|
|
@@ -2179,6 +2142,33 @@ def getdata(fname, wkd=None, verbose=True, squeeze=False):
|
|
|
2179
2142
|
return data
|
|
2180
2143
|
|
|
2181
2144
|
|
|
2145
|
+
def _get_grid(data, verbose=False):
|
|
2146
|
+
sdfdict = {}
|
|
2147
|
+
if hasattr(data, "_block_ids"):
|
|
2148
|
+
sdfdict = data._block_ids
|
|
2149
|
+
|
|
2150
|
+
grids = "grid", "grid_mid"
|
|
2151
|
+
grid_keys = ["x", "y", "z"], ["xc", "yc", "zc"]
|
|
2152
|
+
|
|
2153
|
+
for key, gkeys in zip(grids, grid_keys):
|
|
2154
|
+
vargrid = None
|
|
2155
|
+
if hasattr(data, key):
|
|
2156
|
+
vargrid = data.grid
|
|
2157
|
+
elif key in sdfdict:
|
|
2158
|
+
vargrid = sdfdict[key]
|
|
2159
|
+
|
|
2160
|
+
if vargrid:
|
|
2161
|
+
globals()[key] = vargrid
|
|
2162
|
+
for n in range(np.size(vargrid.dims)):
|
|
2163
|
+
key = gkeys[n]
|
|
2164
|
+
var = vargrid.data[n]
|
|
2165
|
+
dims = str(tuple(int(i) for i in vargrid.dims))
|
|
2166
|
+
if verbose:
|
|
2167
|
+
print(key + dims + " = " + k)
|
|
2168
|
+
globals()[key] = var
|
|
2169
|
+
builtins.__dict__[key] = var
|
|
2170
|
+
|
|
2171
|
+
|
|
2182
2172
|
def ogrid(skip=None, **kwargs):
|
|
2183
2173
|
global x, y, mult_x, mult_y
|
|
2184
2174
|
if np.ndim(x) == 1:
|
|
@@ -2200,8 +2190,15 @@ def ogrid(skip=None, **kwargs):
|
|
|
2200
2190
|
|
|
2201
2191
|
|
|
2202
2192
|
def plotgrid(fname=None, iso=None, title=True):
|
|
2203
|
-
|
|
2193
|
+
global grid
|
|
2194
|
+
if (
|
|
2195
|
+
isinstance(fname, sdf.BlockList)
|
|
2196
|
+
or isinstance(fname, dict)
|
|
2197
|
+
or hasattr(fname, "grid")
|
|
2198
|
+
):
|
|
2204
2199
|
dat = fname
|
|
2200
|
+
_get_grid(dat)
|
|
2201
|
+
title = False
|
|
2205
2202
|
elif fname is not None:
|
|
2206
2203
|
dat = getdata(fname, verbose=verbose)
|
|
2207
2204
|
|
|
@@ -2225,7 +2222,7 @@ def plotgrid(fname=None, iso=None, title=True):
|
|
|
2225
2222
|
plt.draw()
|
|
2226
2223
|
|
|
2227
2224
|
fig = plt.gcf()
|
|
2228
|
-
fig.
|
|
2225
|
+
fig.set_layout_engine("tight")
|
|
2229
2226
|
plt.draw()
|
|
2230
2227
|
|
|
2231
2228
|
|
sdfr/sdfc_shared.dll
CHANGED
|
Binary file
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
sdfr/__init__.py,sha256=OxcJAJ0ADoE54vgqMQqxhoFWyU2ldb3fb-_LFyeZZfQ,1209
|
|
2
|
+
sdfr/_commit_info.py,sha256=9HQrcuM5QHd6sjf7BoxBdHycFer6VVwNvPkFa5hpc5c,112
|
|
3
|
+
sdfr/loadlib.py,sha256=xxp5MX-u7ZHIc12mcvN-y8L5UEjY-aEgINj2r-1swWk,2358
|
|
4
|
+
sdfr/SDF.py,sha256=Dm1Mf5Sr8Cf-J9H5wdPCAW5ywlqQFi9_nbmBSS86CV0,31638
|
|
5
|
+
sdfr/sdf_helper.py,sha256=EnwHKG0cHHkplE9wKAIdBb-XAhqvVbsG0aDea_6S3zU,63439
|
|
6
|
+
sdfr/sdfc_shared.dll,sha256=n6kW5ebxpk7mX5UCtY7Luah0IBj1KfgZaioUusbsZAo,121344
|
|
7
|
+
sdfr/sdfc_shared.lib,sha256=S1N_78t9KbdIMK70zF5doUSQTPKnINn_MaOo_f1F_9k,3616
|
|
8
|
+
sdfr-1.4.5.dist-info/METADATA,sha256=mL1lsi_LnAljuFXLuP04YNi21rx8kuxnn4zWOKYHOaM,370
|
|
9
|
+
sdfr-1.4.5.dist-info/WHEEL,sha256=M0M8yQSkdzjr-Re7BLxGdurZIJei1aSjIm-hgxnt5-w,103
|
|
10
|
+
sdfr-1.4.5.dist-info/licenses/LICENSE,sha256=gpLeavs1KxgJFrpL_uVDh0MoDvPfJoZ89A5dSCl4P5U,1652
|
|
11
|
+
sdfr-1.4.5.dist-info/licenses/LICENSE_README.txt,sha256=KlBSoHArwoXbiygx3IJTjtgM7hLNO9o8ZMlZV77nrXs,235
|
|
12
|
+
sdfr-1.4.5.dist-info/RECORD,,
|
sdfr-1.4.3.dist-info/RECORD
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
sdfr/__init__.py,sha256=OxcJAJ0ADoE54vgqMQqxhoFWyU2ldb3fb-_LFyeZZfQ,1209
|
|
2
|
-
sdfr/_commit_info.py,sha256=m_JZRhDwnK9FYuMipiiKsSYgntEAJH7hyVCQZetAD-c,112
|
|
3
|
-
sdfr/loadlib.py,sha256=xxp5MX-u7ZHIc12mcvN-y8L5UEjY-aEgINj2r-1swWk,2358
|
|
4
|
-
sdfr/SDF.py,sha256=bt4DOuOTmbc_lvtTBz7khVtbaFStiO6RKN2FAq3DjrI,31144
|
|
5
|
-
sdfr/sdf_helper.py,sha256=cI6F9531e7hbp6oe_hnjPi9pdl6QddsTbohqlNdyg6c,63755
|
|
6
|
-
sdfr/sdfc_shared.dll,sha256=7_kZczqfoCb2RLimVkO31xgl_wWOXoZmdrQ2Rlzf5oo,121344
|
|
7
|
-
sdfr/sdfc_shared.lib,sha256=S1N_78t9KbdIMK70zF5doUSQTPKnINn_MaOo_f1F_9k,3616
|
|
8
|
-
sdfr-1.4.3.dist-info/METADATA,sha256=GTu3uSmFPTzK-K8j6cSPzDZHP7XzslpP6v1KnVi6cZU,370
|
|
9
|
-
sdfr-1.4.3.dist-info/WHEEL,sha256=M0M8yQSkdzjr-Re7BLxGdurZIJei1aSjIm-hgxnt5-w,103
|
|
10
|
-
sdfr-1.4.3.dist-info/licenses/LICENSE,sha256=gpLeavs1KxgJFrpL_uVDh0MoDvPfJoZ89A5dSCl4P5U,1652
|
|
11
|
-
sdfr-1.4.3.dist-info/licenses/LICENSE_README.txt,sha256=KlBSoHArwoXbiygx3IJTjtgM7hLNO9o8ZMlZV77nrXs,235
|
|
12
|
-
sdfr-1.4.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|