Troubleshooting the CalculiX adapter
This list is definitely not complete. If after reading this, you still have issues, please ask in the preCICE forum.
Things to check
- Are you using the same version of CalculiX and of the CalculiX adapter? The adapter installation works by replacing files of the original CalculiX, so they should be compatible.
- Can you manually run the
ccx_preCICEbinary?- It should be in your
$PATH - If autocompletion does not work (e.g.
ccx_+ TAB key), then it is probably not in your$PATH.
- It should be in your
- Our tutorials also require CGX (pre- and post-processor of CalculiX).
- Is CGX installed?
- Is OpenGL (required by CGX) installed?
Compiling with GCC 10 or newer
If you compile the adapter (v2.20.1 or earlier) with GCC 10 or newer, you will get the following error, originating from CalculiX:
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
To work around this, you need to add -fallow-argument-mismatch to the FFLAGS inside Makefile:
- FFLAGS = -Wall -O3 -fopenmp $(INCLUDES)
+ FFLAGS = -Wall -O3 -fopenmp -fallow-argument-mismatch $(INCLUDES)
Compiling with Intel OneAPI
If you compile the adapter with Intel OneAPI, you will get the following error at link time, originating from CalculiX:
undefined reference to MAIN__
To work around this, you need to add the -nofor-main to the FFLAGS inside Makefile. The easiest way is to define ADDITIONAL_FFLAGS:
ADDITIONAL_FFLAGS="-nofor-main` make
to specify that the main program is not written in Fortran. Read more in the Intel compiler reference.
Undefined references to SPOOLES functions
On systems where both spoolesMT.a (multithreading) and spooles.a are available, you might get undefined references to SPOOLES. In that case, you might need to modify SPOOLES_LIBS in the Makefile to include the paths to both spoolesMT.a and to spooles.a, in this order. See the Makefile_MT file of CalculiX.