Skip to content

Commit

Permalink
decompose OGS_CONFIG into OGS_CHEMSOLVER and OGS_LSOLVER
Browse files Browse the repository at this point in the history
  • Loading branch information
Norihiro Watanabe committed Mar 4, 2016
1 parent 3c3f327 commit a098a6b
Show file tree
Hide file tree
Showing 11 changed files with 133 additions and 159 deletions.
167 changes: 72 additions & 95 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,34 @@ project(OGS)
# Configurations
set(OGS_CONFIG "FEM" CACHE STRING "OpenGeoSys configuration")
set_property(CACHE OGS_CONFIG PROPERTY STRINGS
FEM # Default
SP
FEM # Default
JFNK # Jacobain free method for solving H2M
)

# Chemical solver
set(OGS_CHEMSOLVER "NONE" CACHE STRING "OpenGeoSys geochemical solver")
set_property(CACHE OGS_CHEMSOLVER PROPERTY STRINGS
NONE # Default
GEMS
JFNK
PETSC
PETSC_GEMS
IPQC
PQC
BRNS
LIS
CAP
MKL
MPI
)

# Linear solver
set(OGS_LSOLVER "RF" CACHE STRING "OpenGeoSys linear solver type")
set_property(CACHE OGS_LSOLVER PROPERTY STRINGS
RF # Default
SP # Sparse solver by WW. Used also with Lis and MKL
PETSC # For parallelization
)

# Options
option(BLUE_G "Blue/G optimization" OFF)
option(PARALLEL_USE_MPI "Use MPI parallization" OFF)
option(OGS_USE_LIS "Use Lis solver" OFF)
option(OGS_USE_MKL "Use PARDISO in MKL" OFF)
option(OGS_USE_CVODE "Use sundials cvode for TNEQ/TES" OFF)
set(OGS_CPU_ARCHITECTURE "native" CACHE STRING "Processor architecture, defaults to native.")
option(OGS_PYTHON "Enable python scripting interface" OFF)
Expand All @@ -41,6 +52,11 @@ option (OGS_NO_EXTERNAL_LIBS "Builds OGS without any external dependencies." OFF
option (OGS_DELETE_EDGES_AFTER_INIT "Delete mesh edges after initialization if possible" OFF)
option (OGS_OUTPUT_TIME_ALLPCS "Output clock time for all processes" OFF)

if (OGS_CHEMSOLVER STREQUAL GEMS)
# need to set this before Find.cmake
set(OGS_USE_BOOST ON CACHE INTERNAL "Use Boost library")
endif()

include(scripts/cmake/CMakeSetup.cmake)
include(scripts/cmake/CompilerSetup.cmake)
include (scripts/cmake/Find.cmake)
Expand Down Expand Up @@ -77,61 +93,15 @@ set (OGS_DATE "07.07.2015")
### Fem configs ###
###################
message (STATUS "OGS_CONFIG: ${OGS_CONFIG}" )
if(OGS_CONFIG STREQUAL FEM)
set(SOLVER_PKG_NAME "Default")
message (STATUS "OGS_CHEMSOLVER: ${OGS_CHEMSOLVER}" )
message (STATUS "OGS_LSOLVER: ${OGS_LSOLVER}" )

elseif(OGS_CONFIG STREQUAL SP)
set(OGS_USE_NEW_EQS ON CACHE INTERNAL "")
set(SOLVER_PKG_NAME "Alternative linear solver package (NEW_EQS)")

elseif(OGS_CONFIG STREQUAL JFNK)
set(OGS_USE_NEW_EQS ON CACHE INTERNAL "")
if(OGS_CONFIG STREQUAL JFNK)
add_definitions(-DJFNK_H2M)
set(OGS_LSOLVER "SP")
endif()

elseif(OGS_CONFIG STREQUAL PETSC)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/scripts/cmake/cmake/findPETSC)

find_package(PETSc REQUIRED QUIET)
if(PETSC_VERSION VERSION_GREATER 3.3)
add_definitions(-DUSEPETSC34 -DUSE_PETSC)
message(STATUS "found version greater 3.3, version is ${PETSC_VERSION}")
else()
add_definitions(-DUSE_PETSC)
endif()
include_directories( ${PETSC_INCLUDES} )
set(SOLVER_PKG_NAME "PETSc linear solver package")

