3D EM based on Schur decomposition
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CMakeLists.txt 3.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. # Configure EMSchur3D
  2. set(EMSCHUR3D_VERSION_MAJOR "0")
  3. set(EMSCHUR3D_VERSION_MINOR "0")
  4. set(EMSCHUR3D_VERSION_PATCH "1")
  5. set(EMSCHUR3D_VERSION "\"${EMSCHUR3D_VERSION_MAJOR}.${EMSCHUR3D_VERSION_MINOR}.${EMSCHUR3D_VERSION_PATCH}\"")
  6. set(EMSCHUR3D_VERSION_NOQUOTES "${EMSCHUR3D_VERSION_MAJOR}.${EMSCHUR3D_VERSION_MINOR}.${EMSCHUR3D_VERSION_PATCH}")
  7. option ( LEMMA_MODULE_EMSCHUR3D TRUE )
  8. find_package( SuperLU )
  9. if (SUPERLU_FOUND)
  10. message( STATUS "SuperLU was found" )
  11. add_compile_options(-DHAVE_SUPERLU)
  12. INCLUDE_DIRECTORIES(${SUPERLU_INCLUDES})
  13. endif()
  14. find_package( PaSTiX )
  15. if ( PASTIX_FOUND )
  16. message( STATUS "PaSTiX was found" )
  17. add_compile_options(-DHAVE_PASTIX)
  18. INCLUDE_DIRECTORIES(${PASTIX_INCLUDES})
  19. endif()
  20. find_package( Umfpack )
  21. if ( UMFPACK_FOUND )
  22. message( STATUS "Umfpack was found" )
  23. add_compile_options(-DHAVE_UMFPACK)
  24. INCLUDE_DIRECTORIES(${UMFPACK_INCLUDES})
  25. endif()
  26. if ( LEMMA_VTK6_SUPPORT OR LEMMA_VTK7_SUPPORT OR LEMMA_VTK8_SUPPORT AND LEMMA_MODULE_EMSCHUR3D )
  27. configure_file (
  28. "${CMAKE_CURRENT_SOURCE_DIR}/config/EMSchur3DConfig.h.in"
  29. "${PROJECT_BINARY_DIR}/include/EMSchur3DConfig.h"
  30. )
  31. install ( FILES ${PROJECT_BINARY_DIR}/include/EMSchur3DConfig.h DESTINATION ${CMAKE_INSTALL_PREFIX}/include/Lemma/ )
  32. add_subdirectory("src")
  33. add_library( emschur3d ${EMSCHUR3DSOURCE} )
  34. target_include_directories( emschur3d PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" )
  35. set_target_properties(emschur3d PROPERTIES
  36. VERSION "${EMSCHUR3D_VERSION_NOQUOTES}"
  37. SOVERSION "${EMSCHUR3D_VERSION_MAJOR}.${LEMMA_VERSION_MINOR}"
  38. PROJECT_LABEL "EMSCHUR3D ${LABEL_SUFFIX}"
  39. CXX_STANDARD_14
  40. CXX_STANDARD_REQUIRED_ON
  41. )
  42. option ( EMSCHUR3D_ON_KINGSPEAK FALSE )
  43. if ( EMSCHUR3D_ON_KINGSPEAK )
  44. # No OpenMP
  45. add_compile_options(-DHAVE_PARDISO)
  46. #set (MKLLINK "-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -Wl,-rpath=$MKLROOT/lib/intel64")
  47. # OpenMP R3
  48. set (MKLLINK "-L$MKLROOT/lib/intel64 -Wl,-rpath=$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread")
  49. target_link_libraries(emschur3d "lemmacore" ${MKLLINK})
  50. endif()
  51. # Linking
  52. target_link_libraries(emschur3d "lemmacore" "fdem1d" )
  53. # Linking
  54. target_link_libraries(emschur3d ${VTK_LIBRARIES})
  55. if ( SUPERLU_FOUND )
  56. target_link_libraries(emschur3d ${SUPERLU_LIBRARIES})
  57. endif()
  58. if ( PASTIX_FOUND )
  59. target_link_libraries(emschur3d ${PASTIX_LIBRARIES})
  60. target_link_libraries(emschur3d "blas" "metis" "scotch" "scotchmetis" "scotcherr" "scotcherrexit" "hwloc")
  61. endif()
  62. if ( UMFPACK_FOUND )
  63. target_link_libraries(emschur3d ${UMFPACK_LIBRARIES})
  64. endif()
  65. # Testing
  66. if (LEMMA_ENABLE_TESTING)
  67. add_subdirectory(testing)
  68. endif()
  69. # Install
  70. install ( TARGETS emschur3d DESTINATION ${CMAKE_INSTALL_PREFIX}/lib )
  71. install ( FILES include/EMSchur3D DESTINATION ${CMAKE_INSTALL_PREFIX}/include/Lemma )
  72. install ( DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include/Lemma FILES_MATCHING PATTERN "*.h")
  73. #install ( DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include/Lemma/ FILES_MATCHING PATTERN "FDEM1D")
  74. #install ( DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include/Lemma/FDEM1D FILES_MATCHING PATTERN "*.h")
  75. # Examples
  76. if ( LEMMA_BUILD_EXAMPLES)
  77. add_subdirectory(examples)
  78. endif()
  79. else()
  80. if ( LEMMA_MODULE_EMSCHUR3D )
  81. message ( FATAL_ERROR
  82. "EMSChur3D requires VTK 6, 7, or 8"
  83. )
  84. endif()
  85. endif()