#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # PPPPP H H EEEEE N N GGGGG L EEEEE III + # P P H H E NN N G L E I + # PPPPP HHHHH EEEEE N N N G GG L EEEEE I + # P H H E N N N G G L E I + # P H H EEEEE N N GGGGG LLLLL EEEEE III + #------------------------------------------------------------------------+ # Platform for Hybrid Engineering Simulation of Flows + # China Aerodynamics Research and Development Center + # (C) Copyright, Since 2010 + #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #! @file CMakeLists.txt #! @brief It defines the project. #! @author Bell, Xu Qingxin, He Kun, He Xin. cmake_minimum_required(VERSION 2.6) #set working directory: set(EXEC_WORKING_DIR PHengLEIv3d0) #set cmake environment: set(CMAKE_USE_RELATIVE_PATHS ON) #output message: message(STATUS "Welcome to Build Project ${CMAKE_PROJECT_NAME}.") message(STATUS "The OS is ${CMAKE_SYSTEM_NAME}, version ${CMAKE_SYSTEM_VERSION}.") message(STATUS "The working directory is ${CMAKE_BINARY_DIR}/${EXEC_WORKING_DIR}/${DLL_WORKING_DIR}.") message(STATUS "--- Start to call ${CMAKE_CURRENT_LIST_FILE} ---") message(STATUS "This current binary directory is ${CMAKE_CURRENT_BINARY_DIR}.") message(STATUS "This current source directory is ${CMAKE_CURRENT_SOURCE_DIR}.") # Define some pre-definition. include(${PROJECT_SOURCE_DIR}/../PHengLEI/PHMacro.cmake) if(USE_OCC) message(STATUS "USE_OCC is turned on!") add_definitions(-DUSE_OCC) endif() if(USE_DOUBLE_PRECISION) message(STATUS "USE_DOUBLE_PRECISION is turned on!") add_definitions(-DPH_DOUBLE_PREC) endif() if(USE_SMARTARRAY) message(STATUS "USE_SMARTARRAY is turned on!") add_definitions(-DUSE_SMARTARRAY) endif() if(WIN32) if(USE_Windows_X64) message(STATUS "USE_Windows_X64 is turned on!") add_definitions(-DUSE_WINDOWS_X64) endif(USE_Windows_X64) endif(WIN32) if(BUILD_SpecDiffHybSolver) message(STATUS "BUILD_SpecDiffHybSolver is turned on!") add_definitions(-DUSE_SpecDiffHybSolver) endif() if(BUILD_IncomSolver) message(STATUS "BUILD_IncomSolver is turned on!") add_definitions(-DUSE_INCOMSOLVER) if(USE_HypreLib) add_definitions(-DUSE_HypreLib) endif() if(USE_UnapLib) add_definitions(-DUSE_UnapLib) endif() if(USE_YhamgLib) add_definitions(-DUSE_YhamgLib) endif() endif() #1. output message: message(STATUS "") message(STATUS "--- Enter subdirectory , Start to call ${CMAKE_CURRENT_LIST_FILE} ---") message(STATUS "This current binary directory is ${CMAKE_CURRENT_BINARY_DIR}.") message(STATUS "This current source directory is ${CMAKE_CURRENT_SOURCE_DIR}.") if(WIN32) if(USE_Windows_X64) set(LIB_API_EXPORT_PATH ${PROJECT_SOURCE_DIR}/../API/bin/${CMAKE_SYSTEM_NAME}-x64/${CMAKE_BUILD_TYPE}) set(CMAKE_EXE_LINKER_FLAGS "/machine:x64") else(USE_Windows_X64) set(LIB_API_EXPORT_PATH ${PROJECT_SOURCE_DIR}/../API/bin/${CMAKE_SYSTEM_NAME}-x86/${CMAKE_BUILD_TYPE}) endif(USE_Windows_X64) else(WIN32) set(LIB_API_EXPORT_PATH ${PROJECT_SOURCE_DIR}/../API/bin/${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}) endif(WIN32) link_directories("${LIB_API_EXPORT_PATH}") set(CFD_TARGET_NAME "PHCFD") set(LIBRARY_OUTPUT_PATH) if(WIN32) if(USE_Windows_X64) set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../CFD/bin/${CMAKE_SYSTEM_NAME}-x64/${CMAKE_BUILD_TYPE}) set(CMAKE_EXE_LINKER_FLAGS "/machine:x64") else(USE_Windows_X64) set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../CFD/bin/${CMAKE_SYSTEM_NAME}-x86/${CMAKE_BUILD_TYPE}) endif(USE_Windows_X64) else(WIN32) set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../CFD/bin/${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}) endif(WIN32) message(STATUS "CFD library path is: ${LIBRARY_OUTPUT_PATH}.") #set options if (NOT BUILD_LIBRARY_TYPE) set (BUILD_LIBRARY_TYPE "Static" CACHE STRING "The type of PHengLEI libraries" FORCE) SET_PROPERTY(CACHE BUILD_LIBRARY_TYPE PROPERTY STRINGS Shared Static) endif() #3. set environment for MPICH and 3rdParty lib directory: if(WIN32) include_directories("${MSMPI_HOME_DIRECTORY}/Include") link_directories("${MSMPI_HOME_DIRECTORY}/lib") if(USE_Windows_X64) link_directories("${MSMPI_HOME_DIRECTORY}/Lib/x64") set(THIRDPARTY_LIB_DIR "${PROJECT_SOURCE_DIR}/3rdparty/${THIRD_PARTY_COMPILER_FLAG}/win-x64") else(USE_Windows_X64) link_directories("${MSMPI_HOME_DIRECTORY}/Lib/x86") set(THIRDPARTY_LIB_DIR "${PROJECT_SOURCE_DIR}/3rdparty/${THIRD_PARTY_COMPILER_FLAG}/win-x86") endif(USE_Windows_X64) else(WIN32) set(CMAKE_CXX_COMPILER mpicxx) set(CMAKE_C_COMPILER mpicc) if(${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR} MATCHES "Linux-x86_64") if(USE_INTEL_COMPILER) set(THIRDPARTY_LIB_DIR "${PROJECT_SOURCE_DIR}/3rdparty/liblinux/${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}/intel") message(STATUS "USE_INTEL_COMPILER is turned on!") else(USE_INTEL_COMPILER) set(THIRDPARTY_LIB_DIR "${PROJECT_SOURCE_DIR}/3rdparty/liblinux/${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}/gcc") message(STATUS "USE_INTEL_COMPILER is turned off!") endif() else(${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR} MATCHES "Linux-aarch64") set(THIRDPARTY_LIB_DIR "${PROJECT_SOURCE_DIR}/3rdparty/liblinux/${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}") endif() endif(WIN32) # specify directory in which the linker will look for libraries for myself libraries: message(STATUS "The 3rdparty path is: ${THIRDPARTY_LIB_DIR}.") link_directories("${THIRDPARTY_LIB_DIR}") includeHeadFiles() set(HDF5_H_PATH ${PROJECT_SOURCE_DIR}/../PHengLEI/3rdparty/HDF5/include) include_directories("${HDF5_H_PATH}") if(USE_TecplotLib) set(TECIO_H_PATH ${PROJECT_SOURCE_DIR}/../PHengLEI/3rdparty/TECIO/include) include_directories("${TECIO_H_PATH}") endif(USE_TecplotLib) set(MEITIS_H_PATH ${PROJECT_SOURCE_DIR}/../PHengLEI/3rdparty/metis/include) include_directories("${MEITIS_H_PATH}") set(CGNS_H_PATH ${PROJECT_SOURCE_DIR}/../PHengLEI/3rdparty/cgns/include) include_directories("${CGNS_H_PATH}") set(MGRID_H_PATH ${PROJECT_SOURCE_DIR}/../PHengLEI/3rdparty/mgrid/include) include_directories("${MGRID_H_PATH}") if(USE_HypreLib) set(HYPRE_H_PATH ${PROJECT_SOURCE_DIR}/../PHengLEI/3rdparty/hypre/include) include_directories("${HYPRE_H_PATH}") endif(USE_HypreLib) if(USE_UnapLib) set(UNAP_H_PATH ${PROJECT_SOURCE_DIR}/../PHengLEI/3rdparty/unapLib/include) include_directories("${UNAP_H_PATH}") endif(USE_UnapLib) if(USE_YhamgLib) set(YHAMG_H_PATH ${PROJECT_SOURCE_DIR}/../PHengLEI/3rdparty/yhamg/include) include_directories("${YHAMG_H_PATH}") endif(USE_YhamgLib) #set(API_H_DIR ${PROJECT_SOURCE_DIR}/3rdparty) #5. set current directory: # set directory of Solver set(SOLVER_H_PATH Solver/include) set(SOLVER_H_LIST ${SOLVER_H_PATH}/CFDSolver.h ${SOLVER_H_PATH}/Controller.h ${SOLVER_H_PATH}/Param_CFDSolver.h ) source_group(Solver\\include FILES ${SOLVER_H_LIST}) include_directories(${SOLVER_H_PATH}) set(SOLVER_CPP_PATH Solver/src) set(SOLVER_CPP_LIST ${SOLVER_CPP_PATH}/CFDSolver.cpp ${SOLVER_CPP_PATH}/Controller.cpp ${SOLVER_CPP_PATH}/Param_CFDSolver.cpp ) source_group(Solver\\src FILES ${SOLVER_CPP_LIST}) # set directory of NSSolver: set(NSSOLVER_H_PATH NSSolver/include) set(NSSOLVER_H_LIST ${NSSOLVER_H_PATH}/NSSolver.h ${NSSOLVER_H_PATH}/NSSolverStruct.h ${NSSOLVER_H_PATH}/NCCRSolverStruct.h ${NSSOLVER_H_PATH}/NSSolverStructFD.h ${NSSOLVER_H_PATH}/NSSolverStructFV.h ${NSSOLVER_H_PATH}/NSSolverUnstruct.h ${NSSOLVER_H_PATH}/MultiGridOperation.h ${NSSOLVER_H_PATH}/Param_NSSolver.h ${NSSOLVER_H_PATH}/Param_NSSolverUnstruct.h ${NSSOLVER_H_PATH}/Param_NSSolverStruct.h ) source_group(NSSolver\\include FILES ${NSSOLVER_H_LIST}) include_directories(${NSSOLVER_H_PATH}) set(NSSOLVER_CPP_PATH NSSolver/src) set(NSSOLVER_CPP_LIST ${NSSOLVER_CPP_PATH}/NSSolver.cpp ${NSSOLVER_CPP_PATH}/NCCRSolverStruct.cpp ${NSSOLVER_CPP_PATH}/NSSolverStruct.cpp ${NSSOLVER_CPP_PATH}/NSSolverStructFD.cpp ${NSSOLVER_CPP_PATH}/NSSolverStructFV.cpp ${NSSOLVER_CPP_PATH}/NSSolverUnstruct.cpp ${NSSOLVER_CPP_PATH}/Param_NSSolver.cpp ${NSSOLVER_CPP_PATH}/Param_NSSolverUnstruct.cpp ${NSSOLVER_CPP_PATH}/Param_NSSolverStruct.cpp ) source_group(NSSolver\\src FILES ${NSSOLVER_CPP_LIST}) # set directory of TurbSolver: set(TurbSOLVER_H_PATH TurbSolver/include) set(TurbSOLVER_H_LIST ${TurbSOLVER_H_PATH}/TurbSolver.h ${TurbSOLVER_H_PATH}/TurbSolverStruct.h ${TurbSOLVER_H_PATH}/TransitionSolver.h ${TurbSOLVER_H_PATH}/TransitionSolverStruct.h ${TurbSOLVER_H_PATH}/TurbSolverUnstr.h ${TurbSOLVER_H_PATH}/TransitionSolverUnstr.h ${TurbSOLVER_H_PATH}/Transition.h ${TurbSOLVER_H_PATH}/LESSolver.h ${TurbSOLVER_H_PATH}/LESSolverStruct.h ${TurbSOLVER_H_PATH}/LESSolverUnstr.h ${TurbSOLVER_H_PATH}/TurbSolverStructFD.h ${TurbSOLVER_H_PATH}/Param_TurbSolver.h ${TurbSOLVER_H_PATH}/Param_TransitionSolver.h ${TurbSOLVER_H_PATH}/Param_TurbSolverStruct.h ${TurbSOLVER_H_PATH}/Param_TurbSolverUnstruct.h ${TurbSOLVER_H_PATH}/Param_LESSolver.h ${TurbSOLVER_H_PATH}/Param_LESSolverStruct.h ${TurbSOLVER_H_PATH}/Param_LESSolverUnstruct.h ) source_group(TurbSolver\\include FILES ${TurbSOLVER_H_LIST}) include_directories(${TurbSOLVER_H_PATH}) set(TurbSOLVER_CPP_PATH TurbSolver/src) set(TurbSOLVER_CPP_LIST ${TurbSOLVER_CPP_PATH}/TurbSolver.cpp ${TurbSOLVER_CPP_PATH}/TransitionSolver.cpp ${TurbSOLVER_CPP_PATH}/TurbSolverStruct.cpp ${TurbSOLVER_CPP_PATH}/TransitionSolverStruct.cpp ${TurbSOLVER_CPP_PATH}/TurbSolverStructFD.cpp ${TurbSOLVER_CPP_PATH}/TurbSolverUnstr.cpp ${TurbSOLVER_CPP_PATH}/TransitionSolverUnstr.cpp ${TurbSOLVER_CPP_PATH}/Transition.cpp ${TurbSOLVER_CPP_PATH}/LESSolver.cpp ${TurbSOLVER_CPP_PATH}/LESSolverStruct.cpp ${TurbSOLVER_CPP_PATH}/LESSolverUnstr.cpp ${TurbSOLVER_CPP_PATH}/Param_TurbSolver.cpp ${TurbSOLVER_CPP_PATH}/Param_TransitionSolver.cpp ${TurbSOLVER_CPP_PATH}/Param_TurbSolverStruct.cpp ${TurbSOLVER_CPP_PATH}/Param_TurbSolverUnstruct.cpp ${TurbSOLVER_CPP_PATH}/Param_LESSolver.cpp ${TurbSOLVER_CPP_PATH}/Param_LESSolverStruct.cpp ${TurbSOLVER_CPP_PATH}/Param_LESSolverUnstruct.cpp ) source_group(TurbSolver\\src FILES ${TurbSOLVER_CPP_LIST}) # set directory of HOSolverUnstruct: set(HOSOLVERUNSTRUCT_H_PATH HOSolverUnstruct/include) set(HOSOLVERUNSTRUCT_H_LIST ${HOSOLVERUNSTRUCT_H_PATH}/HOBasisFunction.h ${HOSOLVERUNSTRUCT_H_PATH}/HOBoundary.h ${HOSOLVERUNSTRUCT_H_PATH}/HODefine.h ${HOSOLVERUNSTRUCT_H_PATH}/HOGaussJacobiQuadrature.h ${HOSOLVERUNSTRUCT_H_PATH}/HOGeometryStructure.h ${HOSOLVERUNSTRUCT_H_PATH}/HOInviscidFlux.h ${HOSOLVERUNSTRUCT_H_PATH}/HOShapeFunction.h ${HOSOLVERUNSTRUCT_H_PATH}/HOSimulation.h ${HOSOLVERUNSTRUCT_H_PATH}/HOSolverUnstruct.h ${HOSOLVERUNSTRUCT_H_PATH}/HOSolverUnstructParam.h ${HOSOLVERUNSTRUCT_H_PATH}/HOStandardElement.h ) source_group(HOSolverUnstruct\\include FILES ${HOSOLVERUNSTRUCT_H_LIST}) include_directories(${HOSOLVERUNSTRUCT_H_PATH}) set(HOSOLVERUNSTRUCT_CPP_PATH HOSolverUnstruct/src) set(HOSOLVERUNSTRUCT_CPP_LIST ${HOSOLVERUNSTRUCT_CPP_PATH}/HOBasisFunction.cpp ${HOSOLVERUNSTRUCT_CPP_PATH}/HOBoundary.cpp ${HOSOLVERUNSTRUCT_CPP_PATH}/HOGaussJacobiQuadrature.cpp ${HOSOLVERUNSTRUCT_CPP_PATH}/HOGeometryDtructure.cpp ${HOSOLVERUNSTRUCT_CPP_PATH}/HOInviscidFlux.cpp ${HOSOLVERUNSTRUCT_CPP_PATH}/HOShapeFunction.cpp ${HOSOLVERUNSTRUCT_CPP_PATH}/HOSimulation.cpp ${HOSOLVERUNSTRUCT_CPP_PATH}/HOSolverUnstruct.cpp ${HOSOLVERUNSTRUCT_CPP_PATH}/HOSolverUnstructParam.cpp ${HOSOLVERUNSTRUCT_CPP_PATH}/HOStandardElement.cpp ) source_group(HOSolverUnstruct\\src FILES ${HOSOLVERUNSTRUCT_CPP_LIST}) # Build In-house version: # set directory of IncomSolver: if(BUILD_IncomSolver) set(INCOMSOLVER_H_PATH IncomSolver/include) set(INCOMSOLVER_H_LIST ${INCOMSOLVER_H_PATH}/MomEqCalculator.h ${INCOMSOLVER_H_PATH}/PPEqCalculator.h ${INCOMSOLVER_H_PATH}/IncomCalculator.h ${INCOMSOLVER_H_PATH}/IncomScalarEqCalculator.h ${INCOMSOLVER_H_PATH}/IncomEnergyEqCalculator.h ${INCOMSOLVER_H_PATH}/IncomKETurbKEqCalculator.h ${INCOMSOLVER_H_PATH}/IncomSATurbKEqCalculator.h ${INCOMSOLVER_H_PATH}/IncomKETurbEpsilonEqCalculator.h ${INCOMSOLVER_H_PATH}/IncomSpeciesEqCalculator.h ${INCOMSOLVER_H_PATH}/IncomUnstructSolver.h ${INCOMSOLVER_H_PATH}/hypreCalculator.h ${INCOMSOLVER_H_PATH}/unapCalculator.h ${INCOMSOLVER_H_PATH}/yhamgCalculator.h ${INCOMSOLVER_H_PATH}/LinearEquationSystemCalculator.h ${INCOMSOLVER_H_PATH}/Param_INCompSolverUnstruct.h ) source_group(IncomSolver\\include FILES ${INCOMSOLVER_H_LIST}) include_directories(${INCOMSOLVER_H_PATH}) set(INCOMSOLVER_CPP_PATH IncomSolver/src) set(INCOMSOLVER_CPP_LIST ${INCOMSOLVER_CPP_PATH}/MomEqCalculator.cpp ${INCOMSOLVER_CPP_PATH}/PPEqCalculator.cpp ${INCOMSOLVER_CPP_PATH}/IncomCalculator.cpp ${INCOMSOLVER_CPP_PATH}/IncomScalarEqCalculator.cpp ${INCOMSOLVER_CPP_PATH}/IncomEnergyEqCalculator.cpp ${INCOMSOLVER_CPP_PATH}/IncomKETurbEpsilonEqCalculator.cpp ${INCOMSOLVER_CPP_PATH}/IncomKETurbKEqCalculator.cpp ${INCOMSOLVER_CPP_PATH}/IncomSATurbKEqCalculator.cpp ${INCOMSOLVER_CPP_PATH}/IncomSpeciesEqCalculator.cpp ${INCOMSOLVER_CPP_PATH}/IncomUnstructSolver.cpp ${INCOMSOLVER_CPP_PATH}/hypreCalculator.cpp ${INCOMSOLVER_CPP_PATH}/unapCalculator.cpp ${INCOMSOLVER_CPP_PATH}/yhamgCalculator.cpp ${INCOMSOLVER_CPP_PATH}/LinearEquationSystemCalculator.cpp ${INCOMSOLVER_CPP_PATH}/Param_INCompSolverUnstruct.cpp ) source_group(IncomSolver\\src FILES ${INCOMSOLVER_CPP_LIST}) endif(BUILD_IncomSolver) # set directory of SpecDiffHybSolver: if(BUILD_SpecDiffHybSolver) set(SpecDiffHybSolver_H_PATH SpecDiffHybSolver/include) set(SpecDiffHybSolver_H_LIST ${SpecDiffHybSolver_H_PATH}/SpecDiffHybSolver.h ${SpecDiffHybSolver_H_PATH}/SpecGrid.h ${SpecDiffHybSolver_H_PATH}/SpecDiffHybGrid.h ${SpecDiffHybSolver_H_PATH}/ExplicitDifferenceBoundary.h ${SpecDiffHybSolver_H_PATH}/CompactDifferenceFirstDerivative.h ${SpecDiffHybSolver_H_PATH}/CompactDifferenceSecondDerivative.h ${SpecDiffHybSolver_H_PATH}/PoissonSolver.h ${SpecDiffHybSolver_H_PATH}/CorrectWallDivergence.h ${SpecDiffHybSolver_H_PATH}/Complex.h ${SpecDiffHybSolver_H_PATH}/RescaleField.h ${SpecDiffHybSolver_H_PATH}/Statistics.h ${SpecDiffHybSolver_H_PATH}/p3dfft.h ${SpecDiffHybSolver_H_PATH}/fftw3.h ${SpecDiffHybSolver_H_PATH}/SpecDiffHybFieldView.h ${SpecDiffHybSolver_H_PATH}/LES.h ${SpecDiffHybSolver_H_PATH}/SpecSolver.h ${SpecDiffHybSolver_H_PATH}/Spectrum.h ${SpecDiffHybSolver_H_PATH}/Param_SpecSolver.h ${SpecDiffHybSolver_H_PATH}/Param_SpecDiffHybSolver.h ) source_group(SpecDiffHybSolver\\include FILES ${SpecDiffHybSolver_H_LIST}) include_directories(${SpecDiffHybSolver_H_PATH}) set(SpecDiffHybSolver_CPP_PATH SpecDiffHybSolver/src) set(SpecDiffHybSolver_CPP_LIST ${SpecDiffHybSolver_CPP_PATH}/SpecDiffHybSolver.cpp ${SpecDiffHybSolver_CPP_PATH}/SpecGrid.cpp ${SpecDiffHybSolver_CPP_PATH}/SpecDiffHybGrid.cpp ${SpecDiffHybSolver_CPP_PATH}/ExplicitDifferenceBoundary.cpp ${SpecDiffHybSolver_CPP_PATH}/CompactDifferenceFirstDerivative.cpp ${SpecDiffHybSolver_CPP_PATH}/CompactDifferenceSecondDerivative.cpp ${SpecDiffHybSolver_CPP_PATH}/PoissonSolver.cpp ${SpecDiffHybSolver_CPP_PATH}/CorrectWallDivergence.cpp ${SpecDiffHybSolver_CPP_PATH}/RescaleField.cpp ${SpecDiffHybSolver_CPP_PATH}/Statistics.cpp ${SpecDiffHybSolver_CPP_PATH}/SpecDiffHybFieldView.cpp ${SpecDiffHybSolver_CPP_PATH}/LES.cpp ${SpecDiffHybSolver_CPP_PATH}/SpecSolver.cpp ${SpecDiffHybSolver_CPP_PATH}/Spectrum.cpp ${SpecDiffHybSolver_CPP_PATH}/Param_SpecSolver.cpp ${SpecDiffHybSolver_CPP_PATH}/Param_SpecDiffHybSolver.cpp ) source_group(SpecDiffHybSolver\\src FILES ${SpecDiffHybSolver_CPP_LIST}) endif(BUILD_SpecDiffHybSolver) # set directory of DemoSolver: if(BUILD_DEMOSOLVER) set(DEMOSOLVER_H_PATH DemoSolver/include) set(DEMOSOLVER_H_LIST ${DEMOSOLVER_H_PATH}/DemoSolver.h ${DEMOSOLVER_H_PATH}/Param_DemoSolver.h ) source_group(DemoSolver\\include FILES ${DEMOSOLVER_H_LIST}) include_directories(${DEMOSOLVER_H_PATH}) set(DEMOSOLVER_CPP_PATH DemoSolver/src) set(DEMOSOLVER_CPP_LIST ${DEMOSOLVER_CPP_PATH}/DemoSolver.cpp ${DEMOSOLVER_CPP_PATH}/Param_DemoSolver.cpp ) source_group(DemoSolver\\src FILES ${DEMOSOLVER_CPP_LIST}) endif(BUILD_DEMOSOLVER) #LBMSolverMPI if(BUILD_LBMSolverMPI) set(LBMSolverMPI_H_PATH LBMSolverMPI/include) set(LBMSolverMPI_H_LIST ${LBMSolverMPI_H_PATH}/LBMSolverMPI.hpp ${LBMSolverMPI_H_PATH}/vector3.hpp ) source_group(LBMSolverMPI\\include FILES ${LBMSolverMPI_H_LIST}) include_directories(${LBMSolverMPI_H_PATH}) set(LBMSolverMPI_CPP_PATH LBMSolverMPI/src) set(LBMSolverMPI_CPP_LIST ${LBMSolverMPI_CPP_PATH}/bcs.cpp ${LBMSolverMPI_CPP_PATH}/inout.cpp ${LBMSolverMPI_CPP_PATH}/lbmMPI.cpp ${LBMSolverMPI_CPP_PATH}/lbmMRT.cpp ${LBMSolverMPI_CPP_PATH}/lbmSolver.cpp ${LBMSolverMPI_CPP_PATH}/LBMSolverMPISimulation.cpp ${LBMSolverMPI_CPP_PATH}/vector3.cpp ) source_group(LBMSolverMPI\\src FILES ${LBMSolverMPI_CPP_LIST}) endif(BUILD_LBMSolverMPI) #LBMSolverOMP if(BUILD_LBMSolverOMP) set(LBMSolverOMP_H_PATH LBMSolverOMP/include) set(LBMSolverOMP_H_LIST ${LBMSolverOMP_H_PATH}/LBMSolverOMP.hpp ${LBMSolverOMP_H_PATH}/vector3.hpp ) source_group(LBMSolverOMP\\include FILES ${LBMSolverOMP_H_LIST}) include_directories(${LBMSolverOMP_H_PATH}) set(LBMSolverOMP_CPP_PATH LBMSolverOMP/src) set(LBMSolverOMP_CPP_LIST ${LBMSolverOMP_CPP_PATH}/bcs.cpp ${LBMSolverOMP_CPP_PATH}/bouzidi.cpp ${LBMSolverOMP_CPP_PATH}/collisionstream.cpp ${LBMSolverOMP_CPP_PATH}/exchange.cpp ${LBMSolverOMP_CPP_PATH}/LBMSolverOMPSimulation.cpp ${LBMSolverOMP_CPP_PATH}/MRT.cpp ${LBMSolverOMP_CPP_PATH}/read.cpp ${LBMSolverOMP_CPP_PATH}/readGeo.cpp ${LBMSolverOMP_CPP_PATH}/vector3.cpp ${LBMSolverOMP_CPP_PATH}/write.cpp ) source_group(LBMSolverOMP\\src FILES ${LBMSolverOMP_CPP_LIST}) endif(BUILD_LBMSolverOMP) #20.1 set header file list set(CFD_HEAD_LIST ${SOLVER_H_LIST} ${NSSOLVER_H_LIST} ${TurbSOLVER_H_LIST} ${SpecDiffHybSolver_H_LIST} ${HOSOLVERUNSTRUCT_H_LIST} ) # add INCOMSOLVER_H_LIST if(BUILD_IncomSolver) list(APPEND CFD_HEAD_LIST ${INCOMSOLVER_H_LIST}) endif() # add SpecDiffHybSolver_H_LIST if(BUILD_SpecDiffHybSolver) list(APPEND CFD_HEAD_LIST ${SpecDiffHybSolver_H_LIST}) endif() # add DEMOSOLVER_H_LIST if(BUILD_DEMOSOLVER) list(APPEND CFD_HEAD_LIST ${DEMOSOLVER_H_LIST}) endif() # add LBMSolverMPI_H_LIST if(BUILD_LBMSolverMPI) list(APPEND CFD_HEAD_LIST ${LBMSolverMPI_H_LIST}) endif() # add LBMSolverOMP_H_LIST if(BUILD_LBMSolverOMP) list(APPEND CFD_HEAD_LIST ${LBMSolverOMP_H_LIST}) endif() #20.2 set source file list: set(CFD_CPP_LIST ${SOLVER_CPP_LIST} ${NSSOLVER_CPP_LIST} ${TurbSOLVER_CPP_LIST} ${SpecDiffHybSolver_CPP_LIST} ${HOSOLVERUNSTRUCT_CPP_LIST} ${DEMOSOLVER_CPP_LIST} ) # add SpecDiffHybSolver_CPP_LIST if(BUILD_SpecDiffHybSolver) list(APPEND CFD_CPP_LIST ${SpecDiffHybSolver_CPP_LIST}) endif() # add DEMOSOLVER_CPP_LIST if(BUILD_DEMOSOLVER) list(APPEND CFD_CPP_LIST ${DEMOSOLVER_CPP_LIST}) endif() # add LBMSolverMPI_CPP_LIST if(BUILD_LBMSolverMPI) list(APPEND CFD_CPP_LIST ${LBMSolverMPI_CPP_LIST}) endif() # add LBMSolverOMP_CPP_LIST if(BUILD_LBMSolverOMP) list(APPEND CFD_CPP_LIST ${LBMSolverOMP_CPP_LIST}) endif() # add INCOMSOLVER_CPP_LIST if(BUILD_IncomSolver) list(APPEND CFD_CPP_LIST ${INCOMSOLVER_CPP_LIST}) endif() #21. adds flags to the compiler command line for sources in the current directory and below: add_definitions(-DPH_PARALLEL -DPH_CGNS) # For OCC. set(OCC_LIBS) if(USE_OCC) message(STATUS "Using OpenCasCade ...... ") set(OCC_LIBS_REQUIRED # subset of DataExchange TKSTEP TKSTEP209 TKSTEPAttr TKSTEPBase TKIGES TKSTL TKXSBase # ModelingAlgorithms TKOffset TKFeat TKFillet TKBool TKShHealing TKMesh TKHLR TKBO TKPrim TKTopAlgo TKGeomAlgo # ModelingData TKBRep TKGeomBase TKG3d TKG2d # FoundationClasses # TKAdvTools -- not necessary? (and removed from OCC 6.8) TKMath TKernel) # Set the path of the OCC library. set(3RDPARTY_LIB_PATH ${PROJECT_SOURCE_DIR}/3rdparty/occ730-vc11-bit64-release) set(OCC_LIB_PATH ${3RDPARTY_LIB_PATH} CACHE PATH "path to OpenCasCade library.") message(STATUS "Path to OpenCasCade library: " ${OCC_LIB_PATH}) # Check if all the library exist -- it's need to be checked. foreach(OCC ${OCC_LIBS_REQUIRED}) list(APPEND OCC_LIBS ${OCC}) unset(OCC CACHE) endforeach(OCC) if(WIN32) MESSAGE(STATUS "Using Win32 OpenCasCade.") MESSAGE(STATUS "${OCC_LIB_PATH}/lib") MESSAGE(STATUS "${OCC_LIB_PATH}/bin") link_directories("${OCC_LIB_PATH}/lib") link_directories("${OCC_LIB_PATH}/bin") include_directories("${OCC_LIB_PATH}/inc") else(WIN32) MESSAGE(STATUS "Using NON-Win32 OpenCasCade.") MESSAGE(STATUS "${OCC_LIB_PATH}/lin64/gcc/lib") MESSAGE(STATUS "${OCC_LIB_PATH}/inc") link_directories("${OCC_LIB_PATH}/lin64/gcc/lib") include_directories("${OCC_LIB_PATH}/inc") endif(WIN32) endif() # Some pre-definitions that occ need. if(USE_OCC) #target_link_libraries(${EXECUTABLE_TARGET_NAME} ${OCC_LIBS}) add_definitions(-DWNT) add_definitions(-DNOTCL) endif() # build executable program or library to the project using the specified source files and header files: if ("${BUILD_LIBRARY_TYPE}" STREQUAL "Shared") # Building Shared Library. message(STATUS "Building Shared Library ${CFD_TARGET_NAME} ...") add_library(${CFD_TARGET_NAME} SHARED ${CFD_CPP_LIST} ${CFD_HEAD_LIST}) elseif ("${BUILD_LIBRARY_TYPE}" STREQUAL "Static") # Building Static Library. message(STATUS "Building Static Library ${CFD_TARGET_NAME} ...") add_library(${CFD_TARGET_NAME} STATIC ${CFD_CPP_LIST} ${CFD_HEAD_LIST}) endif() # link API library: set(API_TARGET_NAME "PHAPI") list(APPEND LINK_LIBRARY_LIST ${API_TARGET_NAME} metis parmetis cgns hdf5) if(USE_HypreLib) list(APPEND LINK_LIBRARY_LIST hypre) endif(USE_HypreLib) if(USE_UnapLib) list(APPEND LINK_LIBRARY_LIST unap utilities) endif(USE_UnapLib) if(USE_YhamgLib) list(APPEND LINK_LIBRARY_LIST yhamg) endif(USE_YhamgLib) if(USE_TecplotLib) list(APPEND LINK_LIBRARY_LIST tecio) endif(USE_TecplotLib) if(WIN32) list(APPEND LINK_LIBRARY_LIST ${mpiname}) endif(WIN32) if(BUILD_SpecDiffHybSolver) list(APPEND LINK_LIBRARY_LIST p3dfft fftw3 mpifort gfortran) endif(BUILD_SpecDiffHybSolver) if(BUILD_GMRESSolver) # sacado library list(APPEND LINK_LIBRARY_LIST ${Sacado_LIBRARIES}) # PETSc library list(APPEND LINK_LIBRARY_LIST ${PETSC_Libraries}) endif() target_link_libraries(${CFD_TARGET_NAME} ${LINK_LIBRARY_LIST}) message(STATUS "Link library list: ${LINK_LIBRARY_LIST}.") # For OpenMP if(USE_OMP) find_package (OpenMP) if (OpenMP_FOUND) if(WIN32) target_include_directories (${CFD_TARGET_NAME} PRIVATE ${OpenMP_CXX_INCLUDE_DIRS} ) target_compile_options (${CFD_TARGET_NAME} PRIVATE ${OpenMP_CXX_FLAGS} ) target_compile_features (${CFD_TARGET_NAME} PUBLIC cxx_std_14 ) target_link_libraries (${CFD_TARGET_NAME} PRIVATE ${OpenMP_CXX_LIBRARIES} ) else(WIN32) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") endif(WIN32) endif (OpenMP_FOUND) endif(USE_OMP) #24. exit: message(STATUS "--- Exit ${CMAKE_CURRENT_LIST_FILE}! ---")