Source code for Muscat.Bridges.CoSAppBridge
# -*- coding: utf-8 -*-
#
# This file is subject to the terms and conditions defined in
# file 'LICENSE.txt', which is part of this source code package.
#
from Muscat.Simple import Mesh
# import cosapp base classes
try:
from cosapp.base import System, Port, BaseConnector
except ModuleNotFoundError:
# define dummy to be able to parser the clases and build the documentation
Port = object
System = object
BaseConnector = object
from Muscat.Helpers.Logger import Warning
Warning("CoSApp is not installed, Please install CoSApp before using this module")
[docs]
class MuscatMeshPort(Port):
"""CoSApp port for Muscat Meshes.
This port implement a spacial connector to pass only a view of the mesh
"""
[docs]
def setup(self):
self.add_variable("mesh", Mesh())
[docs]
def SetMeshByFileName(self, file_name: str, time_to_read: int = -1):
from Muscat.IO.UniversalReader import InitAllReaders, ReadMesh
InitAllReaders()
self.mesh = ReadMesh(file_name, timeToRead=time_to_read)
return self
[docs]
def Plot(self, using="PyVista"):
from Muscat.Simple import PlotMesh
PlotMesh(self.mesh, using=using)
[docs]
def OpenInParaView(self):
from Muscat.Simple import OpenInParaView
OpenInParaView(self.mesh)
[docs]
class Connector(BaseConnector):
"""Custom connector for `MuscatMeshPort` objects, no copy of the object"""
[docs]
def transfer(self) -> None:
self.sink.mesh = self.source.mesh.View()
#########################################################################################################
[docs]
class CoSAppMuscatReader(System):
"""CosApp Muscat Mesh Reader
"""
[docs]
def setup(self):
self.add_inward("file_name", None, dtype=str, desc="file name")
self.add_inward("time_to_read", -1, dtype=int, desc="time to read")
self.add_output(MuscatMeshPort, "out")
[docs]
def compute(self):
out: MuscatMeshPort = self.out
out.SetMeshByFileName(self.file_name, time_to_read=self.time_to_read)
##########################################################################################################
[docs]
def CheckIntegrity(GUI: bool = False):
try:
from cosapp.base import System, Port, BaseConnector
except:
return "skip"
from Muscat.TestData import GetTestDataPath
reader = CoSAppMuscatReader("MeshReader")
reader.file_name = GetTestDataPath() + "dent3D.msh"
reader.run_once()
return "ok"
if __name__ == "__main__":
print(CheckIntegrity(True)) # pragma: no cover