Skip to main content

abq2ccx — Abaqus → CalculiX input converter

abq2ccx.py converts an Abaqus .inp deck into a CalculiX (ccx) deck. It is one Python 3 file with no dependencies.

CalculiX copies most of Abaqus' keyword syntax, so much of a deck passes through as it is; the work is in the parts that differ. The converter knows the complete CalculiX 2.22 + 2.23 keyword set and does one of three things with every Abaqus card: passes it through, translates it into the CalculiX construct that does the same, or comments it out with a warning that says what to do. Nothing is dropped silently, and nothing that changes the physics happens unless you ask for it with --approximate.

Quick start

Run the file with Python 3.9 or later — copy it anywhere — or install it as the abq2ccx command (abq2ccx model.inp, same options):

pipx install abq2ccx                                       # from PyPI
pipx install git+https://github.com/sandervdbroek/abq2ccx  # the latest main
python3 abq2ccx.py model.inp                 # -> model_ccx.inp (+ model_ccx.log)
python3 abq2ccx.py decks/*.inp --outdir out  # batch-convert into a directory
python3 abq2ccx.py model.inp --run           # convert, run CalculiX, digest its results
python3 abq2ccx.py model.inp --check         # report only, write nothing
ccx model_ccx                                # run it yourself (no .inp extension)

Always read the report: it is printed to stderr, written to *_ccx.log and repeated as ** comments at the top of the converted deck. The user guide has every option, the exit codes and the Python API.

import abq2ccx
result = abq2ccx.convert_file("model.inp")   # or convert_text(deck_string)
print(result.report.summary())               # "N warning(s), M note(s), K commented card(s)"

What it converts

  • Mesh generation (*NGEN, *NFILL, *NCOPY, *ELGEN, *ELCOPY) → explicit nodes and elements.
  • Parts, instances and assemblies → one flat model, with instance transforms applied and part-level sections, constraints and orientations copied per instance.
  • Elements → CalculiX types, keeping the node count. Incompatible-mode CPS4I/CPE4I become exact one-element-thick C3D8I slabs (ccx has no such plane element); beams under circular, pipe and box sections get the midside nodes ccx 2.23 needs; planar beams and trusses are held in their plane; surface elements leave the mesh and their loads become nodal forces; connector elements become their kinematic constraints. A substitution that changes the element formulation (hybrid, modified or thin-shell elements run as ccx's plain ones) is flagged as reduced physics.
  • Materials and orientations — elastic types, plasticity (including Johnson-Cook), the Johnson-Cook damage initiation criterion ccx shares with Abaqus, thermal expansion, composite layups and per-element *DISTRIBUTION orientations (variable-angle-tow layups); composite S4R/S4/S3 shells run as S8R/S6, composite continuum shells (SC8R, SC6R) as one solid per ply.
  • Constraints — *MPC, kinematic couplings and rigid bodies (with knot beams where ccx 2.23 rejects rigid constraints on shell and beam nodes), and the overconstraints ccx rejects but Abaqus resolves.
  • Rigid tools — rigid elements (R3D3, R3D4, R2D2, RAX2, …) become force-free solid skins carried by their rigid body, so contact against them works; analytical rigid surfaces are meshed the same way, curved ones only with --approximate; a *TIE to a rigid surface makes its nodes part of the body, and ROTARYI becomes point masses.
  • Loads and BCs — surface tractions and beam line loads become consistent nodal forces; velocity and acceleration BCs become integrated displacement BCs; *TRANSFORM local axes are respected wherever ccx reads them.
  • Steps and output — explicit dynamics with Abaqus/Explicit's defaults, output requests fitted to ccx's .frd/.dat model, and Abaqus' preselected output.

The exact handling of every keyword, element type and output variable is in the generated references: keywords, elements, output variables.

Reduced physics. Whatever the converter has to drop or replace of the Abaqus model — a constitutive behaviour ccx lacks (concrete damaged plasticity, user hardening, Chaboche back-stresses, field-dependent properties), an element formulation, a section control, a constraint or interaction, a load — is named in a "Reduced physics" warning at the end of the report (Converter.reduced_physics in the API): ccx then runs, but not the deck's own problem.

--approximate (off by default) lets the converter reframe what ccx cannot run exactly as a close equivalent, each flagged [APPROX] — a Riks step as plain static, ν ≥ 0.5 as 0.475, an I-section in space as ccx's U1 beam with too stiff a torsion (or an equivalent rectangle where U1 cannot run), NLGEOM follower tractions as fixed nodal forces, a curved analytical rigid surface as flat facets, and a few more (full list). Without it those cards are commented out with the reason, so ccx never silently runs a different model.

Validation

python validate_with_ccx.py converts the bundled examples, runs them in CalculiX (it finds ccx, including FreeCAD's copy) and compares each result with an independent reference. It prints one PASS line per check, about a hundred in all; testing lists them.

Check Reference Agreement
NAFEMS LE10 thick plate (*NCOPY, *ELGEN, pressure face) published σyy at D = −5.38 MPa −5.650 MPa, 5 % (element and mesh)
the same plate loaded through SFM3D8 surface elements its face-pressure result 7 digits
circular, pipe, box and planar beams; I, hexagonal and general sections as ccx's U1 beam (cantilevers, a portal frame), general sections with a ccx profile (NAFEMS NL6); beam line loads; pinned, tied and hinged spans beam theory, Euler buckling, the direct-stiffness frame, Abaqus' and NAFEMS' published answers ≤ 2.4 %
Cook's membrane under a shear traction; a thick cylinder under a radial traction published 23.96; Lamé 0.12 %; 0.02 %
rigid couplings, *MPCs, connectors, BCs on coupled nodes, loads, connectors, *MPCs and rotations on *TRANSFORMed nodes the same model built another way (solids, hand-written equations, no transform) ≤ 4e-5 of |u|, mostly exact
per-element *DISTRIBUTION orientations (a solid plate, a composite shell) one *ORIENTATION per element ≤ 3e-11
a simply supported [0/90/0] plate as composite S4R (run as S8R) and SC8R (one C3D8I per ply); a [30/-60/45]s laminate's in-plane stiffness in the x-y and x-z planes (S4R, SC8R, SC6R) classical lamination theory (Navier, A); Pagano's 3-D elasticity solution 0.15 % (S8R, a/h = 100); 1.0 % / 2.3 % (plies, a/h = 100 / 10); A ≤ 2e-5
thermal expansion (orthotropic, anisotropic, no initial temperatures) α ΔT; analytic stress ≤ 5e-6
velocity / acceleration BCs; displacement BCs without an amplitude their time integral; wave theory; Abaqus' default amplitudes 5e-5 of the travel; wave stress ≈ 1 % on average; exact
preselected and default output, contact output statics, wave theory ≤ 0.005 % (static)
CPS4I / CPE4I cantilevers under an end couple (as C3D8I slabs) beam theory (deflection, σ_xx = −My/I, σ_zz) 4e-8
pressure on a shell's SPOS / SNEG side and element-based P Navier plate solution, each sign 1.0 %
a bare *KINEMATIC (all DOFs); an assembly with a turned instance *RIGID BODY; the same model written flat exact
a rigid flat punch of R3D4, R2D2 or RAX2 elements or the same face as an analytical surface, also turned under NLGEOM and in explicit dynamics; a block tied to a turning rigid plate; pressure on rigid elements; MASS + ROTARYI on a rigid plate ccx's penalty contact law; the punch given its motion node by node; p / k; spring frequencies ≤ 8e-7 of |u|, mostly round-off
a faceted analytical sphere on a block (--approximate) Hertz 2.3 % (finite block, penalty contact)

A corpus of 1052 genuine Abaqus decks — 1022 from about 180 public repositories (CAE exports, UMAT and UEL decks, explicit and coupled models, …) and 30 NAFEMS benchmark decks of the Abaqus 2017 documentation — is fetched on demand and run through convert → integrity check → ccx. On ccx 2.23 all 1052 convert with no dangling reference; 189 solve the deck's own physics; 45 more solve but stay out of that count — 14 load nothing in the source deck, 33 (3 of them also unloaded) solve a model with reduced physics, and one converges to a solution that is not the deck's (a part that only contact holds drifts away in ccx) — and 221 mesh-only decks are accepted. The other 597 need what ccx cannot run — mostly user materials (353) and user elements (66). 26 benchmark decks are checked against their published answer: 19 match Abaqus' result for the same mesh (within 0.5 % for temperatures and frequencies, 1 % for stresses and displacements), 7 differ for reasons traced to ccx (its nodal extrapolation, plane-stress slab, film integration, mass matrices, coarse shell and beam meshes). See testing.

How it works

read (+ *INCLUDE, *PARAMETER)  →  flatten *PART/*INSTANCE/*ASSEMBLY
  →  build the geometry (expand mesh generation)  →  plan deck-wide fixes
  →  translate card by card  →  settle *EQUATION dependents, audit loads  →  write
Bucket Action Examples
Supported emitted as it is *PLASTIC, *CONTACT PAIR, *DENSITY
Translated a handler adjusts the keyword, parameters or data *ELASTIC, *SHELL SECTION, *STEP, *DSLOAD, output cards
Equivalent mapped to the CalculiX construct that does the same *MPC BEAM → *RIGID BODY, connectors → *EQUATIONs, tractions → *CLOAD
Dropped organisational, no CalculiX meaning *PART/*INSTANCE/*ASSEMBLY (flattened), *PREPRINT
Commented no equivalent: kept as ** comments with a warning *VISCOELASTIC, *CONNECTOR BEHAVIOR, *INERTIA RELIEF

The architecture guide describes the pipeline and how to extend it.

Limitations

  • User subroutines (UMAT/VUMAT, UEL, DLOAD, DISP, …) do not run in stock ccx. Such cards are commented out, naming the ccx subroutine to port; a UMAT runs in a ccx built with it (--abaqus-umat), a VUMAT has no ccx interface.
  • Cohesive and gasket elements run as thin continua (their traction-separation law is lost; warned). Abaqus general contact (*CONTACT), connector behaviours, inertia relief and materials such as viscoelasticity and concrete damaged plasticity have no equivalent and are flagged for remodelling; a deck that runs without them is flagged as reduced physics.
  • ccx's own first-order elements are not Abaqus': its CPE4/C3D8/CAX4 are plain 2×2(×2) integration, without Abaqus' selectively reduced volume terms (on a coarse bending mesh Abaqus' CPE4 deflects 9–19 % more for ν 0–0.3), and its CPS4 is a 3-D slab with a free thickness, not 2-D plane stress (compatibility).
  • Explicit coupled temperature–displacement steps do not run; Riks steps, NLGEOM follower tractions and curved analytical rigid surfaces run only with --approximate.
  • Contact is translated card by card, but ccx's penalty contact behaves differently from Abaqus' — check it.
  • ccx 2.23 gets some valid input wrong without an error. The converter works around what it can and warns about the rest (compatibility, troubleshooting).
  • The converter checks structure, and physics on its benchmarks — not on your model. Run ccx and sanity-check the results.

Validated on CalculiX 2.23 (the FreeCAD 1.1.4 build); written for 2.22–2.23.

Examples

File Exercises
nle10_thickplate NAFEMS LE10: C3D20, *NCOPY + *ELGEN, GEN/PERT, *DLOAD Px
nle10_surface_elements the same plate loaded through an SFM3D8 skin → nodal forces
composite_shell S8R composite layup, orthotropic, *ORIENTATION, ENCASTRE, *DSLOAD
composite_plate_s4r, composite_plate_sc8r a simply supported cross-ply plate: composite S4R → S8R; composite SC8R → one C3D8I per ply
composite_inplane_s4r, composite_inplane_sc8r an angle-ply laminate's in-plane stiffness; BCs interpolated onto the new nodes
assembly_two_blocks two-instance assembly, an instance.node reference in a step
beam_circ_cantilever B31 + SECTION=CIRC → B32 with midside nodes, radius → diameters
beam_pipe_box_cantilever PIPE31 + SECTION=PIPE and B32 + SECTION=BOX → B32R
beam_circ_rotation_bcs circular-section beams with a held twist and a prescribed rotation → knot beams
beam_circ_explicit a circular-section beam in *DYNAMIC, EXPLICIT → a maximum time increment
planar_pinned_beam, planar_pinned_circ_beam planar B21 beams in *FREQUENCY + *BUCKLE → planar constraint
beam_line_load_cantilever *DLOAD PY / P2 / PZ on B31, B32 and a CIRC beam → nodal forces
beam_output_requests output at B32 nodes → OUTPUT=2D, *NODE PRINT, *TIME POINTS
coupling_shell_plate, coupling_solid_plate a rigid coupling on S8R nodes (knot beams) and its C3D20R reference
coupling_bc_bars BCs on coupled nodes that the reference point imposes → taken off
rigid_body_bc_bars BCs on *RIGID BODY nodes → moved to the reference node, as Abaqus does
equation_overconstraint an *EQUATION on a BC'd DOF, a duplicate and a loop of ties
mpc_beam_lever, mpc_pin_tie_joints, mpc_link *MPC BEAM, PIN, TIE, LINK
connector_hinge_beams, connector_hinge_bodies, connector_ground_hinge CONN3D2 HINGE connectors between beams, rigid bodies and to ground
connector_transform_plate, connector_transform_join JOIN / LINK connectors on nodes with a *TRANSFORM
mpc_transform *MPC PIN, TIE and LINK on nodes with a *TRANSFORM → local DOFs, twin nodes
op_new_respecify, op_new_remove *BOUNDARY, OP=NEW after rotational BCs on beams and shells
distribution_solid_plate, distribution_shell_plate per-element *DISTRIBUTION orientations (solid, composite S8R); *_explicit are their one-orientation-per-element twins
thermal_expansion_cubes isotropic *Elastic beside ORTHO / ANISO *Expansion
thermal_no_initial_temperature *Temperature without initial temperatures
cook_membrane_traction, cylinder_traction_cax *DSLOAD TRVEC on CPS8 and CAX8 edges → nodal forces
traction_transformed_face, transform_spherical_rigid loads on *TRANSFORMed nodes; a spherical transform; a transformed rigid-body reference point
transform_rotations rotational BCs and moments on a transformed kinematic reference point (→ *RIGID BODY with a ROT NODE in its axes) and beam tip (→ knot, global components)
velocity_bc_column, velocity_bc_bar *BOUNDARY, TYPE=VELOCITY (implicit and explicit)
default_amplitude_bars a displacement *BOUNDARY and a *CLOAD without an amplitude → ramped / stepped as in Abaqus (run as *DYNAMIC, *VISCO, coupled and explicit)
preselect_output_bar, explicit_default_output_bar, preselect_contact_blocks Abaqus' preselected and default output
cps4i_slab_bending a CPS4I cantilever under an end couple → C3D8I slabs (also run as CPE4I)
shell_pressure_sides *DSLOAD P on a shell's SPOS / SNEG side and an element-based P
kinematic_all_dofs a bare *Coupling + *Kinematic (all DOFs) on a solid face, against *RIGID BODY
assembly_rotated_instances, …_flat a turned instance with an oriented orthotropic material, against the same model written flat
damage_johnson_cook_cubes a Johnson-Cook *DAMAGE INITIATION → ccx's form, reporting DUCT
rigid_punch_block, rigid_punch_cylinder, rigid_body_inertia a rigid R3D4 punch and the same face as an analytical CYLINDER → skins of their rigid body; MASS + ROTARYI on a rigid plate → point masses
coverage_kitchen_sink element substitutions, dropped and commented cards, output-variable mapping

Tests

python tests/test_convert.py                            # unit tests, no solver needed
python validate_with_ccx.py                             # end-to-end checks in CalculiX
python corpus/fetch.py && python tests/test_corpus.py   # the corpus

Testing describes the three layers; GitHub Actions run the first two on every push, the unit tests on Linux, macOS and Windows.

Documentation

Sources

Compatibility lists the Abaqus manual pages behind individual facts.

License

MIT © Sander van den Broek. abq2ccx is an independent tool, not affiliated with or endorsed by Dassault Systèmes (Abaqus) or the CalculiX project. The test corpus is fetched on demand and not redistributed here; each deck keeps its own upstream license, recorded in corpus/manifest.py.

Metadata

Release files for abq2ccx 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for abq2ccx 1.2.0
File Size Uploaded
abq2ccx-1.2.0.tar.gz 470.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for abq2ccx 1.2.0
File Interpreter ABI Platform
abq2ccx-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 811.3 kB

Release files / abq2ccx-1.2.0.tar.gz

Download URL abq2ccx-1.2.0.tar.gz
Size 470.1 kB
Tags Source
SHA-256 checksum
How to use checksums
2f0cfd82888b9a4c1b51ef6b4787fd7f05f2ee5ac2f740c2f782d4f6f6ec0d4a
BLAKE2b-256 checksum
How to use checksums
5ba66c2ccc36581c0928a5f9fcf829b58f06dcc81cfdb89b62ed23ae5c71bf80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.

Transparency log

Release files / abq2ccx-1.2.0-py3-none-any.whl

Download URL abq2ccx-1.2.0-py3-none-any.whl
Size 341.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6f298fc2868a8badaa6130bdece07d231b3db10644da5ce05c4251ce5be7af73
BLAKE2b-256 checksum
How to use checksums
9cb3933499f2a9613b8a04479a3d8f3295a6d2ced97f275bacb41c16508e2454
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.

Transparency log

Release history Release notifications | RSS feed

1.2.1

2 release files

This release

1.2.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page