Source code for Muscat.IO.UniversalWriter
# -*- 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.
#
"""Universal file writer
"""
[docs]
def InitAllWriters():
from Muscat.IO.IOFactory import InitAllWriters as IAW
IAW()
[docs]
def WriteMesh(filename, outmesh, binary=None, writer=None): # pragma: no cover
import pathlib
filename = pathlib.Path(filename)
from Muscat.IO.IOFactory import CreateWriter
if writer is None:
writer = CreateWriter(filename.suffix)
writer.SetFileName(filename)
if not (binary is None):
writer.SetBinary(binary)
writer.Open()
PointFields = None
PointFieldsNames = None
if hasattr(outmesh, "nodeFields"):
PointFieldsNames = list(outmesh.nodeFields.keys())
PointFields = list(outmesh.nodeFields.values())
CellFields = None
CellFieldsNames = None
if hasattr(outmesh, "elemFields"):
CellFieldsNames = list(outmesh.elemFields.keys())
CellFields = list(outmesh.elemFields.values())
writer.Write(outmesh, PointFieldsNames=PointFieldsNames, PointFields=PointFields, CellFieldsNames=CellFieldsNames, CellFields=CellFields)
writer.Close()
[docs]
def CheckIntegrity(GUI: bool = False) -> str:
from Muscat.Helpers.CheckTools import MustFailFunction
from Muscat.IO.IOFactory import CreateWriter, RegisterWriterClass
InitAllWriters()
print(CreateWriter(".geof"))
print(CreateWriter(".msh"))
print(CreateWriter(".mesh"))
print(CreateWriter(".xdmf"))
## Check working with text
from Muscat.MeshTools.MeshCreationTools import CreateDisk
from Muscat.Helpers.IO.TemporaryDirectory import TemporaryDirectory
import os
tempdir = TemporaryDirectory.GetTempPath()
WriteMesh(tempdir + os.sep + "disk.geof", outmesh=CreateDisk())
## Check working with pathlib
import pathlib
WriteMesh(pathlib.Path(tempdir) / "disk.geof", outmesh=CreateDisk())
MustFailFunction(CreateWriter, "toto")
# normally this class must have the same API as
#
from Muscat.IO.WriterBase import WriterBase as WriterBase
class MyCustomWriter(WriterBase):
pass
RegisterWriterClass(".myDummyExtension", MyCustomWriter, withError=False)
print(CreateWriter(".myDummyExtension"))
return "ok"
if __name__ == "__main__":
print((CheckIntegrity())) # pragma: no cover