# Calculix Fem

> Workflow skill for driving the CalculiX MCP server over .inp decks — model inspection, in-place design-variable edits, ccx solve, .dat result reading, and result_mesh.json export for the viewer. Use when an agent must run an open-source linear-static FEM analysis on CalculiX, tune section/material/load parameters, or produce a viewer-renderable result.

- Skill: `cai-aa/calculix-fem` (Agent Skill)
- Install (CLI): `npx skillmds@latest add cai-aa/calculix-fem`
- Raw SKILL.md: https://api.skillmd.com/api/skills/cai-aa/calculix-fem/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: cai-aa (https://skillmd.com/u/cai-aa)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/cai-aa/calculix-fem

---


# CalculiX FEM

CalculiX (`ccx`) is an open-source FEM solver (GPLv2, no license). It reads
Abaqus-style `.inp` decks and writes text `.dat` results plus `.frd` field output.
`ccx` returns exit code 0 even on `*ERROR`, so never judge success by the exit
code — the solver layer checks stdout for `*ERROR` and requires a data row in the
`.sta`.

## When to Use

Use this skill when an agent must run an open-source linear-static FEA analysis on
CalculiX: parse/inspect a `.inp` deck, tune section/material/load parameters, solve
with `ccx`, read `.dat` results, or export a viewer-renderable result. For commercial
solvers (Abaqus/Ansys), use those solvers' own skills instead.

## Workflow

1. `fea_health` — confirm meshio is available and `ccx` is detected.
2. `parse_inp` — inspect the `.inp` (nodes, elements, sections, materials, loads).
3. `list_design_vars_tool` — list tunable variables; each carries a `var_id`.
4. `modify_card_tool` — change a variable by `var_id` (pure-text, in place).
5. `run_solver_tool` — submit the deck to `ccx`.
6. `read_results_tool` — read max von Mises (self-computed), max |U|, volume, mass.
7. `export_results_tool` — write `result_mesh.json` for the viewer.

## Rules

- Units follow the `.inp` working system (commonly mm-t-s-MPa). Report them.
- `.dat` has no von Mises column and no total volume/mass — these are derived.
- Never rewrite a deck with `meshio.write` (it drops cards and corrupts element
  types). Use `modify_card_tool`.
- For the deck to produce both text results and the field output the viewer needs,
  include `*NODE PRINT`/`*EL PRINT` (for `.dat`) and `*NODE FILE`/`*EL FILE`
  (for `.frd`).

## Example

`MCP/CalculiX/examples/cantilever.inp` is a public cantilever benchmark (steel
C3D8 solid bar, clamped end, transverse tip load). Hand-calc targets at P = 100 N:
tip deflection ≈ 0.8 mm, root stress ≈ 140 MPa.

