Micropp is a 3-D Finite Element (FEM) code for solving solid mechanics problems for modeling micro-scale effects in composite materials.
The code solve the equilibrium equations at Representative Volume Elements (RVE) to calculate average properties (stresses and constitutive tensors) for multi-scale simulations:
The code is mainly designed to be coupled with codes for modeling with FEM the macro-scale, e.g. a wing of an aircraft.
The code has been ported to GPUs to accelerate the calculation of the micro-scale problems.
- Works with 3-D structured FE elements problems
- OpenACC and CUDA (under development in
cuda
branch) acceleration support for GPUs - OpenMP support for multi-core CPUs
- Solver: Diagonal Preconditioned Conjugate Gradients (DPCG)
- More than 10 micro-structures patterns and 3 material laws (elastic, damage and plastic)
- No external libraries are required
- Native instrumentation to measure performance
- C and Fortran Wrappers for coupling Micropp with external codes
The peformance using the hybrid CPU/GPU execution in notably better than CPU-only:
For hybrid CPU/GPU the parallelization with CUDA has proven better perfomance than OpenACC:
Currently CUDA acceleration only works with some parts of the code and has not been completely integrated.
CMake has a certain rules for searching the compiler available in your system if a specific compiler is needed the following environmental variables should be set. E.g. in Bash:
export CC=<path-to-C-compiler>
export CXX=<path-to-C++-compiler>
export FC=<path-to-Fortran-compiler>
git clone [email protected]:gagiuntoli/Micropp.git
cd Micropp
mkdir <build-dir>
cd <build-dir>
cmake ..
make
It is suggested to use the graphical ccmake
tool for setting the
configuration options. After executing on the <build-dir>
the
command:
ccmake .
The following menu with the default options appears:
CMAKE_BUILD_TYPE
CMAKE_INSTALL_PREFIX /usr/local
ENABLE_CUDA OFF
ENABLE_OPENACC OFF
ENABLE_OPENMP OFF
ENABLE_TIMER OFF
In straightforware manner it is possible to toggle across the
different options using the arrows and Enter
keys and finalizing by
pressing c
and g
keys.
Also the options can be set in the first called to cmake
, e.g.:
cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_CUDA=On
- Finalize and optimize CUDA integration
- Refactoring of the entired code
- Add in the CI environment with more compilers to the tests
- Implement Periodic and Uniform Stress BCs (numerical method)