elseif(OGS_CONFIG STREQUAL PETSC_GEMS)
include_directories( ${Boost_INCLUDE_DIR} )
link_directories( ${Boost_LIBRARY_DIR} )
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/scripts/cmake/cmake/findPETSC)

find_package(PETSc REQUIRED QUIET)
if(PETSC_VERSION VERSION_GREATER 3.3)
add_definitions(-DUSEPETSC34 -DUSE_PETSC -DNO_ERROR_CONTROL -DGEM_REACT -DGEMlib -DIPMGEMPLUGIN)
message(STATUS "found version greater 3.3, version is ${PETSC_VERSION}")
else()
add_definitions(-DUSE_PETSC -DNO_ERROR_CONTROL -DGEM_REACT -DGEMlib -DIPMGEMPLUGIN)
endif()
include_directories( ${PETSC_INCLUDES} )

if (MSVC)
set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
endif ()

elseif(OGS_CONFIG STREQUAL MPI)
set(PARALLEL_USE_MPI ON CACHE INTERNAL "Use Message Passing Interface")
set(OGS_USE_NEW_EQS ON CACHE INTERNAL "")
set(SOLVER_PKG_NAME "Parallel linear solver package (MPI)")

elseif(OGS_CONFIG STREQUAL MPI_KRC)
add_definitions(-DUSE_MPI_KRC)
set(PARALLEL_USE_MPI ON CACHE INTERNAL "Use Message Passing Interface")
set(OGS_USE_NEW_EQS ON CACHE INTERNAL "")

elseif(OGS_CONFIG STREQUAL GEMS)
set(OGS_USE_NEW_EQS ON CACHE INTERNAL "")
if(OGS_CHEMSOLVER STREQUAL GEMS)
add_definitions(-DNO_ERROR_CONTROL -DGEM_REACT -DGEMlib -DIPMGEMPLUGIN )
if (MSVC)
set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
Expand All @@ -141,50 +111,22 @@ elseif(OGS_CONFIG STREQUAL GEMS)
include_directories( ${Boost_INCLUDE_DIR} )
link_directories( ${Boost_LIBRARY_DIR} )

if(PARALLEL_USE_MPI)
add_definitions(-DUSE_MPI_GEMS)
endif()

elseif(OGS_CONFIG STREQUAL IPQC)
elseif(OGS_CHEMSOLVER STREQUAL IPQC)
add_definitions( -DOGS_FEM_IPQC )
if(PARALLEL_USE_MPI)
set(OGS_USE_NEW_EQS ON CACHE INTERNAL "")
endif()

elseif(OGS_CONFIG STREQUAL PQC)
set(OGS_USE_NEW_EQS ON CACHE INTERNAL "")
elseif(OGS_CHEMSOLVER STREQUAL PQC)
add_definitions(-DLIBPHREEQC -D_POSIX_SOURCE -DNO_ERROR_CONTROL)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
add_definitions ( "-DMDL_DEBUG" )
endif() # Debug

elseif(OGS_CONFIG STREQUAL BRNS)
elseif(OGS_CHEMSOLVER STREQUAL BRNS)
if (UNIX)
find_package(LAPACK)
endif()
set(OGS_USE_NEW_EQS ON BOOL)
add_definitions(-DBRNS -DNO_ERROR_CONTROL -D_POSIX_SOURCE)
if(PARALLEL_USE_MPI)
add_definitions(-DUSE_MPI_BRNS)
endif()

elseif(OGS_CONFIG STREQUAL LIS)
set(OGS_USE_NEW_EQS ON CACHE INTERNAL "")
add_definitions(-DIPMGEMPLUGIN -DLIS -o3)
set(PARALLEL_USE_OPENMP ON CACHE INTERNAL "Use Open Multi-Processing")
set(LIS ON CACHE INTERNAL "Use Library of Iterative Solvers")
set(SOLVER_PKG_NAME "LIS linear solver package")

elseif(OGS_CONFIG STREQUAL MKL)
set(OGS_USE_NEW_EQS ON CACHE INTERNAL "")
add_definitions(-DNO_ERROR_CONTROL -DMKL -DLIS -o3 -DIPMGEMPLUGIN)
set(PARALLEL_USE_OPENMP ON CACHE INTERNAL "Use Open Multi-Processing")
set(LIS ON INTERNAL "Use Library of Iterative Solvers")
set(MKL ON INTERNAL "Use Math Kernel Library")
mark_as_advanced(LIS MKL)
set(SOLVER_PKG_NAME "MKL direct linear solver package")

