From 7208fd867cb92562bc9cfbe59d36e373718e5ecf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aron=20L=C3=A4ngert?= Date: Tue, 7 Jul 2026 14:59:35 +0200 Subject: [PATCH 1/2] Fix type comparison --- DeepSDFStruct/optimization.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/DeepSDFStruct/optimization.py b/DeepSDFStruct/optimization.py index 95d587cc..520a8b29 100644 --- a/DeepSDFStruct/optimization.py +++ b/DeepSDFStruct/optimization.py @@ -92,13 +92,13 @@ def get_mesh_from_torchfem(Solid: torchfem.Solid) -> pyvista.UnstructuredGrid: if not isinstance(Solid, torchfem.Solid): raise NotImplementedError("Currently only solid mesh is supported.") # VTK cell types - if Solid.etype is Tetra1: + if isinstance(Solid.etype, Tetra1): cell_types = Solid.n_elem * [pyvista.CellType.TETRA] - elif Solid.etype is Tetra2: + elif isinstance(Solid.etype, Tetra2): cell_types = Solid.n_elem * [pyvista.CellType.QUADRATIC_TETRA] - elif Solid.etype is Hexa1: + elif isinstance(Solid.etype, Hexa1): cell_types = Solid.n_elem * [pyvista.CellType.HEXAHEDRON] - elif Solid.etype is Hexa2: + elif isinstance(Solid.etype, Hexa2): cell_types = Solid.n_elem * [pyvista.CellType.QUADRATIC_HEXAHEDRON] # VTK element list From d89e0343ff258cd51c48bc4aa5fc63434751d0e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aron=20L=C3=A4ngert?= Date: Tue, 7 Jul 2026 18:35:55 +0200 Subject: [PATCH 2/2] Add previous type checks for compatibility reasons --- DeepSDFStruct/optimization.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/DeepSDFStruct/optimization.py b/DeepSDFStruct/optimization.py index 520a8b29..4fa05be6 100644 --- a/DeepSDFStruct/optimization.py +++ b/DeepSDFStruct/optimization.py @@ -92,14 +92,18 @@ def get_mesh_from_torchfem(Solid: torchfem.Solid) -> pyvista.UnstructuredGrid: if not isinstance(Solid, torchfem.Solid): raise NotImplementedError("Currently only solid mesh is supported.") # VTK cell types - if isinstance(Solid.etype, Tetra1): - cell_types = Solid.n_elem * [pyvista.CellType.TETRA] - elif isinstance(Solid.etype, Tetra2): - cell_types = Solid.n_elem * [pyvista.CellType.QUADRATIC_TETRA] - elif isinstance(Solid.etype, Hexa1): - cell_types = Solid.n_elem * [pyvista.CellType.HEXAHEDRON] - elif isinstance(Solid.etype, Hexa2): - cell_types = Solid.n_elem * [pyvista.CellType.QUADRATIC_HEXAHEDRON] + etype = Solid.etype + + if etype is Tetra1 or isinstance(etype, Tetra1): + cell_types = [pyvista.CellType.TETRA] * Solid.n_elem + elif etype is Tetra2 or isinstance(etype, Tetra2): + cell_types = [pyvista.CellType.QUADRATIC_TETRA] * Solid.n_elem + elif etype is Hexa1 or isinstance(etype, Hexa1): + cell_types = [pyvista.CellType.HEXAHEDRON] * Solid.n_elem + elif etype is Hexa2 or isinstance(etype, Hexa2): + cell_types = [pyvista.CellType.QUADRATIC_HEXAHEDRON] * Solid.n_elem + else: + raise TypeError(f"Unsupported element type: {etype} ({type(etype)})") # VTK element list el = len(Solid.elements[0]) * torch.ones(Solid.n_elem, dtype=Solid.elements.dtype)