abq2ccx 1.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- abq2ccx-1.2.0.dist-info/METADATA +274 -0
- abq2ccx-1.2.0.dist-info/RECORD +7 -0
- abq2ccx-1.2.0.dist-info/WHEEL +5 -0
- abq2ccx-1.2.0.dist-info/entry_points.txt +2 -0
- abq2ccx-1.2.0.dist-info/licenses/LICENSE +21 -0
- abq2ccx-1.2.0.dist-info/top_level.txt +1 -0
- abq2ccx.py +20913 -0
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: abq2ccx
|
|
3
|
+
Version: 1.2.0
|
|
4
|
+
Summary: Convert Abaqus .inp decks to CalculiX (ccx) decks
|
|
5
|
+
Author: Sander van den Broek
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/sandervdbroek/abq2ccx
|
|
8
|
+
Keywords: abaqus,calculix,ccx,finite element,converter
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Operating System :: OS Independent
|
|
11
|
+
Classifier: Environment :: Console
|
|
12
|
+
Classifier: Topic :: Scientific/Engineering
|
|
13
|
+
Requires-Python: >=3.9
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
License-File: LICENSE
|
|
16
|
+
Dynamic: license-file
|
|
17
|
+
|
|
18
|
+
# abq2ccx — Abaqus → CalculiX input converter
|
|
19
|
+
|
|
20
|
+
`abq2ccx.py` converts an Abaqus `.inp` deck into a [CalculiX](http://www.calculix.de/)
|
|
21
|
+
(`ccx`) deck. It is one Python 3 file with no dependencies.
|
|
22
|
+
|
|
23
|
+
CalculiX copies most of Abaqus' keyword syntax, so much of a deck passes through as it is;
|
|
24
|
+
the work is in the parts that differ. The converter knows the complete CalculiX 2.22 + 2.23
|
|
25
|
+
keyword set and does one of three things with every Abaqus card: passes it through,
|
|
26
|
+
translates it into the CalculiX construct that does the same, or comments it out with a
|
|
27
|
+
warning that says what to do. Nothing is dropped silently, and nothing that changes the
|
|
28
|
+
physics happens unless you ask for it with `--approximate`.
|
|
29
|
+
|
|
30
|
+
## Quick start
|
|
31
|
+
|
|
32
|
+
Run the file with Python 3.9 or later — copy it anywhere — or install it as the `abq2ccx`
|
|
33
|
+
command (`abq2ccx model.inp`, same options):
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
pipx install abq2ccx # from PyPI
|
|
37
|
+
pipx install git+https://github.com/sandervdbroek/abq2ccx # the latest main
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
python3 abq2ccx.py model.inp # -> model_ccx.inp (+ model_ccx.log)
|
|
42
|
+
python3 abq2ccx.py decks/*.inp --outdir out # batch-convert into a directory
|
|
43
|
+
python3 abq2ccx.py model.inp --run # convert, run CalculiX, digest its results
|
|
44
|
+
python3 abq2ccx.py model.inp --check # report only, write nothing
|
|
45
|
+
ccx model_ccx # run it yourself (no .inp extension)
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Always read the report: it is printed to stderr, written to `*_ccx.log` and repeated as
|
|
49
|
+
`**` comments at the top of the converted deck. The [user guide](https://github.com/sandervdbroek/abq2ccx/blob/main/docs/user-guide.md) has
|
|
50
|
+
every option, the exit codes and the Python API.
|
|
51
|
+
|
|
52
|
+
```python
|
|
53
|
+
import abq2ccx
|
|
54
|
+
result = abq2ccx.convert_file("model.inp") # or convert_text(deck_string)
|
|
55
|
+
print(result.report.summary()) # "N warning(s), M note(s), K commented card(s)"
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## What it converts
|
|
59
|
+
|
|
60
|
+
* **Mesh generation** (`*NGEN`, `*NFILL`, `*NCOPY`, `*ELGEN`, `*ELCOPY`) → explicit nodes
|
|
61
|
+
and elements.
|
|
62
|
+
* **Parts, instances and assemblies** → one flat model, with instance transforms applied
|
|
63
|
+
and part-level sections, constraints and orientations copied per instance.
|
|
64
|
+
* **Elements** → CalculiX types, keeping the node count. Incompatible-mode `CPS4I`/`CPE4I`
|
|
65
|
+
become exact one-element-thick `C3D8I` slabs (ccx has no such plane element); beams under
|
|
66
|
+
circular, pipe and box sections get the midside nodes ccx 2.23 needs; planar beams and
|
|
67
|
+
trusses are held in their plane; surface elements leave the mesh and their loads become
|
|
68
|
+
nodal forces; connector elements become their kinematic constraints. A substitution that
|
|
69
|
+
changes the element formulation (hybrid, modified or thin-shell elements run as ccx's
|
|
70
|
+
plain ones) is flagged as reduced physics.
|
|
71
|
+
* **Materials and orientations** — elastic types, plasticity (including Johnson-Cook), the
|
|
72
|
+
Johnson-Cook damage initiation criterion ccx shares with Abaqus, thermal expansion,
|
|
73
|
+
composite layups and per-element `*DISTRIBUTION` orientations (variable-angle-tow layups);
|
|
74
|
+
composite `S4R`/`S4`/`S3` shells run as `S8R`/`S6`, composite continuum shells (`SC8R`,
|
|
75
|
+
`SC6R`) as one solid per ply.
|
|
76
|
+
* **Constraints** — `*MPC`, kinematic couplings and rigid bodies (with *knot beams* where
|
|
77
|
+
ccx 2.23 rejects rigid constraints on shell and beam nodes), and the overconstraints ccx
|
|
78
|
+
rejects but Abaqus resolves.
|
|
79
|
+
* **Rigid tools** — rigid elements (`R3D3`, `R3D4`, `R2D2`, `RAX2`, …) become force-free
|
|
80
|
+
solid skins carried by their rigid body, so contact against them works; analytical rigid
|
|
81
|
+
surfaces are meshed the same way, curved ones only with `--approximate`; a `*TIE` to a
|
|
82
|
+
rigid surface makes its nodes part of the body, and `ROTARYI` becomes point masses.
|
|
83
|
+
* **Loads and BCs** — surface tractions and beam line loads become consistent nodal forces;
|
|
84
|
+
velocity and acceleration BCs become integrated displacement BCs; `*TRANSFORM` local axes
|
|
85
|
+
are respected wherever ccx reads them.
|
|
86
|
+
* **Steps and output** — explicit dynamics with Abaqus/Explicit's defaults, output requests
|
|
87
|
+
fitted to ccx's `.frd`/`.dat` model, and Abaqus' preselected output.
|
|
88
|
+
|
|
89
|
+
The exact handling of every keyword, element type and output variable is in the generated
|
|
90
|
+
references: [keywords](https://github.com/sandervdbroek/abq2ccx/blob/main/docs/keyword-reference.md), [elements](https://github.com/sandervdbroek/abq2ccx/blob/main/docs/element-reference.md),
|
|
91
|
+
[output variables](https://github.com/sandervdbroek/abq2ccx/blob/main/docs/output-reference.md).
|
|
92
|
+
|
|
93
|
+
**Reduced physics.** Whatever the converter has to drop or replace of the Abaqus model — a
|
|
94
|
+
constitutive behaviour ccx lacks (concrete damaged plasticity, user hardening, Chaboche
|
|
95
|
+
back-stresses, field-dependent properties), an element formulation, a section control, a
|
|
96
|
+
constraint or interaction, a load — is named in a "Reduced physics" warning at the end of
|
|
97
|
+
the report (`Converter.reduced_physics` in the API): ccx then runs, but not the deck's own
|
|
98
|
+
problem.
|
|
99
|
+
|
|
100
|
+
**`--approximate`** (off by default) lets the converter reframe what ccx cannot run exactly
|
|
101
|
+
as a close equivalent, each flagged `[APPROX]` — a Riks step as plain static, ν ≥ 0.5 as
|
|
102
|
+
0.475, an I-section in space as ccx's `U1` beam with too stiff a torsion (or an equivalent
|
|
103
|
+
rectangle where `U1` cannot run), NLGEOM follower tractions as fixed nodal
|
|
104
|
+
forces, a curved analytical rigid surface as flat facets, and a few more
|
|
105
|
+
([full list](https://github.com/sandervdbroek/abq2ccx/blob/main/docs/user-guide.md#--approximate)). Without it those cards are commented out
|
|
106
|
+
with the reason, so ccx never silently runs a different model.
|
|
107
|
+
|
|
108
|
+
## Validation
|
|
109
|
+
|
|
110
|
+
`python validate_with_ccx.py` converts the bundled examples, runs them in CalculiX (it finds
|
|
111
|
+
`ccx`, including FreeCAD's copy) and compares each result with an independent reference. It
|
|
112
|
+
prints one `PASS` line per check, about a hundred in all; [testing](https://github.com/sandervdbroek/abq2ccx/blob/main/docs/testing.md) lists them.
|
|
113
|
+
|
|
114
|
+
| Check | Reference | Agreement |
|
|
115
|
+
| --- | --- | --- |
|
|
116
|
+
| NAFEMS LE10 thick plate (`*NCOPY`, `*ELGEN`, pressure face) | published σyy at D = −5.38 MPa | −5.650 MPa, 5 % (element and mesh) |
|
|
117
|
+
| the same plate loaded through `SFM3D8` surface elements | its face-pressure result | 7 digits |
|
|
118
|
+
| 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 % |
|
|
119
|
+
| Cook's membrane under a shear traction; a thick cylinder under a radial traction | published 23.96; Lamé | 0.12 %; 0.02 % |
|
|
120
|
+
| rigid couplings, `*MPC`s, connectors, BCs on coupled nodes, loads, connectors, `*MPC`s and rotations on `*TRANSFORM`ed nodes | the same model built another way (solids, hand-written equations, no transform) | ≤ 4e-5 of \|u\|, mostly exact |
|
|
121
|
+
| per-element `*DISTRIBUTION` orientations (a solid plate, a composite shell) | one `*ORIENTATION` per element | ≤ 3e-11 |
|
|
122
|
+
| 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 |
|
|
123
|
+
| thermal expansion (orthotropic, anisotropic, no initial temperatures) | α ΔT; analytic stress | ≤ 5e-6 |
|
|
124
|
+
| 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 |
|
|
125
|
+
| preselected and default output, contact output | statics, wave theory | ≤ 0.005 % (static) |
|
|
126
|
+
| `CPS4I` / `CPE4I` cantilevers under an end couple (as `C3D8I` slabs) | beam theory (deflection, σ_xx = −My/I, σ_zz) | 4e-8 |
|
|
127
|
+
| pressure on a shell's `SPOS` / `SNEG` side and element-based `P` | Navier plate solution, each sign | 1.0 % |
|
|
128
|
+
| a bare `*KINEMATIC` (all DOFs); an assembly with a turned instance | `*RIGID BODY`; the same model written flat | exact |
|
|
129
|
+
| 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 |
|
|
130
|
+
| a faceted analytical sphere on a block (`--approximate`) | Hertz | 2.3 % (finite block, penalty contact) |
|
|
131
|
+
|
|
132
|
+
A **corpus of 1052 genuine Abaqus decks** — 1022 from about 180 public repositories (CAE
|
|
133
|
+
exports, UMAT and UEL decks, explicit and coupled models, …) and 30 NAFEMS benchmark decks of
|
|
134
|
+
the Abaqus 2017 documentation — is fetched on demand and run through convert → integrity check
|
|
135
|
+
→ ccx. On ccx 2.23 all 1052 convert with no dangling reference; **189 solve the deck's own
|
|
136
|
+
physics**; 45 more solve but stay out of that count — 14 load nothing in the source deck, 33
|
|
137
|
+
(3 of them also unloaded) solve a model with reduced physics, and one converges to a solution
|
|
138
|
+
that is not the deck's (a part that only contact holds drifts away in ccx) — and 221 mesh-only
|
|
139
|
+
decks are accepted. The other 597 need what ccx cannot run — mostly user materials (353) and
|
|
140
|
+
user elements (66). **26 benchmark decks are checked against their published answer**: 19
|
|
141
|
+
match Abaqus' result for the same mesh (within 0.5 % for temperatures and frequencies, 1 % for
|
|
142
|
+
stresses and displacements), 7 differ for reasons traced to ccx (its nodal extrapolation,
|
|
143
|
+
plane-stress slab, film integration, mass matrices, coarse shell and beam meshes). See
|
|
144
|
+
[testing](https://github.com/sandervdbroek/abq2ccx/blob/main/docs/testing.md#published-answers).
|
|
145
|
+
|
|
146
|
+
## How it works
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
read (+ *INCLUDE, *PARAMETER) → flatten *PART/*INSTANCE/*ASSEMBLY
|
|
150
|
+
→ build the geometry (expand mesh generation) → plan deck-wide fixes
|
|
151
|
+
→ translate card by card → settle *EQUATION dependents, audit loads → write
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
| Bucket | Action | Examples |
|
|
155
|
+
| --- | --- | --- |
|
|
156
|
+
| Supported | emitted as it is | `*PLASTIC`, `*CONTACT PAIR`, `*DENSITY` |
|
|
157
|
+
| Translated | a handler adjusts the keyword, parameters or data | `*ELASTIC`, `*SHELL SECTION`, `*STEP`, `*DSLOAD`, output cards |
|
|
158
|
+
| Equivalent | mapped to the CalculiX construct that does the same | `*MPC BEAM` → `*RIGID BODY`, connectors → `*EQUATION`s, tractions → `*CLOAD` |
|
|
159
|
+
| Dropped | organisational, no CalculiX meaning | `*PART`/`*INSTANCE`/`*ASSEMBLY` (flattened), `*PREPRINT` |
|
|
160
|
+
| Commented | no equivalent: kept as `**` comments with a warning | `*VISCOELASTIC`, `*CONNECTOR BEHAVIOR`, `*INERTIA RELIEF` |
|
|
161
|
+
|
|
162
|
+
The [architecture guide](https://github.com/sandervdbroek/abq2ccx/blob/main/docs/architecture.md) describes the pipeline and how to extend it.
|
|
163
|
+
|
|
164
|
+
## Limitations
|
|
165
|
+
|
|
166
|
+
* User subroutines (UMAT/VUMAT, UEL, DLOAD, DISP, …) do not run in stock ccx. Such cards are
|
|
167
|
+
commented out, naming the ccx subroutine to port; a UMAT runs in a ccx built with it
|
|
168
|
+
(`--abaqus-umat`), a VUMAT has no ccx interface.
|
|
169
|
+
* Cohesive and gasket elements run as thin continua (their traction-separation law is lost;
|
|
170
|
+
warned). Abaqus general contact (`*CONTACT`), connector behaviours, inertia relief and
|
|
171
|
+
materials such as viscoelasticity and concrete damaged plasticity have no equivalent and
|
|
172
|
+
are flagged for remodelling; a deck that runs without them is flagged as reduced physics.
|
|
173
|
+
* ccx's own first-order elements are not Abaqus': its `CPE4`/`C3D8`/`CAX4` are plain 2×2(×2)
|
|
174
|
+
integration, without Abaqus' selectively reduced volume terms (on a coarse bending mesh
|
|
175
|
+
Abaqus' `CPE4` deflects 9–19 % more for ν 0–0.3), and its `CPS4` is a 3-D slab with a free
|
|
176
|
+
thickness, not 2-D plane stress ([compatibility](https://github.com/sandervdbroek/abq2ccx/blob/main/docs/compatibility.md)).
|
|
177
|
+
* Explicit coupled temperature–displacement steps do not run; Riks steps, NLGEOM follower
|
|
178
|
+
tractions and curved analytical rigid surfaces run only with `--approximate`.
|
|
179
|
+
* Contact is translated card by card, but ccx's penalty contact behaves differently from
|
|
180
|
+
Abaqus' — check it.
|
|
181
|
+
* ccx 2.23 gets some valid input wrong without an error. The converter works around what it
|
|
182
|
+
can and warns about the rest ([compatibility](https://github.com/sandervdbroek/abq2ccx/blob/main/docs/compatibility.md),
|
|
183
|
+
[troubleshooting](https://github.com/sandervdbroek/abq2ccx/blob/main/docs/troubleshooting.md)).
|
|
184
|
+
* The converter checks structure, and physics on its benchmarks — not on your model. Run ccx
|
|
185
|
+
and sanity-check the results.
|
|
186
|
+
|
|
187
|
+
Validated on CalculiX 2.23 (the FreeCAD 1.1.4 build); written for 2.22–2.23.
|
|
188
|
+
|
|
189
|
+
## Examples
|
|
190
|
+
|
|
191
|
+
| File | Exercises |
|
|
192
|
+
| --- | --- |
|
|
193
|
+
| [`nle10_thickplate`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/nle10_thickplate.inp) | NAFEMS LE10: C3D20, `*NCOPY` + `*ELGEN`, `GEN`/`PERT`, `*DLOAD Px` |
|
|
194
|
+
| [`nle10_surface_elements`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/nle10_surface_elements.inp) | the same plate loaded through an `SFM3D8` skin → nodal forces |
|
|
195
|
+
| [`composite_shell`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/composite_shell.inp) | S8R composite layup, orthotropic, `*ORIENTATION`, `ENCASTRE`, `*DSLOAD` |
|
|
196
|
+
| [`composite_plate_s4r`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/composite_plate_s4r.inp), [`composite_plate_sc8r`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/composite_plate_sc8r.inp) | a simply supported cross-ply plate: composite `S4R` → `S8R`; composite `SC8R` → one `C3D8I` per ply |
|
|
197
|
+
| [`composite_inplane_s4r`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/composite_inplane_s4r.inp), [`composite_inplane_sc8r`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/composite_inplane_sc8r.inp) | an angle-ply laminate's in-plane stiffness; BCs interpolated onto the new nodes |
|
|
198
|
+
| [`assembly_two_blocks`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/assembly_two_blocks.inp) | two-instance assembly, an `instance.node` reference in a step |
|
|
199
|
+
| [`beam_circ_cantilever`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/beam_circ_cantilever.inp) | `B31` + `SECTION=CIRC` → `B32` with midside nodes, radius → diameters |
|
|
200
|
+
| [`beam_pipe_box_cantilever`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/beam_pipe_box_cantilever.inp) | `PIPE31` + `SECTION=PIPE` and `B32` + `SECTION=BOX` → `B32R` |
|
|
201
|
+
| [`beam_circ_rotation_bcs`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/beam_circ_rotation_bcs.inp) | circular-section beams with a held twist and a prescribed rotation → knot beams |
|
|
202
|
+
| [`beam_circ_explicit`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/beam_circ_explicit.inp) | a circular-section beam in `*DYNAMIC, EXPLICIT` → a maximum time increment |
|
|
203
|
+
| [`planar_pinned_beam`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/planar_pinned_beam.inp), [`planar_pinned_circ_beam`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/planar_pinned_circ_beam.inp) | planar `B21` beams in `*FREQUENCY` + `*BUCKLE` → planar constraint |
|
|
204
|
+
| [`beam_line_load_cantilever`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/beam_line_load_cantilever.inp) | `*DLOAD PY` / `P2` / `PZ` on `B31`, `B32` and a `CIRC` beam → nodal forces |
|
|
205
|
+
| [`beam_output_requests`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/beam_output_requests.inp) | output at `B32` nodes → `OUTPUT=2D`, `*NODE PRINT`, `*TIME POINTS` |
|
|
206
|
+
| [`coupling_shell_plate`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/coupling_shell_plate.inp), [`coupling_solid_plate`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/coupling_solid_plate.inp) | a rigid coupling on `S8R` nodes (knot beams) and its `C3D20R` reference |
|
|
207
|
+
| [`coupling_bc_bars`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/coupling_bc_bars.inp) | BCs on coupled nodes that the reference point imposes → taken off |
|
|
208
|
+
| [`rigid_body_bc_bars`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/rigid_body_bc_bars.inp) | BCs on `*RIGID BODY` nodes → moved to the reference node, as Abaqus does |
|
|
209
|
+
| [`equation_overconstraint`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/equation_overconstraint.inp) | an `*EQUATION` on a BC'd DOF, a duplicate and a loop of ties |
|
|
210
|
+
| [`mpc_beam_lever`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/mpc_beam_lever.inp), [`mpc_pin_tie_joints`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/mpc_pin_tie_joints.inp), [`mpc_link`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/mpc_link.inp) | `*MPC BEAM`, `PIN`, `TIE`, `LINK` |
|
|
211
|
+
| [`connector_hinge_beams`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/connector_hinge_beams.inp), [`connector_hinge_bodies`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/connector_hinge_bodies.inp), [`connector_ground_hinge`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/connector_ground_hinge.inp) | `CONN3D2` `HINGE` connectors between beams, rigid bodies and to ground |
|
|
212
|
+
| [`connector_transform_plate`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/connector_transform_plate.inp), [`connector_transform_join`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/connector_transform_join.inp) | `JOIN` / `LINK` connectors on nodes with a `*TRANSFORM` |
|
|
213
|
+
| [`mpc_transform`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/mpc_transform.inp) | `*MPC` `PIN`, `TIE` and `LINK` on nodes with a `*TRANSFORM` → local DOFs, twin nodes |
|
|
214
|
+
| [`op_new_respecify`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/op_new_respecify.inp), [`op_new_remove`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/op_new_remove.inp) | `*BOUNDARY, OP=NEW` after rotational BCs on beams and shells |
|
|
215
|
+
| [`distribution_solid_plate`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/distribution_solid_plate.inp), [`distribution_shell_plate`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/distribution_shell_plate.inp) | per-element `*DISTRIBUTION` orientations (solid, composite S8R); `*_explicit` are their one-orientation-per-element twins |
|
|
216
|
+
| [`thermal_expansion_cubes`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/thermal_expansion_cubes.inp) | isotropic `*Elastic` beside ORTHO / ANISO `*Expansion` |
|
|
217
|
+
| [`thermal_no_initial_temperature`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/thermal_no_initial_temperature.inp) | `*Temperature` without initial temperatures |
|
|
218
|
+
| [`cook_membrane_traction`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/cook_membrane_traction.inp), [`cylinder_traction_cax`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/cylinder_traction_cax.inp) | `*DSLOAD TRVEC` on `CPS8` and `CAX8` edges → nodal forces |
|
|
219
|
+
| [`traction_transformed_face`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/traction_transformed_face.inp), [`transform_spherical_rigid`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/transform_spherical_rigid.inp) | loads on `*TRANSFORM`ed nodes; a spherical transform; a transformed rigid-body reference point |
|
|
220
|
+
| [`transform_rotations`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/transform_rotations.inp) | 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) |
|
|
221
|
+
| [`velocity_bc_column`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/velocity_bc_column.inp), [`velocity_bc_bar`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/velocity_bc_bar.inp) | `*BOUNDARY, TYPE=VELOCITY` (implicit and explicit) |
|
|
222
|
+
| [`default_amplitude_bars`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/default_amplitude_bars.inp) | a displacement `*BOUNDARY` and a `*CLOAD` without an amplitude → ramped / stepped as in Abaqus (run as `*DYNAMIC`, `*VISCO`, coupled and explicit) |
|
|
223
|
+
| [`preselect_output_bar`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/preselect_output_bar.inp), [`explicit_default_output_bar`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/explicit_default_output_bar.inp), [`preselect_contact_blocks`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/preselect_contact_blocks.inp) | Abaqus' preselected and default output |
|
|
224
|
+
| [`cps4i_slab_bending`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/cps4i_slab_bending.inp) | a `CPS4I` cantilever under an end couple → `C3D8I` slabs (also run as `CPE4I`) |
|
|
225
|
+
| [`shell_pressure_sides`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/shell_pressure_sides.inp) | `*DSLOAD P` on a shell's `SPOS` / `SNEG` side and an element-based `P` |
|
|
226
|
+
| [`kinematic_all_dofs`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/kinematic_all_dofs.inp) | a bare `*Coupling` + `*Kinematic` (all DOFs) on a solid face, against `*RIGID BODY` |
|
|
227
|
+
| [`assembly_rotated_instances`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/assembly_rotated_instances.inp), [`…_flat`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/assembly_rotated_instances_flat.inp) | a turned instance with an oriented orthotropic material, against the same model written flat |
|
|
228
|
+
| [`damage_johnson_cook_cubes`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/damage_johnson_cook_cubes.inp) | a Johnson-Cook `*DAMAGE INITIATION` → ccx's form, reporting `DUCT` |
|
|
229
|
+
| [`rigid_punch_block`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/rigid_punch_block.inp), [`rigid_punch_cylinder`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/rigid_punch_cylinder.inp), [`rigid_body_inertia`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/rigid_body_inertia.inp) | 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 |
|
|
230
|
+
| [`coverage_kitchen_sink`](https://github.com/sandervdbroek/abq2ccx/blob/main/examples/coverage_kitchen_sink.inp) | element substitutions, dropped and commented cards, output-variable mapping |
|
|
231
|
+
|
|
232
|
+
## Tests
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
python tests/test_convert.py # unit tests, no solver needed
|
|
236
|
+
python validate_with_ccx.py # end-to-end checks in CalculiX
|
|
237
|
+
python corpus/fetch.py && python tests/test_corpus.py # the corpus
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
[Testing](https://github.com/sandervdbroek/abq2ccx/blob/main/docs/testing.md) describes the three layers; GitHub Actions run the first two on
|
|
241
|
+
every push, the unit tests on Linux, macOS and Windows.
|
|
242
|
+
|
|
243
|
+
## Documentation
|
|
244
|
+
|
|
245
|
+
* [User guide](https://github.com/sandervdbroek/abq2ccx/blob/main/docs/user-guide.md) — options, workflow, reading the report, the Python API.
|
|
246
|
+
* [Troubleshooting](https://github.com/sandervdbroek/abq2ccx/blob/main/docs/troubleshooting.md) — ccx errors and results that look wrong.
|
|
247
|
+
* [Compatibility](https://github.com/sandervdbroek/abq2ccx/blob/main/docs/compatibility.md) — the Abaqus/CalculiX facts the converter relies
|
|
248
|
+
on, ccx 2.23 issues, and what does not convert.
|
|
249
|
+
* [Testing](https://github.com/sandervdbroek/abq2ccx/blob/main/docs/testing.md) · [Architecture](https://github.com/sandervdbroek/abq2ccx/blob/main/docs/architecture.md) ·
|
|
250
|
+
[Changelog](https://github.com/sandervdbroek/abq2ccx/blob/main/CHANGELOG.md)
|
|
251
|
+
* Generated references: [keywords](https://github.com/sandervdbroek/abq2ccx/blob/main/docs/keyword-reference.md) ·
|
|
252
|
+
[elements](https://github.com/sandervdbroek/abq2ccx/blob/main/docs/element-reference.md) · [output variables](https://github.com/sandervdbroek/abq2ccx/blob/main/docs/output-reference.md)
|
|
253
|
+
|
|
254
|
+
## Sources
|
|
255
|
+
|
|
256
|
+
* CalculiX CrunchiX User's Manual v2.23 — <https://www.dhondt.de/ccx_2.23.pdf>, v2.22 —
|
|
257
|
+
<https://www.dhondt.de/ccx_2.22.pdf>, v2.7 (HTML) —
|
|
258
|
+
<https://web.mit.edu/calculix_v2.7/CalculiX/ccx_2.7/doc/ccx/ccx.html>
|
|
259
|
+
* `calculix/new_keywords` (Abaqus↔CalculiX keyword delta) — <https://github.com/calculix/new_keywords>
|
|
260
|
+
* `calculix/cae` (CalculiX keyword model) — <https://github.com/calculix/cae>
|
|
261
|
+
* "A Guide to Modifying Abaqus Input Files for Use in CalculiX" —
|
|
262
|
+
<https://calculix.discourse.group/t/a-guide-to-modifying-abaqus-input-files-for-use-in-calculix/1430>
|
|
263
|
+
* CalculiX Discourse — <https://calculix.discourse.group/> · PrePoMax forum —
|
|
264
|
+
<https://prepomax.discourse.group/>
|
|
265
|
+
|
|
266
|
+
[Compatibility](https://github.com/sandervdbroek/abq2ccx/blob/main/docs/compatibility.md#sources) lists the Abaqus manual pages behind
|
|
267
|
+
individual facts.
|
|
268
|
+
|
|
269
|
+
## License
|
|
270
|
+
|
|
271
|
+
[MIT](https://github.com/sandervdbroek/abq2ccx/blob/main/LICENSE) © Sander van den Broek. `abq2ccx` is an independent tool, not affiliated
|
|
272
|
+
with or endorsed by Dassault Systèmes (Abaqus) or the CalculiX project. The test corpus is
|
|
273
|
+
fetched on demand and **not** redistributed here; each deck keeps its own upstream license,
|
|
274
|
+
recorded in [`corpus/manifest.py`](https://github.com/sandervdbroek/abq2ccx/blob/main/corpus/manifest.py).
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
abq2ccx.py,sha256=z-GhVbW-jINN3xfuUNxmCJnLP13maqn8_s9cVoBVyuY,1224115
|
|
2
|
+
abq2ccx-1.2.0.dist-info/licenses/LICENSE,sha256=8jvWVvk4wlVxtBEfYiEs3ltBl5m5Mw6vSa8c902uPZM,1077
|
|
3
|
+
abq2ccx-1.2.0.dist-info/METADATA,sha256=bsbr66xq0DrDMgvn1NJ5zB_Y4WMfogHogZ5EE-jHfAs,25840
|
|
4
|
+
abq2ccx-1.2.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
|
|
5
|
+
abq2ccx-1.2.0.dist-info/entry_points.txt,sha256=GnbVpM5icbXVMsl-6WBofZq_j_81Izh9JJcyak6-xyU,41
|
|
6
|
+
abq2ccx-1.2.0.dist-info/top_level.txt,sha256=Joha2AhyssOvhCowVMuhiM-l1I3He9MUEG8nQk1uwm8,8
|
|
7
|
+
abq2ccx-1.2.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Sander van den Broek
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
abq2ccx
|