Metadata-Version: 2.4
Name: openpaso
Version: 1.3.0
Summary: openPASO — open Platform for Agentic Simulation and Optimization. An MCP server that lets an AI model operate nine finite-element and multiphysics codes: simulation, cross-code coupling, verification and solver development.
Author: openPASO Contributors
License: MIT
Project-URL: Homepage, https://github.com/open-PASO/openPASO
Project-URL: Repository, https://github.com/open-PASO/openPASO
Project-URL: Documentation, https://open-paso.github.io/openPASO/
Project-URL: Issues, https://github.com/open-PASO/openPASO/issues
Keywords: fem,mcp,simulation,multiphysics,coupling,ai-agent,verification,finite-element
Classifier: Development Status :: 4 - Beta
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: mcp[cli]<2,>=1.2.0
Requires-Dist: sympy>=1.12
Requires-Dist: pyyaml>=6.0
Requires-Dist: numpy<2,>=1.24
Requires-Dist: pyvista>=0.43
Requires-Dist: meshio>=5.3
Requires-Dist: h5py>=3.10
Requires-Dist: matplotlib>=3.8
Requires-Dist: scipy<1.16,>=1.10
Requires-Dist: adios2>=2.10
Requires-Dist: gmsh>=4.12
Requires-Dist: scikit-fem>=10.0
Provides-Extra: fenics
Requires-Dist: fenics-dolfinx>=0.8; extra == "fenics"
Provides-Extra: ngsolve
Requires-Dist: ngsolve>=6.2; extra == "ngsolve"
Provides-Extra: skfem
Requires-Dist: scikit-fem>=10.0; extra == "skfem"
Provides-Extra: kratos
Requires-Dist: KratosMultiphysics>=10.0; extra == "kratos"
Provides-Extra: dune
Requires-Dist: dune-fem>=2.10; extra == "dune"
Requires-Dist: mpi4py>=3.0; extra == "dune"
Provides-Extra: webui
Requires-Dist: fastapi>=0.110; extra == "webui"
Requires-Dist: uvicorn[standard]>=0.27; extra == "webui"
Requires-Dist: python-multipart>=0.0.9; extra == "webui"
Requires-Dist: websockets>=12.0; extra == "webui"
Requires-Dist: httpx>=0.27; extra == "webui"
Provides-Extra: precice
Requires-Dist: pyprecice>=3.0; extra == "precice"
Provides-Extra: all-solvers
Requires-Dist: ngsolve>=6.2; extra == "all-solvers"
Requires-Dist: scikit-fem>=10.0; extra == "all-solvers"
Requires-Dist: KratosMultiphysics>=10.0; extra == "all-solvers"
Provides-Extra: test
Requires-Dist: pytest>=7.0; extra == "test"
Requires-Dist: pytest-asyncio>=0.20; extra == "test"
Requires-Dist: openpaso[webui]; extra == "test"
Dynamic: license-file

<p align="center">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="logo/openPASO_koralle_dunkel.gif">
    <source media="(prefers-color-scheme: light)" srcset="logo/openPASO_graphit_transparent.gif">
    <img src="logo/openPASO_koralle_dunkel.gif" alt="openPASO" width="200">
  </picture>
</p>

<h1 align="center">openPASO</h1>

<p align="center"><b>open Platform for Agentic Simulation and Optimization</b></p>

<p align="center">
  <a href="https://pypi.org/project/openpaso/"><img src="https://img.shields.io/pypi/v/openpaso?style=flat-square&color=FF6B4A&label=PyPI" alt="openpaso on PyPI"></a>
  <a href="https://open-paso.github.io/openPASO/"><img src="https://img.shields.io/badge/docs-website-FF6B4A?style=flat-square" alt="Documentation"></a>
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-64748B?style=flat-square" alt="MIT licence"></a>
  <a href="https://www.python.org/"><img src="https://img.shields.io/badge/python-3.10--3.13-64748B?style=flat-square" alt="Python 3.10 to 3.13"></a>
  <a href="https://doi.org/10.5281/zenodo.20543501"><img src="https://img.shields.io/badge/DOI-10.5281%2Fzenodo.20543501-64748B?style=flat-square" alt="DOI"></a>
  <a href="https://open-paso.github.io/openPASO/solvers/"><img src="https://img.shields.io/badge/solvers-9-FF6B4A?style=flat-square" alt="9 solvers"></a>
</p>

<p align="center">
  <i>Describe a physics problem in plain words.<br>
  An AI model picks a solver, writes its input, runs it, and checks the answer.</i>
