sdfr 1.2.1__py3-none-win_amd64.whl → 1.3.0__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 CHANGED
@@ -377,6 +377,7 @@ class BlockList:
377
377
  block._blocklist = self
378
378
  blocktype = block.blocktype
379
379
  newblock = None
380
+ newblock_mid = None
380
381
  name = get_member_name(block.name)
381
382
  if blocktype == SdfBlockType.SDF_BLOCKTYPE_ARRAY:
382
383
  newblock = BlockArray(block)
@@ -413,8 +414,10 @@ class BlockList:
413
414
  elif blocktype == SdfBlockType.SDF_BLOCKTYPE_DATABLOCK:
414
415
  newblock = BlockData(block)
415
416
  elif blocktype == SdfBlockType.SDF_BLOCKTYPE_LAGRANGIAN_MESH:
416
- newblock = BlockLagrangianMesh(block)
417
- meshes.append(newblock)
417
+ if block.datatype_out != 0:
418
+ newblock = BlockLagrangianMesh(block)
419
+ newblock_mid = block
420
+ meshes.append(newblock)
418
421
  elif blocktype == SdfBlockType.SDF_BLOCKTYPE_NAMEVALUE:
419
422
  newblock = BlockNameValue(block)
420
423
  elif (
@@ -424,8 +427,10 @@ class BlockList:
424
427
  newblock = BlockPlainVariable(block)
425
428
  mesh_vars.append(newblock)
426
429
  elif blocktype == SdfBlockType.SDF_BLOCKTYPE_PLAIN_MESH:
427
- newblock = BlockPlainMesh(block)
428
- meshes.append(newblock)
430
+ if block.datatype_out != 0:
431
+ newblock = BlockPlainMesh(block)
432
+ newblock_mid = block
433
+ meshes.append(newblock)
429
434
  elif (
430
435
  blocktype == SdfBlockType.SDF_BLOCKTYPE_POINT_DERIVED
431
436
  or blocktype == SdfBlockType.SDF_BLOCKTYPE_POINT_VARIABLE
@@ -447,6 +452,22 @@ class BlockList:
447
452
  self._block_names.update({block.name.decode(): newblock})
448
453
  block = block.next
449
454
 
455
+ if newblock_mid is not None:
456
+ block_mid = newblock_mid
457
+ block_mid._handle = h
458
+ block_mid._blocklist = self
459
+ blocktype = block_mid.blocktype
460
+ name = get_member_name(block_mid.name) + "_mid"
461
+ if blocktype == SdfBlockType.SDF_BLOCKTYPE_LAGRANGIAN_MESH:
462
+ newblock = BlockLagrangianMesh(block_mid, mid=True)
463
+ elif blocktype == SdfBlockType.SDF_BLOCKTYPE_PLAIN_MESH:
464
+ newblock = BlockPlainMesh(block_mid, mid=True)
465
+ self.__dict__[name] = newblock
466
+ nm = block_mid.id.decode() + "_mid"
467
+ self._block_ids.update({nm: newblock})
468
+ nm = block_mid.name.decode() + "_mid"
469
+ self._block_names.update({nm: newblock})
470
+
450
471
  for var in mesh_vars:
451
472
  gid = var.grid_id
452
473
  for mesh in meshes:
@@ -500,7 +521,7 @@ class Block:
500
521
  dtype = self._datatype
501
522
  if dtype == np.byte:
502
523
  dtype = np.dtype("|S1")
503
- totype = _ct_datatypes[self._contents.datatype]
524
+ totype = _ct_datatypes[self._contents.datatype_out]
504
525
  cast = ct.cast(data, ct.POINTER(totype))
505
526
  buf = buffer_from_memory(cast, blen)
506
527
  self._owndata = False
@@ -598,8 +619,9 @@ class BlockPlainVariable(Block):
598
619
  class BlockPlainMesh(Block):
599
620
  """Plain mesh block"""
600
621
 
601
- def __init__(self, block):
622
+ def __init__(self, block, mid=False):
602
623
  super().__init__(block)
624
+ self._mid = mid
603
625
  self._data = None
604
626
  self._units = tuple(
605
627
  [block.dim_units[i].decode() for i in range(block.ndims)]
@@ -608,6 +630,11 @@ class BlockPlainMesh(Block):
608
630
  [block.dim_labels[i].decode() for i in range(block.ndims)]
609
631
  )
610
632
  self._mult = None
633
+ self._bdims = self._dims
634
+ if mid:
635
+ self._id += "_mid"
636
+ self._name += "_mid"
637
+ self._dims = tuple([i - 1 for i in self._dims])
611
638
  if bool(block.dim_mults):
612
639
  self._mult = tuple(block.dim_mults[: block.ndims])
613
640
  if bool(block.extents):
@@ -620,9 +647,11 @@ class BlockPlainMesh(Block):
620
647
  clib = self._handle._clib
621
648
  clib.sdf_helper_read_data(self._handle, self._contents)
622
649
  grids = []
623
- for i, d in enumerate(self.dims):
650
+ for i, d in enumerate(self._bdims):
624
651
  blen = np.dtype(self._datatype).itemsize * d
625
652
  array = self._numpy_from_buffer(self._contents.grids[i], blen)
653
+ if self._mid:
654
+ array = 0.5 * (array[1:] + array[:-1])
626
655
  grids.append(array)
627
656
  self._data = tuple(grids)
628
657
  return self._data
@@ -663,12 +692,20 @@ class BlockLagrangianMesh(BlockPlainMesh):
663
692
  clib = self._handle._clib
664
693
  clib.sdf_helper_read_data(self._handle, self._contents)
665
694
  blen = np.dtype(self._datatype).itemsize
666
- for d in self.dims:
695
+ for d in self._bdims:
667
696
  blen *= d
668
697
  grids = []
669
- for i, d in enumerate(self.dims):
698
+ for i, d in enumerate(self._bdims):
670
699
  array = self._numpy_from_buffer(self._contents.grids[i], blen)
671
- array = array.reshape(self.dims, order="F")
700
+ array = array.reshape(self._bdims, order="F")
701
+ if self._mid:
702
+ nn = len(self._bdims)
703
+ for j in range(nn):
704
+ s1 = nn * [slice(None)]
705
+ s2 = nn * [slice(None)]
706
+ s1[j] = slice(1, None)
707
+ s2[j] = slice(None, -1)
708
+ array = 0.5 * (array[tuple(s1)] + array[tuple(s2)])
672
709
  grids.append(array)
673
710
  self._data = tuple(grids)
674
711
  return self._data
sdfr/_commit_info.py CHANGED
@@ -1,2 +1,2 @@
1
- __commit_date__ = "Thu May 1 13:59:33 2025 +0100"
2
- __commit_id__ = "6700eab92d2526d52b012861672b0b9e6ff57975"
1
+ __commit_date__ = "Wed May 7 13:32:07 2025 +0100"
2
+ __commit_id__ = "c22be2665c4bcbc9925fa702205ace2f99585439"
sdfr/sdfc_shared.dll CHANGED
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: sdfr
3
- Version: 1.2.1
3
+ Version: 1.3.0
4
4
  Summary: Python module for processing SDF files
5
5
  Author-Email: Keith Bennett <k.bennett@warwick.ac.uk>
6
6
  Requires-Dist: numpy
@@ -0,0 +1,11 @@
1
+ sdfr/__init__.py,sha256=vSTzC03qtlxqcn-7dewmUa59NvhaZ-QqBi1svDCDzIo,1153
2
+ sdfr/_commit_info.py,sha256=TmprDWbFKQKXQpJ-hWS2ELdZ46OBHS0lMKb2QHUqiyo,111
3
+ sdfr/loadlib.py,sha256=EMcnZhh68fS72Bjv8QtfDzPbowx1FfaqX4TPhDl-o94,2328
4
+ sdfr/SDF.py,sha256=D4M4qiaK-rYgYKNOi19cWt07M0Dqb6kYgId0uFZtYo4,29770
5
+ sdfr/sdf_helper.py,sha256=jS4fxmq1y7PeryrPFuB_Lgu5n88-cNggaWMvQy4XqSA,63682
6
+ sdfr/sdfc_shared.dll,sha256=JYkR3mF1Ikr4xFZf7NdUN6WNx7CeTdJZVB8k5cCeXRg,13312
7
+ sdfr-1.3.0.dist-info/METADATA,sha256=qhi1HXCNjSgmcm0qLSwEETcCJnsec_45pXXf_41noyo,370
8
+ sdfr-1.3.0.dist-info/WHEEL,sha256=n3HxvvUxRudexxUBRcXuzD3-t2g3c6dOWZQFWqwqrFk,103
9
+ sdfr-1.3.0.dist-info/licenses/LICENSE,sha256=gpLeavs1KxgJFrpL_uVDh0MoDvPfJoZ89A5dSCl4P5U,1652
10
+ sdfr-1.3.0.dist-info/licenses/LICENSE_README.txt,sha256=KlBSoHArwoXbiygx3IJTjtgM7hLNO9o8ZMlZV77nrXs,235
11
+ sdfr-1.3.0.dist-info/RECORD,,
@@ -1,11 +0,0 @@
1
- sdfr/__init__.py,sha256=vSTzC03qtlxqcn-7dewmUa59NvhaZ-QqBi1svDCDzIo,1153
2
- sdfr/_commit_info.py,sha256=s_1eIAiO2sCAlYEX7FxbqKEyU88Z6yimpVnWN9ovOg0,111
3
- sdfr/loadlib.py,sha256=EMcnZhh68fS72Bjv8QtfDzPbowx1FfaqX4TPhDl-o94,2328
4
- sdfr/SDF.py,sha256=aJBqweNSYMBYwRDLY-7y9Niwq73WANstgnc8xKqp9Vc,27997
5
- sdfr/sdf_helper.py,sha256=jS4fxmq1y7PeryrPFuB_Lgu5n88-cNggaWMvQy4XqSA,63682
6
- sdfr/sdfc_shared.dll,sha256=Q7fPn9Jlxox64kW_BOH0Z4ynZhGZP5uDxuh4BW5BQFo,13312
7
- sdfr-1.2.1.dist-info/METADATA,sha256=OJsufcYrnuBoRhFTlSGoxyCFyYWdyn5d-NvWUZU1Fis,370
8
- sdfr-1.2.1.dist-info/WHEEL,sha256=n3HxvvUxRudexxUBRcXuzD3-t2g3c6dOWZQFWqwqrFk,103
9
- sdfr-1.2.1.dist-info/licenses/LICENSE,sha256=gpLeavs1KxgJFrpL_uVDh0MoDvPfJoZ89A5dSCl4P5U,1652
10
- sdfr-1.2.1.dist-info/licenses/LICENSE_README.txt,sha256=KlBSoHArwoXbiygx3IJTjtgM7hLNO9o8ZMlZV77nrXs,235
11
- sdfr-1.2.1.dist-info/RECORD,,
File without changes