Source code for Muscat.Bridges.PyVistaBridge

# -*- coding: utf-8 -*-


[docs]def MeshToPyVista(mesh, TagsAsFields=False): from Muscat.Bridges.vtkBridge import MeshToVtk import pyvista as pv return pv.wrap(MeshToVtk(mesh, TagsAsFields=TagsAsFields))
[docs]def PyVistaToMesh(pvmesh, FieldsAsTags=False): from Muscat.Bridges.vtkBridge import VtkToMesh return VtkToMesh(pvmesh, FieldsAsTags=FieldsAsTags)
[docs]def PlotMesh(mesh, TagsAsFields: bool = False, **kargs): # pragma: no cover """Plot a mesh using PyVista Parameters ---------- mesh : Mesh, vtk mehs or a pyvista mesh the mesh to be plotted TagsAsFields : bool, optional if True the tags of the mesh (in the case of a Muscat Mesh) are converted to fields, by default False """ from Muscat.Containers.Mesh import Mesh if isinstance(mesh, Mesh): pyVistaMesh = MeshToPyVista(mesh, TagsAsFields=TagsAsFields) else: pyVistaMesh = mesh pyVistaMesh.plot(**kargs)
[docs]def CheckIntegrity(GUI: bool = False): from Muscat.Helpers.CheckTools import SkipTest if SkipTest("PYVISTA_NO_FAIL"): # pragma: no cover return "skip" try: import pyvista except: # pragma: no cover return "skip : pyvista not installed" import Muscat.Containers.ElementsDescription as ED from Muscat.Containers.MeshCreationTools import CreateMeshOf from Muscat.Containers.MeshTools import IsClose points = [[0, 0, 0], [1, 0, 0], [0, 1, 0], [0, 0, 1]] tet = [[0, 1, 2, 3]] res = CreateMeshOf(points, tet, elemName=ED.Tetrahedron_4) res.nodeFields = {"x": res.nodes[:, 0].flatten(), "Pos": res.nodes} res.nodesTags.CreateTag("FirstPoint").AddToTag(0) res.elemFields = {"SecondPoint": res.GetElementsOfType(ED.Tetrahedron_4).connectivity[:, 1].flatten().astype(float), "conn": res.GetElementsOfType(ED.Tetrahedron_4).connectivity} res.GetElementsOfType(ED.Tetrahedron_4).tags.CreateTag("FirstTetrahedron").AddToTag(0) sol = MeshToPyVista(res, TagsAsFields=True) resII = PyVistaToMesh(sol, FieldsAsTags=True) print(res) print(resII) if not IsClose(res, resII): # pragma: no cover raise (Exception("The meshes are not equal")) if GUI: # pragma: no cover PlotMesh(res) PlotMesh(resII, eye_dome_lighting=True, cpos=[-1, -1, 0.2], color=True) return "ok"
if __name__ == "__main__": print(CheckIntegrity(True)) # pragma: no cover