cardiac-geometriesx 0.4.4__py3-none-any.whl → 0.4.5__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.

Potentially problematic release.


This version of cardiac-geometriesx might be problematic. Click here for more details.

@@ -7,9 +7,12 @@ import dolfinx
7
7
  import numpy as np
8
8
  import ufl
9
9
  from dolfinx.fem.petsc import LinearProblem
10
+ from packaging.version import Version
10
11
 
11
12
  from ..utils import space_from_string
12
13
 
14
+ _dolfinx_version = Version(dolfinx.__version__)
15
+
13
16
 
14
17
  class Microstructure(NamedTuple):
15
18
  f0: dolfinx.fem.Function
@@ -101,7 +104,12 @@ def laplace(
101
104
  if function_space != "P_1":
102
105
  W = space_from_string(function_space, mesh, dim=1)
103
106
  t = dolfinx.fem.Function(W)
104
- expr = dolfinx.fem.Expression(uh, W.element.interpolation_points())
107
+ if _dolfinx_version >= Version("0.10"):
108
+ points = W.element.interpolation_points
109
+ else:
110
+ points = W.element.interpolation_points()
111
+
112
+ expr = dolfinx.fem.Expression(uh, points)
105
113
  t.interpolate(expr)
106
114
  else:
107
115
  t = uh
@@ -10,6 +10,7 @@ from mpi4py import MPI
10
10
  import basix
11
11
  import dolfinx
12
12
  import numpy as np
13
+ from dolfinx.graph import adjacencylist
13
14
  from packaging.version import Version
14
15
  from structlog import get_logger
15
16
 
@@ -184,7 +185,8 @@ def model_to_mesh(
184
185
  )
185
186
 
186
187
  mesh.topology.create_connectivity(mesh.topology.dim, 0)
187
- adj = dolfinx.cpp.graph.AdjacencyList_int32(local_entities)
188
+ # adj = dolfinx.cpp.graph.AdjacencyList_int32(local_entities)
189
+ adj = adjacencylist(local_entities)
188
190
  ct = dolfinx.mesh.meshtags_from_entities(
189
191
  mesh, mesh.topology.dim, adj, local_values.astype(np.int32, copy=False)
190
192
  )
@@ -213,7 +215,7 @@ def model_to_mesh(
213
215
  )
214
216
 
215
217
  mesh.topology.create_connectivity(topology.dim - 1, tdim)
216
- adj = dolfinx.cpp.graph.AdjacencyList_int32(local_entities)
218
+ adj = adjacencylist(local_entities)
217
219
 
218
220
  ft = dolfinx.io.gmshio.meshtags_from_entities(
219
221
  mesh, tdim - 1, adj, local_values.astype(np.int32, copy=False)
@@ -236,7 +238,7 @@ def model_to_mesh(
236
238
  mesh, tdim - 2, marked_edges, edge_values
237
239
  )
238
240
  mesh.topology.create_connectivity(topology.dim - 2, tdim)
239
- adj = dolfinx.cpp.graph.AdjacencyList_int32(local_entities)
241
+ adj = adjacencylist(local_entities)
240
242
  et = dolfinx.io.gmshio.meshtags_from_entities(
241
243
  mesh, tdim - 2, adj, local_values.astype(np.int32, copy=False)
242
244
  )
@@ -258,7 +260,7 @@ def model_to_mesh(
258
260
  mesh, tdim - 3, marked_vertices, vertex_values
259
261
  )
260
262
  mesh.topology.create_connectivity(topology.dim - 3, tdim)
261
- adj = dolfinx.cpp.graph.AdjacencyList_int32(local_entities)
263
+ adj = adjacencylist(local_entities)
262
264
  vt = dolfinx.io.gmshio.meshtags_from_entities(
263
265
  mesh, tdim - 3, adj, local_values.astype(np.int32, copy=False)
264
266
  )
@@ -421,31 +423,61 @@ def gmsh2dolfin(comm: MPI.Intracomm, msh_file, rank: int = 0) -> GMshGeometry:
421
423
  logger.debug(f"Convert file {msh_file} to dolfin")
422
424
  outdir = Path(msh_file).parent
423
425
 
424
- import gmsh
426
+ if Version(dolfinx.__version__) >= Version("0.10.0"):
427
+ mesh_data = dolfinx.io.gmshio.read_from_msh(comm=comm, filename=msh_file)
428
+ mesh = mesh_data.mesh
429
+ markers_ = mesh_data.physical_groups
430
+ ct = mesh_data.cell_tags
431
+ tdim = mesh.topology.dim
432
+ if ct is None:
433
+ ct = dolfinx.mesh.meshtags(
434
+ mesh, tdim, np.empty(0, dtype=np.int32), np.empty(0, dtype=np.int32)
435
+ )
436
+
437
+ ft = mesh_data.facet_tags
438
+ if ft is None:
439
+ ft = dolfinx.mesh.meshtags(
440
+ mesh, tdim - 1, np.empty(0, dtype=np.int32), np.empty(0, dtype=np.int32)
441
+ )
442
+ et = mesh_data.edge_tags
443
+ if et is None:
444
+ et = dolfinx.mesh.meshtags(
445
+ mesh, tdim - 2, np.empty(0, dtype=np.int32), np.empty(0, dtype=np.int32)
446
+ )
447
+ vt = mesh_data.vertex_tags
448
+ if vt is None:
449
+ vt = dolfinx.mesh.meshtags(
450
+ mesh, tdim - 3, np.empty(0, dtype=np.int32), np.empty(0, dtype=np.int32)
451
+ )
452
+
453
+ markers = {k: tuple(reversed(v)) for k, v in markers_.items()}
425
454
 
426
- # We could make this work in parallel in the future
427
-
428
- if comm.rank == rank:
429
- gmsh.initialize()
430
- gmsh.model.add("Mesh from file")
431
- gmsh.merge(str(msh_file))
432
- mesh, ct, ft, et, vt = model_to_mesh(gmsh.model, comm, 0)
433
- markers = {
434
- gmsh.model.getPhysicalName(*v): tuple(reversed(v))
435
- for v in gmsh.model.getPhysicalGroups()
436
- }
437
- gmsh.finalize()
438
455
  else:
439
- mesh, ct, ft, et, vt = model_to_mesh(gmsh.model, comm, 0)
440
- markers = {}
456
+ import gmsh
457
+ # We could make this work in parallel in the future
458
+
459
+ if comm.rank == rank:
460
+ gmsh.initialize()
461
+ gmsh.model.add("Mesh from file")
462
+ gmsh.merge(str(msh_file))
463
+ mesh, ct, ft, et, vt = model_to_mesh(gmsh.model, comm, 0)
464
+ markers = {
465
+ gmsh.model.getPhysicalName(*v): tuple(reversed(v))
466
+ for v in gmsh.model.getPhysicalGroups()
467
+ }
468
+ gmsh.finalize()
469
+ else:
470
+ mesh, ct, ft, et, vt = model_to_mesh(gmsh.model, comm, 0)
471
+ markers = {}
472
+
473
+ markers = comm.bcast(markers, root=rank)
474
+
441
475
  mesh.name = "Mesh"
442
476
  ct.name = "Cell tags"
443
477
  ft.name = "Facet tags"
444
478
  et.name = "Edge tags"
445
479
  vt.name = "Vertex tags"
446
480
 
447
- markers = comm.bcast(markers, root=rank)
448
-
449
481
  # Save tags to xdmf
450
482
  with dolfinx.io.XDMFFile(comm, outdir / "mesh.xdmf", "w") as xdmf:
451
483
  xdmf.write_mesh(mesh)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cardiac-geometriesx
3
- Version: 0.4.4
3
+ Version: 0.4.5
4
4
  Summary: A python library for cardiac geometries
5
5
  Author-email: Henrik Finsberg <henriknf@simula.no>
6
6
  License: MIT
@@ -33,6 +33,7 @@ Requires-Dist: pyvista[all]>=0.43.0; extra == "docs"
33
33
  Requires-Dist: trame-vuetify; extra == "docs"
34
34
  Requires-Dist: ipywidgets; extra == "docs"
35
35
  Requires-Dist: fenicsx-ldrb; extra == "docs"
36
+ Requires-Dist: ukb-atlas; extra == "docs"
36
37
  Provides-Extra: test
37
38
  Requires-Dist: pre-commit; extra == "test"
38
39
  Requires-Dist: pytest; extra == "test"
@@ -3,14 +3,14 @@ cardiac_geometries/cli.py,sha256=GKcsMNhVFoxWDr-o3jiDCXmTvPgCSEB9Kws8AvYIK4Q,196
3
3
  cardiac_geometries/geometry.py,sha256=JSsLKfXej4DSgzRbivC-_jvyjiY6zkXcRCRL93IIys8,6504
4
4
  cardiac_geometries/gui.py,sha256=9WYR850wLrqsUrVUC37E2SaO0OWA_oagSe-YNrsxz3k,8376
5
5
  cardiac_geometries/mesh.py,sha256=_vNNMpQWyLEZ3TmsHAUh0l3Z2TYuQBy6Os-6nB9_Z9A,26908
6
- cardiac_geometries/utils.py,sha256=hR-uV9lzmfM_kQkqHY9MmJ_b3-Lv5oTsNOKCb-0nn_U,20616
6
+ cardiac_geometries/utils.py,sha256=tMn_XQRYbP1__c0QPHZeiCRJun3TZiH80OwJDESTPzY,21817
7
7
  cardiac_geometries/fibers/__init__.py,sha256=WpRrn9Iakl-3m8IGtFkqP0LXGjw5EZHZ8Eg9JCnCdrg,137
8
8
  cardiac_geometries/fibers/lv_ellipsoid.py,sha256=LZNhxzTsn-h88xXGP5bNfnWKhdvBROUjWjt8yrQFW48,6010
9
9
  cardiac_geometries/fibers/slab.py,sha256=TYQhckJ8mwXz_08Cx3QsPQMtemkaxZ955SnSMrDfBPE,3898
10
- cardiac_geometries/fibers/utils.py,sha256=QQSpkXQR9Fk457tjGckP-fuo43YAUlrfK7s_xBDxA1Q,3245
11
- cardiac_geometriesx-0.4.4.dist-info/LICENSE,sha256=lo5K2rJPZOSv6luutGHbzzi3IpXNaB9E2UWq60qvNx0,1111
12
- cardiac_geometriesx-0.4.4.dist-info/METADATA,sha256=9Adw7oZW-ChT2_HcofTzu-XT_qtI32q4w2hAZSUv2ao,4160
13
- cardiac_geometriesx-0.4.4.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
14
- cardiac_geometriesx-0.4.4.dist-info/entry_points.txt,sha256=xOBnlc6W-H9oCDYLNz3kpki26OmpfYSoFSrmi_4V-Ec,52
15
- cardiac_geometriesx-0.4.4.dist-info/top_level.txt,sha256=J0gQxkWR2my5Vf7Qt8buDY8ZOjYdVfIweVunCGXWKNE,19
16
- cardiac_geometriesx-0.4.4.dist-info/RECORD,,
10
+ cardiac_geometries/fibers/utils.py,sha256=pCoXkaUbidLGPY0Ty8uWCU1siDkHcv2qP8rZtdxMf0k,3475
11
+ cardiac_geometriesx-0.4.5.dist-info/LICENSE,sha256=lo5K2rJPZOSv6luutGHbzzi3IpXNaB9E2UWq60qvNx0,1111
12
+ cardiac_geometriesx-0.4.5.dist-info/METADATA,sha256=VcogZHS3ECHMoAQ-ei54PSdGCOi6-bviY8KjEYbPgaw,4202
13
+ cardiac_geometriesx-0.4.5.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
14
+ cardiac_geometriesx-0.4.5.dist-info/entry_points.txt,sha256=xOBnlc6W-H9oCDYLNz3kpki26OmpfYSoFSrmi_4V-Ec,52
15
+ cardiac_geometriesx-0.4.5.dist-info/top_level.txt,sha256=J0gQxkWR2my5Vf7Qt8buDY8ZOjYdVfIweVunCGXWKNE,19
16
+ cardiac_geometriesx-0.4.5.dist-info/RECORD,,