Skip to content

Commit 48fb520

Browse files
lucask81andrea-iob
authored andcommitted
patchkernel: implement automatic mesh partitioning using METIS
1 parent 8760303 commit 48fb520

File tree

8 files changed

+879
-10
lines changed

8 files changed

+879
-10
lines changed

.travis.yml

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ addons:
2020
- libopenmpi-dev
2121
- libpetsc3.6
2222
- libpetsc3.6.2-dev
23+
- metis
2324

2425
env:
2526
global:

CMakeLists.txt

+24-1
Original file line numberDiff line numberDiff line change
@@ -595,7 +595,11 @@ set(LA_EXTERNAL_DEPS "PETSc")
595595
set(SA_EXTERNAL_DEPS "")
596596
set(CG_EXTERNAL_DEPS "")
597597
set(PABLO_EXTERNAL_DEPS "")
598-
set(PATCHKERNEL_EXTERNAL_DEPS "")
598+
if (BITPIT_ENABLE_MPI)
599+
set(PATCHKERNEL_EXTERNAL_DEPS "METIS")
600+
else()
601+
set(PATCHKERNEL_EXTERNAL_DEPS "")
602+
endif()
599603
set(SURFUNSTRUCTURED_EXTERNAL_DEPS "")
600604
set(VOLCARTESIAN_EXTERNAL_DEPS "")
601605
set(VOLOCTREE_EXTERNAL_DEPS "")
@@ -730,6 +734,7 @@ set(BLAS_LANGUAGES "Fortran")
730734
set(CBLAS_LANGUAGES "C")
731735
set(LAPACK_LANGUAGES "Fortran")
732736
set(LAPACKE_LANGUAGES "C")
737+
set(METIS_LANGUAGES "C")
733738
set(PETSC_LANGUAGES "Fortran;C")
734739

735740
foreach(DEP_NAME IN LISTS EXTERNAL_DEPS)
@@ -901,6 +906,24 @@ if (${_BoostTest_index} GREATER -1)
901906
endif()
902907
unset(_BoostTest_index)
903908

909+
list(FIND EXTERNAL_DEPS "METIS" _METIS_index)
910+
if (${_METIS_index} GREATER -1)
911+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/external/METIS/cmake")
912+
913+
find_package(METIS)
914+
915+
if (METIS_FOUND)
916+
list (APPEND BITPIT_EXTERNAL_DEPENDENCIES "METIS")
917+
list (APPEND BITPIT_EXTERNAL_VARIABLES_LIBRARIES "METIS_LIBRARIES")
918+
list (APPEND BITPIT_EXTERNAL_VARIABLES_INCLUDE_DIRS "METIS_INCLUDE_DIRS")
919+
addPrivateDefinitions("BITPIT_ENABLE_METIS=1")
920+
else()
921+
addPrivateDefinitions("BITPIT_ENABLE_METIS=0")
922+
message(STATUS "METIS library not found, default patch partitioning support will be disabled.")
923+
endif()
924+
endif()
925+
unset(_METIS_index)
926+
904927
set(BITPIT_EXTERNAL_LIBRARIES "")
905928
foreach (VARIABLE_NAME IN LISTS BITPIT_EXTERNAL_VARIABLES_LIBRARIES)
906929
list (APPEND BITPIT_EXTERNAL_LIBRARIES "${${VARIABLE_NAME}}")

external/CMakeLists.txt

+3
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,6 @@ add_subdirectory(LAPACKE)
99

1010
# PETSc
1111
add_subdirectory(PETSc)
12+
13+
# METIS
14+
add_subdirectory(METIS)

external/METIS/CMakeLists.txt

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Specify the version being used as well as the language
2+
cmake_minimum_required(VERSION 3.10)
3+
4+
#------------------------------------------------------------------------------------#
5+
# CMake targets
6+
#------------------------------------------------------------------------------------#
7+
add_custom_target(clean-external-metis COMMAND ${CMAKE_MAKE_PROGRAM} clean WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
8+
9+
install(FILES "cmake/FindMETIS.cmake" DESTINATION "${CMAKE_INSTALL_PREFIX}/${BITPIT_INSTALL_CMAKE_DIR}")

0 commit comments

Comments
 (0)