diff --git a/CMakeLists.txt b/CMakeLists.txt index 8989f7b0ffc4f469272add1b7b1fee21ca254ad1..425011ea84c460cedcc586a08ebf00e9293193c9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -451,8 +451,16 @@ if(HAVE_FLTK OR HAVE_QT OR ENABLE_GRAPHICS) endif(HAVE_FLTK OR HAVE_QT OR ENABLE_GRAPHICS) if(ENABLE_ANN) - add_subdirectory(contrib/ANN) - include_directories(contrib/ANN/include) + find_library(ANN_LIB ann PATH_SUFFIXES lib) + find_path(ANN_INC "ANN.h" PATH_SUFFIXES src include ANN) + if(ANN_LIB AND ANN_INC) + list(APPEND EXTERNAL_LIBRARIES ${ANN_LIB}) + list(APPEND EXTERNAL_INCLUDES ${ANN_INC}) + else(ANN_LIB AND ANN_INC) + message(STATUS "System ANN not found - using contrib/ANN instead") + add_subdirectory(contrib/ANN) + include_directories(contrib/ANN/include) + endif(ANN_LIB AND ANN_INC) set_config_option(HAVE_ANN "Ann") endif(ENABLE_ANN) @@ -482,7 +490,13 @@ if(ENABLE_DINTEGRATION) endif(ENABLE_DINTEGRATION) if(ENABLE_GMM) - include_directories(contrib/gmm) + find_path(GMM_INC "gmm.h" PATH_SUFFIXES src include include/gmm) + if(GMM_INC) + list(APPEND EXTERNAL_INCLUDES ${GMM_INC}) + else(GMM_INC) + message(STATUS "System GMM not found - using contrib/gmm instead") + include_directories(contrib/gmm) + endif(GMM_INC) set_config_option(HAVE_GMM "Gmm") endif(ENABLE_GMM) @@ -548,8 +562,16 @@ if(HAVE_MESH) endif(ENABLE_BAMG) if(ENABLE_MMG3D) - add_subdirectory(contrib/mmg3d) - include_directories(contrib/mmg3d/build/sources) + find_library(MMG3D_LIB mmg3dlib4.0 PATH_SUFFIXES lib) + find_path(MMG3D_INC "libmmg3d.h" PATH_SUFFIXES src include) + if(MMG3D_LIB AND MMG3D_INC) + list(APPEND EXTERNAL_LIBRARIES ${MMG3D_LIB}) + list(APPEND EXTERNAL_INCLUDES ${MMG3D_INC}) + else(MMG3D_LIB AND MMG3D_INC) + message(STATUS "System MMG3D not found - using contrib/mmg3d instead") + add_subdirectory(contrib/mmg3d) + include_directories(contrib/mmg3d/build/sources) + endif(MMG3D_LIB AND MMG3D_INC) set_config_option(HAVE_MMG3D "Mmg3d") endif(ENABLE_MMG3D) @@ -565,9 +587,19 @@ if(HAVE_MESH) include_directories(contrib/Tetgen) set_config_option(HAVE_TETGEN "Tetgen") add_definitions(-DTETLIBRARY) + elseif(ENABLE_TETGEN) + find_library(TETGEN_LIB tet PATH_SUFFIXES lib) + find_path(TETGEN_INC "tetgen.h" PATH_SUFFIXES src include tetgen) + if(TETGEN_LIB AND TETGEN_INC) + list(APPEND EXTERNAL_LIBRARIES ${TETGEN_LIB}) + list(APPEND EXTERNAL_INCLUDES ${TETGEN_INC}) + set_config_option(HAVE_TETGEN "Tetgen") + endif(TETGEN_LIB AND TETGEN_INC) + endif(ENABLE_TETGEN_NEW AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/TetgenNew/tetgen.h) + if(HAVE_TETGEN) message("WARNING: By including Tetgen you have to comply with Tetgen's " "special licensing requirements stated in contrib/Tetgen/LICENSE.") - endif(ENABLE_TETGEN_NEW AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/TetgenNew/tetgen.h) + endif(HAVE_TETGEN) endif(HAVE_MESH) if(ENABLE_FOURIER_MODEL) diff --git a/Mesh/meshGEdge.cpp b/Mesh/meshGEdge.cpp index 17bd901f2c1cbd8f6c9b8ff1686c9c0e4f9b1d52..57df16408b674bff71bd8d7b1caaa1debc32d438 100644 --- a/Mesh/meshGEdge.cpp +++ b/Mesh/meshGEdge.cpp @@ -20,13 +20,12 @@ typedef struct { int Num; // t is the local coordinate of the point - // lc is x'(t)/h((x(t)) + // lc is x'(t)/h(x(t)) // p is the value of the primitive // xp is the norm of the tangent vector double t, lc, p, xp; } IntPoint; - static double smoothPrimitive(GEdge *ge, double alpha, std::vector<IntPoint> &Points) { @@ -119,7 +118,7 @@ static double F_Transfinite(GEdge *ge, double t_) { double length = ge->length(); if(length == 0.0){ - Msg::Error("Zero-length curve in transfinite mesh"); + Msg::Error("Zero-length curve %d in transfinite mesh", ge->tag()); return 1.; } @@ -352,8 +351,8 @@ void meshGEdge::operator() (GEdge *ge) double a; int N; if(length == 0. && CTX::instance()->mesh.toleranceEdgeLength == 0.){ - Msg::Error("Curve %d has a zero length", ge->tag()); - a = 0; + Msg::Warning("Curve %d has a zero length", ge->tag()); + a = 0.; N = 1; } else if(ge->degenerate(0)){