elseif(OGS_CONFIG STREQUAL CAP)
elseif(OGS_CHEMSOLVER STREQUAL CAP)
set( PRJ_EXT "-CAP" )
add_definitions(-DOGS_FEM_CAP)
if (UNIX) # Only supported on Linux
Expand All @@ -194,13 +136,48 @@ elseif(OGS_CONFIG STREQUAL CAP)

endif()

### End fem configs ###
##############

if(OGS_USE_LIS)
set(OGS_LSOLVER "SP")
add_definitions(-DIPMGEMPLUGIN -DLIS -o3)
set(PARALLEL_USE_OPENMP ON CACHE INTERNAL "Use Open Multi-Processing")
set(LIS ON CACHE INTERNAL "Use Library of Iterative Solvers")
endif()

if(OGS_USE_MKL)
set(OGS_LSOLVER "SP")
add_definitions(-DNO_ERROR_CONTROL -DMKL -o3 -DIPMGEMPLUGIN)
set(PARALLEL_USE_OPENMP ON CACHE INTERNAL "Use Open Multi-Processing")
set(MKL ON INTERNAL "Use Math Kernel Library")
endif()

##############

if(OGS_USE_NEW_EQS)
message(STATUS "Use New EQS class")
if(OGS_LSOLVER STREQUAL RF)
set(SOLVER_PKG_NAME "Default")

elseif(OGS_LSOLVER STREQUAL SP)
add_definitions(-DNEW_EQS)
set(SOLVER_PKG_NAME "Alternative linear solver package (NEW_EQS)")

elseif(OGS_LSOLVER STREQUAL PETSC)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/scripts/cmake/cmake/findPETSC)

find_package(PETSc REQUIRED QUIET)
if(PETSC_VERSION VERSION_GREATER 3.3)
add_definitions(-DUSEPETSC34 -DUSE_PETSC)
message(STATUS "found version greater 3.3, version is ${PETSC_VERSION}")
else()
add_definitions(-DUSE_PETSC)
endif()
include_directories( ${PETSC_INCLUDES} )
set(SOLVER_PKG_NAME "PETSc linear solver package")
endif()


### End fem configs ###

if(PARALLEL_USE_MPI)
message(STATUS "Enabling MPI")
find_package(MPI REQUIRED)
Expand Down
63 changes: 30 additions & 33 deletions FEM/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -104,33 +104,37 @@ set( SOURCES
vtk.cpp
)

if(OGS_CONFIG STREQUAL PETSC OR OGS_CONFIG STREQUAL PETSC_GEMS)
set( SOURCES ${SOURCES} rf_pcs1.cpp fct_mpi.h fct_mpi.cpp)
else()
if(NOT OGS_LSOLVER STREQUAL PETSC)
set( SOURCES ${SOURCES} par_ddc.h par_ddc.cpp)
## New sparse class. WW
if(OGS_USE_NEW_EQS)
set( SOURCES ${SOURCES} equation_class.h equation_class.cpp )
if(OGS_CONFIG STREQUAL JFNK)
set( SOURCES ${SOURCES} rf_pcs1.cpp )
endif()
else()
set( SOURCES ${SOURCES} solver.h matrix_routines.h solver.cpp matrix_routines.cpp)
endif()
endif()

if(OGS_CONFIG STREQUAL IPQC)


if(OGS_LSOLVER STREQUAL RF)
set( HEADERS ${HEADERS} solver.h matrix_routines.h)
set( SOURCES ${SOURCES} solver.cpp matrix_routines.cpp)
elseif(OGS_LSOLVER STREQUAL PETSC)
set( SOURCES ${SOURCES} rf_pcs1.cpp fct_mpi.h fct_mpi.cpp)
elseif(OGS_LSOLVER STREQUAL SP)
set( SOURCES ${SOURCES} equation_class.h equation_class.cpp )
endif()

if(OGS_CONFIG STREQUAL JFNK)
set( SOURCES ${SOURCES} rf_pcs1.cpp )
endif()

if(OGS_CHEMSOLVER STREQUAL IPQC)
if (PARALLEL_USE_MPI)
set(HEADERS ${HEADERS} SplitMPI_Communicator.h )
set(SOURCES ${SOURCES} SplitMPI_Communicator.cpp )
endif ()
endif()

