# Calculix Extras

**Thank you for your interest in CalculiX Extras.

Extensions written by Peter A. Gustafson.

Current patch level - 2.17

# Capabilities

## CalculiX Extras builds on the CalculiX v2.17 code base

• It adds CUDA based solvers. Please note this is research level code. It is considered a stable code but must be used with due diligence.
• Currently, these solvers can be called for static analysis in mechanical models in CalculiX.
• Cuda-Cusp
• (Outstanding performance for appropriate models.)
• SuiteSparse Cholmod
• (Modest performance at last testing in ccx version 2.11. However, since then CUDA has been added to Cholmod and it has not been subsequently testing with CalculiX Extras)
• It extends CalculiX to write results into ExodusII format. Postprocessing can be accomplished with several readers. A recommended postprocessor is Paraview.

# Build Instructions

These instructions are limited. They assume you are able to build CalculiX from source. Warning: building all these libraries from source can be a challenge for seasoned developers. Ubuntu specific instructions can be found at CalculiX Extras for Ubuntu

1. Choose your extra: exo, solver, or both
1. Cuda-Cusp (The cuda based solver requires an install of Nvidia’s CUDA SDK and libs
2. SuiteSparse (which includes Cholmod )
wget https://openaircraft.com/assets/code/calculix/ccx_2.17.src.tar.bz2

wget https://openaircraft.com/assets/code/calculix/ccx_extras.2.17.Makefile.patch
wget https://openaircraft.com/assets/code/calculix/ccx_extras.2.17.exo.patch
wget https://openaircraft.com/assets/code/calculix/ccx_extras.2.17.solver.patch

4. Unpack ccx_2.17.src.tar.bz2
tar xavf ccx_2.17.src.tar.bz2

5. Patch the Makefile
cd CalculiX/ccx_2.17
patch -p2 < ../../ccx_extras.2.17.Makefile.patch

6. Apply patches your extra: exo, solver, or both (order of patch application doesn’t matter)
patch -p2 < ../../ccx_extras.2.17.exo.patch
patch -p2 < ../../ccx_extras.2.17.solver.patch

7. Modify the Makefile based on the locations of your libraries
cd src
emacs Makefile

8. Make
make

9. Send bug reports to peter.gustafson@wmich.edu

# FAQ

• But you must be able to compile ccx (without my patches) first.
• See the first line of the build instructions… this can be tough and this is the minimum starting point for support from me.
• (PS The ccx mailing list is great.)
• If you’ve not yet made an attempt, please try before you contact me. See the FAQ to understand my reasoning…

# Usage

• The solvers can be called using the *static keyword:
*static, solver=cudacusp
*static, solver=cholmod

• ExodusII output format is called on job execution using the command line.
ccx -i jobname -o exo


# Benchmarking

• I’m happy to collaborate with others who are interested in further benchmarking.
• Benchmarking will be highly dependent on hardware and software configuration.
• I’m seeking additional “real world” models for use in benchmarking.
• An NSF grant to WMU funded the hardware used for benchmarking.

# Known Bugs and Functional Deficits

• The solvers have only been applied to static solid mechanics models.
• The solvers have have not been actively tested since version 2.11 so your mileage may vary.
• There are known limitations for output requests with ExodusII
• Several output requests to ExodusII format are untested.
• It is not currently possible to change output requests between steps
• Node sets are partially implemented but element sets are not implemented
• Developing for CalculiX
• Doxygen was used to generate documentation which may help with development for CalculiX. The documentation is here. Note also the user documentation for ccx and cgx.