PINNeAPPle Labs

Open-source scientific machine learning

Physics AI that tells you when to trust it.

We build PINNeAPPle, a Python library to simulate, learn, forecast and design physical systems, where every result comes with its evidence: the reference it was checked against, the baseline it had to beat, the physical laws it respects, its uncertainty and its limits.

Solids suspension in a stirred tank: 12 000 DEM particles with live charts of suspended fraction and impeller speed
Solids suspension in a stirred tank, 12 000 DEM particles. Just-suspended speed 288 rpm, inside Zwietering's 237–474 rpm.

What PINNeAPPle does

One library from the solver to the decision

01 · Simulate

Solvers you can check

OpenFOAM around bodies and through pipes and mixers, CalculiX from Python, lattice Boltzmann, DEM particles and a 3-D finite-element solver, each verified on a case with a known answer.

02 · Learn

Models against baselines

PINNs, FNO, DeepONet, MeshGraphNet, equivariant GNNs and reduced-order models (POD, DMD, Operator Inference, POD-GPR), always trained next to the simple model they must beat.

03 · Trust

Evidence, not claims

Checks against references, physical laws and unseen cases, calibrated uncertainty, grid convergence indices and a curation tier for every experiment.

04 · Show

Results people read

Blender renders, post-processor style FEA figures, process videos with live charts, a 3-D browser viewer and glTF / USD exports, made from the same data the checks ran on.

The trust card

Six questions every result has to answer

A surrogate that is fast but wrong is worse than no surrogate. So each experiment in PINNeAPPle answers the same six questions, and each answer is a check that ran, not a sentence someone wrote.

A stage is answered when its checks pass, partial when evidence is missing, and failed when a check says no. The catalogue shows the card next to the figures, so the limits travel with the result.

Plate with a hole · CalculiXtier A · 6 / 6 answered
Data and geometrygmsh C3D10 mesh, three refinements, boundary sets checked
ModelLinear elastic steel, E 210 GPa, ν 0.3
Physical constraintsReaction force balances the applied load
BenchmarkKt 2.59 against Heywood's 2.51
UncertaintyGrid convergence index 1.7 % (Celik 2008)
Engineering decisionPeak stress and its band against the allowable

From the experiment catalogue

Every picture here passed its checks

The catalogue has every experiment with its figures, movies, checks, tier and trust card.

Quick start

A validated result in a few lines

Mesh an L bracket with gmsh, solve it in CalculiX from Python, then run a full experiment with its checks.

  • Python 3.10+, PyTorch
  • OpenFOAM, CalculiX, gmsh and Blender are optional
  • Apache-2.0 licensed
pip install pinneapple

import pinneapple as pp

m = pp.fea.FEModel.from_gmsh(pp.fea.geo_l_bracket(), size=0.0025)   # gmsh C3D10
m.material = pp.fea.Material("steel", E=210e9, nu=0.3)
base = m.nodes_where(lambda X: X[:, 2] < 1e-9)
top = m.nodes_where(lambda X: X[:, 2] > 0.08 - 1e-9)
res = pp.fea.solve(m, pp.fea.Static(fix=[(base, (1, 2, 3))],
                                    loads=[(top, (2000.0, 0, 0))]), "work/bracket")
print(res.von_mises.max() / 1e6, "MPa")

# run an experiment with its checks and trust card
python -m pinneapple_lab run calculix_case -p case=plate_hole