Metadata-Version: 2.2
Name: muscat
Version: 2.5.2
Summary: Tools for finite element computations
Project-URL: Homepage, https://gitlab.com/drti/muscat
Project-URL: Documentation, https://muscat.readthedocs.io/
Project-URL: Source, https://gitlab.com/drti/muscat
Project-URL: Tracker, https://gitlab.com/drti/muscat/-/issues
Requires-Python: >=3.10
Requires-Dist: numpy
Requires-Dist: scipy
Requires-Dist: sympy
Requires-Dist: networkx
Requires-Dist: eigency>=3.4.0.4
Requires-Dist: pywin32; platform_system == "Windows"
Requires-Dist: dill
Requires-Dist: cvxpy
Provides-Extra: gui
Requires-Dist: matplotlib; extra == "gui"
Requires-Dist: vtk; extra == "gui"
Requires-Dist: Plotly; extra == "gui"
Requires-Dist: pyvista; extra == "gui"
Provides-Extra: storage
Requires-Dist: h5py; extra == "storage"
Requires-Dist: meshio; extra == "storage"
Requires-Dist: pycgns; platform_system == "Linux" and extra == "storage"
Provides-Extra: all
Requires-Dist: muscat[gui]; extra == "all"
Requires-Dist: muscat[storage]; extra == "all"
Requires-Dist: cosapp; extra == "all"
Description-Content-Type: text/markdown


What is Muscat
==================

Muscat was primary designed as a basic set of tools to work on meshes in the context of finite element computation.
The main functionalities of the library are:

* IO support: A set of classes to read and write meshes (and solutions fields) from/to a large variety of file formats. Muscat does not have a proper file format mainly because existent formats provide most, if not all, of the functionalities needed.
* Mesh manipulation: Routines to filter, define, extract and manipulate meshes in many ways.
* Fields manipulation: Finite element fields can be defined using different kinds of interpolation (P0/P1/P2), in the full mesh or only in restricted zones, and also at integration points. This classes have overloaded operators to make computation of quantities of interest an easy task.
* Integration: Routines for the integration of weak formulations (tangent matrices, right hand terms, integral over only a part of a mesh).
* Field transfer: Routine to transfer field from one mesh to another.
* Finite element solver: Using all the previous tools, some basic finite element solvers are available to solve generic partial differential equations on unstructured meshes.


Important URLs
==============

- Documentation: https://muscat.readthedocs.io/en/latest/
- Conda-forge Package: https://anaconda.org/conda-forge/muscat
- Sources: https://gitlab.com/drti/muscat
- Conda-forge feedstock: https://github.com/conda-forge/muscat-feedstock


Installing Muscat
=====================

Conda
-----

If you use conda, you can install Muscat from the conda-forge channel:

Best practice, use an environment rather than install in the base env

    conda create -n my-env
    conda activate my-env

The actual install command

    conda install -c conda-forge muscat

PIP
---

Pip installation is not available any more. The main reason is the increasing complexity of the building chain (kokkos and Cuda support).


For more complex installation (from sources) for developers please read the documentation.


Asking for help
===============

All questions can be addressed using the Issues system of Gitlab https://gitlab.com/drti/muscat/-/issues.


Dependencies
============

    python minimal version: 3.9

    PYTHON OPEN-SOURCE DEPENDENCIES

    * numpy >= 1.20
    * scipy >= 1.12
    * sympy
    * cython
    * eigency >=2
    * mkl
    * mkl-include
    * psutil
    * dill
    * pywin32 only windows

    Optionals Python packages (some functionalities may not be available without this packages):

    * scikit-sparse
    * pypardiso
    * vtk
    * matplotlib
    * pyamg
    * h5py
    * meshio
    * sphinx
    * sphinx-rtd-theme
    * setuptools-scm
    * pyvista
    * networkx >=3
    * mpi4py
    * cvxpy

    C++ OPEN-SOURCE DEPENDENCIES:

    * Eigen (http://eigen.tuxfamily.org)
      (the pypi eigency package has the Eigen library already inside the package)
      ( a conda-forge package is available for eigen)

    THIRD-PARTY PROPRIETARY DEPENDENCIES (optional):

    * odbAccess and abaqusConstants ( Abaqus )

Projects using Muscat
=========================

[OpenPisco Home Page](https://gitlab.com/openpisco/openpisco), topology optimization using the level set method ([OpenPisco Documentation](https://openpisco.readthedocs.io)).
[GenericROM](https://gitlab.com/drti/genericrom), Reduced Order Modeling library  ([GenericROM Documentation](https://genericrom.readthedocs.io/en/latest/)).