</p>

<p align="center">
  <a href="https://open-paso.github.io/openPASO/">
    <img src="docs/assets/openPASO_film.gif" alt="openPASO in 29 seconds: describe the physics, openPASO picks the solver, runs it, and checks the result against the literature" width="800">
  </a>
  <br><sub>Click the film to watch it in full quality on the documentation website.</sub>
</p>

> [!WARNING]
> **openPASO is under active development, and we invite you to help.** It works and is used for
> real simulations, but it is young: things change quickly and you will find rough edges. Try it,
> tell us what broke, and share what you know about a solver.
> See [Contribute](https://open-paso.github.io/openPASO/contribute/).

## What it does

Simulation programs, called **solvers**, compute how things physically behave: how a part bends,
how heat spreads, how air flows. They are powerful and hard to use, and each one has its own input
format and its own traps. openPASO puts **nine of them behind one door** and lets an AI model open
it: you describe what you want in a normal sentence, and the model picks a solver, writes the input,
runs it, and checks that the answer is computed correctly.

## Quick start

You need Python 3.10–3.13 and about ten minutes. One solver is enough to begin.

```bash
pip install openpaso             # the server, with scikit-fem as a first solver
openpaso doctor                  # which solvers openPASO can use on this machine; no key, no network
openpaso                         # starts the MCP server on stdio; Ctrl-C to stop
```

Missing a solver? `openpaso install ngsolve` (or `kratos`, `dune`, ...) checks first and installs only
what is missing, the same way the server's `setup_backend` tool would.

`openpaso` is the command your AI app's MCP configuration points at. Working from a checkout
instead (to change the code, or to run `check_install.py`, which lists the solvers openPASO can
use on your machine without a key or network):

```bash
git clone https://github.com/open-PASO/openPASO.git
cd openPASO
python3 -m venv .venv && source .venv/bin/activate
pip install -e . scikit-fem
python check_install.py
```

Then connect an AI model, one of two ways:

- **Option A — an AI app you already have** (Claude Code, Claude Desktop, Cursor): no extra cost.
  [Set it up →](https://open-paso.github.io/openPASO/use/ai-app/)
- **Option B — your own OpenRouter key**: one command per simulation, any model.
  [Set it up →](https://open-paso.github.io/openPASO/use/api-key/)

## Solvers

| | | |
|---|---|---|
| [scikit-fem](https://open-paso.github.io/openPASO/solvers/skfem/) | [NGSolve](https://open-paso.github.io/openPASO/solvers/ngsolve/) | [Kratos Multiphysics](https://open-paso.github.io/openPASO/solvers/kratos/) |
| [DUNE-fem](https://open-paso.github.io/openPASO/solvers/dune/) | [FEniCSx](https://open-paso.github.io/openPASO/solvers/fenics/) | [deal.II](https://open-paso.github.io/openPASO/solvers/dealii/) |
| [FEBio](https://open-paso.github.io/openPASO/solvers/febio/) | [4C Multiphysics](https://open-paso.github.io/openPASO/solvers/fourc/) | [SPARTA](https://open-paso.github.io/openPASO/solvers/sparta/) |

## Documentation

Everything else is on the **[documentation website](https://open-paso.github.io/openPASO/)**:
installing each solver, both ways of use step by step, all 24 tools the model gets, how openPASO
checks an answer, coupling two solvers on one problem, troubleshooting, and a glossary for every word.

## Contribute

Reports of what did not work, solver traps you know, and plain-language fixes to the documentation
are all very welcome. One rule stands above the rest: **every improvement must help all simulations,
not one example.** See [CONTRIBUTING.md](CONTRIBUTING.md) and the
[Contribute page](https://open-paso.github.io/openPASO/contribute/).

## Licence and citation

MIT licence. openPASO was first published as **OASiS**; the archived releases and the paper use that
name. If you use openPASO in research, please cite:

```bibtex
@software{openpaso2026,
  title  = {openPASO: an open-source multi-physics and multi-code framework
            for verified computer simulations},
  author = {Hermann, Alexander and Shojaei, Arman and Scheider, Ingo and Cyron, Christian},
  year   = {2026},
  doi    = {10.5281/zenodo.20543501},
  url    = {https://github.com/open-PASO/openPASO}
}
```

<p align="center">
  <sub>Helmholtz-Zentrum Hereon · Institute of Materials Mechanics &nbsp;·&nbsp;
  Hamburg University of Technology</sub>
</p>
