It’s often the case that someone has experience with Abaqus and starts using CalculiX. The keyword syntax of both codes is largely compatible but of course, there are some differences. You should compare the Keywords section of Abaqus documentation and the Input deck format section of CalculiX’s manual (http://www.dhondt.de/ccx_2.20.pdf) whenever in doubt but I would like to share a few tips to make the transition from Abaqus to CalculiX a bit easier:
-
First of all, make sure that all features used in your Abaqus model are supported in CalculiX. Examples of unsupported features include general contact, connectors, several types of analyses, many advanced material models, special-purpose elements, and so on. A list of features supported in CalculiX can be found here: CalculiX: Overview of the finite element capabilities of CalculiX Version 2.20
-
Before exporting input files from Abaqus (Write Input) check Do not use parts and assemblies in input files in Model → Edit Attributes. That’s because CalculiX doesn’t support
*PART
,*INSTANCE
,*ASSEMBLY
and other keywords related to the concept of parts and assemblies in Abaqus. -
Avoid moving and rotating instances in the Assembly module in Abaqus. Place them where they were initially created. That’s because CalculiX doesn’t support the
*SYSTEM
keyword used in Abaqus when the input file is written without using parts and instances. -
Remove the
*PREPRINT
keyword. -
Remove the
NAME
parameter from the*STEP
keyword. -
Remove the default restart request of dynamic explicit analysis or change it to
*RESTART, WRITE, FREQUENCY=1
. Keep in mind that to use restart in CalculiX you have to rename the “jobname.rout” file to “jobname_new.rin”. -
Replace the default output requests like
*OUTPUT, FIELD, VARIABLE=PRESELECT
with standard CalculiX output requests like:
*NODE FILE
U
*EL FILE
S,E
- Syntax of rigid body constraints is a bit different:
- in CalculiX, you need an additional node with arbitrary coordinates (can be the same as those of the ref node) to serve as a rot node
- in Abaqus, there’s only a
REF NODE
parameter while CalculiX also usesROT NODE
(reason above) - both
REF NODE
andROT NODE
parameters require node numbers, not node set names. The same applies to theREF NODE
parameter used for coupling constraints. - rotational degrees of freedom are handled by
ROT NODE
(its DOFs 1-3 are in fact DOFs 4-6) - Abaqus uses
PIN NSET
andTIE NSET
for pinned and tied nodes while CalculiX uses justNSET
-
In Abaqus, the data line of the
*KINEMATIC
keyword is empty by default but in CalculiX it requires specifying the degrees of freedom (1-3). TheWEIGHTING METHOD
parameter used in Abaqus with*DISTRIBUTING
is not supported in CalculiX. -
The
*SURFACE INTERACTION
keyword in Abaqus has a data line for out-of-plane thickness for 2D models while in CalculiX it’s not used. -
CalculiX doesn’t support predefined boundary condition types such as
XSYMM
,PINNED
andENCASTRE
used in Abaqus. -
The
*DSLOAD
keyword is supported in both Abaqus and CalculiX but the latter code supports it to a limited extent. In Abaqus this keyword can be used to define surface-based loading: pressure, surface traction or shell edge load (using several special labels such asP
,TRVEC
,TRSHR
, and so on) as well as a stress-driven boundary for submodeling. In CalculiX this keyword is used only for pressure load (only labelP
is supported) or stress-based submodeling. -
The
*DLOAD
keyword in Abaqus can be used to specify element-based loadings such as pressure, surface traction, shell edge load and body loads (using several special labels such as those mentioned before and additional ones). In CalculiX only the following load types and labels are supported: pressure (Px
,PxNUy
), shell edge load (EDNORx
), centrifugal load (CENTRIF
), gravity load (GRAV
). -
The
*FREQUENCY
keyword has different parameters in Abaqus.EIGENSOLVER
,ACOUSTIC COUPLING
andNORMALIZATION
parameters won’t be recognized by CalculiX. -
The
*BUCKLE
keyword uses different data line entries. In Abaqus it’s:
- for
SUBSPACE
(default) solver: number of eigenvalues, maximum eigenvalue of interest, number of vectors in iteration, maximum number of iterations - for
LANCZOS
solver: number of eigenvalues, minimum eigenvalue, maximum eigenvalue, block size, maximum number of block Lanczos steps within each run
While in CalculiX it’s: number of eigenvalues, accuracy, number of Lanczos vectors calculated in each iteration, maximum number of iterations
-
The
*SHELL SECTION
keyword in Abaqus has 2 entries within the data line if a homogenous shell is defined: thickness, number of integration points through thickness. CalculiX uses only the first one. -
Abaqus supports several different beam sections. CalculiX supports only rectangular, elliptical, pipe, box and general sections. The elliptical section is defined with the parameter
SECTION=CIRC
like a circular section in Abaqus. However, the data line is different. In Abaqus, one specifies the radius of the circular section while in CalculiX the data line consists of the length of the principal axes of the ellipse. The circular section can be defined by omitting the second entry and specifying only the first one - diameter (as opposed to the radius used in Abaqus). As a side note, Abaqus doesn’t have predefined elliptical beam sections. The general beam section is defined differently in CalculiX:
- Abaqus:
*ELEMENT, TYPE=standard_beam_element
...
*BEAM GENERAL SECTION, ELSET=..., SECTION=GENERAL
A, I_11, I_12, I_22, J, T_0, T_w
direction_1, direction_2, direction_3
E, G
- CalculiX:
*ELEMENT, TYPE=U1
...
*USER ELEMENT, TYPE=U1, NODES=2, INTEGRATION POINTS=2, MAXDOF=6
*BEAM SECTION, ELSET=..., MATERIAL=..., SECTION=GENERAL
A, I_11, I_12, I_22, k
direction_1, direction_2, direction_3
-
The
LOAD CASE
parameter used with the*BOUNDARY
keyword serves a different purpose in Abaqus and CalculiX. Abaqus uses it only for linear buckling analyses while CalculiX uses it only for steady-state dynamics. The same parameter can be used in Abaqus with the*CLOAD
keyword in random response analyses. In CalculiX it’s used with*CLOAD
and*DLOAD
keywords for the same purpose as with the*BOUDNARY
keyword - to specify real and imaginary loading in SSD analyses. In Abaqus, this is done using separate parameters namedREAL
andIMAGINARY
. -
The
TYPE
parameter used with the*BOUNDARY
keyword in Abaqus is not supported in CalculiX. The only mechanical boundary conditions available in CalculiX are displacements and rotations, not velocities and accelerations. -
Dynamic implicit analysis in Abaqus supports several different parameters added to the
*DYNAMIC
keyword to control time incrementation. CalculiX supports only theDIRECT
andALPHA
ones. -
Mass scaling is defined in Abaqus using
*FIXED MASS SCALING
and*VARIABLE MASS SCALING
keywords. In CalculiX, it’s defined by just specifying the desired minimum time increment as a third parameter under the*DYNAMIC
keyword. -
CalculiX supports only a subset of output variables available in Abaqus. Their list can be found in the 6.13. Output variables section of the CalculiX manual and should be compared with the Output → Output Variables section of Abaqus documentation. The differences and CalculiX’s limitations are particularly significant when it comes to energy output.