Source code for Muscat.MeshTools.Remesh

# -*- 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.Helpers.Factory import Factory


[docs] def RegisterRemesherClass(name, classtype, withError=True): def GetConstructor(classtype): return lambda ops: classtype(**ops) return RemesherFactory.RegisterClass(name, classtype, constructor=GetConstructor(classtype), withError=withError)
[docs] def CreateRemesher(name, ops=None): return RemesherFactory.Create(name, ops)
[docs] class RemesherFactory(Factory): _Catalog = {} _SetCatalog = set() def __init__(self): super().__init__()
[docs] def GetAvailableRemesher(): return list(RemesherFactory._Catalog.keys())
[docs] def InitAllRemesher(): from Muscat.MeshTools.RemeshBackEnds import MMGWrapper from Muscat.MeshTools.RemeshBackEnds import MmgRemeshing from Muscat.MeshTools.RemeshBackEnds import ParMmgRemeshing from Muscat.MeshTools.RemeshBackEnds import FefloRemeshing
defaultBackEnd = "MmgInMemory" from Muscat.MeshTools.RemeshBackEnds import MMGWrapper
[docs] def Remesh(mesh, levelset=None, solution=None, metric=None, remesher_options=None, backEnd=None, backEndOptions=None): InitAllRemesher() if backEnd is None: backEnd = defaultBackEnd return CreateRemesher(backEnd, {"mesh": mesh, "levelset": levelset, "solution": solution, "metric": metric}).Runner(remesher_options=remesher_options, backEndOptions=backEndOptions)
[docs] def CheckIntegrity(GUI=False): from Muscat.MeshTools.MeshCreationTools import CreateDisk, CreateCube import numpy as np mesh = CreateDisk(ofTriangles=True) from Muscat.MeshTools import Remesh as R R.InitAllRemesher() print(R.GetAvailableRemesher()) for backend in R.GetAvailableRemesher(): if "parmmg" not in backend.lower(): print(f"Remeshing with {backend} in 2D") R.Remesh(mesh, backEnd=backend) else: print(f"Remeshing with {backend} in 3D") mesh3D = CreateCube(dimensions=np.array([8, 8, 2]), ofTetras=True) R.Remesh(mesh3D, backEnd=backend) return "ok"
if __name__ == '__main__': print(CheckIntegrity())