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
*ASSEMBLYand 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
*SYSTEMkeyword used in Abaqus when the input file is written without using parts and instances.
NAMEparameter from the
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=PRESELECTwith 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 NODEparameter while CalculiX also uses
ROT NODE(reason above)
ROT NODEparameters require node numbers, not node set names. The same applies to the
REF NODEparameter 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
TIE NSETfor pinned and tied nodes while CalculiX uses just
In Abaqus, the data line of the
*KINEMATICkeyword is empty by default but in CalculiX it requires specifying the degrees of freedom (1-3). The
WEIGHTING METHODparameter used in Abaqus with
*DISTRIBUTINGis not supported in CalculiX.
*SURFACE INTERACTIONkeyword 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
ENCASTREused in Abaqus.
*DSLOADkeyword 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 as
TRSHR, and so on) as well as a stress-driven boundary for submodeling. In CalculiX this keyword is used only for pressure load (only label
Pis supported) or stress-based submodeling.
*DLOADkeyword 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 (
PxNUy), shell edge load (
EDNORx), centrifugal load (
CENTRIF), gravity load (
*FREQUENCYkeyword has different parameters in Abaqus.
NORMALIZATIONparameters won’t be recognized by CalculiX.
*BUCKLEkeyword uses different data line entries. In Abaqus it’s:
SUBSPACE(default) solver: number of eigenvalues, maximum eigenvalue of interest, number of vectors in iteration, maximum number of iterations
LANCZOSsolver: 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
*SHELL SECTIONkeyword 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=CIRClike 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:
*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
*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
LOAD CASEparameter used with the
*BOUNDARYkeyword 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
*CLOADkeyword in random response analyses. In CalculiX it’s used with
*DLOADkeywords for the same purpose as with the
*BOUDNARYkeyword - to specify real and imaginary loading in SSD analyses. In Abaqus, this is done using separate parameters named
TYPEparameter used with the
*BOUNDARYkeyword 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
*DYNAMICkeyword to control time incrementation. CalculiX supports only the
Mass scaling is defined in Abaqus using
*FIXED MASS SCALINGand
*VARIABLE MASS SCALINGkeywords. In CalculiX, it’s defined by just specifying the desired minimum time increment as a third parameter under the
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.