Source code for Mordicus.Modules.Safran.IO.ZsetMeshReader
# -*- coding: utf-8 -*-
from Mordicus.Core.IO.MeshReaderBase import MeshReaderBase
from mpi4py import MPI
from pathlib import Path
import os
[docs]def ReadMesh(meshFileName):
    """
    Functional API
    Reads the mesh defined the Z-set mesh file "meshFileName" (.geof or .geo)
    Parameters
    ----------
    meshFileName : str
        Z-set mesh file
    Returns
    -------
    BasicToolsUnstructuredMesh
        mesh of the high-fidelity computation
    """
    reader = ZsetMeshReader(meshFileName=meshFileName)
    return reader.ReadMesh() 
[docs]class ZsetMeshReader(MeshReaderBase):
    """
    Class containing a reader for Z-set mesh file
    Attributes
    ----------
    meshFileName : str
        name of the Z-set mesh file (.geof or .geo)
    reader : GeoReader or GeofReader
        BasicTools reader of .geof or .geo files
    """
    def __init__(self, meshFileName):
        assert isinstance(meshFileName, str)
        super(ZsetMeshReader, self).__init__()
        folder = str(Path(meshFileName).parents[0])
        suffix = str(Path(meshFileName).suffix)
        stem = str(Path(meshFileName).stem)
        if MPI.COMM_WORLD.Get_size() > 1: # pragma: no cover
            meshFileName = folder + os.sep + stem + "-pmeshes" + os.sep + stem + "-" + str(MPI.COMM_WORLD.Get_rank()+1).zfill(3) + suffix
        else:
            meshFileName = meshFileName
        if suffix == ".geof":
            from BasicTools.IO import GeofReader as GR
            self.reader = GR.GeofReader()
        elif suffix == ".geo":  # pragma: no cover
            from BasicTools.IO import GeoReader as GR
            self.reader = GR.GeoReader()
        else:  # pragma: no cover
            raise NotImplementedError("meshFileName error!")
        self.reader.SetFileName(meshFileName)
[docs]    def ReadMesh(self):
        """
        Read the high fidelity mesh
        Returns
        -------
        BasicToolsUnstructuredMesh
            mesh of the HF computation
        """
        data = self.reader.Read()
        from Mordicus.Modules.Safran.Containers.Meshes import BasicToolsUnstructuredMesh as BTUM
        mesh = BTUM.BasicToolsUnstructuredMesh(data)
        return mesh  
if __name__ == "__main__":# pragma: no cover
    from Mordicus import RunTestFile
    RunTestFile(__file__)