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.
cmake -B build \
-DCMAKE_BUILD_TYPE=[Debug|Release] \
-DENABLE_CUDA=[On|Off] \
-DENABLE_OPENACC=[On|Off] \
-DENABLE_OPENMP=[On|Off] \
-DENABLE_TIMER=[On|Off]
cmake --build build
ctest --test-dir build
- 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.