phinen Docs
Everything you need to run structural, thermal, and fluid simulations on your geometry — from uploading your first STL to integrating phinen into your design pipeline via API.
Quick Start
New to phinen? Pick the path that matches where you are:
Supported File Formats
phinen accepts the most common 3D CAD and mesh formats. Upload your geometry directly through the web interface or via the API /upload endpoint.
Your First Simulation
This guide walks you through running a structural analysis on a mechanical bracket — from upload to engineering report — in under 2 minutes.
Physics Domains
phinen currently supports three simulation domains. Select your domain in the config panel or simply describe your problem in chat and the system will identify the correct domain automatically.
Structural FEA
Static linear elastic analysis for mechanical components and assemblies. Computes von Mises stress, principal stresses, displacement, and safety factor across the geometry under applied loads and constraints.
Typical inputs: Fixed faces/edges, point/distributed loads, pressure, gravity. Outputs: Stress field, displacement field, safety factor, failure zone annotations.
Thermal & CFD
Steady-state temperature distribution and airflow simulation. Predicts heat transfer, temperature gradients, velocity fields, and pressure distributions. Particularly effective for electronics thermal management, HVAC, and heat exchanger design.
Typical inputs: Heat sources (W), inlet velocity/temperature, ambient conditions, convection coefficients. Outputs: Temperature field, velocity vectors, pressure distribution, hotspot locations.
Multiphysics (Coupled)
Coupled analysis across two or more physics domains — for example, thermal expansion driving structural stress, or fluid pressure loading a structural surface. Available as a sequential (one-way) or iterative (two-way) coupling mode.
Boundary Conditions
Boundary conditions can be specified three ways: (1) through natural language in the chat interface, (2) directly in the config sidebar, or (3) programmatically via the API payload.
Structural BCs
| Condition | Description | Units |
|---|---|---|
fixed_face | Zero displacement and rotation on the selected face. Applied to faces by index or bounding-box region. | — |
point_load | Concentrated force at a point or averaged across a face region. | N |
distributed_load | Pressure load applied uniformly over a face. | Pa |
gravity | Body force due to gravity. Direction vector configurable. | m/s² |
symmetry | Symmetry plane constraint. Halves solve time for symmetric geometries. | — |
Thermal BCs
| Condition | Description | Units |
|---|---|---|
heat_source | Volumetric or surface heat generation rate. | W or W/m² |
fixed_temperature | Dirichlet BC — fixed temperature on a face (e.g. cooled wall). | K or °C |
convection | Newton's law of cooling — heat transfer coefficient and ambient temperature. | W/m²K, K |
adiabatic | Zero heat flux across a face (insulated boundary). | — |
Confidence Gate
The confidence gate is phinen's automated quality assurance mechanism. It ensures that every result you receive meets a minimum standard of physical plausibility, regardless of whether the ML surrogate or high-fidelity solver was used.
How it works
After the ML surrogate (MeshGraphNet / PINN) completes inference, the confidence gate evaluates the result against a set of physics-based checks:
- Energy balance: Verifies that the predicted fields are consistent with conservation of energy.
- Boundary consistency: Checks that boundary conditions are satisfied within tolerance at the specified faces.
- Physical range validation: Flags results where field values fall outside physically plausible ranges for the given material and loading.
- Residual norm: Computes a dimensionless residual score — if above threshold, the result is escalated.
If any check fails, the system automatically escalates to the FEniCSx finite element solver, which runs a full high-fidelity solve and returns a validated result. The escalation is transparent — the result card shows which solver was used and the final confidence score.
API Overview & Authentication
The phinen REST API allows you to trigger simulations programmatically, retrieve results, and integrate the platform into your own tooling, CI/CD pipelines, or PLM systems.
Base URL
https://fea.phinen.com/api/v1
Authentication
All API requests require an API key passed in the Authorization header as a Bearer token.
Authorization: Bearer pi_live_xxxxxxxxxxxxxxxxxxxxxxxx
POST /simulate
Trigger a new simulation run. Returns a run ID that can be polled for status and results.
| Field | Type | Required | Description |
|---|---|---|---|
geometry_id | string | ✓ | ID returned from /upload. References the uploaded geometry file. |
physics | string | ✓ | One of: structural, thermal, cfd, multiphysics |
material | object | ✓ | Material properties. See Materials Library for pre-defined options. |
boundary_conditions | array | ✓ | Array of boundary condition objects. See Boundary Conditions. |
description | string | — | Optional natural language description. The LLM will supplement or override structured BCs if provided. |
import requests response = requests.post( "https://fea.phinen.com/api/v1/simulate", headers={"Authorization": "Bearer pi_live_xxxx"}, json={ "geometry_id": "geo_abc123", "physics": "structural", "material": { "name": "aluminium_6061", "E": 69e9, "nu": 0.33 }, "boundary_conditions": [ {"type": "fixed_face", "region": {"center": [0,0,0], "radius": 10}}, {"type": "point_load", "region": {"center": [100,50,25], "radius": 15}, "magnitude": 1000, "direction": [0, -1, 0]} ] } ) run_id = response.json()["run_id"] print(f"Run started: {run_id}")
{
"run_id": "run_1bbf125c-2a39-...",
"status": "queued",
"physics": "structural",
"created_at": "2026-03-16T12:00:00Z"
}GET /runs/{id}
Poll a run for its current status. Poll every 500ms — most runs complete in under 2 seconds.
import time while True: r = requests.get( f"https://fea.phinen.com/api/v1/runs/{run_id}", headers={"Authorization": "Bearer pi_live_xxxx"} ) status = r.json()["status"] if status in ["completed", "failed"]: break time.sleep(0.5) print(f"Run {status}. Solver: {r.json().get('solver')}")
The solver field in the response will be either meshgraphnet or fenicsx — indicating whether the confidence gate escalated the run.
Tutorial: Structural Analysis of a Bracket
In this tutorial we analyse a mechanical bracket under a 1000 N downward load, identify the maximum stress location, and check the safety factor against an aluminium 6061 yield strength of 276 MPa.
Step 1 — Upload the STL
Open fea.phinen.com and drag bracket.stl onto the upload zone. The viewer will render the geometry in 3D within a few seconds.
Step 2 — Set up via chat
In the chat panel, type:
Aluminium 6061, E=69 GPa, nu=0.33, yield strength 276 MPa. Fixed constraint at the rear circular face (centre 0,0,0, radius 10mm). Downward point load of 1000 N at the front flange (centre 100,50,25mm, radius 15mm). Run a static structural analysis.
Step 3 — Interpret the results
phinen will render the von Mises stress field on your geometry and report:
- Max von Mises stress — location and magnitude
- Safety factor — ratio of yield strength to max stress
- Displacement field — max deflection and location
- Risk zones — faces flagged as high-stress regions warranting design attention
If the safety factor is below 1.5 (the typical design target for structural components), the AI will suggest geometric modifications — increased fillet radius, added gussets, or material change — and offer to re-run with the proposed changes.
Frequently Asked Questions
How accurate is the ML surrogate compared to full FEA?
For geometries similar to the training distribution, MeshGraphNet achieves less than 3% mean error relative to FEniCSx reference solutions. For novel or complex geometries outside the training distribution, the confidence gate detects low confidence and escalates automatically to the full FEniCSx solver.
What happens when the confidence gate triggers?
The system transparently switches to FEniCSx, a high-fidelity finite element solver. Your result is marked as "FEniCSx validated" and the solve time increases to 30–120 seconds depending on mesh complexity. You are notified in the UI and in the API response.
What is the maximum geometry size?
The ML surrogate performs well on meshes up to approximately 500,000 faces. Larger meshes are automatically decimated for surrogate inference and then validated at full resolution by FEniCSx. The API supports files up to 2 GB.
Can I run batch simulations?
Yes, via the API. Submit multiple /simulate requests concurrently. Professional plan supports up to 10 concurrent runs; Enterprise plan supports unlimited parallelism.
Is my geometry data secure?
All geometry files are encrypted at rest in Cloudflare R2 and in transit via TLS. Files are isolated per account and never used to train shared models without explicit consent. Enterprise customers can opt for dedicated storage and single-tenant infrastructure.
Does phinen support assemblies with multiple parts?
Yes, STEP files with named parts are supported. Contact interfaces between parts can be defined as bonded, sliding, or contact-with-friction. Multi-body assembly support is in active development.
Changelog
v0.9.0 — March 2026
- Added Multiphysics (coupled thermal-structural) domain support
- Confidence gate now reports per-domain confidence scores in multiphysics mode
- Improved MeshGraphNet model trained on 40,000 additional structural FEA samples
- API v1 released —
/simulate,/runs,/results,/uploadendpoints - PDF report generation now includes annotated geometry screenshots
v0.8.0 — February 2026
- CFD domain added — velocity and pressure field prediction for internal airflow
- LLM interface upgraded to GPT-4.1-mini with structured SimulationPlan output
- STEP file import support added
- Multi-variant comparison (up to 3 runs side by side) — Professional plan
v0.7.0 — January 2026
- Initial public early access release
- Structural FEA and thermal simulation domains
- STL and OBJ file support
- MeshGraphNet surrogate + FEniCSx fallback pipeline
- Confidence gate (initial version)