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