diff --git a/CMake/FindTBB.cmake b/CMake/FindTBB.cmake deleted file mode 100644 index bbe3a4faa95be0897bc7b36539ca5f30a361f3dd..0000000000000000000000000000000000000000 --- a/CMake/FindTBB.cmake +++ /dev/null @@ -1,277 +0,0 @@ -# Copyright 2020 University of Liège -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# FindTBB.cmake - try to find Intel Threading Building Blocks libraries -# (RoBo) -# ---------------------------------------------------------------------------- -# input: -# ENABLE_TBBMALLOC : ON/OFF -# output: -# TBB_FOUND : TRUE/FALSE -# TBB_LIBRARIES : list of tbb libraries to link with -# TBB_LIB_PATH : where the optimized .so/.lib are [cached] -# TBB_LIB_PATH_DEBUG : where the debug .so/.lib are [cached] -# TBB_INCLUDE_DIRS : where the tbb/*.h are [cached] -# TBB_VERSION_INTERFACE : -# TBB_VERSION_MAJOR : -# TBB_VERSION_MINOR : -# TBB_VERSION_STRING : version such as "4.2" -# TBB_CXX_FLAGS_DEBUG : to be added to -# ---------------------------------------------------------------------------- -# todo: -# TBB_DEFINITIONS ? (args suppl en debug) -# -# autodetection: -# succeeds if tbb.dll/tbb_debug.dll are in the PATH/LD_LIBRARY_PATH -# otherwise, you may set TBB_LIB_PATH, TBB_LIB_PATH_DEBUG manually -# -# main advantage: -# the link will be always performed with the library corresponding -# to dynamic lib the PATH -# => avoids problem when 2 sets of libs are installed in the system -# -# remarks: -# $ENV{TBBROOT} is *not* used here because it is rather difficult -# to guess the wanted target architecture -# -# tested on: -# win7-msvc + official tbb binaries -# winxp-mingw32 + tbb compiled from src -# linux + installed parallel studio -# -# memo: -# http://www.cmake.org/Wiki/CMake:How_To_Find_Libraries#Writing_find_modules -# ---------------------------------------------------------------------------- - -set (_VERB 0) # set to 1 for debugging - -OPTION(ENABLE_TBBMALLOC "Use TBBMALLOC" OFF) - -IF(_VERB) # Debug - MESSAGE(STATUS "-------------------------------------") - MESSAGE(STATUS " FindTBB") - MESSAGE(STATUS "-------------------------------------") - - MESSAGE(STATUS "CMAKE_SHARED_LIBRARY_SUFFIX=${CMAKE_SHARED_LIBRARY_SUFFIX}") - MESSAGE(STATUS "CMAKE_SHARED_MODULE_SUFFIX=${CMAKE_SHARED_MODULE_SUFFIX}") - MESSAGE(STATUS "CMAKE_FIND_LIBRARY_SUFFIX=${CMAKE_FIND_LIBRARY_SUFFIX}") - MESSAGE(STATUS "TBB_FIND_REQUIRED=${TBB_FIND_REQUIRED}") # automatiquement à 1 si REQUIRED - MESSAGE(STATUS "TBB_USE_TBBMALLOC=${TBB_USE_TBBMALLOC}") - MESSAGE(STATUS "WIN32=${WIN32}") - MESSAGE(STATUS "MSVC=${MSVC}") - MESSAGE(STATUS "MINGW=${MINGW}") - MESSAGE(STATUS "TBBROOT=$ENV{TBBROOT}") -ENDIF() - -SET(TBB_CXX_FLAGS_DEBUG "-DTBB_USE_THREADING_TOOLS=1 -DTBB_USE_DEBUG=1") - -# --- List of libraries to be found --- - -set(_TBB_TBBLIB_NAME "tbb") -set(_TBB_PROXYLIB_NAME "tbbmalloc_proxy") -set(_TBB_MALLOCLIB_NAME "tbbmalloc") - -set(_TBB_LIBSET1 ${_TBB_TBBLIB_NAME}) -set(_TBB_LIBSET2 ${_TBB_PROXYLIB_NAME} ${_TBB_MALLOCLIB_NAME}) - -# ---------------------------------------------------------------------------- -# --- TBB_LIB_PATH --- -# ---------------------------------------------------------------------------- -# method: -# - look for the dynamic lib in the PATH/LD_LIBRARY_PATH -# on linux or win/mingw; this path is correct -# - on win/msvc, replace "bin" => "lib" in the path previously found - -SET(_TBB_LIB_PATH ${TBB_LIB_PATH}) # copy cached value -IF(NOT _TBB_LIB_PATH) # work on copy - # try to find "(lib)tbb.dll/so" from the env variables - IF(MSVC) - find_file(_TBB_TBBDLL "tbb.dll" PATHS "$ENV{TBBROOT}/lib/$ENV{TBB_ARCH_PLATFORM}" ) - ELSEIF(APPLE) - find_library(_TBB_TBBDLL "tbb" PATHS "" ENV DYLD_LIBRARY_PATH) - ELSE() - find_library(_TBB_TBBDLL "tbb" PATHS "" ENV LD_LIBRARY_PATH) - ENDIF() - #MESSAGE(STATUS "_TBB_TBBDLL=${_TBB_TBBDLL}") - IF(_TBB_TBBDLL) - get_filename_component(_TBB_DLL_PATH ${_TBB_TBBDLL} PATH CACHE) - unset(_TBB_TBBDLL CACHE) - - IF(MSVC) - STRING(REPLACE "/bin/" "/lib/" _TBB_LIB_PATH ${_TBB_DLL_PATH}) - ELSE() - SET(_TBB_LIB_PATH ${_TBB_DLL_PATH}) - ENDIF() - unset(_TBB_DLL_PATH CACHE) - #MESSAGE(STATUS "_TBB_LIB_PATH=${_TBB_LIB_PATH}") - ELSE() - MESSAGE(WARNING "!!!!!!!! ${CMAKE_SHARED_LIBRARY_PREFIX}${_TBB_TBBLIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX} should be in PATH/LD_LIBRARY_PATH !!!!!!!!!") - ENDIF() - unset(_TBB_TBBDLL CACHE) -ENDIF() -IF(NOT TBB_LIB_PATH) # set cache if needed - SET(TBB_LIB_PATH "${_TBB_LIB_PATH}" CACHE PATH "where the optimized .so/.lib are" FORCE) -ENDIF() - -# ---------------------------------------------------------------------------- -# --- TBB_LIB_PATH_DEBUG --- -# ---------------------------------------------------------------------------- -# same method for debug libs - -SET(_TBB_LIB_PATH_DEBUG ${TBB_LIB_PATH_DEBUG}) # copy cached value -IF(NOT _TBB_LIB_PATH_DEBUG) # work on copy - # try to find "(lib)tbb_debug.dll/so" from the env variables - IF(MSVC) - find_file(_TBB_TBBDLL_DEBUG "tbb_debug.dll" "tbb.dll" PATHS "$ENV{TBBROOT}/lib/$ENV{TBB_ARCH_PLATFORM}" ) - ELSEIF(APPLE) - find_library(_TBB_TBBDLL_DEBUG "tbb_debug" "tbb" PATHS "" ENV DYLD_LIBRARY_PATH) - ELSE() - find_library(_TBB_TBBDLL_DEBUG "tbb_debug" "tbb" PATHS "" ENV LD_LIBRARY_PATH) - ENDIF() - #MESSAGE(STATUS "_TBB_TBBDLL_DEBUG=${_TBB_TBBDLL_DEBUG}") - IF(_TBB_TBBDLL_DEBUG) - get_filename_component(_TBB_DLL_PATH_DEBUG ${_TBB_TBBDLL_DEBUG} PATH CACHE) - unset(_TBB_TBBDLL_DEBUG CACHE) - - IF(MSVC) - STRING(REPLACE "/bin/" "/lib/" _TBB_LIB_PATH_DEBUG ${_TBB_DLL_PATH_DEBUG}) - ELSE() - SET(_TBB_LIB_PATH_DEBUG ${_TBB_DLL_PATH_DEBUG}) - ENDIF() - unset(_TBB_DLL_PATH_DEBUG CACHE) - #MESSAGE(STATUS "_TBB_LIB_PATH_DEBUG=${_TBB_LIB_PATH_DEBUG}") - ELSE() - MESSAGE(WARNING "!!!!!!!! ${CMAKE_SHARED_LIBRARY_PREFIX}${_TBB_TBBLIB_NAME}_debug${CMAKE_SHARED_LIBRARY_SUFFIX} should be in PATH/LD_LIBRARY_PATH !!!!!!!!!") - ENDIF() - unset(_TBB_TBBDLL_DEBUG CACHE) -ENDIF() -IF(NOT TBB_LIB_PATH_DEBUG) # set cache if needed - SET(TBB_LIB_PATH_DEBUG ${_TBB_LIB_PATH_DEBUG} CACHE PATH "where the debug .so/.lib are" FORCE) -ENDIF() - -# ---------------------------------------------------------------------------- -# TBB_LIBRARIES: search full path of all libraries -# ---------------------------------------------------------------------------- - -macro(resolveLibs VARNAME LISTNAME) - foreach(LIB ${${LISTNAME}}) - # look for optimized version - find_library(FOUND_LIB ${LIB} PATHS ${TBB_LIB_PATH} "$ENV{TBBROOT}/lib/$ENV{TBB_ARCH_PLATFORM}") - #MESSAGE(STATUS "FOUND_LIB=${FOUND_LIB}") - if(FOUND_LIB) - list(APPEND ${VARNAME} "optimized" ${FOUND_LIB}) - endif() - unset(FOUND_LIB CACHE) - # look for debug version - find_library(FOUND_LIB ${LIB}_debug PATHS ${TBB_LIB_PATH_DEBUG} "$ENV{TBBROOT}/lib/$ENV{TBB_ARCH_PLATFORM}") - #MESSAGE(STATUS "FOUND_LIB=${FOUND_LIB}") - if(FOUND_LIB) - list(APPEND ${VARNAME} "debug" ${FOUND_LIB}) - endif() - unset(FOUND_LIB CACHE) - endforeach() -endmacro() - -# search for all libs -IF( TBB_LIB_PATH AND TBB_LIB_PATH_DEBUG) - resolveLibs(_TBB_LIBSET1_DIRS _TBB_LIBSET1) - resolveLibs(_TBB_LIBSET2_DIRS _TBB_LIBSET2) -ENDIF() - -# build full list of libs -set(TBB_LIBRARIES ${_TBB_LIBSET1_DIRS}) -IF(ENABLE_TBBMALLOC) - LIST(APPEND TBB_LIBRARIES ${_TBB_LIBSET2_DIRS} ) -ENDIF() - -# print for debug -IF(_VERB) - foreach(LIB ${TBB_LIBRARIES}) - MESSAGE(STATUS "lib=${LIB}") - endforeach() -ENDIF() - -# ---------------------------------------------------------------------------- -# TBB_INCLUDE_DIRS: search include dir -# ---------------------------------------------------------------------------- - -SET(_TBB_INCLUDE_DIRS ${TBB_INCLUDE_DIRS}) -IF( (NOT _TBB_INCLUDE_DIRS) AND (TBB_LIB_PATH)) - SET(_VAR1 ${TBB_LIB_PATH}) - SET(_BASENAME ${_VAR1}) - SET(_TBB_TBBROOT "_TBB_TBBROOT-NOTFOUND") - WHILE( (NOT _TBB_TBBROOT) AND (_BASENAME) ) - get_filename_component(_DIRNAME ${_VAR1} PATH) - #MESSAGE(STATUS "_DIRNAME=${_DIRNAME}") - get_filename_component(_BASENAME ${_VAR1} NAME) - #MESSAGE(STATUS "_BASENAME=${_BASENAME}") # on remonte jusqu'à un "lib" ou "build" - - IF( ("${_BASENAME}" STREQUAL "lib") OR ("${_BASENAME}" STREQUAL "build") OR ("${_BASENAME}" STREQUAL "bin") ) - SET(_TBB_TBBROOT ${_DIRNAME}) - ELSE() - SET(_VAR1 ${_DIRNAME}) - ENDIF() - ENDWHILE() - #MESSAGE(STATUS "_TBB_TBBROOT=${_TBB_TBBROOT}") - - FIND_PATH(_TBB_INCLUDE_DIRS - NAMES tbb/parallel_for.h - PATHS "${_TBB_TBBROOT}" "$ENV{TBBROOT}" - PATH_SUFFIXES include - ) - #MESSAGE(STATUS "_TBB_INCLUDE_DIRS=${_TBB_INCLUDE_DIRS}") -ENDIF() -IF(NOT TBB_INCLUDE_DIRS) # set cache if needed - SET(TBB_INCLUDE_DIRS ${_TBB_INCLUDE_DIRS} CACHE PATH "where the tbb/*.h are" FORCE) -ENDIF() -unset(_TBB_INCLUDE_DIRS CACHE) - -# ---------------------------------------------------------------------------- -# Versions -# ---------------------------------------------------------------------------- - -SET(_TBB_VERSION_INTERFACE ${TBB_VERSION_INTERFACE}) -IF( (NOT TBB_VERSION_INTERFACE) AND TBB_INCLUDE_DIRS ) - FILE(READ "${TBB_INCLUDE_DIRS}/tbb/tbb_stddef.h" _FILE) - set(_TBB_VERSION_MAJOR 0) - set(_TBB_VERSION_MINOR 0) - STRING(REGEX REPLACE ".*#define TBB_INTERFACE_VERSION ([0-9]+).*" "\\1" _TBB_VERSION_INTERFACE "${_FILE}") - STRING(REGEX REPLACE ".*#define TBB_VERSION_MAJOR ([0-9]+).*" "\\1" _TBB_VERSION_MAJOR "${_FILE}") - STRING(REGEX REPLACE ".*#define TBB_VERSION_MINOR ([0-9]+).*" "\\1" _TBB_VERSION_MINOR "${_FILE}") - set(_TBB_VERSION_STRING "${_TBB_VERSION_MAJOR}.${_TBB_VERSION_MINOR}") - unset(_FILE) -ENDIF() -IF(NOT TBB_VERSION_INTERFACE) - SET(TBB_VERSION_INTERFACE ${_TBB_VERSION_INTERFACE} CACHE STRING "" FORCE) - SET(TBB_VERSION_MAJOR ${_TBB_VERSION_MAJOR} CACHE INTERNAL "" FORCE) - SET(TBB_VERSION_MINOR ${_TBB_VERSION_MINOR} CACHE INTERNAL "" FORCE) - SET(TBB_VERSION_STRING ${_TBB_VERSION_STRING} CACHE STRING "" FORCE) - mark_as_advanced(TBB_VERSION_INTERFACE) - mark_as_advanced(TBB_VERSION_MAJOR) - mark_as_advanced(TBB_VERSION_MINOR) - mark_as_advanced(TBB_VERSION_STRING) -ENDIF() -# ---------------------------------------------------------------------------- - -include(FindPackageHandleStandardArgs) -# handle the QUIETLY and REQUIRED arguments and set TBB_FOUND to TRUE -# if all listed variables are TRUE -find_package_handle_standard_args(TBB DEFAULT_MSG - TBB_LIBRARIES TBB_INCLUDE_DIRS - TBB_LIB_PATH TBB_LIB_PATH_DEBUG) - -#MESSAGE(STATUS "TBB_FOUND = ${TBB_FOUND}") -# ---------------------------------------------------------------------------- - -unset(_VERB) diff --git a/README.md b/README.md index d3066035c8118a0620794149e03d059568047fd0..2212ff5aedf5dbafa1f92f4efea1cfac81893ea6 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,20 @@ Field panel method for solving transonic flows using the full potential equation  ## Features +Set of python/C++ modules solving the linear potential equation and correcting it with source terms computed using third-party nonlinear solvers. + +- [x] [gmsh](http://geuz.org/gmsh) support for meshing and post-processing +- [x] [eigen3](http://eigen.tuxfamily.org/) support for linear algebra ## Build -Depends on python3, swig, tbb, eigen. +fpm is linked against [waves](https://gitlab.uliege.be/am-dept/waves). Once all the required packages and waves are installed: + +```bash +git clone git@gitlab.uliege.be:am-dept/fpm.git # get the code +mkdir build && cd build +cmake -DCMAKE_PREFIX_PATH=/path/to/waves .. # configure and reference waves package +make # compile +ctest # test +``` ## References