Muscat Cheat Sheet¶
Mesh Import, Export and Creation¶
Description |
Command |
URL |
|---|---|---|
Installation |
mamba install muscat
mamba install muscat-core
mamba install muscat-extentions
|
|
Help |
||
From a script import some commonly used symbols |
from Muscat.Simple import *
|
|
Create a mesh |
Importsfrom Muscat.MeshTools.MeshCreationTools import (
CreateUniformMeshOfBars,
CreateMeshOfTriangles,
CreateSquare,
CreateCube,
CreateMeshOf,
CreateMeshFromCellsDict,
)
CreateUniformMeshOfBars(startPoint,stopPoint,nbPoints)
CreateMeshOfTriangles(points, triangles)
CreateSquare(dimension, origin, spacing, ofTriangles)
CreateCube(dimension, origin, spacing, ofTetras)
CreateMeshOf(points, connectivity, elementType)
CreateMeshFromCellsDict(...)
|
|
Linear <-> Quadratic mesh |
from Muscat.MeshTools.MeshCreationTools import *
ToQuadraticMesh(mesh)
QuadToLin(mesh)
|
|
Read a Mesh File |
from Muscat.IO.UniversalReader import InitAllReaders
from Muscat.IO.UniversalReader import ReadMesh
InitAllReaders()
ReadMesh("filename.ext")
(a reader is selected using the extension) |
|
Read a Mesh File Using MeshIO |
from Muscat.Bridges.MeshIOBridge import InitAllReaders
InitAllReaders()
from Muscat.IO.UniversalReader import ReadMesh
ReadMesh("filename.ext")
(a reader is selected using the extension) |
|
Convert to/from MeshIO format |
from Muscat.Bridges.MeshIOBridge import MeshToMeshIO
MeshToMeshIO(meshiodata)
from Muscat.Bridges.MeshIOBridge import MeshIOTOMesh
MeshIOTOMesh(muscatMesh)
|
|
Convert to/from vtk format |
from Muscat.Bridges.vtkBridge import VtkToMesh
VtkToMesh(vtkMesh)
from Muscat.Bridges.vtkBridge import MeshToVtk
MeshToVtk(muscatMesh)
|
|
Export mesh using Xdmf |
from Muscat.IO.XdmfWriter import WriteMeshToXdmf
WriteMeshToXdmf(filename="toto.xdmf", mesh,...)
For Temporal data from Muscat.IO.XdmfWriter import XdmfWriter
writer = XdmfWriter(filename="outputmesh.xdmf")
writer.SetTemporal(True)
writer.Open()
for i in range(timesteps):
writer.Write(mesh,...)
writer.Close()
|
Mesh Manipulation¶
Description |
Command |
URL |
|---|---|---|
Iteration over points |
for i in range(mesh.GetNumberOfNodes()):
point_i = mesh.nodes[i,:]
|
|
Iteration using a NodeFilter |
from Muscat.MeshContainers.Filters.FilterObjects import NodeFilter
nf = NodeFilter(eTag="leading edge")
for i in nf.GetNodesIndices(mesh)
leading_edge_point_i = mesh.nodes(i,:)
|
|
Iteration over elements |
for el_container in mesh.elements.values():
for i in range(el_container.GetNumberOfElements())
connectivity_e_i = elt_container.connectivity[i,:]
|
|
Iteration over using an ElementFilter |
from Muscat.MeshContainers.Filters.FilterObjects import ElementFilter
ef = ElementFilter(dimensionality=1,tag="trailing edge")
for selection in ef(mesh):
conn=selection.elements.connectivity[selection.indices,:]
|
|
Remeshing |
from Musca.MeshTools.Remesh import Remesh
Remesh(mesh, metric,remesher_options={"hmax":0.1})
|
Field Manipulation¶
Description |
Command |
URL |
|---|---|---|
Creating a point/element field |
mesh.nodeFields["temp"]= np.zeros(mesh.GetNumberOfNodes())
mesh.elemFields["rho"] = np.zeros(mesh. GetNumberOfElements())
|
|
Integration into a scalar |
from Muscat.FE.IntegrationTools import IntegrateField
nodeData = mesh.nodeFields["temp"]
nodeField = FEField("temp",mesh,data=nodeData)
int_temp = IntegrateField(nodeField)
from Muscat.FE.FieldTools import ElemFieldsToFEField
elemData = mesh.elemFields["rho"]
rhoField = ElemFieldsToFEField(mesh, {"rho":elemData} )
mass = IntegrateField(rhoField, ElementFilter(eTag="bulk"))
|
|
Integration into a Vector (right hand side) |
Importsfrom Muscat.FE.SymWeakForm import GetField, GetTestField
from Muscat.FE.Fields.FEField import FEField
from Muscat.FE.Integration import IntegrateGeneral
from Muscat.MeshContainers.Filters.FilterObjects import ElementFilter
weakForm = GetField("p",1,3)*GetTestField("t",1,3)
mesh = ... #(create a mesh or read one from file)
p = FEField("p", mesh=mesh)
p.Allocate(1)
testFields = [FEField("t", mesh=mesh)]
_, F = IntegrateGeneral(mesh=mesh,
wform=weakForm,
constants={},
fields=[p],
testFields=testFields,
integrationRuleName="LagrangeP1Quadrature",
elementFilter=ElementFilter(eTag="top_surface") )
|
|
Integration into a Matrix (operator) |
Importsfrom Muscat.FE.SymWeakForm import GetField, GetTestField
from Muscat.FE.Fields.FEField import FEField
from Muscat.FE.Integration import IntegrateGeneral
from Muscat.MeshContainers.Filters.FilterObjects import ElementFilter
weakForm = GetField("t",1,3)*GetTestField("t",1,3)
mesh = ... #(create a mesh or read one from file)
unknownFields = [FEField("t", mesh=mesh)]
M, _ = IntegrateGeneral(mesh=mesh,
wform=weakForm,
constants={},
fields=[],
unknownFields=unknownFields,
integrationRuleName="LagrangeP1Quadrature",
elementFilter=ElementFilter(dimensionality=3) )
|