Muscat was primarily designed as a basic set of tools to work on meshes in the context of finite element computations.

The main functionalities of the library include:

  • IO support: A set of classes that enable reading and writing meshes (as well as solution fields) from/to a wide variety of file formats. Muscat does not have its own file format because existing formats already provide most, if not all, of the required functionalities.
  • Mesh manipulation: Algorithms to filter, define, extract, and manipulate meshes in various ways.
  • Fields manipulation: Finite element fields can be defined using different types of interpolation (P0/P1/P2), either across the entire mesh or only in specific zones, as well as at integration points. These classes have overloaded operators to facilitate the computation of relevant quantities.
  • Integration: Algorithms for the integration of weak formulations (tangent matrices, right-hand terms, and integrals over specific sections of a mesh).
  • Field transfer: Various Algorithms to transfer fields from one mesh to another.
  • Finite element solver: Leveraging the aforementioned tools, Muscat provides a basic finite element solver for solving generic partial differential equations on unstructured meshes.

Link to Muscat sources on

Link to Muscat documentation on

conda install -c conda-forge muscat


Leave a Reply

Your email address will not be published. Required fields are marked *