An IDE for physics simulation subroutines. Write Fortran, C++, or Python, test against closed-form analytical solutions, get an AI diagnosis — built for Abaqus today, designed for the full simulation ecosystem.
Download for WindowsWriting a constitutive subroutine means implementing a return-mapping algorithm, assembling a consistent tangent, and satisfying physical constraints the solver never explicitly checks. When a simulation diverges, the error message tells you nothing.
Jacobi runs your subroutine against fifteen closed-form analytical solutions and tells you exactly which one failed and by how much. Then Claude — with full numerical context — explains the physical cause and where in your code to look.
It is not a general-purpose editor. It does one thing: get your subroutine to physically correct behavior faster — across solvers, across languages.
Jacobi targets the physics simulation ecosystem, not a single solver. The current release ships deep Abaqus integration. The architecture — subroutine loading, test harness, AI diagnosis, language support — is designed to extend. COMSOL, Nastran, and LS-DYNA integrations are in development.
The long-range goal: run any simulation from within Jacobi using your existing solver license, switching solvers without modifying your subroutine code.
| ABAQUS | COMSOL | NASTRAN | LS-DYNA | OPENFOAM | |
|---|---|---|---|---|---|
| Subroutine support | |||||
| Physics test suite | |||||
| AI diagnosis | |||||
| Direct solve — run simulations via your solver license, switch solvers without code changes |
Open any .f, .f90, .cpp, or .c file in the Monaco editor. Fortran and C/C++ syntax highlighting, static analysis, AI inline completion, and subroutine detection run automatically. No project setup required.
Click Run Tests. Jacobi compiles a single-element driver, links your subroutine, applies prescribed strain increments across 15 scenarios, and compares each result to its closed-form analytical answer.
All fifteen numerical results — stresses, strains, errors, pass/fail — are sent to Claude. You get a physics-first explanation of every failure, with the specific variable and equation at fault, plus textbook references.
8 bundled community tests for UMAT. Browse, install, run against your open file. Author your own, export as .jtest, share with your team.
Hover any Abaqus argument — STRESS, DDSDDE, STATEV — to see its type, dimensions, I/O direction, and a physics description. Fortran intrinsics documented inline too.
F12 or single-click any variable, parameter, or subroutine to jump to where it's defined. Works within the file with Monaco's full navigation experience.
UMAT, VUMAT, UEL, UHARD, CREEP, UMATHT and more — each pre-filled with the full signature, correct IMPLICIT declarations, and inline physics comments.
Fit material parameters to experimental data in the Calibration Panel. Step Inspector shows the full per-increment state — stress, strain, STATEV — after every test run.
Parse Abaqus .inp files to browse steps, materials, and boundary conditions. Import .msg/.dat logs to visualize convergence history.
As you type, Jacobi sends the prefix and suffix of your code to Claude. The model is prompted with your subroutine type, fixed vs. free form flag, and surrounding context. What comes back appears as translucent ghost text — Tab to accept.
This isn't token-prediction autocomplete. The model understands that DDSDDE must be symmetric, that NHAT should be deviatoric for J2, and that STATEV indexing is subroutine-specific.
Don't want ghost text on every keystroke? Trigger on demand. The suggestion appears inline in the editor, no popup, no distraction.
Jacobi detects which subroutine the cursor is in (UMAT, VUMAT, USDFLD, CREEP) and tells Claude, so completions respect each signature's conventions.
Enter your Anthropic key once. Every call goes directly from the desktop app to the Anthropic API — no proxy, no telemetry, fractions of a cent per request.
After the test suite finishes, Jacobi assembles the full numerical context — every stress component, error magnitude, pass/fail flag, and derived quantity — and sends it to Claude Haiku along with your material parameters.
What comes back is a physics-first diagnosis. Not “check line 42” — but “your plastic flow normal has a volumetric component that shouldn’t be there for J2, here’s why, here’s where.”
Diagnoses reference return-mapping algorithms, Voigt notation, isochoric flow, and consistent tangent derivation — not generic debugging advice.
Every diagnosis cites the specific chapter: de Souza Neto, Simo & Hughes, Belytschko — so you can go to the source if needed.
Add your Anthropic key once in the toolbar. Calls go directly from the app to the Anthropic API — no proxy, no server, fractions of a cent per run.
Each test calls your subroutine directly, applies a prescribed strain increment, and compares the result to the closed-form analytical answer. Tolerances match standard FE solver convergence criteria. All 15 results are fed to Claude for diagnosis.
| A | Uniaxial strain — C₁₁₁₁ | σ₁₁ = C₁₁₁₁ · ε₁₁ | Normal stiffness | PASS |
| B | Lateral confinement — C₁₁₂₂ | σ₂₂ = C₁₁₂₂ · ε₁₁ | Poisson coupling | PASS |
| C | Simple shear — G | τ₁₂ = G · γ₁₂ | Shear modulus | PASS |
| D | Hydrostatic loading — K | σm = K · εv | Bulk modulus | PASS |
| E | J2 hydrostatic neutrality | σvm = 0 under P | No pressure yield | PASS |
| F | Von Mises yield onset | εy = σy / 2G | Onset detection | PASS |
| G | Elastic unloading slope | dσ/dε|unload = C₁₁₁₁ | Unload linearity | PASS |
| K | Plastic incompressibility | tr(dεp) = 0 | Isochoric flow | FAIL |
| L | Yield surface return accuracy | |σvm−σy|/σy<1% | Return precision | PASS |
| H | Zero increment consistency | |Δσ| < 1e‑6 | Null increment | PASS |
| I | DDSDDE finite-difference check | |C − dσ/dε| < 1% | Tangent accuracy | FAIL |
| J | DDSDDE symmetry | |Cij−Cji|<1e‑6 | Matrix symmetry | PASS |
Monaco editor — the same engine as VS Code — with full Fortran syntax highlighting, fixed-form and free-form ruler support, and jump-to-error navigation from the test results panel.
Static analysis flags uninitialized variables and undefined symbols inline, before compilation. 20 built-in themes including Tokyo Night, Rosé Pine, Kanagawa, and GitHub Dark.
1C J2 Isotropic Plasticity UMAT 2 SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,...) 3 IMPLICIT REAL*8 (A-H,O-Z) 4 EMOD = PROPS(1) 5 ANU = PROPS(2) 6 SYIELD = PROPS(3) 7 GMOD = EMOD / (2.D0*(1.D0+ANU)) 8 SMISES = SQRT(1.5D0*(S11**2+S22**2+S33**2 9 & +2.D0*(S12**2+S13**2+S23**2))) 10 IF (SMISES .GT. SYIELD) THEN 11 DLAM = (SMISES-SYIELD) / (3.D0*GMOD) 12 DO I = 1, 3 13 STRESS(I) = STRESS(I) - 2.D0*GMOD*DLAM*NHAT(I) 14 END DO 15 END IF
Mesh stretches in load direction, contracts laterally at rate ν. Jet colormap tracks σ₁₁ through elastic and plastic regimes.
Pure shear without volumetric change. Verifies the G = E/2(1+ν) relationship geometrically.
Equal strain in all directions. Von Mises stress stays zero — the J2 neutrality test, visualized.
Drag the step slider to inspect any point in the loading history. Ghost outline marks the original configuration.
A single installer. No configuration. Requires gfortran on your PATH for test execution. Add your Anthropic API key in the toolbar to enable AI diagnosis and inline completion.
Download for Windows
v0.1.0 beta · Windows 10/11 x64
Windows may show a SmartScreen warning — click More info → Run anyway.
Install gfortran first: winlibs.com (recommended) or MinGW-w64.