-
Notifications
You must be signed in to change notification settings - Fork 89
Building with SCOREC
This page explains the various options for compiling Albany with SCOREC tools for adaptivity.
The SCOREC tools strongly recommend the ParMETIS TPL, which they use through Zoltan. @ibaned actually has a clone of the ParMETIS 4.0.3 repository with a much-improved CMake build system and the index types set to 64-bit by default:
https://github.com/ibaned/parmetis
If you use that copy of ParMETIS, here is a sample
do-configure
script:
#!/bin/bash
cmake $HOME/src/parmetis \
-DCMAKE_INSTALL_PREFIX=$HOME/install/gcc/parmetis \
-DCMAKE_C_COMPILER=$HOME/install/gcc/mpich/bin/mpicc \
-DCMAKE_CXX_COMPILER=$HOME/install/gcc/mpich/bin/mpicxx \
-DCMAKE_C_FLAGS="-O2" \
-DCMAKE_CXX_FLAGS="-O2" \
-DBUILD_SHARED_LIBS=ON \
2>&1 | tee config_log
An easy way to install the SCOREC tools is as part of Trilinos. You can clone the SCOREC repository into the Trilinos repository:
cd Trilinos
git clone [email protected]:SCOREC/core.git SCOREC
After which it should be as simple adding
-DTrilinos_ENABLE_SCOREC:BOOL=ON
to your Trilinos do-configure
script,
as well as pointing it to the right ParMETIS TPL location like this:
-DTPL_ENABLE_ParMETIS:STRING=ON \
-DParMETIS_INCLUDE_DIRS:PATH=$HOME/install/gcc/parmetis/include \
-DParMETIS_LIBRARY_DIRS:PATH=$HOME/install/gcc/parmetis/lib \
If SCOREC was built as part of Trilinos, then just add
-DENABLE_SCOREC:BOOL=ON
to your Albany do-configure
script.
You can also build SCOREC outside the Trilinos tree.
In that case, a possible do-configure
script for
the SCOREC repository looks like this:
#!/bin/bash
cmake $HOME/src/core \
-DCMAKE_CXX_COMPILER:FILEPATH=$HOME/install/gcc/mpich/bin/mpicxx \
-DCMAKE_C_COMPILER:FILEPATH=$HOME/install/gcc/mpich/bin/mpicc \
-DCMAKE_INSTALL_PREFIX:PATH=$HOME/install/gcc/core \
-DBUILD_SHARED_LIBS:BOOL=ON \
-DENABLE_ZOLTAN:BOOL=ON \
-DZOLTAN_PREFIX:PATH=$HOME/install/gcc/Trilinos \
-DPARMETIS_PREFIX:PATH=$HOME/install/gcc/parmetis \
-DENABLE_STK:BOOL=ON \
-DENABLE_STK_MESH:BOOL=ON \
-DTrilinos_PREFIX:PATH=$HOME/install/gcc/Trilinos \
2>&1 | tee config_log
The Omega_h mesh adaptation library can be found here:
https://github.com/ibaned/omega_h
A sample do-configure
script for Omega_h is as follows:
#!/bin/bash
cmake $HOME/src/omega_h \
-DCMAKE_INSTALL_PREFIX:PATH=$HOME/install/gcc/omega_h \
-DBUILD_SHARED_LIBS:BOOL=ON \
-DCMAKE_CXX_COMPILER:FILEPATH=$HOME/install/gcc/mpich/bin/mpicxx \
-DOmega_h_USE_MPI:BOOL=ON \
2>&1 | tee config_log
Omega_h should be compiled before SCOREC and Albany,
and SCOREC will have to be compiled outside Trilinos,
with the following lines added to the SCOREC do-configure
:
-DENABLE_OMEGA_H:BOOL=ON \
-DOmega_h_PREFIX:PATH=$HOME/install/gcc/omega_h-kokkos \
Likewise, Albany will need to know where Omega_h is, which
you can specify with this line in the Albany do-configure
:
-DALBANY_OMEGA_H_DIR:PATH=$HOME/install/gcc/omega_h \