if(OGS_CONFIG STREQUAL BRNS)
if(OGS_CHEMSOLVER STREQUAL BRNS)
set( SOURCES ${SOURCES} rf_REACT_BRNS.h rf_REACT_BRNS.cpp )
endif()

if(OGS_CONFIG STREQUAL GEMS OR OGS_CONFIG STREQUAL PETSC_GEMS)
if(OGS_CHEMSOLVER STREQUAL GEMS)
set( SOURCES ${SOURCES} rf_REACT_GEM.h rf_REACT_GEM.cpp )
endif()

Expand Down Expand Up @@ -160,53 +164,46 @@ target_link_libraries(FEM

if(LIS)
include_directories(${LIS_INCLUDE_DIR})
target_link_libraries( FEM ${LIS_LIBRARIES} )
if (WIN32)
set_target_properties( FEM PROPERTIES LINK_FLAGS "/NODEFAULTLIB:libcmt" )
endif()
endif()

if(MKL)
include_directories(${MKL_INCLUDES})
target_link_libraries( FEM ${MKL_LIBRARIES} )
endif()

if(OGS_CONFIG STREQUAL PQC)
if(OGS_CHEMSOLVER STREQUAL PQC)
include_directories(${CMAKE_SOURCE_DIR}/ThirdParty/PQC)
target_link_libraries(FEM PQC)
endif()

if(OGS_CONFIG STREQUAL IPQC)
if(OGS_CHEMSOLVER STREQUAL IPQC)
include_directories(${CMAKE_SOURCE_DIR}/ThirdParty/IPQC/src)
endif ()

if(PARALLEL_USE_MPI)
target_link_libraries(FEM ${MPI_CXX_LIBRARIES})
endif()

if(OGS_CONFIG STREQUAL MKL)
target_link_libraries( FEM ${MKL_LIBRARIES} )
endif()

if (WIN32)
if (OGS_CONFIG STREQUAL GEMS)
if (OGS_CHEMSOLVER STREQUAL GEMS)
target_link_libraries( FEM GEM )
endif ()
if (LIS)
target_link_libraries( FEM ${LIS_LIBRARIES} )
set_target_properties( FEM PROPERTIES LINK_FLAGS "/NODEFAULTLIB:libcmt" )
endif ()
if (OGS_CONFIG STREQUAL BRNS)
if (OGS_CHEMSOLVER STREQUAL BRNS)
target_link_libraries( FEM BrnsDll )
endif ()
endif ()

if (UNIX)
if (OGS_CONFIG STREQUAL BRNS)
if (OGS_CHEMSOLVER STREQUAL BRNS)
target_link_libraries( FEM ${CMAKE_DL_LIBS} ${LAPACK_LIBRARIES} )
endif ()

if (LIS)
target_link_libraries( FEM ${LIS_LIBRARIES} )
endif ()
endif ()

if (OGS_CONFIG STREQUAL CAP)
if (OGS_CHEMSOLVER STREQUAL CAP)
include_directories ( ${CMAKE_SOURCE_DIR}/CMP )
target_link_libraries (
FEM
Expand Down
2 changes: 1 addition & 1 deletion FileIO/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ set( SOURCES
XmlIO/RapidXMLInterface.cpp
)

if(OGS_CONFIG STREQUAL GEMS OR OGS_CONFIG STREQUAL PETSC_GEMS)
if(OGS_USE_BOOST)
include_directories(${Boost_INCLUDE_DIR})
endif()

Expand Down
2 changes: 1 addition & 1 deletion MSH/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ set(SOURCES
)


if(OGS_CONFIG STREQUAL PETSC OR OGS_CONFIG STREQUAL PETSC_GEMS)
if(OGS_LSOLVER STREQUAL PETSC)
set(SOURCES ${SOURCES} msh_lib_ext.cpp)
endif()

Expand Down
2 changes: 1 addition & 1 deletion MathLib/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ set( SOURCES
MathTools.cpp
)

if(OGS_CONFIG STREQUAL PETSC OR OGS_CONFIG STREQUAL PETSC_GEMS)
if(OGS_LSOLVER STREQUAL PETSC)
set( SOURCES ${SOURCES} PETSC/PETScLinearSolver.h PETSC/PETScLinearSolver.cpp)
endif()

Expand Down
Loading

0 comments on commit a098a6b

Please sign in to comment.