Welcome to the documentation of AutoPDEx!
AutoPDEx is a free open source partial differential equation (PDE) solver based on the automatic code transformation capabilities of JAX.
The idea of the project is to develop a modular and easily extendable environment for the solution of boundary and initial boundary value problems, which allows for good integration with machine learning algorithms and can be executed on accelerators such as GPUs.
The highest level of abstraction is available in the ‘solver’ and ‘dae’ modules, which includes different solution algorithms such as the Newton-Raphson method, adaptive load- and time step control and nonlinear minimizers, and leverages different backends. To solve problems, two dictionaries (static_settings and settings) are particularly needed, in which the problem settings are specified. Part of the static settings includes the definition of the model in the form of a JAX-transformable function, which returns a strong or weak form of a PDE or user-specific potentials, residuals and tangents. Some pre-made models are included in the models module. The solver module, in turn, calls functions from lower-level modules, as e.g. the assembler. These can also be accessed directly, for example, to assemble the global residual or a tangent matrix.

Installation
To install AutoPDEx, you can use the following command. Note, that it requires python>=3.10.
pip install --upgrade pip
pip install autopdex
To use the Intel MKL Pardiso and PETSc solvers, they have to be installed by the user.
High level operations
Examples
- Example notebooks
- Examplary input files
- Example 1: Cook’s membrane (Quadrilaterals in Hyperelasticity)
- Example 2: Transient heat conduction (forward- and backward-Euler)
- Example 3: Wave equation (least square method of first order system)
- Example 4: Steady-state Navier-Stokes equations (adaptive load stepping and nonlinear minimization)
- Example 5: Implicit differentiation (uncertainty estimation)
- Example 6: Further examples

Settings
Lower level operations
Contributions
You are warmly invited to contribute to the project. For larger developments, please get in touch beforehand in order to circumvent double work.
For detailed information on how to contribute, please see the Contribution Guidelines.
License
AutoPDEx is licensed under the GNU Affero General Public License, Version 3.