This is the vanilla CalculiX project (forked from v2.15) with a few improvments and additions as follows:
- IMPACT-based multiphysics coupling module (CSC)
- CMake-based build system
- Homogenization module
- ExodusII output and GPU solver support (GPU is not completely tested, using patches released by Peter A. Gustafson on 8/14/2019).
Version 2.15.2
The project follows the versioning convention of the original CalculiX. The versioning will be major.minor.patch and increments are as following:
- major: shows major version of the CalculiX project
- minor: shows minor version of the CalculiX project
- patch: will be incremented as we release more functionality to the project
The following table contains all available CMake options to configure the project. The necessary third-party libraries are listed in the notes section.
Option name | Option description | Default | Notes |
---|---|---|---|
ENABLE_TESTING | Enable Testing system | ON | |
ENABLE_PAR | Enable MPI support | ON | Requires MPI compiler |
ENABLE_CSC | Enable coupling client | ON | Requires IMPACT |
ENABLE_CFD_SUPPORT | Enable offline CFD data I/O | OFF | Requires flann |
First install project dependencies. For Ubuntu systems:
sudo apt install libarpack2-dev libspooles-dev libexodusii-dev libboost-serialization-dev libboost-iostreams-dev libflann-dev libspooles-dev libarpack2-dev
For CentOS systems (make sure EPEL repository is installed):
sudo yum install arpack-devel exodusii-devel boost-serialization boost-iostreams boost-devel flann-devel
You will need to build the IMPACT dependency from source:
- IMPACT (available at here)
For instructions regarding building IMPACT please refer to here. In case other libraries needed to be compiled from source:
Now, you can compile the project:
$ export IMPACT_INSTALL_PATH=full_path_to_impact_install_dir
$ mkdir build
$ cd build
$ cmake .. \
-DCMAKE_PREFIX_PATH=${IMPACT_INSTALL_PATH} \
-DBUILD_SHARED_LIBS=ON
$ make -j$(nproc)
$ make install
if you have manually compiled ARPACK and SPOOLES, and they are not installed on default system location then you can make specify the location of the projects before running cmake:
$ export SPOOLES_DIR=full_path_to_spooles_root_dir
$ export ARPACK_DIR=full_path_to_arpack_root_dir
$ cmake ..
$ make -j$(nproc)
$ make install
then, you can test the project by:
make test
and tests pass, you can install by:
make install
NOTE: These instructions are adopted from the standard ARPACK installation guide.
Before you can compile anything, you must first edit and correct the file ARmake.inc
. Sample ARmake.inc's can be found in the ARMAKES directory. We recommend at least following changes:
- set the definition
home
to the root of the source tree (Top level of ARPACK directory). - set
PLAT
toPLAT = x64
- set
FFLAG
toFFLAG = -O3
- make sure
MAKE
is set to full path of themake
command (find full path by typingwhich make
in shell)
Once changes are applied make the library by running
$ make lib
Depending on your environment, additional adjustments can be performed. Please consult README
in the ARPACK folder for more details.
NOTE: These instructions are adopted from the standard SPOOLES installation guide.
Before you can compile anything, you must first edit and correct the file Make.inc
and timings.h
. We recommend at least following changes:
- uncomment and set
CC
to the full path of yourmpicc
compiler - set
OPTLEVEL
toOPTLEVEL = -O3
- set
CFLAGS
toCFLAGS = $(OPTLEVEL) -fPIC
- set
MPI_INSTALL_DIR
to the fullpath location of your MPI library (for Ubuntu users with OpenMPI it will be/usr/lib/x86_64-linux-gnu/openmpi/
) - set
MPI_LIB_PATH
to emptyMPI_LIB_PATH =
- set
MPI_LIBS
toMPI_LIBS = $(MPI_LIB_PATH) -lpthread
Change timings.h
to:
#ifndef _TIMINGS_
#define _TIMINGS_
#include <sys/time.h>
static struct timeval TV ;
//static struct timezone TZ ;
#define MARKTIME(t) \
gettimeofday(&TV, NULL) ; \
t = (TV.tv_sec + 0.000001*TV.tv_usec)
#endif
Once changes are applied make the library by running
$ make lib
Note, this option requires the Perl language installed on the system. Note that this option makes the serial version of the library. We recommend Multithread (MT) or MPI version of the library for use with CalculiX. To make the MT version, in the base SPOOLES folder run:
$ cd MT/src
$ make -f makeGlobalLib
for MPU version, in the base SPOOLES folder run:
$ cd MPI/src
$ make -f makeGlobalLib
Depending on your environment, additional adjustments can be performed. Please consult SPOOLES documentation (available here) for details.