amdis_parallel.cmake 3.76 KB
Newer Older
1 2
if (ENABLE_PARALLEL_DOMAIN)
    option(ENABLE_ZOLTAN "Add support for the Parallel Partitioning suite Zoltan" false)
3 4
    option(ENABLE_PARALLEL_SOLVERS "Add some problem dependent solver, e.g. Feti, Navier-Stokes and Cahn-Hilliard" true)
    mark_as_advanced(ENABLE_PARALLEL_SOLVERS)
5

6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
    add_library(amdis_parallel INTERFACE)
    target_sources(amdis PRIVATE
        ${SOURCE_DIR}/parallel/DofComm.cc
        ${SOURCE_DIR}/parallel/CheckerPartitioner.cc
        ${SOURCE_DIR}/parallel/ElementObjectDatabase.cc
        ${SOURCE_DIR}/parallel/InteriorBoundary.cc
        ${SOURCE_DIR}/parallel/MeshDistributor.cc
        ${SOURCE_DIR}/parallel/MeshLevelData.cc
        ${SOURCE_DIR}/parallel/MeshManipulation.cc
        ${SOURCE_DIR}/parallel/MeshPartitioner.cc
        ${SOURCE_DIR}/parallel/MpiHelper.cc
        ${SOURCE_DIR}/parallel/ParallelDofMapping.cc
        ${SOURCE_DIR}/parallel/ParallelProblemStat.cc
        ${SOURCE_DIR}/parallel/ParallelSolver.cc
        ${SOURCE_DIR}/parallel/PeriodicMap.cc
        ${SOURCE_DIR}/parallel/ParMetisPartitioner.cc
        ${SOURCE_DIR}/parallel/StdMpi.cc
    )
24

25 26
    target_sources(amdis_debug INTERFACE
        ${SOURCE_DIR}/parallel/ParallelDebug.cc
27
    )
28

29 30
    target_compile_definitions(amdis_parallel INTERFACE
	   HAVE_PARALLEL_DOMAIN_AMDIS=1)
31

32 33 34
    include(target_enable_petsc)
    target_enable_mpi(amdis_parallel INTERFACE)
    target_enable_petsc(amdis_parallel INTERFACE)
35 36 37

    # add support for the zoltan library
    if (ENABLE_ZOLTAN)
38 39 40 41
      include(target_enable_zoltan)
      target_enable_zoltan(amdis_parallel INTERFACE)
      target_sources(amdis PRIVATE
          ${SOURCE_DIR}/parallel/ZoltanPartitioner.cc)
42 43 44 45 46 47 48
    endif (ENABLE_ZOLTAN)

    if (ENABLE_BDDCML)
        target_compile_definitions(amdis_parallel INTERFACE HAVE_BDDCML=1)
        target_sources(amdis PRIVATE
            ${SOURCE_DIR}/parallel/BddcMlSolver.cc)
    endif (ENABLE_BDDCML)
49

50 51 52 53 54 55 56 57 58 59
    # add some more source-files that need petsc
    target_sources(amdis PRIVATE
        ${SOURCE_DIR}/parallel/MatrixNnzStructure.cc
        ${SOURCE_DIR}/parallel/ParallelCoarseSpaceSolver.cc
        ${SOURCE_DIR}/parallel/PetscHelper.cc
        ${SOURCE_DIR}/parallel/PetscSolver.cc
        ${SOURCE_DIR}/parallel/PetscSolverGlobalMatrix.cc
        ${SOURCE_DIR}/parallel/PetscSolverGlobalBlockMatrix.cc
        ${SOURCE_DIR}/solver/PetscTypes.cc
    )
60

61 62 63 64 65 66 67 68 69 70 71 72 73
    if (ENABLE_PARALLEL_SOLVERS)
        target_sources(amdis PRIVATE
            ${SOURCE_DIR}/parallel/PetscSolverFeti.cc
            ${SOURCE_DIR}/parallel/PetscSolverFetiDebug.cc
            ${SOURCE_DIR}/parallel/PetscSolverFetiMonitor.cc
            ${SOURCE_DIR}/parallel/PetscSolverFetiOperators.cc
            ${SOURCE_DIR}/parallel/PetscSolverFetiTimings.cc
            ${SOURCE_DIR}/parallel/PetscSolverNavierStokes.cc
            ${SOURCE_DIR}/parallel/PetscSolverNSCH.cc
            ${SOURCE_DIR}/parallel/PetscSolverCahnHilliard2.cc
            ${SOURCE_DIR}/parallel/PetscSolverCahnHilliard.cc
            ${SOURCE_DIR}/parallel/PetscSolverSchur.cc
        )
74
        target_compile_definitions(amdis_parallel INTERFACE
75 76
            HAVE_PARALLEL_SOLVERS=1)
    endif (ENABLE_PARALLEL_SOLVERS)
77

78
    target_link_libraries(amdis amdis_parallel)
79

80 81
    # specify how to install this target:
    # -----------------------------------
82

83 84
    file(GLOB AMDIS_PARALLEL_HEADERS "${SOURCE_DIR}/parallel/*.h")
    install(FILES ${AMDIS_PARALLEL_HEADERS} DESTINATION include/amdis/parallel/)
85 86 87 88

    install(FILES
        ${BASE_DIR}/cmake3/ResolveCompilerPaths.cmake
        ${BASE_DIR}/cmake3/FindPackageMultipass.cmake
89 90
        ${BASE_DIR}/cmake3/CorrectWindowsPaths.cmake
        ${BASE_DIR}/cmake3/FindPETSc.cmake
91 92
        ${BASE_DIR}/cmake3/target_enable_petsc.cmake
        ${BASE_DIR}/cmake3/target_enable_zoltan.cmake
93
        DESTINATION share/amdis/)
94
endif (ENABLE_PARALLEL_DOMAIN)