mirror of
https://github.com/NGSolve/netgen.git
synced 2025-01-12 22:20:35 +05:00
Merge branch 'separate_gui_code' into 'master'
rework build system, separate gui and non-gui code See merge request ngsolve/netgen!501
This commit is contained in:
commit
8076407e08
@ -2,22 +2,20 @@ if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING INTERNAL)
|
||||
endif(NOT CMAKE_BUILD_TYPE)
|
||||
|
||||
if(WIN32)
|
||||
# we are linking to object libraries on Windows
|
||||
cmake_minimum_required(VERSION 3.12)
|
||||
else(WIN32)
|
||||
cmake_minimum_required(VERSION 3.8)
|
||||
endif(WIN32)
|
||||
|
||||
cmake_policy(VERSION 3.12)
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
cmake_policy(VERSION 3.13)
|
||||
|
||||
option( USE_NATIVE_ARCH "build for native cpu architecture" ON)
|
||||
|
||||
option( USE_GUI "don't build netgen with GUI" ON )
|
||||
option( USE_GUI "build with GUI" ON )
|
||||
option( USE_PYTHON "build with python interface" ON )
|
||||
option( USE_MPI "enable mpi parallelization" OFF )
|
||||
option( USE_MPI4PY "enable mpi4py interface" ON )
|
||||
option( USE_OCC "(not supported) compile with OpenCascade geometry kernel" OFF)
|
||||
option( USE_OCC "build with OpenCascade geometry kernel interface" OFF)
|
||||
option( USE_STLGEOM "build with STL geometry support" ON)
|
||||
option( USE_CSG "build with CSG kernel" ON)
|
||||
option( USE_INTERFACE "build nginterface" ON)
|
||||
option( USE_GEOM2D "build 2d geometry kernels" ON)
|
||||
option( USE_JPEG "enable snapshots using library libjpeg" OFF )
|
||||
option( USE_MPEG "enable video recording with FFmpeg, uses libavcodec" OFF )
|
||||
option( USE_CGNS "enable CGNS file read/write support" OFF )
|
||||
@ -34,11 +32,15 @@ option( CHECK_RANGE "Check array range access, automatically enabled if built in
|
||||
option( BUILD_STUB_FILES "Build stub files for better autocompletion" ON)
|
||||
option( BUILD_FOR_CONDA "Link python libraries only to executables" OFF)
|
||||
|
||||
option( USE_SUPERBUILD "use ccache" ON)
|
||||
option( USE_SUPERBUILD "build dependencies automatically" ON)
|
||||
option( TRACE_MEMORY "Enable memory tracing" OFF)
|
||||
|
||||
set(NG_COMPILE_FLAGS "" CACHE STRING "Additional compile flags")
|
||||
|
||||
set(NGLIB_LIBRARY_TYPE SHARED CACHE STRING "nglib library type")
|
||||
set(NGCORE_LIBRARY_TYPE SHARED CACHE STRING "ngcore library type")
|
||||
set(NGGUI_LIBRARY_TYPE SHARED CACHE STRING "nggui library type")
|
||||
|
||||
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_modules")
|
||||
|
||||
if(APPLE)
|
||||
@ -220,24 +222,33 @@ macro(get_dll_from_lib dll_path lib_path)
|
||||
get_filename_component(lib_name ${lib} name)
|
||||
endmacro()
|
||||
|
||||
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
if(WIN32)
|
||||
set(CMAKE_MFC_FLAG 0)
|
||||
# build convenience (aka object) libraries in windows)
|
||||
set(NG_LIB_TYPE OBJECT)
|
||||
else(WIN32)
|
||||
# build shared libraries
|
||||
set(NG_LIB_TYPE SHARED)
|
||||
endif(WIN32)
|
||||
if(APPLE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -undefined dynamic_lookup")
|
||||
endif(APPLE)
|
||||
|
||||
#######################################################################
|
||||
add_library(nglib ${NGLIB_LIBRARY_TYPE})
|
||||
if(USE_GUI)
|
||||
add_library(nggui ${NGGUI_LIBRARY_TYPE})
|
||||
if(WIN32)
|
||||
set_target_properties( nggui PROPERTIES OUTPUT_NAME "libnggui")
|
||||
endif(WIN32)
|
||||
endif(USE_GUI)
|
||||
|
||||
#######################################################################
|
||||
if(NOT ZLIB_INCLUDE_DIRS)
|
||||
find_package(ZLIB REQUIRED)
|
||||
endif(NOT ZLIB_INCLUDE_DIRS)
|
||||
include_directories(${ZLIB_INCLUDE_DIRS})
|
||||
target_include_directories(nglib PRIVATE ${ZLIB_INCLUDE_DIRS})
|
||||
if(USE_GUI)
|
||||
target_include_directories(nggui PRIVATE ${ZLIB_INCLUDE_DIRS})
|
||||
endif(USE_GUI)
|
||||
target_link_libraries(nglib PUBLIC ${ZLIB_LIBRARIES})
|
||||
|
||||
#######################################################################
|
||||
if (USE_GUI)
|
||||
@ -246,30 +257,32 @@ if (USE_GUI)
|
||||
find_package(Threads REQUIRED)
|
||||
if(APPLE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit")
|
||||
target_link_libraries(nggui PUBLIC "-framework AppKit")
|
||||
else(APPLE)
|
||||
find_package(X11 REQUIRED)
|
||||
target_link_libraries( nggui PUBLIC ${X11_Xmu_LIB} ${X11_X11_LIB})
|
||||
endif(APPLE)
|
||||
find_package(OpenGL REQUIRED)
|
||||
|
||||
add_definitions(-DTCL -DOPENGL -DUSE_TOGL_2 -DUSE_TCL_STUBS -DUSE_TK_STUBS)
|
||||
include_directories(${TCL_INCLUDE_PATH})
|
||||
include_directories(${TK_INCLUDE_PATH})
|
||||
target_compile_definitions(nggui PUBLIC -DTCL -DOPENGL -DUSE_TOGL_2 PRIVATE -DUSE_TCL_STUBS -DUSE_TK_STUBS)
|
||||
target_include_directories(nggui PUBLIC ${TCL_INCLUDE_PATH} ${TK_INCLUDE_PATH})
|
||||
if(NOT EXISTS ${TK_INCLUDE_PATH}/tkWin.h AND EXISTS ${TK_INCLUDE_PATH}/../win/tkWin.h)
|
||||
include_directories(${TK_INCLUDE_PATH}/../win)
|
||||
target_include_directories(nggui PUBLIC ${TK_INCLUDE_PATH}/../win)
|
||||
endif()
|
||||
if(NOT EXISTS ${TK_INCLUDE_PATH}/x11/Xlib.h AND EXISTS ${TK_INCLUDE_PATH}/../xlib/X11/Xlib.h)
|
||||
include_directories(${TK_INCLUDE_PATH}/../xlib)
|
||||
target_include_directories(nggui PUBLIC ${TK_INCLUDE_PATH}/../xlib)
|
||||
endif()
|
||||
|
||||
set(LIBTOGL togl)
|
||||
target_link_libraries(nggui PUBLIC nglib togl
|
||||
PRIVATE "$<BUILD_INTERFACE:netgen_python>" )
|
||||
|
||||
if(WIN32)
|
||||
add_definitions(-DTOGL_WGL)
|
||||
target_compile_definitions(nggui PUBLIC -DTOGL_WGL)
|
||||
else(WIN32)
|
||||
if(APPLE)
|
||||
ADD_DEFINITIONS(-DTOGL_NSOPENGL)
|
||||
target_compile_definitions(nggui PUBLIC -DTOGL_NSOPENGL)
|
||||
else(APPLE)
|
||||
ADD_DEFINITIONS(-DTOGL_X11)
|
||||
target_compile_definitions(nggui PUBLIC -DTOGL_X11)
|
||||
endif(APPLE)
|
||||
endif(WIN32)
|
||||
endif (USE_GUI)
|
||||
@ -291,6 +304,7 @@ if (USE_PYTHON)
|
||||
endif( PYBIND_INCLUDE_DIR )
|
||||
|
||||
target_include_directories(netgen_python INTERFACE ${PYBIND_INCLUDE_DIR} ${PYTHON_INCLUDE_DIRS})
|
||||
target_include_directories(nglib PRIVATE ${PYBIND_INCLUDE_DIR} ${PYTHON_INCLUDE_DIRS})
|
||||
if(NOT ${BUILD_FOR_CONDA} OR WIN32)
|
||||
# Don't link python libraries in conda environments
|
||||
target_link_libraries(netgen_python INTERFACE ${PYTHON_LIBRARIES})
|
||||
@ -366,14 +380,18 @@ if (USE_OCC)
|
||||
)
|
||||
include_directories(${OpenCASCADE_INCLUDE_DIR})
|
||||
if(NOT OpenCASCADE_BUILD_SHARED_LIBS)
|
||||
find_library( FREETYPE NAMES freetype HINTS ${OpenCASCADE_INSTALL_PREFIX}/lib)
|
||||
list(APPEND OCC_LIBRARIES ${FREETYPE})
|
||||
if(OpenCASCADE_WITH_FREETYPE)
|
||||
find_library( FREETYPE NAMES freetype HINTS ${OpenCASCADE_INSTALL_PREFIX}/lib)
|
||||
list(APPEND OCC_LIBRARIES ${FREETYPE})
|
||||
if(UNIX AND NOT APPLE)
|
||||
find_package(Fontconfig REQUIRED)
|
||||
list(APPEND OCC_LIBRARIES ${Fontconfig_LIBRARIES})
|
||||
endif()
|
||||
endif(OpenCASCADE_WITH_FREETYPE)
|
||||
if(UNIX AND NOT APPLE)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
list(APPEND OCC_LIBRARIES Threads::Threads)
|
||||
find_package(Fontconfig REQUIRED)
|
||||
list(APPEND OCC_LIBRARIES ${Fontconfig_LIBRARIES})
|
||||
list(PREPEND OCC_LIBRARIES -Wl,--start-group)
|
||||
list(APPEND OCC_LIBRARIES -Wl,--end-group)
|
||||
endif()
|
||||
@ -382,6 +400,9 @@ if (USE_OCC)
|
||||
endif()
|
||||
endif()
|
||||
message(STATUS "OCC DIRS ${OpenCASCADE_INCLUDE_DIR}")
|
||||
if(WIN32)
|
||||
target_link_libraries(nggui PRIVATE ${OCC_LIBRARIES})
|
||||
endif(WIN32)
|
||||
endif (USE_OCC)
|
||||
|
||||
#######################################################################
|
||||
@ -483,6 +504,9 @@ endif(USE_CGNS)
|
||||
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/netgen_version.hpp ${CMAKE_CURRENT_BINARY_DIR}/netgen_config.hpp DESTINATION ${NG_INSTALL_DIR_INCLUDE}/include COMPONENT netgen_devel)
|
||||
|
||||
# include instead of add_subdirectory to recognize the generated source files properly
|
||||
include(rules/CMakeLists.txt)
|
||||
|
||||
add_subdirectory(windows)
|
||||
add_subdirectory(libsrc)
|
||||
add_subdirectory(ng)
|
||||
|
@ -81,27 +81,9 @@ if(USE_OCC)
|
||||
if(BUILD_OCC)
|
||||
set(OCC_DIR ${CMAKE_CURRENT_BINARY_DIR}/dependencies/occ)
|
||||
|
||||
ExternalProject_Add(project_freetype
|
||||
URL https://github.com/freetype/freetype/archive/refs/tags/VER-2-11-0.zip
|
||||
URL_MD5 f58ef6a7affb7794c4f125d98e0e6a25
|
||||
DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external_dependencies
|
||||
${SUBPROJECT_ARGS}
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${OCC_DIR}
|
||||
-DBUILD_SHARED_LIBS:BOOL=OFF
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_ZLIB=TRUE
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_BZip2=TRUE
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_PNG=TRUE
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_HarfBuzz=TRUE
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_BrotliDec=TRUE
|
||||
${SUBPROJECT_CMAKE_ARGS}
|
||||
UPDATE_COMMAND ""
|
||||
)
|
||||
|
||||
ExternalProject_Add(project_occ
|
||||
DEPENDS project_freetype
|
||||
URL https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_6_0.zip
|
||||
URL_MD5 37519251c99cb3469ccfa82a9241d528
|
||||
URL https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_6_1.zip
|
||||
URL_MD5 e891d85cad61c5cc7ccba3d0110f0c8c
|
||||
DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external_dependencies
|
||||
${SUBPROJECT_ARGS}
|
||||
CMAKE_ARGS
|
||||
@ -111,11 +93,14 @@ if(BUILD_OCC)
|
||||
-DBUILD_MODULE_FoundationClasses:BOOL=ON
|
||||
-DBUILD_MODULE_ModelingData:BOOL=ON
|
||||
-DBUILD_MODULE_ModelingAlgorithms:BOOL=ON
|
||||
-DBUILD_MODULE_Visualization:BOOL=ON
|
||||
-DBUILD_MODULE_DataExchange:BOOL=ON
|
||||
-DBUILD_MODULE_Visualization:BOOL=OFF
|
||||
-DBUILD_MODULE_ApplicationFramework:BOOL=OFF
|
||||
-DBUILD_MODULE_Draw:BOOL=OFF
|
||||
-DUSE_FREETYPE=ON
|
||||
-DUSE_FREETYPE:BOOL=OFF
|
||||
-DUSE_OPENGL:BOOL=OFF
|
||||
-DUSE_XLIB:BOOL=OFF
|
||||
-DBUILD_DOC_Overview:BOOL=OFF
|
||||
${SUBPROJECT_CMAKE_ARGS}
|
||||
UPDATE_COMMAND ""
|
||||
)
|
||||
@ -258,6 +243,10 @@ set_vars( NETGEN_CMAKE_ARGS
|
||||
OpenCascade_ROOT
|
||||
ZLIB_INCLUDE_DIRS
|
||||
ZLIB_LIBRARIES
|
||||
|
||||
NGLIB_LIBRARY_TYPE
|
||||
NGCORE_LIBRARY_TYPE
|
||||
NGGUI_LIBRARY_TYPE
|
||||
)
|
||||
|
||||
# propagate all variables set on the command line using cmake -DFOO=BAR
|
||||
|
@ -4,10 +4,21 @@ add_subdirectory(gprim)
|
||||
add_subdirectory(linalg)
|
||||
add_subdirectory(include)
|
||||
add_subdirectory(meshing)
|
||||
add_subdirectory(visualization)
|
||||
add_subdirectory(csg)
|
||||
add_subdirectory(geom2d)
|
||||
add_subdirectory(occ)
|
||||
add_subdirectory(stlgeom)
|
||||
add_subdirectory(interface)
|
||||
|
||||
if(USE_OCC)
|
||||
add_subdirectory(occ)
|
||||
endif(USE_OCC)
|
||||
if(USE_STLGEOM)
|
||||
add_subdirectory(stlgeom)
|
||||
endif(USE_STLGEOM)
|
||||
if(USE_GUI)
|
||||
add_subdirectory(visualization)
|
||||
endif(USE_GUI)
|
||||
if(USE_INTERFACE)
|
||||
add_subdirectory(interface)
|
||||
endif(USE_INTERFACE)
|
||||
if(USE_CSG)
|
||||
add_subdirectory(csg)
|
||||
endif(USE_CSG)
|
||||
if(USE_GEOM2D)
|
||||
add_subdirectory(geom2d)
|
||||
endif(USE_GEOM2D)
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
add_library(ngcore SHARED
|
||||
add_library(ngcore ${NGCORE_LIBRARY_TYPE}
|
||||
archive.cpp
|
||||
bitarray.cpp
|
||||
exception.cpp
|
||||
@ -34,8 +34,6 @@ if(WIN32)
|
||||
get_WIN32_WINNT(ver)
|
||||
target_compile_definitions(ngcore PUBLIC _WIN32_WINNT=${ver} WNT WNT_WINDOW NOMINMAX MSVC_EXPRESS _CRT_SECURE_NO_WARNINGS HAVE_STRUCT_TIMESPEC WIN32)
|
||||
target_link_options(ngcore PUBLIC /ignore:4273 /ignore:4217 /ignore:4049)
|
||||
else(WIN32)
|
||||
target_compile_options(ngcore PRIVATE -fvisibility=hidden)
|
||||
endif(WIN32)
|
||||
|
||||
target_compile_definitions(ngcore PRIVATE NGCORE_EXPORTS)
|
||||
|
@ -1,33 +1,14 @@
|
||||
add_definitions(-DNGINTERFACE_EXPORTS)
|
||||
add_library(csg ${NG_LIB_TYPE}
|
||||
target_sources(nglib PRIVATE
|
||||
algprim.cpp brick.cpp
|
||||
bspline2d.cpp csgeom.cpp csgparser.cpp curve2d.cpp edgeflw.cpp
|
||||
explicitcurve2d.cpp extrusion.cpp gencyl.cpp genmesh.cpp identify.cpp
|
||||
manifold.cpp meshsurf.cpp polyhedra.cpp revolution.cpp singularref.cpp
|
||||
solid.cpp specpoin.cpp spline3d.cpp surface.cpp triapprox.cpp zrefine.cpp
|
||||
python_csg.cpp splinesurface.cpp
|
||||
)
|
||||
if(APPLE)
|
||||
set_target_properties( csg PROPERTIES SUFFIX ".so")
|
||||
endif(APPLE)
|
||||
|
||||
target_link_libraries(csg PUBLIC mesh PRIVATE "$<BUILD_INTERFACE:netgen_python>")
|
||||
if(NOT WIN32)
|
||||
install( TARGETS csg ${NG_INSTALL_DIR})
|
||||
endif(NOT WIN32)
|
||||
|
||||
target_link_libraries(csg PUBLIC ngcore)
|
||||
)
|
||||
|
||||
if(USE_GUI)
|
||||
add_library(csgvis ${NG_LIB_TYPE} vscsg.cpp )
|
||||
target_link_libraries(csgvis PRIVATE "$<BUILD_INTERFACE:netgen_python>" PUBLIC ngcore)
|
||||
if(NOT WIN32)
|
||||
target_link_libraries(csgvis PUBLIC csg visual)
|
||||
if(APPLE)
|
||||
set_target_properties( csgvis PROPERTIES SUFFIX ".so")
|
||||
endif(APPLE)
|
||||
install( TARGETS csgvis ${NG_INSTALL_DIR})
|
||||
endif(NOT WIN32)
|
||||
target_sources(nggui PRIVATE vscsg.cpp csgpkg.cpp)
|
||||
endif(USE_GUI)
|
||||
|
||||
install(FILES
|
||||
|
@ -17,7 +17,6 @@ extern "C" int Ng_CSG_Init (Tcl_Interp * interp);
|
||||
|
||||
namespace netgen
|
||||
{
|
||||
// extern DLL_HEADER NetgenGeometry * ng_geometry;
|
||||
extern DLL_HEADER shared_ptr<NetgenGeometry> ng_geometry;
|
||||
extern DLL_HEADER shared_ptr<Mesh> mesh;
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
namespace netgen
|
||||
{
|
||||
|
||||
NgArray<SpecialPoint> global_specpoints; // for visualization
|
||||
DLL_HEADER NgArray<SpecialPoint> global_specpoints; // for visualization
|
||||
//static NgArray<MeshPoint> spoints;
|
||||
|
||||
#define TCL_OK 0
|
||||
|
@ -1,8 +1,8 @@
|
||||
#ifdef NG_PYTHON
|
||||
|
||||
#include <../general/ngpython.hpp>
|
||||
#include <core/python_ngcore.hpp>
|
||||
#include <csg.hpp>
|
||||
#include "../general/ngpython.hpp"
|
||||
#include "../core/python_ngcore.hpp"
|
||||
#include "csg.hpp"
|
||||
#include "../meshing/python_mesh.hpp"
|
||||
#include "../general/gzstream.h"
|
||||
|
||||
|
@ -21,7 +21,7 @@
|
||||
|
||||
namespace netgen
|
||||
{
|
||||
NgArray<Box<3> > boxes; // for visualizaton
|
||||
DLL_HEADER NgArray<Box<3> > boxes; // for visualizaton
|
||||
|
||||
|
||||
void ProjectToEdge (const Surface * f1, const Surface * f2, Point<3> & hp);
|
||||
|
@ -17,11 +17,11 @@ namespace netgen
|
||||
|
||||
/* *********************** Draw Geometry **************** */
|
||||
|
||||
extern shared_ptr<Mesh> mesh;
|
||||
extern NgArray<SpecialPoint> global_specpoints;
|
||||
DLL_HEADER extern shared_ptr<Mesh> mesh;
|
||||
DLL_HEADER extern NgArray<SpecialPoint> global_specpoints;
|
||||
NgArray<SpecialPoint> & specpoints = global_specpoints;
|
||||
|
||||
extern NgArray<Box<3> > boxes;
|
||||
DLL_HEADER extern NgArray<Box<3> > boxes;
|
||||
|
||||
|
||||
|
||||
@ -500,7 +500,7 @@ namespace netgen
|
||||
#ifdef NG_PYTHON
|
||||
#include <../general/ngpython.hpp>
|
||||
|
||||
DLL_HEADER void ExportCSGVis(py::module &m)
|
||||
NGGUI_API void ExportCSGVis(py::module &m)
|
||||
{
|
||||
using namespace netgen;
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
namespace netgen
|
||||
{
|
||||
|
||||
class DLL_HEADER VisualSceneGeometry : public VisualScene
|
||||
class NGGUI_API VisualSceneGeometry : public VisualScene
|
||||
{
|
||||
class CSGeometry * geometry;
|
||||
NgArray<int> trilists;
|
||||
|
@ -1,12 +1,18 @@
|
||||
add_definitions(-DNGINTERFACE_EXPORTS)
|
||||
add_library(gen INTERFACE)
|
||||
set(sdir ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
target_sources(gen INTERFACE
|
||||
${sdir}/ngarray.cpp ${sdir}/ngbitarray.cpp ${sdir}/dynamicmem.cpp
|
||||
${sdir}/hashtabl.cpp ${sdir}/mystring.cpp ${sdir}/optmem.cpp ${sdir}/parthreads.cpp
|
||||
${sdir}/seti.cpp ${sdir}/sort.cpp ${sdir}/spbita2d.cpp ${sdir}/table.cpp
|
||||
${sdir}/mpi_interface.cpp ${sdir}/gzstream.cpp
|
||||
)
|
||||
target_sources(nglib PRIVATE
|
||||
dynamicmem.cpp
|
||||
gzstream.cpp
|
||||
hashtabl.cpp
|
||||
mpi_interface.cpp
|
||||
mystring.cpp
|
||||
ngarray.cpp
|
||||
ngbitarray.cpp
|
||||
optmem.cpp
|
||||
parthreads.cpp
|
||||
seti.cpp
|
||||
sort.cpp
|
||||
spbita2d.cpp
|
||||
table.cpp
|
||||
)
|
||||
|
||||
install(FILES
|
||||
ngarray.hpp autodiff.hpp autoptr.hpp ngbitarray.hpp
|
||||
|
@ -71,13 +71,13 @@ public:
|
||||
virtual int sync();
|
||||
};
|
||||
|
||||
class gzstreambase : virtual public std::ios {
|
||||
class DLL_HEADER gzstreambase : virtual public std::ios {
|
||||
protected:
|
||||
gzstreambuf buf;
|
||||
public:
|
||||
gzstreambase() { init(&buf); }
|
||||
DLL_HEADER gzstreambase( const filesystem::path & name, int open_mode);
|
||||
DLL_HEADER ~gzstreambase();
|
||||
gzstreambase( const filesystem::path & name, int open_mode);
|
||||
~gzstreambase();
|
||||
void open( const filesystem::path & name, int open_mode);
|
||||
void close();
|
||||
gzstreambuf* rdbuf() { return &buf; }
|
||||
|
@ -688,7 +688,7 @@ protected:
|
||||
size_t mask;
|
||||
public:
|
||||
///
|
||||
BASE_INDEX_2_CLOSED_HASHTABLE (size_t size);
|
||||
DLL_HEADER BASE_INDEX_2_CLOSED_HASHTABLE (size_t size);
|
||||
|
||||
int Size() const { return hash.Size(); }
|
||||
bool UsedPos0 (int pos) const { return ! (hash[pos].I1() == invalid); }
|
||||
@ -738,9 +738,9 @@ public:
|
||||
protected:
|
||||
///
|
||||
|
||||
int Position2 (const INDEX_2 & ind) const;
|
||||
bool PositionCreate2 (const INDEX_2 & ind, int & apos);
|
||||
void BaseSetSize (int asize);
|
||||
DLL_HEADER int Position2 (const INDEX_2 & ind) const;
|
||||
DLL_HEADER bool PositionCreate2 (const INDEX_2 & ind, int & apos);
|
||||
DLL_HEADER void BaseSetSize (int asize);
|
||||
};
|
||||
|
||||
|
||||
|
@ -253,7 +253,7 @@ namespace netgen
|
||||
|
||||
|
||||
[[deprecated("do we still send commands?")]]
|
||||
extern void MyMPI_SendCmd (const char * cmd);
|
||||
DLL_HEADER void MyMPI_SendCmd (const char * cmd);
|
||||
[[deprecated("do we still send commands?")]]
|
||||
extern string MyMPI_RecvCmd ();
|
||||
|
||||
|
@ -29,14 +29,14 @@ class NgBitArray
|
||||
unsigned char * data;
|
||||
|
||||
public:
|
||||
NgBitArray ();
|
||||
DLL_HEADER NgBitArray ();
|
||||
///
|
||||
NgBitArray (INDEX asize);
|
||||
DLL_HEADER NgBitArray (INDEX asize);
|
||||
///
|
||||
~NgBitArray ();
|
||||
DLL_HEADER ~NgBitArray ();
|
||||
|
||||
///
|
||||
void SetSize (INDEX asize);
|
||||
DLL_HEADER void SetSize (INDEX asize);
|
||||
///
|
||||
INDEX Size () const
|
||||
{
|
||||
@ -44,14 +44,14 @@ public:
|
||||
}
|
||||
|
||||
///
|
||||
void Set ();
|
||||
DLL_HEADER void Set ();
|
||||
///
|
||||
void Set (INDEX i)
|
||||
{
|
||||
data[Addr(i)] |= Mask(i);
|
||||
}
|
||||
|
||||
void Clear ();
|
||||
DLL_HEADER void Clear ();
|
||||
|
||||
|
||||
void Clear (INDEX i)
|
||||
|
@ -40,11 +40,11 @@ public:
|
||||
table2.oneblock = nullptr;
|
||||
}
|
||||
|
||||
BASE_TABLE (int size);
|
||||
DLL_HEADER BASE_TABLE (int size);
|
||||
///
|
||||
BASE_TABLE (const NgFlatArray<int> & entrysizes, int elemsize);
|
||||
DLL_HEADER BASE_TABLE (const NgFlatArray<int> & entrysizes, int elemsize);
|
||||
///
|
||||
~BASE_TABLE ();
|
||||
DLL_HEADER ~BASE_TABLE ();
|
||||
|
||||
BASE_TABLE & operator= (BASE_TABLE && table2)
|
||||
{
|
||||
|
@ -1,21 +1,12 @@
|
||||
add_definitions(-DNGINTERFACE_EXPORTS)
|
||||
add_library(geom2d ${NG_LIB_TYPE} csg2d.cpp genmesh2d.cpp geometry2d.cpp python_geom2d.cpp )
|
||||
if(APPLE)
|
||||
set_target_properties( geom2d PROPERTIES SUFFIX ".so")
|
||||
endif(APPLE)
|
||||
|
||||
target_link_libraries(geom2d PUBLIC ngcore mesh PRIVATE "$<BUILD_INTERFACE:netgen_python>")
|
||||
if(NOT WIN32)
|
||||
install( TARGETS geom2d ${NG_INSTALL_DIR})
|
||||
endif(NOT WIN32)
|
||||
target_sources(nglib PRIVATE
|
||||
csg2d.cpp
|
||||
genmesh2d.cpp
|
||||
geometry2d.cpp
|
||||
python_geom2d.cpp
|
||||
)
|
||||
|
||||
if(USE_GUI)
|
||||
add_library(geom2dvis ${NG_LIB_TYPE} vsgeom2d.cpp)
|
||||
target_link_libraries(geom2dvis PUBLIC ngcore)
|
||||
if(NOT WIN32)
|
||||
target_link_libraries(geom2dvis PUBLIC geom2d)
|
||||
install( TARGETS geom2dvis ${NG_INSTALL_DIR})
|
||||
endif(NOT WIN32)
|
||||
target_sources(nggui PRIVATE vsgeom2d.cpp geom2dpkg.cpp)
|
||||
endif(USE_GUI)
|
||||
|
||||
install(FILES
|
||||
|
@ -128,7 +128,7 @@ namespace netgen
|
||||
|
||||
|
||||
|
||||
class SplineGeometry2d : public SplineGeometry<2>, public NetgenGeometry
|
||||
class DLL_HEADER SplineGeometry2d : public SplineGeometry<2>, public NetgenGeometry
|
||||
{
|
||||
protected:
|
||||
NgArray<char*> materials;
|
||||
@ -141,13 +141,13 @@ namespace netgen
|
||||
|
||||
|
||||
public:
|
||||
DLL_HEADER virtual ~SplineGeometry2d();
|
||||
virtual ~SplineGeometry2d();
|
||||
|
||||
DLL_HEADER void Load (const filesystem::path & filename);
|
||||
void Load (const filesystem::path & filename);
|
||||
|
||||
DLL_HEADER void LoadData( ifstream & infile );
|
||||
DLL_HEADER void LoadDataNew ( ifstream & infile );
|
||||
DLL_HEADER void LoadDataV2 ( ifstream & infile );
|
||||
void LoadData( ifstream & infile );
|
||||
void LoadDataNew ( ifstream & infile );
|
||||
void LoadDataV2 ( ifstream & infile );
|
||||
|
||||
void TestComment ( ifstream & infile ) ;
|
||||
|
||||
@ -196,7 +196,7 @@ namespace netgen
|
||||
}
|
||||
|
||||
|
||||
DLL_HEADER int GenerateMesh (shared_ptr<Mesh> & mesh, MeshingParameters & mparam) override;
|
||||
int GenerateMesh (shared_ptr<Mesh> & mesh, MeshingParameters & mparam) override;
|
||||
|
||||
void PartitionBoundary (MeshingParameters & mp, double h, Mesh & mesh2d);
|
||||
|
||||
@ -204,8 +204,8 @@ namespace netgen
|
||||
|
||||
|
||||
size_t GetNDomains() const { return materials.Size(); }
|
||||
DLL_HEADER void GetMaterial (int domnr, char* & material );
|
||||
DLL_HEADER void SetMaterial (int domnr, const string & material);
|
||||
void GetMaterial (int domnr, char* & material );
|
||||
void SetMaterial (int domnr, const string & material);
|
||||
|
||||
double GetDomainMaxh ( const int domnr );
|
||||
void SetDomainMaxh ( const int domnr, double maxh );
|
||||
|
@ -1,12 +1,12 @@
|
||||
#ifdef NG_PYTHON
|
||||
|
||||
#include <../general/ngpython.hpp>
|
||||
#include <core/python_ngcore.hpp>
|
||||
#include "../general/ngpython.hpp"
|
||||
#include "../core/python_ngcore.hpp"
|
||||
#include "../meshing/python_mesh.hpp"
|
||||
|
||||
#include <meshing.hpp>
|
||||
#include <geometry2d.hpp>
|
||||
#include <csg2d.hpp>
|
||||
#include "../include/meshing.hpp"
|
||||
#include "../include/geometry2d.hpp"
|
||||
#include "csg2d.hpp"
|
||||
|
||||
using namespace netgen;
|
||||
using namespace pybind11::literals;
|
||||
|
@ -10,7 +10,7 @@
|
||||
namespace netgen
|
||||
{
|
||||
|
||||
class DLL_HEADER VisualSceneGeometry2d : public VisualScene
|
||||
class NGGUI_API VisualSceneGeometry2d : public VisualScene
|
||||
{
|
||||
const class SplineGeometry2d * geometry2d;
|
||||
public:
|
||||
|
@ -1,10 +1,13 @@
|
||||
add_definitions(-DNGINTERFACE_EXPORTS)
|
||||
add_library(gprim INTERFACE)
|
||||
set(sdir ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
target_sources(gprim INTERFACE
|
||||
${sdir}/adtree.cpp ${sdir}/geom2d.cpp ${sdir}/geom3d.cpp ${sdir}/geomfuncs.cpp
|
||||
${sdir}/geomtest3d.cpp ${sdir}/transform3d.cpp ${sdir}/spline.cpp ${sdir}/splinegeometry.cpp
|
||||
)
|
||||
target_sources(nglib PRIVATE
|
||||
adtree.cpp
|
||||
geom2d.cpp
|
||||
geom3d.cpp
|
||||
geomfuncs.cpp
|
||||
geomtest3d.cpp
|
||||
spline.cpp
|
||||
splinegeometry.cpp
|
||||
transform3d.cpp
|
||||
)
|
||||
|
||||
install(FILES
|
||||
adtree.hpp geom2d.hpp geom3d.hpp geomfuncs.hpp
|
||||
|
@ -302,7 +302,7 @@ namespace netgen
|
||||
friend inline void Cross (const Vec3d & v1, const Vec3d & v2, Vec3d & prod);
|
||||
|
||||
/// Returns one normal-vector to n
|
||||
void GetNormal (Vec3d & n) const;
|
||||
DLL_HEADER void GetNormal (Vec3d & n) const;
|
||||
///
|
||||
friend double Angle (const Vec3d & v);
|
||||
///
|
||||
@ -578,15 +578,15 @@ namespace netgen
|
||||
///
|
||||
Box3d () { };
|
||||
///
|
||||
Box3d ( double aminx, double amaxx,
|
||||
DLL_HEADER Box3d ( double aminx, double amaxx,
|
||||
double aminy, double amaxy,
|
||||
double aminz, double amaxz );
|
||||
///
|
||||
Box3d ( const Box3d & b2 );
|
||||
DLL_HEADER Box3d ( const Box3d & b2 );
|
||||
///
|
||||
Box3d (const Point3d& p1, const Point3d& p2);
|
||||
DLL_HEADER Box3d (const Point3d& p1, const Point3d& p2);
|
||||
///
|
||||
Box3d (const Box<3> & b2);
|
||||
DLL_HEADER Box3d (const Box<3> & b2);
|
||||
///
|
||||
double MinX () const { return minx[0]; }
|
||||
///
|
||||
|
@ -177,8 +177,8 @@ namespace netgen
|
||||
double Det (const Mat<3,3> & m);
|
||||
|
||||
// eigenvalues of a symmetric matrix
|
||||
void EigenValues (const Mat<3,3> & m, Vec<3> & ev);
|
||||
void EigenValues (const Mat<2,2> & m, Vec<3> & ev);
|
||||
DLL_HEADER void EigenValues (const Mat<3,3> & m, Vec<3> & ev);
|
||||
DLL_HEADER void EigenValues (const Mat<2,2> & m, Vec<3> & ev);
|
||||
|
||||
|
||||
template <typename T>
|
||||
|
@ -22,7 +22,7 @@ namespace netgen
|
||||
|
||||
|
||||
template < int D >
|
||||
class SplineGeometry
|
||||
class DLL_HEADER SplineGeometry
|
||||
{
|
||||
// protected:
|
||||
public:
|
||||
@ -30,16 +30,16 @@ namespace netgen
|
||||
NgArray < SplineSeg<D>* > splines;
|
||||
|
||||
SplineGeometry() : geompoints{}, splines{} { ; }
|
||||
virtual DLL_HEADER ~SplineGeometry();
|
||||
virtual ~SplineGeometry();
|
||||
|
||||
DLL_HEADER int Load (const NgArray<double> & raw_data, const int startpos = 0);
|
||||
int Load (const NgArray<double> & raw_data, const int startpos = 0);
|
||||
|
||||
virtual void DoArchive(Archive& ar)
|
||||
{
|
||||
ar & geompoints & splines;
|
||||
}
|
||||
|
||||
DLL_HEADER void GetRawData (NgArray<double> & raw_data) const;
|
||||
void GetRawData (NgArray<double> & raw_data) const;
|
||||
|
||||
|
||||
const NgArray<SplineSeg<D>*> & GetSplines () const
|
||||
@ -50,7 +50,7 @@ namespace netgen
|
||||
SplineSeg<D> & GetSpline (const int i) {return *splines[i];}
|
||||
const SplineSeg<D> & GetSpline (const int i) const {return *splines[i];}
|
||||
|
||||
DLL_HEADER void GetBoundingBox (Box<D> & box) const;
|
||||
void GetBoundingBox (Box<D> & box) const;
|
||||
Box<D> GetBoundingBox () const
|
||||
{ Box<D> box; GetBoundingBox (box); return box; }
|
||||
|
||||
@ -58,7 +58,7 @@ namespace netgen
|
||||
const GeomPoint<D> & GetPoint(int i) const { return geompoints[i]; }
|
||||
|
||||
// void SetGrading (const double grading);
|
||||
DLL_HEADER void AppendPoint (const Point<D> & p, const double reffac = 1., const bool hpref = false);
|
||||
void AppendPoint (const Point<D> & p, const double reffac = 1., const bool hpref = false);
|
||||
|
||||
void AppendSegment(SplineSeg<D> * spline)
|
||||
{
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
// #define DEBUG
|
||||
|
||||
#if defined(NGINTERFACE_EXPORTS) || ( defined(WIN32) && (defined(NGLIB_EXPORTS) || defined(nglib_EXPORTS)) )
|
||||
#if defined(nglib_EXPORTS)
|
||||
#define DLL_HEADER NGCORE_API_EXPORT
|
||||
#else
|
||||
#define DLL_HEADER NGCORE_API_IMPORT
|
||||
|
@ -281,7 +281,7 @@ extern "C" {
|
||||
int NgPar_GetDistantNodeNums ( int nodetype, int locnum, int * pnums );
|
||||
int NgPar_GetNDistantNodeNums ( int nodetype, int locnum );
|
||||
|
||||
int NgPar_GetGlobalNodeNum (int nodetype, int locnum);
|
||||
DLL_HEADER int NgPar_GetGlobalNodeNum (int nodetype, int locnum);
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -1,17 +1,10 @@
|
||||
add_definitions(-DNGINTERFACE_EXPORTS)
|
||||
add_library(interface ${NG_LIB_TYPE}
|
||||
target_sources(nglib PRIVATE
|
||||
nginterface.cpp nginterface_v2.cpp
|
||||
read_fnf_mesh.cpp readtetmesh.cpp readuser.cpp writeabaqus.cpp writediffpack.cpp
|
||||
writedolfin.cpp writeelmer.cpp writefeap.cpp writefluent.cpp writegmsh.cpp writejcm.cpp
|
||||
writepermas.cpp writetecplot.cpp writetet.cpp writetochnog.cpp writeuser.cpp
|
||||
wuchemnitz.cpp writegmsh2.cpp writeOpenFOAM15x.cpp rw_cgns.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(interface PUBLIC mesh csg geom2d stl visual PRIVATE netgen_cgns)
|
||||
|
||||
if(NOT WIN32)
|
||||
install( TARGETS interface ${NG_INSTALL_DIR})
|
||||
endif(NOT WIN32)
|
||||
)
|
||||
|
||||
install(FILES
|
||||
writeuser.hpp
|
||||
|
@ -2371,13 +2371,6 @@ void Ng_GetArgs (int & argc, char ** &argv)
|
||||
|
||||
|
||||
|
||||
void LinkFunction ()
|
||||
{
|
||||
Ng_Redraw();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Ng_TclCmd(string cmd)
|
||||
{
|
||||
lock_guard<mutex> guard(tcl_todo_mutex);
|
||||
|
@ -1,7 +1,9 @@
|
||||
add_library( la INTERFACE )
|
||||
set(sdir ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
target_sources( la INTERFACE
|
||||
${sdir}/densemat.cpp ${sdir}/polynomial.cpp ${sdir}/bfgs.cpp ${sdir}/linopt.cpp ${sdir}/linsearch.cpp
|
||||
target_sources(nglib PRIVATE
|
||||
bfgs.cpp
|
||||
densemat.cpp
|
||||
linopt.cpp
|
||||
linsearch.cpp
|
||||
polynomial.cpp
|
||||
)
|
||||
|
||||
install(FILES
|
||||
|
@ -1,21 +1,4 @@
|
||||
# generate .cpp files containing the string of the .rls meshing rule files
|
||||
add_executable(makerls ${CMAKE_CURRENT_SOURCE_DIR}/../../rules/makerlsfile.cpp)
|
||||
|
||||
set(rules hexrules prismrules2 pyramidrules pyramidrules2 quadrules tetrules triarules)
|
||||
|
||||
foreach(rule ${rules})
|
||||
list(APPEND rules_sources rule_${rule}.cpp)
|
||||
set(rule_file ${CMAKE_CURRENT_SOURCE_DIR}/../../rules/${rule}.rls)
|
||||
|
||||
add_custom_command(OUTPUT rule_${rule}.cpp
|
||||
COMMAND makerls ${rule_file} rule_${rule}.cpp ${rule}
|
||||
DEPENDS makerls ${rule_file}
|
||||
)
|
||||
endforeach()
|
||||
|
||||
|
||||
add_definitions(-DNGINTERFACE_EXPORTS)
|
||||
add_library(mesh ${NG_LIB_TYPE}
|
||||
target_sources(nglib PRIVATE
|
||||
adfront2.cpp adfront3.cpp bisect.cpp boundarylayer.cpp
|
||||
clusters.cpp curvedelems.cpp delaunay.cpp delaunay2d.cpp
|
||||
geomsearch.cpp global.cpp hprefinement.cpp improve2.cpp
|
||||
@ -28,21 +11,10 @@ add_library(mesh ${NG_LIB_TYPE}
|
||||
topology.cpp validate.cpp bcfunctions.cpp
|
||||
parallelmesh.cpp paralleltop.cpp basegeom.cpp
|
||||
python_mesh.cpp surfacegeom.cpp
|
||||
../../ng/onetcl.cpp debugging.cpp
|
||||
${rules_sources}
|
||||
${mesh_object_libs}
|
||||
)
|
||||
debugging.cpp fieldlines.cpp visual_interface.cpp
|
||||
)
|
||||
|
||||
if(APPLE)
|
||||
set_target_properties( mesh PROPERTIES SUFFIX ".so")
|
||||
endif(APPLE)
|
||||
|
||||
target_link_libraries( mesh PUBLIC ngcore PRIVATE gprim la gen )
|
||||
|
||||
target_link_libraries( mesh PRIVATE netgen_metis "$<BUILD_INTERFACE:netgen_python>" ${ZLIB_LIBRARIES} )
|
||||
if(NOT WIN32)
|
||||
install( TARGETS mesh ${NG_INSTALL_DIR})
|
||||
endif(NOT WIN32)
|
||||
target_link_libraries( nglib PRIVATE netgen_metis "$<BUILD_INTERFACE:netgen_python>" ${ZLIB_LIBRARIES} )
|
||||
|
||||
install(FILES
|
||||
adfront2.hpp adfront3.hpp basegeom.hpp bcfunctions.hpp bisect.hpp
|
||||
@ -54,5 +26,6 @@ install(FILES
|
||||
meshing.hpp meshtool.hpp meshtype.hpp msghandler.hpp paralleltop.hpp
|
||||
ruler2.hpp ruler3.hpp specials.hpp topology.hpp validate.hpp
|
||||
python_mesh.hpp surfacegeom.hpp delaunay2d.hpp
|
||||
fieldlines.hpp soldata.hpp visual_interface.hpp
|
||||
DESTINATION ${NG_INSTALL_DIR_INCLUDE}/meshing COMPONENT netgen_devel
|
||||
)
|
||||
|
@ -57,10 +57,10 @@ public:
|
||||
& edgeweight & order & rational & ishighorder;
|
||||
}
|
||||
|
||||
bool IsSegmentCurved (SegmentIndex segnr) const;
|
||||
bool IsSurfaceElementCurved (SurfaceElementIndex sei) const;
|
||||
bool IsElementCurved (ElementIndex ei) const;
|
||||
bool IsElementHighOrder (ElementIndex ei) const;
|
||||
DLL_HEADER bool IsSegmentCurved (SegmentIndex segnr) const;
|
||||
DLL_HEADER bool IsSurfaceElementCurved (SurfaceElementIndex sei) const;
|
||||
DLL_HEADER bool IsElementCurved (ElementIndex ei) const;
|
||||
DLL_HEADER bool IsElementHighOrder (ElementIndex ei) const;
|
||||
|
||||
|
||||
void CalcSegmentTransformation (double xi, SegmentIndex segnr,
|
||||
@ -135,7 +135,7 @@ public:
|
||||
T * x, size_t sx,
|
||||
T * dxdxi, size_t sdxdxi);
|
||||
|
||||
void CalcMultiPointSurfaceTransformation (NgArray< Point<2> > * xi, SurfaceElementIndex elnr,
|
||||
DLL_HEADER void CalcMultiPointSurfaceTransformation (NgArray< Point<2> > * xi, SurfaceElementIndex elnr,
|
||||
NgArray< Point<3> > * x,
|
||||
NgArray< Mat<3,2> > * dxdxi);
|
||||
|
||||
@ -145,7 +145,7 @@ public:
|
||||
T * x, size_t sx,
|
||||
T * dxdxi, size_t sdxdxi);
|
||||
|
||||
void CalcMultiPointElementTransformation (NgArray< Point<3> > * xi, ElementIndex elnr,
|
||||
DLL_HEADER void CalcMultiPointElementTransformation (NgArray< Point<3> > * xi, ElementIndex elnr,
|
||||
NgArray< Point<3> > * x,
|
||||
NgArray< Mat<3,3> > * dxdxi);
|
||||
|
||||
@ -161,13 +161,13 @@ public:
|
||||
private:
|
||||
|
||||
template <typename T>
|
||||
void CalcSegmentTransformation (const T & xi, SegmentIndex segnr,
|
||||
DLL_HEADER void CalcSegmentTransformation (const T & xi, SegmentIndex segnr,
|
||||
Point<3,T> * x = NULL, Vec<3,T> * dxdxi = NULL, bool * curved = NULL);
|
||||
|
||||
void CalcSurfaceTransformation (Point<2> xi, SurfaceElementIndex elnr,
|
||||
DLL_HEADER void CalcSurfaceTransformation (Point<2> xi, SurfaceElementIndex elnr,
|
||||
Point<3> * x = NULL, Mat<3,2> * dxdxi = NULL, bool * curved = NULL);
|
||||
|
||||
void CalcElementTransformation (Point<3> xi, ElementIndex elnr,
|
||||
DLL_HEADER void CalcElementTransformation (Point<3> xi, ElementIndex elnr,
|
||||
Point<3> * x = NULL, Mat<3,3> * dxdxi = NULL, // bool * curved = NULL,
|
||||
void * buffer = NULL, bool valid = 0);
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include <meshclass.hpp>
|
||||
#include "meshclass.hpp"
|
||||
|
||||
|
||||
namespace netgen
|
||||
|
@ -160,16 +160,16 @@ namespace netgen
|
||||
|
||||
|
||||
public:
|
||||
void BuildBoundaryEdges(bool rebuild=true);
|
||||
DLL_HEADER void BuildBoundaryEdges(bool rebuild=true);
|
||||
|
||||
bool PointContainedIn2DElement(const Point3d & p,
|
||||
DLL_HEADER bool PointContainedIn2DElement(const Point3d & p,
|
||||
double lami[3],
|
||||
const int element,
|
||||
bool consider3D = false) const;
|
||||
bool PointContainedIn3DElement(const Point3d & p,
|
||||
DLL_HEADER bool PointContainedIn3DElement(const Point3d & p,
|
||||
double lami[3],
|
||||
const int element) const;
|
||||
bool PointContainedIn3DElementOld(const Point3d & p,
|
||||
DLL_HEADER bool PointContainedIn3DElementOld(const Point3d & p,
|
||||
double lami[3],
|
||||
const int element) const;
|
||||
|
||||
@ -628,22 +628,22 @@ namespace netgen
|
||||
void SetPointSearchStartElement(const int el) const {ps_startelement = el;}
|
||||
|
||||
/// gives element of point, barycentric coordinates
|
||||
int GetElementOfPoint (const netgen::Point<3> & p,
|
||||
DLL_HEADER int GetElementOfPoint (const netgen::Point<3> & p,
|
||||
double * lami,
|
||||
bool build_searchtree = 0,
|
||||
const int index = -1,
|
||||
const bool allowindex = true) const;
|
||||
int GetElementOfPoint (const netgen::Point<3> & p,
|
||||
DLL_HEADER int GetElementOfPoint (const netgen::Point<3> & p,
|
||||
double * lami,
|
||||
const NgArray<int> * const indices,
|
||||
bool build_searchtree = 0,
|
||||
const bool allowindex = true) const;
|
||||
int GetSurfaceElementOfPoint (const netgen::Point<3> & p,
|
||||
DLL_HEADER int GetSurfaceElementOfPoint (const netgen::Point<3> & p,
|
||||
double * lami,
|
||||
bool build_searchtree = 0,
|
||||
const int index = -1,
|
||||
const bool allowindex = true) const;
|
||||
int GetSurfaceElementOfPoint (const netgen::Point<3> & p,
|
||||
DLL_HEADER int GetSurfaceElementOfPoint (const netgen::Point<3> & p,
|
||||
double * lami,
|
||||
const NgArray<int> * const indices,
|
||||
bool build_searchtree = 0,
|
||||
@ -775,27 +775,27 @@ namespace netgen
|
||||
///
|
||||
bool HasIdentifications() const { return ident != nullptr; }
|
||||
|
||||
void InitPointCurve(double red = 1, double green = 0, double blue = 0) const;
|
||||
void AddPointCurvePoint(const Point3d & pt) const;
|
||||
int GetNumPointCurves(void) const;
|
||||
int GetNumPointsOfPointCurve(int curve) const;
|
||||
Point3d & GetPointCurvePoint(int curve, int n) const;
|
||||
void GetPointCurveColor(int curve, double & red, double & green, double & blue) const;
|
||||
DLL_HEADER void InitPointCurve(double red = 1, double green = 0, double blue = 0) const;
|
||||
DLL_HEADER void AddPointCurvePoint(const Point3d & pt) const;
|
||||
DLL_HEADER int GetNumPointCurves(void) const;
|
||||
DLL_HEADER int GetNumPointsOfPointCurve(int curve) const;
|
||||
DLL_HEADER Point3d & GetPointCurvePoint(int curve, int n) const;
|
||||
DLL_HEADER void GetPointCurveColor(int curve, double & red, double & green, double & blue) const;
|
||||
|
||||
|
||||
|
||||
|
||||
/// find number of vertices
|
||||
void ComputeNVertices ();
|
||||
DLL_HEADER void ComputeNVertices ();
|
||||
/// number of vertices (no edge-midpoints)
|
||||
int GetNV () const;
|
||||
DLL_HEADER int GetNV () const;
|
||||
/// remove edge points
|
||||
void SetNP (int np);
|
||||
DLL_HEADER void SetNP (int np);
|
||||
|
||||
|
||||
|
||||
Table<ElementIndex, PointIndex> CreatePoint2ElementTable(std::optional<BitArray> points = std::nullopt) const;
|
||||
Table<SurfaceElementIndex, PointIndex> CreatePoint2SurfaceElementTable( int faceindex=0 ) const;
|
||||
DLL_HEADER Table<ElementIndex, PointIndex> CreatePoint2ElementTable(std::optional<BitArray> points = std::nullopt) const;
|
||||
DLL_HEADER Table<SurfaceElementIndex, PointIndex> CreatePoint2SurfaceElementTable( int faceindex=0 ) const;
|
||||
|
||||
DLL_HEADER bool PureTrigMesh (int faceindex = 0) const;
|
||||
DLL_HEADER bool PureTetMesh () const;
|
||||
@ -908,8 +908,8 @@ namespace netgen
|
||||
{ return *paralleltop; }
|
||||
|
||||
/// distributes the master-mesh to local meshes
|
||||
void Distribute ();
|
||||
void Distribute (NgArray<int> & volume_weights, NgArray<int> & surface_weights,
|
||||
DLL_HEADER void Distribute ();
|
||||
DLL_HEADER void Distribute (NgArray<int> & volume_weights, NgArray<int> & surface_weights,
|
||||
NgArray<int> & segment_weights);
|
||||
|
||||
|
||||
@ -920,8 +920,8 @@ namespace netgen
|
||||
// void FindExchangeFaces ();
|
||||
|
||||
/// use metis to decompose master mesh
|
||||
void ParallelMetis (int nproc); // NgArray<int> & neloc );
|
||||
void ParallelMetis (NgArray<int> & volume_weights, NgArray<int> & surface_weights,
|
||||
DLL_HEADER void ParallelMetis (int nproc); // NgArray<int> & neloc );
|
||||
DLL_HEADER void ParallelMetis (NgArray<int> & volume_weights, NgArray<int> & surface_weights,
|
||||
NgArray<int> & segment_weights);
|
||||
|
||||
void PartHybridMesh (); // NgArray<int> & neloc );
|
||||
|
@ -1,11 +1,26 @@
|
||||
#include <mystdlib.h>
|
||||
#include "meshing.hpp"
|
||||
#ifdef OPENGL
|
||||
#include <visual.hpp>
|
||||
#endif // OPENGL
|
||||
#include "visual_interface.hpp"
|
||||
|
||||
namespace netgen
|
||||
{
|
||||
static void glrender (int wait)
|
||||
{
|
||||
// cout << "plot adfront" << endl;
|
||||
|
||||
if (multithread.drawing)
|
||||
{
|
||||
// vssurfacemeshing.DrawScene();
|
||||
Render ();
|
||||
|
||||
if (wait || multithread.testmode)
|
||||
{
|
||||
multithread.pause = 1;
|
||||
}
|
||||
while (multithread.pause);
|
||||
}
|
||||
}
|
||||
|
||||
ostream& operator << (ostream& ost, const MultiPointGeomInfo& mpgi)
|
||||
{
|
||||
for(auto i : Range(mpgi.GetNPGI()))
|
||||
@ -14,25 +29,6 @@ namespace netgen
|
||||
}
|
||||
return ost;
|
||||
}
|
||||
static void glrender (int wait);
|
||||
#ifdef OPENGL
|
||||
extern DLL_HEADER void Render(bool blocking = false);
|
||||
DLL_HEADER extern VisualSceneSurfaceMeshing vssurfacemeshing;
|
||||
VisualSceneSurfaceMeshing vssurfacemeshing;
|
||||
#endif // OPENGL
|
||||
|
||||
// global variable for visualization
|
||||
// static NgArray<Point3d> locpoints;
|
||||
// static NgArray<int> legalpoints;
|
||||
// static NgArray<Point2d> plainpoints;
|
||||
// static NgArray<int> plainzones;
|
||||
// static NgArray<INDEX_2> loclines;
|
||||
// // static int geomtrig;
|
||||
// //static const char * rname;
|
||||
// static int cntelem, trials, nfaces;
|
||||
// static int oldnl;
|
||||
// static int qualclass;
|
||||
|
||||
|
||||
static Array<unique_ptr<netrule>> global_trig_rules;
|
||||
static Array<unique_ptr<netrule>> global_quad_rules;
|
||||
@ -287,12 +283,7 @@ namespace netgen
|
||||
int cntelem = 0, trials = 0, nfaces = 0;
|
||||
int oldnl = 0;
|
||||
|
||||
#ifdef OPENGL
|
||||
vssurfacemeshing.oldnl = oldnl;
|
||||
vssurfacemeshing.loclinesptr = loclinesptr;
|
||||
vssurfacemeshing.locpointsptr = locpointsptr;
|
||||
vssurfacemeshing.plainpointsptr = plainpointsptr;
|
||||
#endif // OPENGL
|
||||
UpdateVisSurfaceMeshData(oldnl, locpointsptr, loclinesptr, plainpointsptr);
|
||||
|
||||
int qualclass;
|
||||
|
||||
@ -560,9 +551,7 @@ namespace netgen
|
||||
oldnp = locpoints.Size();
|
||||
oldnl = loclines.Size();
|
||||
|
||||
#ifdef OPENGL
|
||||
vssurfacemeshing.oldnl = oldnl;
|
||||
#endif // OPENGL
|
||||
UpdateVisSurfaceMeshData(oldnl);
|
||||
|
||||
if (debugflag)
|
||||
(*testout) << "define new transformation" << endl;
|
||||
@ -1506,9 +1495,7 @@ namespace netgen
|
||||
|
||||
(*testout) << "old number of lines = " << oldnl << endl;
|
||||
|
||||
#ifdef OPENGL
|
||||
vssurfacemeshing.oldnl = oldnl;
|
||||
#endif // OPENGL
|
||||
UpdateVisSurfaceMeshData(oldnl);
|
||||
|
||||
for (int i = 1; i <= loclines.Size(); i++)
|
||||
{
|
||||
@ -1624,440 +1611,5 @@ namespace netgen
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#ifdef OPENGL
|
||||
|
||||
/* *********************** Draw Surface Meshing **************** */
|
||||
|
||||
|
||||
#include <stlgeom.hpp>
|
||||
|
||||
namespace netgen
|
||||
{
|
||||
|
||||
extern STLGeometry * stlgeometry;
|
||||
extern Mesh * mesh;
|
||||
|
||||
|
||||
|
||||
void glrender (int wait)
|
||||
{
|
||||
// cout << "plot adfront" << endl;
|
||||
|
||||
if (multithread.drawing)
|
||||
{
|
||||
// vssurfacemeshing.DrawScene();
|
||||
Render ();
|
||||
|
||||
if (wait || multithread.testmode)
|
||||
{
|
||||
multithread.pause = 1;
|
||||
}
|
||||
while (multithread.pause);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
VisualSceneSurfaceMeshing :: VisualSceneSurfaceMeshing ()
|
||||
: VisualScene()
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
VisualSceneSurfaceMeshing :: ~VisualSceneSurfaceMeshing ()
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
void VisualSceneSurfaceMeshing :: DrawScene ()
|
||||
{
|
||||
// int i, j, k;
|
||||
if(!locpointsptr)
|
||||
return;
|
||||
auto& locpoints = *locpointsptr;
|
||||
auto& loclines = *loclinesptr;
|
||||
auto& plainpoints = *plainpointsptr;
|
||||
|
||||
if (loclines.Size() != changeval)
|
||||
{
|
||||
center = Point<3>(0,0,-5);
|
||||
rad = 0.1;
|
||||
|
||||
// CalcTransformationMatrices();
|
||||
changeval = loclines.Size();
|
||||
}
|
||||
|
||||
glClearColor(backcolor, backcolor, backcolor, 1.0);
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
SetLight();
|
||||
|
||||
// glEnable (GL_COLOR_MATERIAL);
|
||||
|
||||
// glDisable (GL_SHADING);
|
||||
// glColor3f (0.0f, 1.0f, 1.0f);
|
||||
// glLineWidth (1.0f);
|
||||
// glShadeModel (GL_SMOOTH);
|
||||
|
||||
// glCallList (linelists.Get(1));
|
||||
|
||||
// SetLight();
|
||||
|
||||
glPushMatrix();
|
||||
glMultMatrixd (transformationmat);
|
||||
|
||||
glShadeModel (GL_SMOOTH);
|
||||
// glDisable (GL_COLOR_MATERIAL);
|
||||
glEnable (GL_COLOR_MATERIAL);
|
||||
glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
|
||||
|
||||
glEnable (GL_BLEND);
|
||||
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
// glEnable (GL_LIGHTING);
|
||||
|
||||
double shine = vispar.shininess;
|
||||
double transp = vispar.transp;
|
||||
|
||||
glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shine);
|
||||
glLogicOp (GL_COPY);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
float mat_col[] = { 0.2, 0.2, 0.8, 1 };
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_col);
|
||||
|
||||
glPolygonOffset (1, 1);
|
||||
glEnable (GL_POLYGON_OFFSET_FILL);
|
||||
|
||||
float mat_colbl[] = { 0.8, 0.2, 0.2, 1 };
|
||||
float mat_cololdl[] = { 0.2, 0.8, 0.2, 1 };
|
||||
float mat_colnewl[] = { 0.8, 0.8, 0.2, 1 };
|
||||
|
||||
|
||||
glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
|
||||
glPolygonOffset (1, -1);
|
||||
glLineWidth (3);
|
||||
|
||||
for (int i = 1; i <= loclines.Size(); i++)
|
||||
{
|
||||
if (i == 1)
|
||||
{
|
||||
glEnable (GL_POLYGON_OFFSET_FILL);
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_colbl);
|
||||
}
|
||||
else if (i <= oldnl)
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_cololdl);
|
||||
else
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_colnewl);
|
||||
|
||||
int pi1 = loclines.Get(i).I1();
|
||||
int pi2 = loclines.Get(i).I2();
|
||||
|
||||
if (pi1 >= 1 && pi2 >= 1)
|
||||
{
|
||||
Point3d p1 = locpoints.Get(pi1);
|
||||
Point3d p2 = locpoints.Get(pi2);
|
||||
|
||||
glBegin (GL_LINES);
|
||||
glVertex3f (p1.X(), p1.Y(), p1.Z());
|
||||
glVertex3f (p2.X(), p2.Y(), p2.Z());
|
||||
glEnd();
|
||||
}
|
||||
|
||||
glDisable (GL_POLYGON_OFFSET_FILL);
|
||||
}
|
||||
|
||||
|
||||
glLineWidth (1);
|
||||
|
||||
|
||||
glPointSize (5);
|
||||
float mat_colp[] = { 1, 0, 0, 1 };
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_colp);
|
||||
glBegin (GL_POINTS);
|
||||
for (int i = 1; i <= locpoints.Size(); i++)
|
||||
{
|
||||
Point3d p = locpoints.Get(i);
|
||||
glVertex3f (p.X(), p.Y(), p.Z());
|
||||
}
|
||||
glEnd();
|
||||
|
||||
|
||||
glPopMatrix();
|
||||
|
||||
|
||||
// float mat_colp[] = { 1, 0, 0, 1 };
|
||||
|
||||
float mat_col2d1[] = { 1, 0.5, 0.5, 1 };
|
||||
float mat_col2d[] = { 1, 1, 1, 1 };
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_col2d);
|
||||
|
||||
glBegin (GL_LINES);
|
||||
for (int i = 1; i <= loclines.Size(); i++)
|
||||
{
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_col2d);
|
||||
if (i == 1)
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_col2d1);
|
||||
|
||||
int pi1 = loclines.Get(i).I1();
|
||||
int pi2 = loclines.Get(i).I2();
|
||||
|
||||
if (pi1 >= 1 && pi2 >= 1)
|
||||
{
|
||||
const auto& p1 = plainpoints.Get(pi1);
|
||||
const auto& p2 = plainpoints.Get(pi2);
|
||||
|
||||
glBegin (GL_LINES);
|
||||
glVertex3f (scalex * p1[0] + shiftx, scaley * p1[1] + shifty, -5);
|
||||
glVertex3f (scalex * p2[0] + shiftx, scaley * p2[1] + shifty, -5);
|
||||
glEnd();
|
||||
}
|
||||
}
|
||||
glEnd ();
|
||||
|
||||
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_colp);
|
||||
glBegin (GL_POINTS);
|
||||
for (int i = 1; i <= plainpoints.Size(); i++)
|
||||
{
|
||||
const auto& p = plainpoints.Get(i);
|
||||
glVertex3f (scalex * p[0] + shiftx, scaley * p[1] + shifty, -5);
|
||||
}
|
||||
glEnd();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
glDisable (GL_POLYGON_OFFSET_FILL);
|
||||
|
||||
glPopMatrix();
|
||||
DrawCoordinateCross ();
|
||||
DrawNetgenLogo ();
|
||||
glFinish();
|
||||
|
||||
/*
|
||||
glDisable (GL_POLYGON_OFFSET_FILL);
|
||||
|
||||
// cout << "draw surfacemeshing" << endl;
|
||||
//
|
||||
// if (changeval != stlgeometry->GetNT())
|
||||
// BuildScene();
|
||||
// changeval = stlgeometry->GetNT();
|
||||
|
||||
|
||||
glClearColor(backcolor, backcolor, backcolor, 1.0);
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
SetLight();
|
||||
|
||||
glPushMatrix();
|
||||
glLoadMatrixf (transmat);
|
||||
glMultMatrixf (rotmat);
|
||||
|
||||
glShadeModel (GL_SMOOTH);
|
||||
glDisable (GL_COLOR_MATERIAL);
|
||||
glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
|
||||
|
||||
glEnable (GL_BLEND);
|
||||
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
float mat_spec_col[] = { 1, 1, 1, 1 };
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, mat_spec_col);
|
||||
|
||||
double shine = vispar.shininess;
|
||||
double transp = vispar.transp;
|
||||
|
||||
glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shine);
|
||||
glLogicOp (GL_COPY);
|
||||
|
||||
|
||||
float mat_col[] = { 0.2, 0.2, 0.8, transp };
|
||||
float mat_colrt[] = { 0.2, 0.8, 0.8, transp };
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_col);
|
||||
|
||||
glPolygonOffset (1, 1);
|
||||
glEnable (GL_POLYGON_OFFSET_FILL);
|
||||
|
||||
glColor3f (1.0f, 1.0f, 1.0f);
|
||||
|
||||
glEnable (GL_NORMALIZE);
|
||||
|
||||
// glBegin (GL_TRIANGLES);
|
||||
// for (j = 1; j <= stlgeometry -> GetNT(); j++)
|
||||
// {
|
||||
// glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_col);
|
||||
// if (j == geomtrig)
|
||||
// glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_colrt);
|
||||
|
||||
|
||||
// const STLReadTriangle & tria = stlgeometry -> GetReadTriangle(j);
|
||||
// glNormal3f (tria.normal.X(),
|
||||
// tria.normal.Y(),
|
||||
// tria.normal.Z());
|
||||
|
||||
// for (k = 0; k < 3; k++)
|
||||
// {
|
||||
// glVertex3f (tria.pts[k].X(),
|
||||
// tria.pts[k].Y(),
|
||||
// tria.pts[k].Z());
|
||||
// }
|
||||
// }
|
||||
// glEnd ();
|
||||
|
||||
|
||||
|
||||
glDisable (GL_POLYGON_OFFSET_FILL);
|
||||
|
||||
float mat_colbl[] = { 0.8, 0.2, 0.2, 1 };
|
||||
float mat_cololdl[] = { 0.2, 0.8, 0.2, 1 };
|
||||
float mat_colnewl[] = { 0.8, 0.8, 0.2, 1 };
|
||||
|
||||
|
||||
glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
|
||||
glPolygonOffset (1, -1);
|
||||
glLineWidth (3);
|
||||
|
||||
for (i = 1; i <= loclines.Size(); i++)
|
||||
{
|
||||
if (i == 1)
|
||||
{
|
||||
glEnable (GL_POLYGON_OFFSET_FILL);
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_colbl);
|
||||
}
|
||||
else if (i <= oldnl)
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_cololdl);
|
||||
else
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_colnewl);
|
||||
|
||||
int pi1 = loclines.Get(i).I1();
|
||||
int pi2 = loclines.Get(i).I2();
|
||||
|
||||
if (pi1 >= 1 && pi2 >= 1)
|
||||
{
|
||||
Point3d p1 = locpoints.Get(pi1);
|
||||
Point3d p2 = locpoints.Get(pi2);
|
||||
|
||||
glBegin (GL_LINES);
|
||||
glVertex3f (p1.X(), p1.Y(), p1.Z());
|
||||
glVertex3f (p2.X(), p2.Y(), p2.Z());
|
||||
glEnd();
|
||||
}
|
||||
|
||||
glDisable (GL_POLYGON_OFFSET_FILL);
|
||||
}
|
||||
|
||||
|
||||
glLineWidth (1);
|
||||
|
||||
|
||||
glPointSize (5);
|
||||
float mat_colp[] = { 1, 0, 0, 1 };
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_colp);
|
||||
glBegin (GL_POINTS);
|
||||
for (i = 1; i <= locpoints.Size(); i++)
|
||||
{
|
||||
Point3d p = locpoints.Get(i);
|
||||
glVertex3f (p.X(), p.Y(), p.Z());
|
||||
}
|
||||
glEnd();
|
||||
|
||||
|
||||
glPopMatrix();
|
||||
|
||||
|
||||
float mat_col2d1[] = { 1, 0.5, 0.5, 1 };
|
||||
float mat_col2d[] = { 1, 1, 1, 1 };
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_col2d);
|
||||
|
||||
double scalex = 0.1, scaley = 0.1;
|
||||
|
||||
glBegin (GL_LINES);
|
||||
for (i = 1; i <= loclines.Size(); i++)
|
||||
{
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_col2d);
|
||||
if (i == 1)
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_col2d1);
|
||||
|
||||
int pi1 = loclines.Get(i).I1();
|
||||
int pi2 = loclines.Get(i).I2();
|
||||
|
||||
if (pi1 >= 1 && pi2 >= 1)
|
||||
{
|
||||
Point2d p1 = plainpoints.Get(pi1);
|
||||
Point2d p2 = plainpoints.Get(pi2);
|
||||
|
||||
glBegin (GL_LINES);
|
||||
glVertex3f (scalex * p1.X(), scaley * p1.Y(), -5);
|
||||
glVertex3f (scalex * p2.X(), scaley * p2.Y(), -5);
|
||||
glEnd();
|
||||
}
|
||||
}
|
||||
glEnd ();
|
||||
|
||||
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_colp);
|
||||
glBegin (GL_POINTS);
|
||||
for (i = 1; i <= plainpoints.Size(); i++)
|
||||
{
|
||||
Point2d p = plainpoints.Get(i);
|
||||
glVertex3f (scalex * p.X(), scaley * p.Y(), -5);
|
||||
}
|
||||
glEnd();
|
||||
|
||||
glFinish();
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
void VisualSceneSurfaceMeshing :: BuildScene (int zoomall)
|
||||
{
|
||||
// int i, j, k;
|
||||
/*
|
||||
center = stlgeometry -> GetBoundingBox().Center();
|
||||
rad = stlgeometry -> GetBoundingBox().Diam() / 2;
|
||||
|
||||
CalcTransformationMatrices();
|
||||
*/
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
#else
|
||||
namespace netgen
|
||||
{
|
||||
void glrender (int wait)
|
||||
{ ;
|
||||
/*
|
||||
if (multithread.drawing)
|
||||
{
|
||||
// vssurfacemeshing.Render();
|
||||
// Render ();
|
||||
|
||||
if (wait || multithread.testmode)
|
||||
{
|
||||
multithread.pause = 1;
|
||||
}
|
||||
while (multithread.pause);
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -2253,8 +2253,8 @@ namespace netgen
|
||||
template void Element2d::GetDShapeNew<SIMD<double>> (const Point<2,SIMD<double>> &, MatrixFixWidth<2,SIMD<double>> &) const;
|
||||
|
||||
|
||||
template void Element :: GetShapeNew (const Point<3,double> & p, TFlatVector<double> shape) const;
|
||||
template void Element :: GetShapeNew (const Point<3,SIMD<double>> & p, TFlatVector<SIMD<double>> shape) const;
|
||||
template DLL_HEADER void Element :: GetShapeNew (const Point<3,double> & p, TFlatVector<double> shape) const;
|
||||
template DLL_HEADER void Element :: GetShapeNew (const Point<3,SIMD<double>> & p, TFlatVector<SIMD<double>> shape) const;
|
||||
|
||||
template void Element::GetDShapeNew<double> (const Point<3> &, MatrixFixWidth<3> &) const;
|
||||
template void Element::GetDShapeNew<SIMD<double>> (const Point<3,SIMD<double>> &, MatrixFixWidth<3,SIMD<double>> &) const;
|
||||
|
@ -615,13 +615,13 @@ namespace netgen
|
||||
class DenseMatrix & trans) const;
|
||||
|
||||
void GetShape (const Point<2> & p, class Vector & shape) const;
|
||||
void GetShapeNew (const Point<2> & p, class FlatVector & shape) const;
|
||||
DLL_HEADER void GetShapeNew (const Point<2> & p, class FlatVector & shape) const;
|
||||
template <typename T>
|
||||
void GetShapeNew (const Point<2,T> & p, TFlatVector<T> shape) const;
|
||||
DLL_HEADER void GetShapeNew (const Point<2,T> & p, TFlatVector<T> shape) const;
|
||||
/// matrix 2 * np
|
||||
void GetDShape (const Point<2> & p, class DenseMatrix & dshape) const;
|
||||
DLL_HEADER void GetDShape (const Point<2> & p, class DenseMatrix & dshape) const;
|
||||
template <typename T>
|
||||
void GetDShapeNew (const Point<2,T> & p, class MatrixFixWidth<2,T> & dshape) const;
|
||||
DLL_HEADER void GetDShapeNew (const Point<2,T> & p, class MatrixFixWidth<2,T> & dshape) const;
|
||||
|
||||
/// matrix 2 * np
|
||||
void GetPointMatrix (const NgArray<Point<2>> & points,
|
||||
@ -918,7 +918,7 @@ namespace netgen
|
||||
void GetNodesLocalNew (NgArray<Point<3> > & points) const;
|
||||
|
||||
/// split surface into 3 node trigs
|
||||
void GetSurfaceTriangles (NgArray<Element2d> & surftrigs) const;
|
||||
DLL_HEADER void GetSurfaceTriangles (NgArray<Element2d> & surftrigs) const;
|
||||
|
||||
|
||||
/// get number of 'integration points'
|
||||
@ -933,7 +933,7 @@ namespace netgen
|
||||
void GetShape (const Point<3> & p, class Vector & shape) const;
|
||||
// void GetShapeNew (const Point<3> & p, class FlatVector & shape) const;
|
||||
template <typename T>
|
||||
void GetShapeNew (const Point<3,T> & p, TFlatVector<T> shape) const;
|
||||
DLL_HEADER void GetShapeNew (const Point<3,T> & p, TFlatVector<T> shape) const;
|
||||
/// matrix 2 * np
|
||||
void GetDShape (const Point<3> & p, class DenseMatrix & dshape) const;
|
||||
template <typename T>
|
||||
@ -1567,7 +1567,7 @@ namespace netgen
|
||||
}
|
||||
|
||||
///
|
||||
void GetPairs (int identnr, NgArray<INDEX_2> & identpairs) const;
|
||||
DLL_HEADER void GetPairs (int identnr, NgArray<INDEX_2> & identpairs) const;
|
||||
///
|
||||
int GetMaxNr () const { return maxidentnr; }
|
||||
|
||||
|
@ -80,7 +80,7 @@ public:
|
||||
static inline short int GetNEdges (ELEMENT_TYPE et);
|
||||
static inline short int GetNFaces (ELEMENT_TYPE et);
|
||||
|
||||
static const Point3d * GetVertices (ELEMENT_TYPE et);
|
||||
DLL_HEADER static const Point3d * GetVertices (ELEMENT_TYPE et);
|
||||
inline static const ELEMENT_EDGE * GetEdges1 (ELEMENT_TYPE et);
|
||||
inline static const ELEMENT_EDGE * GetEdges0 (ELEMENT_TYPE et);
|
||||
inline static FlatArray<ELEMENT_EDGE> GetEdges (ELEMENT_TYPE et);
|
||||
@ -135,14 +135,14 @@ public:
|
||||
int GetSegmentEdgeOrientation (int elnr) const; // old style
|
||||
|
||||
|
||||
void GetFaceVertices (int fnr, NgArray<int> & vertices) const;
|
||||
void GetFaceVertices (int fnr, int * vertices) const;
|
||||
void GetEdgeVertices (int enr, int & v1, int & v2) const;
|
||||
void GetEdgeVertices (int enr, PointIndex & v1, PointIndex & v2) const;
|
||||
DLL_HEADER void GetFaceVertices (int fnr, NgArray<int> & vertices) const;
|
||||
DLL_HEADER void GetFaceVertices (int fnr, int * vertices) const;
|
||||
DLL_HEADER void GetEdgeVertices (int enr, int & v1, int & v2) const;
|
||||
DLL_HEADER void GetEdgeVertices (int enr, PointIndex & v1, PointIndex & v2) const;
|
||||
auto GetEdgeVertices (int enr) const { return tuple(edge2vert[enr][0], edge2vert[enr][1]); }
|
||||
auto GetEdgeVerticesPtr (int enr) const { return &edge2vert[enr][0]; }
|
||||
auto GetFaceVerticesPtr (int fnr) const { return &face2vert[fnr][0]; }
|
||||
void GetFaceEdges (int fnr, NgArray<int> & edges, bool withorientation = false) const;
|
||||
DLL_HEADER void GetFaceEdges (int fnr, NgArray<int> & edges, bool withorientation = false) const;
|
||||
|
||||
ELEMENT_TYPE GetFaceType (int fnr) const
|
||||
// { return (face2vert.Get(fnr)[3] == 0) ? TRIG : QUAD; }
|
||||
|
22
libsrc/meshing/visual_interface.cpp
Normal file
22
libsrc/meshing/visual_interface.cpp
Normal file
@ -0,0 +1,22 @@
|
||||
#include "visual_interface.hpp"
|
||||
#include "../include/nginterface.h"
|
||||
|
||||
void (*Ptr_Ng_ClearSolutionData) () = nullptr;
|
||||
void (*Ptr_Ng_InitSolutionData) (Ng_SolutionData*) = nullptr;
|
||||
void (*Ptr_Ng_SetSolutionData) (Ng_SolutionData*) = nullptr;
|
||||
void (*Ptr_Ng_Redraw) (bool blocking) = nullptr;
|
||||
|
||||
void Ng_ClearSolutionData () { if(Ptr_Ng_ClearSolutionData) Ptr_Ng_ClearSolutionData(); }
|
||||
void Ng_InitSolutionData (Ng_SolutionData * soldata) { if(Ptr_Ng_InitSolutionData) Ptr_Ng_InitSolutionData(soldata); }
|
||||
void Ng_SetSolutionData (Ng_SolutionData * soldata) { if(Ptr_Ng_SetSolutionData) Ptr_Ng_SetSolutionData(soldata); }
|
||||
void Ng_Redraw (bool blocking) { if(Ptr_Ng_Redraw) Ptr_Ng_Redraw(blocking); }
|
||||
|
||||
namespace netgen
|
||||
{
|
||||
void (*Ptr_Render)(bool) = nullptr;
|
||||
void (*Ptr_UpdateVisSurfaceMeshData)(int,
|
||||
shared_ptr<NgArray<Point<3>>>,
|
||||
shared_ptr<NgArray<INDEX_2>>,
|
||||
shared_ptr<NgArray<Point<2>>>
|
||||
) = nullptr;
|
||||
} // namespace netgen
|
34
libsrc/meshing/visual_interface.hpp
Normal file
34
libsrc/meshing/visual_interface.hpp
Normal file
@ -0,0 +1,34 @@
|
||||
#ifndef VISUAL_INTERFACE_HPP_INCLUDED
|
||||
#define VISUAL_INTERFACE_HPP_INCLUDED
|
||||
|
||||
#include <mystdlib.h>
|
||||
#include <meshing.hpp>
|
||||
|
||||
class Ng_SolutionData;
|
||||
|
||||
// Function pointers for visualization purposed, all set to nullptr by default and initialized correctly when the GUI library is loaded
|
||||
|
||||
DLL_HEADER extern void (*Ptr_Ng_ClearSolutionData) ();
|
||||
DLL_HEADER extern void (*Ptr_Ng_InitSolutionData) (Ng_SolutionData * soldata);
|
||||
DLL_HEADER extern void (*Ptr_Ng_SetSolutionData) (Ng_SolutionData * soldata);
|
||||
DLL_HEADER extern void (*Ptr_Ng_Redraw) (bool blocking);
|
||||
|
||||
namespace netgen {
|
||||
DLL_HEADER extern void (*Ptr_Render)(bool);
|
||||
DLL_HEADER extern void (*Ptr_UpdateVisSurfaceMeshData)(int,
|
||||
shared_ptr<NgArray<Point<3>>>,
|
||||
shared_ptr<NgArray<INDEX_2>>,
|
||||
shared_ptr<NgArray<Point<2>>>
|
||||
);
|
||||
|
||||
inline void Render(bool blocking = false) { if(Ptr_Render) Ptr_Render(blocking); }
|
||||
inline void UpdateVisSurfaceMeshData(int oldnl,
|
||||
shared_ptr<NgArray<Point<3>>> locpointsptr = nullptr,
|
||||
shared_ptr<NgArray<INDEX_2>> loclinesptr = nullptr,
|
||||
shared_ptr<NgArray<Point<2>>> plainpointsptr = nullptr
|
||||
) {
|
||||
if(Ptr_UpdateVisSurfaceMeshData) Ptr_UpdateVisSurfaceMeshData(oldnl, locpointsptr, loclinesptr, plainpointsptr);
|
||||
}
|
||||
}
|
||||
|
||||
#endif // VISUAL_INTERFACE_HPP_INCLUDED
|
@ -1,38 +1,17 @@
|
||||
if(USE_OCC)
|
||||
|
||||
add_definitions(-DNGINTERFACE_EXPORTS)
|
||||
add_library(occ ${NG_LIB_TYPE}
|
||||
target_sources(nglib PRIVATE
|
||||
Partition_Inter2d.cxx Partition_Inter3d.cxx
|
||||
Partition_Loop.cxx Partition_Loop2d.cxx Partition_Loop3d.cxx Partition_Spliter.cxx
|
||||
occgenmesh.cpp occgeom.cpp occmeshsurf.cpp python_occ.cpp
|
||||
python_occ_basic.cpp python_occ_shapes.cpp
|
||||
occ_face.cpp occ_edge.cpp occ_vertex.cpp occ_utils.cpp
|
||||
)
|
||||
)
|
||||
|
||||
if(USE_GUI)
|
||||
add_library(occvis ${NG_LIB_TYPE} vsocc.cpp)
|
||||
target_link_libraries(occvis PUBLIC ngcore)
|
||||
target_sources(nggui PRIVATE vsocc.cpp occpkg.cpp)
|
||||
endif(USE_GUI)
|
||||
|
||||
target_link_libraries(occ PUBLIC ngcore PRIVATE "$<BUILD_INTERFACE:netgen_python>")
|
||||
|
||||
if(NOT WIN32)
|
||||
target_link_libraries( occ PRIVATE ${OCC_LIBRARIES} )
|
||||
if(APPLE)
|
||||
# Link AppKit in case OCE was built as static libraries
|
||||
find_library(AppKit AppKit)
|
||||
target_link_libraries( occ PRIVATE ${AppKit} )
|
||||
endif(APPLE)
|
||||
install( TARGETS occ ${NG_INSTALL_DIR})
|
||||
if (USE_GUI)
|
||||
target_link_libraries( occvis PUBLIC occ )
|
||||
install( TARGETS occvis ${NG_INSTALL_DIR})
|
||||
endif(USE_GUI)
|
||||
endif(NOT WIN32)
|
||||
|
||||
install(FILES
|
||||
occgeom.hpp occmeshsurf.hpp vsocc.hpp occ_utils.hpp
|
||||
occ_vertex.hpp occ_edge.hpp occ_face.hpp occ_solid.hpp
|
||||
DESTINATION ${NG_INSTALL_DIR_INCLUDE}/occ COMPONENT netgen_devel
|
||||
)
|
||||
|
||||
endif(USE_OCC)
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include "occ_face.hpp"
|
||||
#include "occ_solid.hpp"
|
||||
#include "occgeom.hpp"
|
||||
#include "Partition_Spliter.hxx"
|
||||
|
||||
#include <BOPAlgo_Builder.hxx>
|
||||
#include <BRepBndLib.hxx>
|
||||
@ -28,7 +29,6 @@
|
||||
#include <IGESControl_Writer.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Interface_Static.hxx>
|
||||
#include <Partition_Spliter.hxx>
|
||||
#include <STEPCAFControl_Writer.hxx>
|
||||
#include <STEPConstruct.hxx>
|
||||
#include <STEPControl_Writer.hxx>
|
||||
|
@ -1,23 +1,10 @@
|
||||
add_definitions(-DNGINTERFACE_EXPORTS)
|
||||
add_library(stl ${NG_LIB_TYPE}
|
||||
target_sources(nglib PRIVATE
|
||||
meshstlsurface.cpp stlgeom.cpp stlgeomchart.cpp
|
||||
stlgeommesh.cpp stlline.cpp stltool.cpp stltopology.cpp python_stl.cpp
|
||||
)
|
||||
|
||||
if(NOT WIN32)
|
||||
target_link_libraries( stl PUBLIC mesh )
|
||||
install( TARGETS stl ${NG_INSTALL_DIR})
|
||||
endif(NOT WIN32)
|
||||
|
||||
target_link_libraries( stl PUBLIC ngcore PRIVATE "$<BUILD_INTERFACE:netgen_python>" )
|
||||
)
|
||||
|
||||
if(USE_GUI)
|
||||
add_library(stlvis ${NG_LIB_TYPE} vsstl.cpp)
|
||||
target_link_libraries(stlvis PRIVATE "$<BUILD_INTERFACE:netgen_python>" PUBLIC ngcore)
|
||||
if(NOT WIN32)
|
||||
target_link_libraries( stlvis PUBLIC stl )
|
||||
install( TARGETS stlvis ${NG_INSTALL_DIR})
|
||||
endif(NOT WIN32)
|
||||
target_sources(nggui PRIVATE vsstl.cpp stlpkg.cpp)
|
||||
endif(USE_GUI)
|
||||
|
||||
install(FILES
|
||||
|
@ -101,7 +101,7 @@ namespace netgen
|
||||
|
||||
|
||||
|
||||
class STLGeometry : public NetgenGeometry, public STLTopology
|
||||
class DLL_HEADER STLGeometry : public NetgenGeometry, public STLTopology
|
||||
{
|
||||
// edges to be meshed:
|
||||
NgArray<STLEdge> edges;
|
||||
@ -210,19 +210,19 @@ namespace netgen
|
||||
|
||||
|
||||
|
||||
DLL_HEADER void STLInfo(double* data);
|
||||
void STLInfo(double* data);
|
||||
//stldoctor:
|
||||
DLL_HEADER void SmoothNormals(const STLParameters& stlparam);
|
||||
DLL_HEADER void MarkNonSmoothNormals(const STLParameters& stlparam);
|
||||
void SmoothNormals(const STLParameters& stlparam);
|
||||
void MarkNonSmoothNormals(const STLParameters& stlparam);
|
||||
|
||||
DLL_HEADER void CalcEdgeData();
|
||||
DLL_HEADER void CalcEdgeDataAngles();
|
||||
void CalcEdgeData();
|
||||
void CalcEdgeDataAngles();
|
||||
|
||||
const STLEdgeDataList& EdgeDataList() const {return *edgedata;}
|
||||
|
||||
DLL_HEADER void UndoEdgeChange();
|
||||
DLL_HEADER void StoreEdgeData();
|
||||
DLL_HEADER void RestoreEdgeData();
|
||||
void UndoEdgeChange();
|
||||
void StoreEdgeData();
|
||||
void RestoreEdgeData();
|
||||
|
||||
//void ClearSelectedMultiEdge() {selectedmultiedge.SetSize(0);}
|
||||
//void AddSelectedMultiEdge(twoint ep) {selectedmultiedge.Append(ep);}
|
||||
@ -233,63 +233,63 @@ namespace netgen
|
||||
void BuildSelectedEdge(twoint ep);
|
||||
void BuildSelectedCluster(twoint ep);
|
||||
|
||||
DLL_HEADER void ImportEdges();
|
||||
DLL_HEADER void AddEdges(const NgArray<Point<3> >& eps);
|
||||
DLL_HEADER void ExportEdges();
|
||||
DLL_HEADER void LoadEdgeData(const filesystem::path & file);
|
||||
DLL_HEADER void SaveEdgeData(const filesystem::path & file);
|
||||
void ImportEdges();
|
||||
void AddEdges(const NgArray<Point<3> >& eps);
|
||||
void ExportEdges();
|
||||
void LoadEdgeData(const filesystem::path & file);
|
||||
void SaveEdgeData(const filesystem::path & file);
|
||||
// void SetEdgeAtSelected(int mode);
|
||||
|
||||
|
||||
DLL_HEADER void STLDoctorConfirmEdge();
|
||||
DLL_HEADER void STLDoctorCandidateEdge();
|
||||
DLL_HEADER void STLDoctorExcludeEdge();
|
||||
DLL_HEADER void STLDoctorUndefinedEdge();
|
||||
void STLDoctorConfirmEdge();
|
||||
void STLDoctorCandidateEdge();
|
||||
void STLDoctorExcludeEdge();
|
||||
void STLDoctorUndefinedEdge();
|
||||
|
||||
DLL_HEADER void STLDoctorSetAllUndefinedEdges();
|
||||
DLL_HEADER void STLDoctorEraseCandidateEdges();
|
||||
DLL_HEADER void STLDoctorConfirmCandidateEdges();
|
||||
DLL_HEADER void STLDoctorConfirmedToCandidateEdges();
|
||||
void STLDoctorSetAllUndefinedEdges();
|
||||
void STLDoctorEraseCandidateEdges();
|
||||
void STLDoctorConfirmCandidateEdges();
|
||||
void STLDoctorConfirmedToCandidateEdges();
|
||||
|
||||
DLL_HEADER void STLDoctorDirtyEdgesToCandidates();
|
||||
DLL_HEADER void STLDoctorLongLinesToCandidates();
|
||||
void STLDoctorDirtyEdgesToCandidates();
|
||||
void STLDoctorLongLinesToCandidates();
|
||||
|
||||
DLL_HEADER void UndoExternalEdges();
|
||||
DLL_HEADER void StoreExternalEdges();
|
||||
DLL_HEADER void RestoreExternalEdges();
|
||||
void UndoExternalEdges();
|
||||
void StoreExternalEdges();
|
||||
void RestoreExternalEdges();
|
||||
|
||||
DLL_HEADER void ImportExternalEdges(const char * filename); // Flame edges, JS
|
||||
void ImportExternalEdges(const char * filename); // Flame edges, JS
|
||||
// void LoadExternalEdges();
|
||||
|
||||
DLL_HEADER void BuildExternalEdgesFromEdges();
|
||||
DLL_HEADER void SaveExternalEdges();
|
||||
DLL_HEADER void AddExternalEdgeAtSelected();
|
||||
DLL_HEADER void AddClosedLinesToExternalEdges();
|
||||
DLL_HEADER void AddLongLinesToExternalEdges();
|
||||
DLL_HEADER void AddAllNotSingleLinesToExternalEdges();
|
||||
DLL_HEADER void STLDoctorBuildEdges(const STLParameters& stlparam);
|
||||
DLL_HEADER void AddExternalEdgesFromGeomLine();
|
||||
DLL_HEADER void DeleteDirtyExternalEdges();
|
||||
DLL_HEADER void DeleteExternalEdgeAtSelected();
|
||||
DLL_HEADER void DeleteExternalEdgeInVicinity();
|
||||
void BuildExternalEdgesFromEdges();
|
||||
void SaveExternalEdges();
|
||||
void AddExternalEdgeAtSelected();
|
||||
void AddClosedLinesToExternalEdges();
|
||||
void AddLongLinesToExternalEdges();
|
||||
void AddAllNotSingleLinesToExternalEdges();
|
||||
void STLDoctorBuildEdges(const STLParameters& stlparam);
|
||||
void AddExternalEdgesFromGeomLine();
|
||||
void DeleteDirtyExternalEdges();
|
||||
void DeleteExternalEdgeAtSelected();
|
||||
void DeleteExternalEdgeInVicinity();
|
||||
void AddExternalEdge(int p1, int p2);
|
||||
void DeleteExternalEdge(int p1, int p2);
|
||||
int IsExternalEdge(int p1, int p2);
|
||||
int NOExternalEdges() const {return externaledges.Size();}
|
||||
twoint GetExternalEdge(int i) const {return externaledges.Get(i);}
|
||||
|
||||
DLL_HEADER void DestroyDirtyTrigs();
|
||||
DLL_HEADER void CalcNormalsFromGeometry();
|
||||
DLL_HEADER void MoveSelectedPointToMiddle();
|
||||
DLL_HEADER void NeighbourAnglesOfSelectedTrig();
|
||||
DLL_HEADER void PrintSelectInfo();
|
||||
DLL_HEADER void ShowSelectedTrigChartnum();
|
||||
DLL_HEADER void ShowSelectedTrigCoords();
|
||||
DLL_HEADER void SmoothGeometry ();
|
||||
void DestroyDirtyTrigs();
|
||||
void CalcNormalsFromGeometry();
|
||||
void MoveSelectedPointToMiddle();
|
||||
void NeighbourAnglesOfSelectedTrig();
|
||||
void PrintSelectInfo();
|
||||
void ShowSelectedTrigChartnum();
|
||||
void ShowSelectedTrigCoords();
|
||||
void SmoothGeometry ();
|
||||
|
||||
|
||||
DLL_HEADER void LoadMarkedTrigs();
|
||||
DLL_HEADER void SaveMarkedTrigs();
|
||||
void LoadMarkedTrigs();
|
||||
void SaveMarkedTrigs();
|
||||
void ClearMarkedSegs() {markedsegs.SetSize(0);}
|
||||
void AddMarkedSeg(const Point<3> & ap1, const Point<3> & ap2)
|
||||
{
|
||||
@ -302,26 +302,26 @@ namespace netgen
|
||||
ap2=markedsegs.Get(i*2);
|
||||
}
|
||||
int GetNMarkedSegs() {return markedsegs.Size()/2;}
|
||||
DLL_HEADER void CalcVicinity(int starttrig);
|
||||
DLL_HEADER void GetVicinity(int starttrig, int size, NgArray<int>& vic);
|
||||
void CalcVicinity(int starttrig);
|
||||
void GetVicinity(int starttrig, int size, NgArray<int>& vic);
|
||||
|
||||
DLL_HEADER int Vicinity(int trig) const;
|
||||
int Vicinity(int trig) const;
|
||||
|
||||
DLL_HEADER void InitMarkedTrigs();
|
||||
DLL_HEADER void MarkDirtyTrigs(const STLParameters& stlparam);
|
||||
DLL_HEADER void SmoothDirtyTrigs(const STLParameters& stlparam);
|
||||
DLL_HEADER void GeomSmoothRevertedTrigs(const STLParameters& stlparam);
|
||||
DLL_HEADER void MarkRevertedTrigs(const STLParameters& stlparam);
|
||||
DLL_HEADER double CalcTrigBadness(int i);
|
||||
DLL_HEADER int IsMarkedTrig(int trig) const;
|
||||
DLL_HEADER void SetMarkedTrig(int trig, int num);
|
||||
DLL_HEADER void MarkTopErrorTrigs ();
|
||||
void InitMarkedTrigs();
|
||||
void MarkDirtyTrigs(const STLParameters& stlparam);
|
||||
void SmoothDirtyTrigs(const STLParameters& stlparam);
|
||||
void GeomSmoothRevertedTrigs(const STLParameters& stlparam);
|
||||
void MarkRevertedTrigs(const STLParameters& stlparam);
|
||||
double CalcTrigBadness(int i);
|
||||
int IsMarkedTrig(int trig) const;
|
||||
void SetMarkedTrig(int trig, int num);
|
||||
void MarkTopErrorTrigs ();
|
||||
|
||||
//Selected triangle
|
||||
DLL_HEADER void SetSelectTrig(int trig);
|
||||
DLL_HEADER int GetSelectTrig() const;
|
||||
DLL_HEADER void SetNodeOfSelTrig(int n);
|
||||
DLL_HEADER int GetNodeOfSelTrig() const;
|
||||
void SetSelectTrig(int trig);
|
||||
int GetSelectTrig() const;
|
||||
void SetNodeOfSelTrig(int n);
|
||||
int GetNodeOfSelTrig() const;
|
||||
|
||||
|
||||
int AddNormal(const Vec3d& n) { normals.Append(n); return normals.Size(); }
|
||||
@ -409,14 +409,14 @@ namespace netgen
|
||||
int TrigIsInOC(int tn, int ocn) const;
|
||||
|
||||
//get chart number of a trig or 0 if unmarked
|
||||
DLL_HEADER ChartId GetChartNr(STLTrigId i) const;
|
||||
ChartId GetChartNr(STLTrigId i) const;
|
||||
ChartId GetMarker(STLTrigId i) const { return chartmark[i]; }
|
||||
void SetMarker(STLTrigId nr, ChartId m);
|
||||
size_t GetNOCharts() const { return atlas.Size(); }
|
||||
//get a chart from atlas
|
||||
const STLChart& GetChart(ChartId nr) const { return *atlas[nr];};
|
||||
STLChart & GetChart(ChartId nr) { return *atlas[nr];};
|
||||
DLL_HEADER int AtlasMade() const;
|
||||
int AtlasMade() const;
|
||||
|
||||
void GetInnerChartLimes(NgArray<twoint>& limes, ChartId chartnum);
|
||||
|
||||
@ -465,7 +465,7 @@ namespace netgen
|
||||
int LineEndPointsSet() const {return lineendpoints.Size() == GetNP();}
|
||||
void ClearLineEndPoints();
|
||||
|
||||
DLL_HEADER void RestrictLocalH(class Mesh & mesh, double gh, const STLParameters& stlparam, const MeshingParameters& mparam);
|
||||
void RestrictLocalH(class Mesh & mesh, double gh, const STLParameters& stlparam, const MeshingParameters& mparam);
|
||||
void RestrictLocalHCurv(class Mesh & mesh, double gh, const STLParameters& stlparam);
|
||||
void RestrictHChartDistOneChart(ChartId chartnum, NgArray<int>& acttrigs, class Mesh & mesh,
|
||||
double gh, double fact, double minh, const STLParameters& stlparam);
|
||||
@ -475,7 +475,7 @@ namespace netgen
|
||||
int GenerateMesh (shared_ptr<Mesh> & mesh, MeshingParameters & mparam) override;
|
||||
|
||||
// Add additional Point to chart to close the surface and write the resulting stl to a file
|
||||
DLL_HEADER void WriteChartToFile( ChartId chartnumber, filesystem::path filename="chart.slb" );
|
||||
void WriteChartToFile( ChartId chartnumber, filesystem::path filename="chart.slb" );
|
||||
};
|
||||
|
||||
|
||||
|
@ -364,7 +364,7 @@ public:
|
||||
int GetNTE() const { return topedges.Size(); }
|
||||
const STLTopEdge & GetTopEdge (int nr) const { return topedges.Get(nr); }
|
||||
STLTopEdge & GetTopEdge (int nr) { return topedges.Elem(nr); }
|
||||
int GetTopEdgeNum (int pi1, int pi2) const;
|
||||
DLL_HEADER int GetTopEdgeNum (int pi1, int pi2) const;
|
||||
|
||||
|
||||
int NOTrigsPerPoint(int pn) { return trigsperpoint.EntrySize(pn); }
|
||||
|
@ -22,7 +22,7 @@ namespace netgen
|
||||
/* *********************** Draw STL Geometry **************** */
|
||||
|
||||
extern STLGeometry * stlgeometry;
|
||||
extern shared_ptr<Mesh> mesh;
|
||||
DLL_HEADER extern shared_ptr<Mesh> mesh;
|
||||
|
||||
|
||||
// #include "../../ngtcltk/mvdraw.hpp"
|
||||
|
@ -10,7 +10,7 @@
|
||||
namespace netgen
|
||||
{
|
||||
|
||||
class DLL_HEADER VisualSceneSTLGeometry : public VisualScene
|
||||
class NGGUI_API VisualSceneSTLGeometry : public VisualScene
|
||||
{
|
||||
NgArray<int> trilists;
|
||||
class STLGeometry * stlgeometry;
|
||||
@ -25,7 +25,7 @@ namespace netgen
|
||||
};
|
||||
|
||||
|
||||
class DLL_HEADER VisualSceneSTLMeshing : public VisualScene
|
||||
class NGGUI_API VisualSceneSTLMeshing : public VisualScene
|
||||
{
|
||||
NgArray<int> trilists;
|
||||
int selecttrig, nodeofseltrig;
|
||||
|
@ -1,19 +1,16 @@
|
||||
add_definitions(-DNGINTERFACE_EXPORTS)
|
||||
install(FILES soldata.hpp DESTINATION ${NG_INSTALL_DIR_INCLUDE} COMPONENT netgen_devel )
|
||||
|
||||
if(USE_GUI)
|
||||
set( LIB_VISUAL_SOURCES meshdoc.cpp mvdraw.cpp vsfieldlines.cpp fieldlines.cpp vsmesh.cpp vssolution.cpp importsolution.cpp )
|
||||
else(USE_GUI)
|
||||
set( LIB_VISUAL_SOURCES visual_dummy.cpp fieldlines.cpp)
|
||||
endif(USE_GUI)
|
||||
|
||||
add_library(visual ${NG_LIB_TYPE} ${LIB_VISUAL_SOURCES})
|
||||
|
||||
target_link_libraries( visual PUBLIC ngcore PRIVATE "$<BUILD_INTERFACE:netgen_python>" ${MPI_CXX_LIBRARIES} ${OPENGL_LIBRARIES} )
|
||||
install( TARGETS visual ${NG_INSTALL_DIR})
|
||||
target_sources(nggui PRIVATE
|
||||
importsolution.cpp
|
||||
meshdoc.cpp
|
||||
mvdraw.cpp
|
||||
vsfieldlines.cpp
|
||||
vsmesh.cpp
|
||||
vssolution.cpp
|
||||
visualpkg.cpp
|
||||
)
|
||||
target_link_libraries( nggui PUBLIC "$<BUILD_INTERFACE:netgen_python>" ${MPI_CXX_LIBRARIES} ${OPENGL_LIBRARIES} )
|
||||
|
||||
install(FILES
|
||||
meshdoc.hpp mvdraw.hpp
|
||||
vispar.hpp visual.hpp vssolution.hpp fieldlines.hpp
|
||||
meshdoc.hpp mvdraw.hpp visual_api.hpp
|
||||
vispar.hpp visual.hpp vssolution.hpp
|
||||
DESTINATION ${NG_INSTALL_DIR_INCLUDE}/visualization COMPONENT netgen_devel
|
||||
)
|
||||
|
@ -2,6 +2,7 @@
|
||||
// Read solution file
|
||||
//
|
||||
|
||||
#include "visual_api.hpp"
|
||||
|
||||
#include <mystdlib.h>
|
||||
|
||||
@ -16,9 +17,9 @@
|
||||
namespace netgen
|
||||
{
|
||||
|
||||
extern shared_ptr<Mesh> mesh;
|
||||
DLL_HEADER extern shared_ptr<Mesh> mesh;
|
||||
|
||||
DLL_HEADER void ImportSolution2 (const char * filename)
|
||||
NGGUI_API void ImportSolution2 (const char * filename)
|
||||
{
|
||||
ifstream inf (filename);
|
||||
char buf[100], name[1000];
|
||||
|
@ -17,17 +17,17 @@ class VisualSceneMeshDoctor : public VisualScene
|
||||
|
||||
|
||||
public:
|
||||
DLL_HEADER VisualSceneMeshDoctor ();
|
||||
DLL_HEADER virtual ~VisualSceneMeshDoctor ();
|
||||
NGGUI_API VisualSceneMeshDoctor ();
|
||||
NGGUI_API virtual ~VisualSceneMeshDoctor ();
|
||||
|
||||
DLL_HEADER virtual void BuildScene (int zoomall = 0);
|
||||
DLL_HEADER virtual void DrawScene ();
|
||||
DLL_HEADER virtual void MouseDblClick (int px, int py);
|
||||
NGGUI_API virtual void BuildScene (int zoomall = 0);
|
||||
NGGUI_API virtual void DrawScene ();
|
||||
NGGUI_API virtual void MouseDblClick (int px, int py);
|
||||
|
||||
DLL_HEADER void SetMarkEdgeDist (int dist);
|
||||
DLL_HEADER void ClickElement (int elnr);
|
||||
DLL_HEADER void UpdateTables ();
|
||||
DLL_HEADER int IsSegmentMarked (int segnr) const;
|
||||
NGGUI_API void SetMarkEdgeDist (int dist);
|
||||
NGGUI_API void ClickElement (int elnr);
|
||||
NGGUI_API void UpdateTables ();
|
||||
NGGUI_API int IsSegmentMarked (int segnr) const;
|
||||
};
|
||||
|
||||
class MeshDoctorParameters
|
||||
@ -37,6 +37,6 @@ public:
|
||||
};
|
||||
|
||||
|
||||
DLL_HEADER extern MeshDoctorParameters meshdoctor;
|
||||
NGGUI_API extern MeshDoctorParameters meshdoctor;
|
||||
|
||||
}
|
||||
|
@ -22,11 +22,11 @@
|
||||
|
||||
namespace netgen
|
||||
{
|
||||
DLL_HEADER Point3d VisualScene :: center;
|
||||
DLL_HEADER double VisualScene :: rad;
|
||||
DLL_HEADER GLdouble VisualScene :: backcolor;
|
||||
DLL_HEADER VisualScene visual_scene_cross;
|
||||
DLL_HEADER VisualScene *visual_scene = &visual_scene_cross;
|
||||
NGGUI_API Point3d VisualScene :: center;
|
||||
NGGUI_API double VisualScene :: rad;
|
||||
NGGUI_API GLdouble VisualScene :: backcolor;
|
||||
NGGUI_API VisualScene visual_scene_cross;
|
||||
NGGUI_API VisualScene *visual_scene = &visual_scene_cross;
|
||||
|
||||
/*
|
||||
#if TOGL_MAJOR_VERSION!=2
|
||||
@ -115,18 +115,6 @@ namespace netgen
|
||||
}
|
||||
|
||||
|
||||
extern DLL_HEADER void Render(bool blocking);
|
||||
DLL_HEADER void Render (bool blocking)
|
||||
{
|
||||
if (blocking && multithread.running)
|
||||
{
|
||||
multithread.redraw = 2;
|
||||
while (multithread.redraw == 2) ;
|
||||
}
|
||||
else
|
||||
multithread.redraw = 1;
|
||||
}
|
||||
|
||||
|
||||
void VisualScene :: BuildScene (int zoomall)
|
||||
{
|
||||
@ -861,6 +849,226 @@ namespace netgen
|
||||
return buffer;
|
||||
}
|
||||
|
||||
VisualSceneSurfaceMeshing :: VisualSceneSurfaceMeshing ()
|
||||
: VisualScene()
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
VisualSceneSurfaceMeshing :: ~VisualSceneSurfaceMeshing ()
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
void VisualSceneSurfaceMeshing :: DrawScene ()
|
||||
{
|
||||
// int i, j, k;
|
||||
if(!locpointsptr)
|
||||
return;
|
||||
auto& locpoints = *locpointsptr;
|
||||
auto& loclines = *loclinesptr;
|
||||
auto& plainpoints = *plainpointsptr;
|
||||
|
||||
if (loclines.Size() != changeval)
|
||||
{
|
||||
center = Point<3>(0,0,-5);
|
||||
rad = 0.1;
|
||||
|
||||
// CalcTransformationMatrices();
|
||||
changeval = loclines.Size();
|
||||
}
|
||||
|
||||
glClearColor(backcolor, backcolor, backcolor, 1.0);
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
SetLight();
|
||||
|
||||
// glEnable (GL_COLOR_MATERIAL);
|
||||
|
||||
// glDisable (GL_SHADING);
|
||||
// glColor3f (0.0f, 1.0f, 1.0f);
|
||||
// glLineWidth (1.0f);
|
||||
// glShadeModel (GL_SMOOTH);
|
||||
|
||||
// glCallList (linelists.Get(1));
|
||||
|
||||
// SetLight();
|
||||
|
||||
glPushMatrix();
|
||||
glMultMatrixd (transformationmat);
|
||||
|
||||
glShadeModel (GL_SMOOTH);
|
||||
// glDisable (GL_COLOR_MATERIAL);
|
||||
glEnable (GL_COLOR_MATERIAL);
|
||||
glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
|
||||
|
||||
glEnable (GL_BLEND);
|
||||
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
// glEnable (GL_LIGHTING);
|
||||
|
||||
double shine = vispar.shininess;
|
||||
double transp = vispar.transp;
|
||||
|
||||
glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shine);
|
||||
glLogicOp (GL_COPY);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
float mat_col[] = { 0.2, 0.2, 0.8, 1 };
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_col);
|
||||
|
||||
glPolygonOffset (1, 1);
|
||||
glEnable (GL_POLYGON_OFFSET_FILL);
|
||||
|
||||
float mat_colbl[] = { 0.8, 0.2, 0.2, 1 };
|
||||
float mat_cololdl[] = { 0.2, 0.8, 0.2, 1 };
|
||||
float mat_colnewl[] = { 0.8, 0.8, 0.2, 1 };
|
||||
|
||||
|
||||
glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
|
||||
glPolygonOffset (1, -1);
|
||||
glLineWidth (3);
|
||||
|
||||
for (int i = 1; i <= loclines.Size(); i++)
|
||||
{
|
||||
if (i == 1)
|
||||
{
|
||||
glEnable (GL_POLYGON_OFFSET_FILL);
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_colbl);
|
||||
}
|
||||
else if (i <= oldnl)
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_cololdl);
|
||||
else
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_colnewl);
|
||||
|
||||
int pi1 = loclines.Get(i).I1();
|
||||
int pi2 = loclines.Get(i).I2();
|
||||
|
||||
if (pi1 >= 1 && pi2 >= 1)
|
||||
{
|
||||
Point3d p1 = locpoints.Get(pi1);
|
||||
Point3d p2 = locpoints.Get(pi2);
|
||||
|
||||
glBegin (GL_LINES);
|
||||
glVertex3f (p1.X(), p1.Y(), p1.Z());
|
||||
glVertex3f (p2.X(), p2.Y(), p2.Z());
|
||||
glEnd();
|
||||
}
|
||||
|
||||
glDisable (GL_POLYGON_OFFSET_FILL);
|
||||
}
|
||||
|
||||
|
||||
glLineWidth (1);
|
||||
|
||||
|
||||
glPointSize (5);
|
||||
float mat_colp[] = { 1, 0, 0, 1 };
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_colp);
|
||||
glBegin (GL_POINTS);
|
||||
for (int i = 1; i <= locpoints.Size(); i++)
|
||||
{
|
||||
Point3d p = locpoints.Get(i);
|
||||
glVertex3f (p.X(), p.Y(), p.Z());
|
||||
}
|
||||
glEnd();
|
||||
|
||||
|
||||
glPopMatrix();
|
||||
|
||||
|
||||
// float mat_colp[] = { 1, 0, 0, 1 };
|
||||
|
||||
float mat_col2d1[] = { 1, 0.5, 0.5, 1 };
|
||||
float mat_col2d[] = { 1, 1, 1, 1 };
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_col2d);
|
||||
|
||||
glBegin (GL_LINES);
|
||||
for (int i = 1; i <= loclines.Size(); i++)
|
||||
{
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_col2d);
|
||||
if (i == 1)
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_col2d1);
|
||||
|
||||
int pi1 = loclines.Get(i).I1();
|
||||
int pi2 = loclines.Get(i).I2();
|
||||
|
||||
if (pi1 >= 1 && pi2 >= 1)
|
||||
{
|
||||
const auto& p1 = plainpoints.Get(pi1);
|
||||
const auto& p2 = plainpoints.Get(pi2);
|
||||
|
||||
glBegin (GL_LINES);
|
||||
glVertex3f (scalex * p1[0] + shiftx, scaley * p1[1] + shifty, -5);
|
||||
glVertex3f (scalex * p2[0] + shiftx, scaley * p2[1] + shifty, -5);
|
||||
glEnd();
|
||||
}
|
||||
}
|
||||
glEnd ();
|
||||
|
||||
|
||||
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_colp);
|
||||
glBegin (GL_POINTS);
|
||||
for (int i = 1; i <= plainpoints.Size(); i++)
|
||||
{
|
||||
const auto& p = plainpoints.Get(i);
|
||||
glVertex3f (scalex * p[0] + shiftx, scaley * p[1] + shifty, -5);
|
||||
}
|
||||
glEnd();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
glDisable (GL_POLYGON_OFFSET_FILL);
|
||||
|
||||
glPopMatrix();
|
||||
DrawCoordinateCross ();
|
||||
DrawNetgenLogo ();
|
||||
glFinish();
|
||||
|
||||
}
|
||||
|
||||
|
||||
void VisualSceneSurfaceMeshing :: BuildScene (int zoomall)
|
||||
{
|
||||
}
|
||||
|
||||
VisualSceneSurfaceMeshing vssurfacemeshing;
|
||||
|
||||
void Impl_Render (bool blocking)
|
||||
{
|
||||
if (blocking && multithread.running)
|
||||
{
|
||||
multithread.redraw = 2;
|
||||
while (multithread.redraw == 2) ;
|
||||
}
|
||||
else
|
||||
multithread.redraw = 1;
|
||||
}
|
||||
|
||||
void Impl_UpdateVisSurfaceMeshData(int oldnl,
|
||||
shared_ptr<NgArray<Point<3>>> locpointsptr,
|
||||
shared_ptr<NgArray<INDEX_2>> loclinesptr,
|
||||
shared_ptr<NgArray<Point<2>>> plainpointsptr)
|
||||
{
|
||||
vssurfacemeshing.oldnl = oldnl;
|
||||
if(locpointsptr) vssurfacemeshing.locpointsptr = locpointsptr;
|
||||
if(loclinesptr) vssurfacemeshing.loclinesptr = loclinesptr;
|
||||
if(plainpointsptr) vssurfacemeshing.plainpointsptr = plainpointsptr;
|
||||
}
|
||||
|
||||
static bool set_function_pointers = []()
|
||||
{
|
||||
Ptr_Render = Impl_Render;
|
||||
Ptr_UpdateVisSurfaceMeshData = Impl_UpdateVisSurfaceMeshData;
|
||||
return true;
|
||||
}();
|
||||
|
||||
|
||||
|
||||
#ifdef PARALLELGL
|
||||
void VisualScene :: InitParallelGL ()
|
||||
|
@ -9,27 +9,27 @@ namespace netgen
|
||||
class VisualScene
|
||||
{
|
||||
protected:
|
||||
static DLL_HEADER Point3d center;
|
||||
static DLL_HEADER double rad;
|
||||
static NGGUI_API Point3d center;
|
||||
static NGGUI_API double rad;
|
||||
|
||||
static double lookatmat[16];
|
||||
static double transmat[16];
|
||||
static double rotmat[16];
|
||||
static double centermat[16];
|
||||
|
||||
static DLL_HEADER double transformationmat[16];
|
||||
static NGGUI_API double transformationmat[16];
|
||||
|
||||
GLdouble clipplane[4];
|
||||
|
||||
int changeval;
|
||||
static DLL_HEADER GLdouble backcolor;
|
||||
static NGGUI_API GLdouble backcolor;
|
||||
|
||||
static int DLL_HEADER selface;
|
||||
static int NGGUI_API selface;
|
||||
static int selelement;
|
||||
static PointIndex DLL_HEADER selpoint;
|
||||
static PointIndex NGGUI_API selpoint;
|
||||
static PointIndex selpoint2;
|
||||
static int locpi;
|
||||
static int DLL_HEADER seledge;
|
||||
static int NGGUI_API seledge;
|
||||
|
||||
static int selecttimestamp;
|
||||
static optional<Point<3>> marker;
|
||||
@ -42,51 +42,51 @@ namespace netgen
|
||||
|
||||
|
||||
public:
|
||||
DLL_HEADER VisualScene ();
|
||||
DLL_HEADER virtual ~VisualScene();
|
||||
NGGUI_API VisualScene ();
|
||||
NGGUI_API virtual ~VisualScene();
|
||||
|
||||
DLL_HEADER virtual void BuildScene (int zoomall = 0);
|
||||
DLL_HEADER virtual void DrawScene ();
|
||||
NGGUI_API virtual void BuildScene (int zoomall = 0);
|
||||
NGGUI_API virtual void DrawScene ();
|
||||
|
||||
DLL_HEADER void CalcTransformationMatrices();
|
||||
DLL_HEADER void StandardRotation (const char * dir);
|
||||
DLL_HEADER void ArbitraryRotation (const NgArray<double> & alpha, const NgArray<Vec3d> & vec);
|
||||
DLL_HEADER void ArbitraryRotation (const double alpha, const Vec3d & vec);
|
||||
NGGUI_API void CalcTransformationMatrices();
|
||||
NGGUI_API void StandardRotation (const char * dir);
|
||||
NGGUI_API void ArbitraryRotation (const NgArray<double> & alpha, const NgArray<Vec3d> & vec);
|
||||
NGGUI_API void ArbitraryRotation (const double alpha, const Vec3d & vec);
|
||||
|
||||
DLL_HEADER virtual void MouseMove(int oldx, int oldy,
|
||||
NGGUI_API virtual void MouseMove(int oldx, int oldy,
|
||||
int newx, int newy,
|
||||
char mode);
|
||||
|
||||
DLL_HEADER void LookAt (const Point<3> & cam, const Point<3> & obj,
|
||||
NGGUI_API void LookAt (const Point<3> & cam, const Point<3> & obj,
|
||||
const Point<3> & camup);
|
||||
|
||||
DLL_HEADER void SetClippingPlane ();
|
||||
NGGUI_API void SetClippingPlane ();
|
||||
|
||||
DLL_HEADER virtual void MouseDblClick (int px, int py);
|
||||
NGGUI_API virtual void MouseDblClick (int px, int py);
|
||||
|
||||
DLL_HEADER void SetLight ();
|
||||
NGGUI_API void SetLight ();
|
||||
static void SetBackGroundColor (double col)
|
||||
{ backcolor = col; }
|
||||
|
||||
DLL_HEADER void CreateTexture (int ncols, int linear, double alpha, int typ);
|
||||
DLL_HEADER void DrawColorBar (double minval, double maxval, int logscale = 0, bool linear = 1);
|
||||
DLL_HEADER void DrawCoordinateCross ();
|
||||
DLL_HEADER void DrawMarker();
|
||||
DLL_HEADER void DrawNetgenLogo ();
|
||||
DLL_HEADER void SetOpenGlColor(double val, double valmin, double valmax, int logscale = 0);
|
||||
NGGUI_API void CreateTexture (int ncols, int linear, double alpha, int typ);
|
||||
NGGUI_API void DrawColorBar (double minval, double maxval, int logscale = 0, bool linear = 1);
|
||||
NGGUI_API void DrawCoordinateCross ();
|
||||
NGGUI_API void DrawMarker();
|
||||
NGGUI_API void DrawNetgenLogo ();
|
||||
NGGUI_API void SetOpenGlColor(double val, double valmin, double valmax, int logscale = 0);
|
||||
|
||||
|
||||
#ifdef PARALLELGL
|
||||
DLL_HEADER void InitParallelGL ();
|
||||
DLL_HEADER void Broadcast ();
|
||||
NGGUI_API void InitParallelGL ();
|
||||
NGGUI_API void Broadcast ();
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
DLL_HEADER extern void MyOpenGLText (const char * text);
|
||||
DLL_HEADER extern void Set_OpenGLText_Callback ( void (*fun) (const char * text) );
|
||||
DLL_HEADER extern VisualScene visual_scene_cross;
|
||||
DLL_HEADER extern VisualScene *visual_scene;
|
||||
NGGUI_API extern void MyOpenGLText (const char * text);
|
||||
NGGUI_API extern void Set_OpenGLText_Callback ( void (*fun) (const char * text) );
|
||||
NGGUI_API extern VisualScene visual_scene_cross;
|
||||
NGGUI_API extern VisualScene *visual_scene;
|
||||
|
||||
|
||||
|
||||
@ -111,10 +111,11 @@ namespace netgen
|
||||
|
||||
void BuildScene (int zoomall = 0) override;
|
||||
void DrawScene () override;
|
||||
void MouseMove(int oldx, int oldy, int newx, int newy,
|
||||
NGGUI_API void MouseMove(int oldx, int oldy, int newx, int newy,
|
||||
char mode) override;
|
||||
};
|
||||
|
||||
NGGUI_API extern VisualSceneSurfaceMeshing vssurfacemeshing;
|
||||
|
||||
|
||||
|
||||
@ -171,12 +172,12 @@ namespace netgen
|
||||
// weak_ptr<Mesh> wp_mesh;
|
||||
|
||||
public:
|
||||
DLL_HEADER VisualSceneMesh ();
|
||||
DLL_HEADER virtual ~VisualSceneMesh ();
|
||||
NGGUI_API VisualSceneMesh ();
|
||||
NGGUI_API virtual ~VisualSceneMesh ();
|
||||
|
||||
DLL_HEADER virtual void BuildScene (int zoomall = 0);
|
||||
DLL_HEADER virtual void DrawScene ();
|
||||
DLL_HEADER virtual void MouseDblClick (int px, int py);
|
||||
NGGUI_API virtual void BuildScene (int zoomall = 0);
|
||||
NGGUI_API virtual void DrawScene ();
|
||||
NGGUI_API virtual void MouseDblClick (int px, int py);
|
||||
|
||||
// void SetMesh (shared_ptr<Mesh> mesh) { wp_mesh = mesh; }
|
||||
// shared_ptr<Mesh> GetMesh () { return shared_ptr<Mesh>(wp_mesh); }
|
||||
@ -186,16 +187,16 @@ namespace netgen
|
||||
{ user_me_handler = handler; }
|
||||
|
||||
|
||||
DLL_HEADER int SelectedFace () const
|
||||
NGGUI_API int SelectedFace () const
|
||||
{ return selface; }
|
||||
DLL_HEADER void SetSelectedFace (int asf);
|
||||
NGGUI_API void SetSelectedFace (int asf);
|
||||
// { selface = asf; selecttimestamp = GetTimeStamp(); }
|
||||
|
||||
DLL_HEADER int SelectedEdge () const
|
||||
NGGUI_API int SelectedEdge () const
|
||||
{ return seledge; }
|
||||
DLL_HEADER int SelectedElement () const
|
||||
NGGUI_API int SelectedElement () const
|
||||
{ return selelement; }
|
||||
DLL_HEADER int SelectedPoint () const
|
||||
NGGUI_API int SelectedPoint () const
|
||||
{ return selpoint; }
|
||||
void BuildFilledList (bool names);
|
||||
// private:
|
||||
@ -215,10 +216,10 @@ namespace netgen
|
||||
bool Unproject (int px, int py, Point<3> &p);
|
||||
};
|
||||
|
||||
DLL_HEADER extern VisualSceneMesh vsmesh;
|
||||
NGGUI_API extern VisualSceneMesh vsmesh;
|
||||
|
||||
|
||||
class DLL_HEADER VisualSceneSpecPoints : public VisualScene
|
||||
class NGGUI_API VisualSceneSpecPoints : public VisualScene
|
||||
{
|
||||
public:
|
||||
VisualSceneSpecPoints ();
|
||||
@ -253,7 +254,7 @@ namespace netgen
|
||||
PointIndex & selpoint2, int & locpi);
|
||||
|
||||
|
||||
DLL_HEADER std::vector<unsigned char> Snapshot( int w, int h );
|
||||
NGGUI_API std::vector<unsigned char> Snapshot( int w, int h );
|
||||
}
|
||||
|
||||
|
||||
|
@ -120,7 +120,7 @@ public:
|
||||
public:
|
||||
VisualizationParameters();
|
||||
};
|
||||
DLL_HEADER extern VisualizationParameters vispar;
|
||||
NGGUI_API extern VisualizationParameters vispar;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -17,10 +17,12 @@ Visualization
|
||||
// #define PARALLELGL
|
||||
// #endif
|
||||
|
||||
#include "visual_api.hpp"
|
||||
#include "../include/incopengl.hpp"
|
||||
|
||||
#include "../meshing/visual_interface.hpp"
|
||||
#include "../meshing/soldata.hpp"
|
||||
#include "vispar.hpp"
|
||||
#include "soldata.hpp"
|
||||
#include "mvdraw.hpp"
|
||||
|
||||
#include <complex>
|
||||
|
10
libsrc/visualization/visual_api.hpp
Normal file
10
libsrc/visualization/visual_api.hpp
Normal file
@ -0,0 +1,10 @@
|
||||
#ifndef VISUAL_API_HPP_INCLUDED
|
||||
#define VISUAL_API_HPP_INCLUDED
|
||||
|
||||
#ifdef nggui_EXPORTS
|
||||
#define NGGUI_API NGCORE_API_EXPORT
|
||||
#else
|
||||
#define NGGUI_API NGCORE_API_IMPORT
|
||||
#endif
|
||||
|
||||
#endif // VISUAL_API_HPP_INCLUDED
|
@ -1,15 +0,0 @@
|
||||
#include <mystdlib.h>
|
||||
|
||||
#include <meshing.hpp>
|
||||
#include "../include/nginterface.h"
|
||||
|
||||
void Ng_ClearSolutionData () { ; }
|
||||
void Ng_InitSolutionData (Ng_SolutionData * soldata) { ; }
|
||||
void Ng_SetSolutionData (Ng_SolutionData * soldata) { ; }
|
||||
void Ng_Redraw (bool blocking) { ; }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -377,7 +377,7 @@ namespace netgen
|
||||
}
|
||||
|
||||
VisualSceneMeshDoctor vsmeshdoc;
|
||||
DLL_HEADER extern shared_ptr<Mesh> mesh;
|
||||
DLL_HEADER shared_ptr<Mesh> mesh;
|
||||
|
||||
int Ng_MeshDoctor(ClientData clientData,
|
||||
Tcl_Interp * interp,
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include <stlgeom.hpp>
|
||||
|
||||
#include <visual.hpp>
|
||||
#include <meshing/fieldlines.hpp>
|
||||
|
||||
|
||||
namespace netgen
|
||||
|
@ -3540,7 +3540,7 @@ namespace netgen
|
||||
#include <../general/ngpython.hpp>
|
||||
#include "../include/nginterface.h"
|
||||
|
||||
DLL_HEADER void ExportMeshVis(py::module &m)
|
||||
NGGUI_API void ExportMeshVis(py::module &m)
|
||||
{
|
||||
using namespace netgen;
|
||||
vispar.drawcolorbar = true;
|
||||
|
@ -9,11 +9,12 @@
|
||||
// #include <parallel.hpp>
|
||||
#include <visual.hpp>
|
||||
#include <limits>
|
||||
|
||||
namespace netgen
|
||||
{
|
||||
|
||||
|
||||
DLL_HEADER VisualSceneSolution & GetVSSolution()
|
||||
VisualSceneSolution & GetVSSolution()
|
||||
{
|
||||
static VisualSceneSolution vssolution;
|
||||
return vssolution;
|
||||
@ -23,19 +24,6 @@ namespace netgen
|
||||
// extern shared_ptr<Mesh> mesh;
|
||||
extern VisualSceneMesh vsmesh;
|
||||
|
||||
|
||||
DLL_HEADER void AddUserVisualizationObject (UserVisualizationObject * vis)
|
||||
{
|
||||
// vssolution.AddUserVisualizationObject (vis);
|
||||
GetVSSolution().AddUserVisualizationObject (vis);
|
||||
}
|
||||
DLL_HEADER void DeleteUserVisualizationObject (UserVisualizationObject * vis)
|
||||
{
|
||||
// vssolution.AddUserVisualizationObject (vis);
|
||||
GetVSSolution().DeleteUserVisualizationObject (vis);
|
||||
}
|
||||
|
||||
|
||||
VisualSceneSolution :: SolData :: SolData ()
|
||||
: data (0), solclass(0)
|
||||
{ ; }
|
||||
@ -4984,7 +4972,7 @@ namespace netgen
|
||||
|
||||
#include "../include/nginterface.h"
|
||||
|
||||
void Ng_ClearSolutionData ()
|
||||
void Impl_Ng_ClearSolutionData ()
|
||||
{
|
||||
#ifdef OPENGL
|
||||
// if (nodisplay) return;
|
||||
@ -4993,7 +4981,7 @@ void Ng_ClearSolutionData ()
|
||||
#endif
|
||||
}
|
||||
|
||||
void Ng_InitSolutionData (Ng_SolutionData * soldata)
|
||||
void Impl_Ng_InitSolutionData (Ng_SolutionData * soldata)
|
||||
{
|
||||
// soldata -> name = NULL;
|
||||
soldata -> data = NULL;
|
||||
@ -5007,7 +4995,7 @@ void Ng_InitSolutionData (Ng_SolutionData * soldata)
|
||||
soldata -> solclass = 0;
|
||||
}
|
||||
|
||||
void Ng_SetSolutionData (Ng_SolutionData * soldata)
|
||||
void Impl_Ng_SetSolutionData (Ng_SolutionData * soldata)
|
||||
{
|
||||
#ifdef OPENGL
|
||||
// if (nodisplay) return;
|
||||
@ -5033,12 +5021,7 @@ void Ng_SetSolutionData (Ng_SolutionData * soldata)
|
||||
|
||||
|
||||
|
||||
namespace netgen
|
||||
{
|
||||
extern void Render (bool blocking);
|
||||
}
|
||||
|
||||
void Ng_Redraw (bool blocking)
|
||||
void Impl_Ng_Redraw (bool blocking)
|
||||
{
|
||||
#ifdef OPENGL
|
||||
//netgen::vssolution.UpdateSolutionTimeStamp();
|
||||
@ -5065,7 +5048,7 @@ void (*glGenRenderbuffers) (GLsizei n, GLuint *renderbuffers);
|
||||
void (*glRenderbufferStorage) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
|
||||
void (*glFramebufferRenderbuffer) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
|
||||
|
||||
DLL_HEADER void LoadOpenGLFunctionPointers() {
|
||||
NGGUI_API void LoadOpenGLFunctionPointers() {
|
||||
#ifdef USE_BUFFERS
|
||||
glBindBuffer = (decltype(glBindBuffer)) wglGetProcAddress("glBindBuffer");
|
||||
glBufferSubData = (decltype(glBufferSubData)) wglGetProcAddress("glBufferSubData");
|
||||
@ -5086,6 +5069,15 @@ DLL_HEADER void LoadOpenGLFunctionPointers() {
|
||||
glFramebufferRenderbuffer = (decltype(glFramebufferRenderbuffer )) wglGetProcAddress("glFramebufferRenderbuffer");
|
||||
}
|
||||
#else // WIN32
|
||||
DLL_HEADER void LoadOpenGLFunctionPointers() { }
|
||||
NGGUI_API void LoadOpenGLFunctionPointers() { }
|
||||
#endif // WIN32
|
||||
#endif // OPENGL
|
||||
|
||||
// set function pointers
|
||||
static bool dummy_init = [](){
|
||||
Ptr_Ng_ClearSolutionData = Impl_Ng_ClearSolutionData;
|
||||
Ptr_Ng_InitSolutionData = Impl_Ng_InitSolutionData;
|
||||
Ptr_Ng_SetSolutionData = Impl_Ng_SetSolutionData;
|
||||
Ptr_Ng_Redraw = Impl_Ng_Redraw;
|
||||
return true;
|
||||
}();
|
||||
|
@ -1,7 +1,8 @@
|
||||
#ifndef FILE_VSSOLUTION
|
||||
#define FILE_VSSOLUTION
|
||||
|
||||
#include "fieldlines.hpp"
|
||||
#include "visual_api.hpp"
|
||||
#include "mvdraw.hpp"
|
||||
|
||||
typedef void * ClientData;
|
||||
struct Tcl_Interp;
|
||||
@ -10,7 +11,7 @@ struct Tcl_Interp;
|
||||
namespace netgen
|
||||
{
|
||||
|
||||
DLL_HEADER extern void ImportSolution (const char * filename);
|
||||
NGGUI_API extern void ImportSolution (const char * filename);
|
||||
|
||||
|
||||
extern int Ng_Vis_Set (ClientData clientData,
|
||||
@ -19,7 +20,7 @@ DLL_HEADER extern void ImportSolution (const char * filename);
|
||||
|
||||
|
||||
|
||||
class DLL_HEADER VisualSceneSolution : public VisualScene
|
||||
class NGGUI_API VisualSceneSolution : public VisualScene
|
||||
{
|
||||
friend class FieldLineCalc;
|
||||
|
||||
@ -355,15 +356,17 @@ public:
|
||||
|
||||
};
|
||||
|
||||
NGGUI_API VisualSceneSolution & GetVSSolution();
|
||||
|
||||
inline void AddUserVisualizationObject (UserVisualizationObject * vis)
|
||||
{
|
||||
GetVSSolution().AddUserVisualizationObject (vis);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// DLL_HEADER extern VisualSceneSolution vssolution;
|
||||
DLL_HEADER extern VisualSceneSolution & GetVSSolution();
|
||||
inline void DeleteUserVisualizationObject (UserVisualizationObject * vis)
|
||||
{
|
||||
GetVSSolution().DeleteUserVisualizationObject (vis);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -11,27 +11,19 @@ if(WIN32)
|
||||
set_directory_properties(PROPERTIES RULE_LAUNCH_COMPILE "")
|
||||
endif(WIN32)
|
||||
|
||||
if(USE_GUI)
|
||||
target_sources(nglib PRIVATE onetcl.cpp)
|
||||
|
||||
add_library(gui SHARED
|
||||
if(USE_GUI)
|
||||
target_sources(nggui PRIVATE
|
||||
gui.cpp ngpkg.cpp demoview.cpp parallelfunc.cpp ngtcl.cpp
|
||||
../libsrc/stlgeom/stlpkg.cpp ../libsrc/visualization/visualpkg.cpp
|
||||
../libsrc/csg/csgpkg.cpp ../libsrc/geom2d/geom2dpkg.cpp
|
||||
../libsrc/occ/occpkg.cpp ../libsrc/occ/vsocc.cpp
|
||||
)
|
||||
|
||||
target_link_libraries( gui PUBLIC nglib )
|
||||
target_link_libraries( gui PRIVATE ${LIBTOGL} ${ZLIB_LIBRARIES} ${JPEG_LIBRARIES} ${FFMPEG_LIBRARIES} ${X11_Xmu_LIB} ${X11_X11_LIB} ${OCC_LIBRARIES} )
|
||||
target_link_libraries( gui PRIVATE ${TCL_STUB_LIBRARY} ${TK_STUB_LIBRARY})
|
||||
|
||||
if(NOT BUILD_FOR_CONDA)
|
||||
add_executable(netgen ngappinit.cpp)
|
||||
add_executable(netgen ngappinit.cpp)
|
||||
if(WIN32)
|
||||
target_sources(netgen PRIVATE ../windows/netgen.rc)
|
||||
else(WIN32)
|
||||
target_link_libraries( netgen mesh stlvis stl geom2dvis interface geom2d csg stl visual csgvis )
|
||||
endif(WIN32)
|
||||
target_link_libraries( netgen nglib gui netgen_python ${MPI_mpi_LIBRARY} ${MPI_CXX_LIBRARIES} ${LIBTOGL} ${ZLIB_LIBRARIES} ${JPEG_LIBRARIES} ${FFMPEG_LIBRARIES} ${X11_Xmu_LIB} ${X11_X11_LIB} ${OCC_LIBRARIES} ${TK_LIBRARY} ${TCL_LIBRARY})
|
||||
target_link_libraries( netgen nglib nggui netgen_python ${TK_LIBRARY} ${TCL_LIBRARY})
|
||||
install(TARGETS netgen ${NG_INSTALL_DIR})
|
||||
if(APPLE)
|
||||
set_target_properties(netgen PROPERTIES OUTPUT_NAME netgen)
|
||||
@ -39,17 +31,7 @@ if(USE_GUI)
|
||||
target_link_libraries( netgen ${PYTHON_LIBRARIES})
|
||||
endif(NOT BUILD_FOR_CONDA)
|
||||
|
||||
if(NOT WIN32)
|
||||
target_link_libraries( gui PUBLIC mesh stlvis stl geom2dvis interface geom2d csg stl visual csgvis )
|
||||
endif(NOT WIN32)
|
||||
|
||||
install(TARGETS gui ${NG_INSTALL_DIR})
|
||||
|
||||
if(WIN32)
|
||||
set_target_properties( gui PROPERTIES OUTPUT_NAME libgui )
|
||||
endif(WIN32)
|
||||
target_link_libraries( gui PRIVATE "$<BUILD_INTERFACE:netgen_python>" )
|
||||
|
||||
install(TARGETS nggui ${NG_INSTALL_DIR})
|
||||
endif(USE_GUI)
|
||||
|
||||
if(USE_PYTHON)
|
||||
@ -63,6 +45,19 @@ if(USE_PYTHON)
|
||||
endif()
|
||||
set_target_properties(ngpy PROPERTIES INSTALL_RPATH "${NG_RPATH_TOKEN}/../${NETGEN_PYTHON_RPATH}")
|
||||
install(TARGETS ngpy DESTINATION ${NG_INSTALL_DIR_PYTHON}/${NG_INSTALL_SUFFIX} COMPONENT netgen)
|
||||
|
||||
if(USE_GUI)
|
||||
add_library(ngguipy SHARED ngguipy.cpp)
|
||||
target_link_libraries( ngguipy PUBLIC nglib nggui PRIVATE "$<BUILD_INTERFACE:netgen_python>" )
|
||||
if(APPLE)
|
||||
set_target_properties( ngguipy PROPERTIES SUFFIX ".so")
|
||||
elseif(WIN32)
|
||||
set_target_properties( ngguipy PROPERTIES SUFFIX ".pyd")
|
||||
set_target_properties( ngguipy PROPERTIES OUTPUT_NAME "libngguipy")
|
||||
endif()
|
||||
set_target_properties(ngguipy PROPERTIES INSTALL_RPATH "${NG_RPATH_TOKEN}/../${NETGEN_PYTHON_RPATH}")
|
||||
install(TARGETS ngguipy DESTINATION ${NG_INSTALL_DIR_PYTHON}/${NG_INSTALL_SUFFIX} COMPONENT netgen)
|
||||
endif(USE_GUI)
|
||||
endif(USE_PYTHON)
|
||||
|
||||
if(USE_GUI)
|
||||
|
@ -5,13 +5,30 @@ if(APPLE)
|
||||
endif(APPLE)
|
||||
|
||||
if(WIN32)
|
||||
add_definitions("-DBUILD_togl -DUNICODE -D_UNICODE -DTOGL_USE_FONTS=0 -DSTDC_HEADERS -DSTDC_HEADER")
|
||||
add_library(togl SHARED togl.c toglProcAddr.c toglStubInit.c)
|
||||
install(TARGETS togl DESTINATION ${NG_INSTALL_DIR} COMPONENT netgen)
|
||||
target_link_libraries(togl ${TCL_STUB_LIBRARY} ${TK_STUB_LIBRARY})
|
||||
set(TOGL_LIBRARY_TYPE SHARED)
|
||||
else(WIN32)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer -Wno-implicit-int")
|
||||
add_definitions("-DPACKAGE_NAME=\"Togl\" -DPACKAGE_TARNAME=\"togl\" -DPACKAGE_VERSION=\"2.1\" -DPACKAGE_STRING=\"Togl\ 2.1\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=0 -DHAVE_LIMITS_H=1 -DHAVE_SYS_PARAM_H=1 -DUSE_THREAD_ALLOC=1 -D_REENTRANT=1 -D_THREAD_SAFE=1 -DTCL_THREADS=1 -DMODULE_SCOPE=extern\ __attribute__\(\(__visibility__\(\"hidden\"\)\)\) -D_LARGEFILE64_SOURCE=1 -DTCL_WIDE_INT_IS_LONG=1 -DUSE_TCL_STUBS=1 -DUSE_TK_STUBS=1 -DAUTOSTEREOD=\"\"")
|
||||
set(TOGL_LIBRARY_TYPE STATIC)
|
||||
endif(WIN32)
|
||||
|
||||
add_library(togl ${TOGL_LIBRARY_TYPE} togl.c toglProcAddr.c toglStubInit.c)
|
||||
if(WIN32)
|
||||
target_compile_definitions(togl PUBLIC -DTOGL_WGL)
|
||||
else(WIN32)
|
||||
if(APPLE)
|
||||
target_compile_definitions(togl PUBLIC -DTOGL_NSOPENGL)
|
||||
else(APPLE)
|
||||
target_compile_definitions(togl PUBLIC -DTOGL_X11)
|
||||
endif(APPLE)
|
||||
endif(WIN32)
|
||||
target_link_libraries(togl PUBLIC ${TCL_STUB_LIBRARY} ${TK_STUB_LIBRARY})
|
||||
|
||||
target_compile_definitions(togl PRIVATE -DBUILD_togl=1 -DSTDC_HEADERS=1 -DUSE_TCL_STUBS=1 -DUSE_TK_STUBS=1)
|
||||
|
||||
if(WIN32)
|
||||
target_compile_definitions(togl PRIVATE -DUNICODE -D_UNICODE -DTOGL_USE_FONTS=0 -DSTDC_HEADER)
|
||||
else(WIN32)
|
||||
target_compile_options(togl PRIVATE -fomit-frame-pointer -Wno-implicit-int)
|
||||
target_compile_definitions(togl PRIVATE -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=0 -DHAVE_LIMITS_H=1 -DHAVE_SYS_PARAM_H=1 -DUSE_THREAD_ALLOC=1 -D_REENTRANT=1 -D_THREAD_SAFE=1 -DTCL_THREADS=1 -D_LARGEFILE64_SOURCE=1 -DTCL_WIDE_INT_IS_LONG=1)
|
||||
|
||||
include_directories(BEFORE "${TCL_INCLUDE_PATH}/tcl-private/generic" "${TCL_INCLUDE_PATH}/tcl-private/unix")
|
||||
include_directories(BEFORE "${TK_INCLUDE_PATH}/tk-private/generic" "${TK_INCLUDE_PATH}/tk-private/unix" "${TK_INCLUDE_PATH}/tk-private")
|
||||
@ -20,9 +37,9 @@ else(WIN32)
|
||||
include_directories(BEFORE "${TCL_INCLUDE_PATH}")
|
||||
include_directories(BEFORE "${TK_INCLUDE_PATH}")
|
||||
|
||||
add_library(togl togl.c toglProcAddr.c toglStubInit.c)
|
||||
target_link_libraries(togl ${TCL_STUB_LIBRARY} ${TK_STUB_LIBRARY})
|
||||
endif(WIN32)
|
||||
|
||||
target_link_libraries(togl ${OPENGL_LIBRARIES})
|
||||
target_include_directories(togl PUBLIC ${OPENGL_INCLUDE_DIR})
|
||||
target_link_libraries(togl PUBLIC ${OPENGL_LIBRARY})
|
||||
set_target_properties(togl PROPERTIES POSITION_INDEPENDENT_CODE ON )
|
||||
install(TARGETS togl DESTINATION ${NG_INSTALL_DIR} COMPONENT netgen)
|
||||
|
@ -14,10 +14,6 @@ void NGCORE_API_IMPORT ExportSTLVis(py::module &m);
|
||||
#ifdef OCCGEOMETRY
|
||||
void NGCORE_API_IMPORT ExportNgOCC(py::module &m);
|
||||
#endif // OCCGEOMETRY
|
||||
namespace netgen
|
||||
{
|
||||
std::vector<unsigned char> NGCORE_API_IMPORT Snapshot( int w, int h );
|
||||
}
|
||||
|
||||
PYBIND11_MODULE(libngpy, ngpy)
|
||||
{
|
||||
@ -34,23 +30,4 @@ PYBIND11_MODULE(libngpy, ngpy)
|
||||
py::module NgOCC = ngpy.def_submodule("_NgOCC", "pybind NgOCC module");
|
||||
ExportNgOCC(NgOCC);
|
||||
#endif // OCCGEOMETRY
|
||||
#ifdef OPENGL
|
||||
py::module meshvis = ngpy.def_submodule("meshvis", "pybind meshvis module");
|
||||
ExportMeshVis(meshvis);
|
||||
py::module csgvis = ngpy.def_submodule("csgvis", "pybind csgvis module");
|
||||
ExportCSGVis(csgvis);
|
||||
py::module stlvis = ngpy.def_submodule("stlvis", "pybind stlvis module");
|
||||
ExportSTLVis(stlvis);
|
||||
ngpy.def("Snapshot", netgen::Snapshot);
|
||||
#endif // OPENGL
|
||||
}
|
||||
|
||||
// Force linking libnglib to libnetgenpy
|
||||
namespace netgen
|
||||
{
|
||||
void MyBeep (int i);
|
||||
void MyDummyToForceLinkingNGLib()
|
||||
{
|
||||
MyBeep(0);
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,7 @@ catch {lappend auto_path $env(NETGENDIR) }
|
||||
catch {lappend auto_path $env(NETGENDIR)/../lib }
|
||||
|
||||
if {[catch {Ng_GetCommandLineParameter batchmode} result ]} {
|
||||
load libgui[info sharedlibextension] gui
|
||||
load libnggui[info sharedlibextension] gui
|
||||
}
|
||||
|
||||
set batchmode [Ng_GetCommandLineParameter batchmode]
|
||||
|
23
ng/ngguipy.cpp
Normal file
23
ng/ngguipy.cpp
Normal file
@ -0,0 +1,23 @@
|
||||
#include <iostream>
|
||||
#include <../general/ngpython.hpp>
|
||||
#include <core/ngcore_api.hpp>
|
||||
|
||||
void NGCORE_API_IMPORT ExportMeshVis(py::module &m);
|
||||
void NGCORE_API_IMPORT ExportCSGVis(py::module &m);
|
||||
void NGCORE_API_IMPORT ExportSTLVis(py::module &m);
|
||||
namespace netgen
|
||||
{
|
||||
std::vector<unsigned char> NGCORE_API_IMPORT Snapshot( int w, int h );
|
||||
}
|
||||
|
||||
PYBIND11_MODULE(libngguipy, ngpy)
|
||||
{
|
||||
py::module::import("pyngcore");
|
||||
py::module meshvis = ngpy.def_submodule("meshvis", "pybind meshvis module");
|
||||
ExportMeshVis(meshvis);
|
||||
py::module csgvis = ngpy.def_submodule("csgvis", "pybind csgvis module");
|
||||
ExportCSGVis(csgvis);
|
||||
py::module stlvis = ngpy.def_submodule("stlvis", "pybind stlvis module");
|
||||
ExportSTLVis(stlvis);
|
||||
ngpy.def("Snapshot", netgen::Snapshot);
|
||||
}
|
33
ng/ngpkg.cpp
33
ng/ngpkg.cpp
@ -124,39 +124,6 @@ namespace netgen
|
||||
|
||||
|
||||
|
||||
#ifndef SMALLLIB
|
||||
// // Destination for messages, errors, ...
|
||||
#ifndef WIN32
|
||||
DLL_HEADER void Ng_PrintDest(const char * s)
|
||||
{
|
||||
/*
|
||||
#ifdef PARALLEL
|
||||
int id, ntasks;
|
||||
MPI_Comm_size(MPI_COMM_WORLD, &ntasks);
|
||||
MPI_Comm_rank(MPI_COMM_WORLD, &id);
|
||||
#else
|
||||
int id = 0; int ntasks = 1;
|
||||
#endif
|
||||
*/
|
||||
|
||||
if (id == 0)
|
||||
(*mycout) << s << flush;
|
||||
|
||||
/*
|
||||
if ( ntasks == 1 )
|
||||
(*mycout) << s << flush;
|
||||
else
|
||||
(*mycout) << "p" << id << ": " << s << flush ;
|
||||
*/
|
||||
}
|
||||
#endif
|
||||
void MyError2(const char * ch)
|
||||
{
|
||||
cout << ch;
|
||||
(*testout) << "Error !!! " << ch << endl << flush;
|
||||
}
|
||||
#endif
|
||||
|
||||
static clock_t starttimea;
|
||||
void ResetTime2 ()
|
||||
{
|
||||
|
@ -3,7 +3,7 @@ DLL_HEADER const char * ngscript[] = {""
|
||||
,"catch {lappend auto_path $env(NETGENDIR) }\n"
|
||||
,"catch {lappend auto_path $env(NETGENDIR)/../lib }\n"
|
||||
,"if {[catch {Ng_GetCommandLineParameter batchmode} result ]} {\n"
|
||||
,"load libgui[info sharedlibextension] gui\n"
|
||||
,"load libnggui[info sharedlibextension] gui\n"
|
||||
,"}\n"
|
||||
,"set batchmode [Ng_GetCommandLineParameter batchmode]\n"
|
||||
,"if {$batchmode==\"undefined\"} {\n"
|
||||
|
@ -1,47 +1,13 @@
|
||||
add_definitions(-DNGLIB_EXPORTS)
|
||||
target_sources(nglib PRIVATE nglib.cpp)
|
||||
|
||||
if(WIN32)
|
||||
set(nglib_objects
|
||||
$<TARGET_OBJECTS:mesh>
|
||||
$<TARGET_OBJECTS:stl>
|
||||
$<TARGET_OBJECTS:interface>
|
||||
$<TARGET_OBJECTS:geom2d>
|
||||
$<TARGET_OBJECTS:csg>
|
||||
if(USE_OCC)
|
||||
target_sources(nglib PRIVATE nglib_occ.cpp)
|
||||
install(FILES nglib_occ.h DESTINATION ${NG_INSTALL_DIR_INCLUDE} COMPONENT netgen_devel)
|
||||
endif(USE_OCC)
|
||||
|
||||
$<TARGET_OBJECTS:visual>
|
||||
)
|
||||
if(USE_GUI)
|
||||
set(nglib_objects ${nglib_objects}
|
||||
$<TARGET_OBJECTS:stlvis>
|
||||
$<TARGET_OBJECTS:geom2dvis>
|
||||
$<TARGET_OBJECTS:csgvis>
|
||||
)
|
||||
endif(USE_GUI)
|
||||
if(USE_OCC)
|
||||
set(nglib_objects ${nglib_objects} $<TARGET_OBJECTS:occ>)
|
||||
endif(USE_OCC)
|
||||
endif(WIN32)
|
||||
|
||||
add_library(nglib SHARED nglib.cpp ${nglib_objects})
|
||||
if(NOT WIN32)
|
||||
target_link_libraries( nglib PUBLIC mesh interface geom2d csg stl visual)
|
||||
if(USE_GUI)
|
||||
target_link_libraries( nglib PUBLIC stlvis geom2dvis csgvis )
|
||||
endif(USE_GUI)
|
||||
endif(NOT WIN32)
|
||||
|
||||
# target_link_libraries(nglib PRIVATE gen la gprim PUBLIC ngcore)
|
||||
target_link_libraries(nglib PUBLIC ngcore)
|
||||
|
||||
target_link_libraries( nglib PRIVATE ${MPI_CXX_LIBRARIES} ${OPENGL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${X11_Xmu_LIB} ${JPEG_LIBRARIES} ${MKL_LIBRARIES} ${ZLIB_LIBRARIES} ${OCC_LIBRARIES} netgen_cgns )
|
||||
target_link_libraries( nglib PRIVATE ${MPI_CXX_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${JPEG_LIBRARIES} ${MKL_LIBRARIES} ${ZLIB_LIBRARIES} ${OCC_LIBRARIES} netgen_cgns )
|
||||
|
||||
if(USE_OCC AND NOT WIN32)
|
||||
target_link_libraries(nglib PUBLIC occ)
|
||||
endif(USE_OCC AND NOT WIN32)
|
||||
|
||||
if(USE_PYTHON)
|
||||
target_link_libraries(nglib PRIVATE netgen_python)
|
||||
endif(USE_PYTHON)
|
||||
|
||||
install(TARGETS nglib ${NG_INSTALL_DIR})
|
||||
install(TARGETS nglib netgen_cgns ${NG_INSTALL_DIR})
|
||||
install(FILES nglib.h DESTINATION ${NG_INSTALL_DIR_INCLUDE} COMPONENT netgen_devel)
|
||||
|
212
nglib/nglib.cpp
212
nglib/nglib.cpp
@ -17,15 +17,7 @@
|
||||
#include <stlgeom.hpp>
|
||||
#include <geometry2d.hpp>
|
||||
#include <meshing.hpp>
|
||||
#include <../visualization/soldata.hpp>
|
||||
|
||||
#ifdef OCCGEOMETRY
|
||||
#include <occgeom.hpp>
|
||||
namespace netgen
|
||||
{
|
||||
DLL_HEADER extern OCCParameters occparam;
|
||||
} // namespace netgen
|
||||
#endif // OCCGEOMETRY
|
||||
#include <../meshing/soldata.hpp>
|
||||
|
||||
#include <nginterface.h>
|
||||
|
||||
@ -774,194 +766,6 @@ namespace nglib
|
||||
|
||||
|
||||
|
||||
#ifdef OCCGEOMETRY
|
||||
// --------------------- OCC Geometry / Meshing Utility Functions -------------------
|
||||
// Create new OCC Geometry Object
|
||||
NGLIB_API Ng_OCC_Geometry * Ng_OCC_NewGeometry ()
|
||||
{
|
||||
return (Ng_OCC_Geometry*)(void*)new OCCGeometry;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Delete the OCC Geometry Object
|
||||
NGLIB_API Ng_Result Ng_OCC_DeleteGeometry(Ng_OCC_Geometry * geom)
|
||||
{
|
||||
if (geom != NULL)
|
||||
{
|
||||
delete (OCCGeometry*)geom;
|
||||
geom = NULL;
|
||||
return NG_OK;
|
||||
}
|
||||
|
||||
return NG_ERROR;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Loads geometry from STEP File
|
||||
NGLIB_API Ng_OCC_Geometry * Ng_OCC_Load_STEP (const char * filename)
|
||||
{
|
||||
// Call the STEP File Load function. Note.. the geometry class
|
||||
// is created and instantiated within the load function
|
||||
OCCGeometry * occgeo = LoadOCC_STEP(filename);
|
||||
|
||||
return ((Ng_OCC_Geometry *)occgeo);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Loads geometry from IGES File
|
||||
NGLIB_API Ng_OCC_Geometry * Ng_OCC_Load_IGES (const char * filename)
|
||||
{
|
||||
// Call the IGES File Load function. Note.. the geometry class
|
||||
// is created and instantiated within the load function
|
||||
OCCGeometry * occgeo = LoadOCC_IGES(filename);
|
||||
|
||||
return ((Ng_OCC_Geometry *)occgeo);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Loads geometry from BREP File
|
||||
NGLIB_API Ng_OCC_Geometry * Ng_OCC_Load_BREP (const char * filename)
|
||||
{
|
||||
// Call the BREP File Load function. Note.. the geometry class
|
||||
// is created and instantiated within the load function
|
||||
OCCGeometry * occgeo = LoadOCC_BREP(filename);
|
||||
|
||||
return ((Ng_OCC_Geometry *)occgeo);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Locally limit the size of the mesh to be generated at various points
|
||||
// based on the topology of the geometry
|
||||
NGLIB_API Ng_Result Ng_OCC_SetLocalMeshSize (Ng_OCC_Geometry * geom,
|
||||
Ng_Mesh * mesh,
|
||||
Ng_Meshing_Parameters * mp)
|
||||
{
|
||||
OCCGeometry * occgeom = (OCCGeometry*)geom;
|
||||
Mesh * me = (Mesh*)mesh;
|
||||
me->SetGeometry( shared_ptr<NetgenGeometry>(occgeom, &NOOP_Deleter) );
|
||||
|
||||
me->geomtype = Mesh::GEOM_OCC;
|
||||
|
||||
mp->Transfer_Parameters();
|
||||
|
||||
if(mp->closeedgeenable)
|
||||
mparam.closeedgefac = mp->closeedgefact;
|
||||
|
||||
// Delete the mesh structures in order to start with a clean
|
||||
// slate
|
||||
me->DeleteMesh();
|
||||
|
||||
OCCSetLocalMeshSize(*occgeom, *me, mparam, occparam);
|
||||
|
||||
return(NG_OK);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Mesh the edges and add Face descriptors to prepare for surface meshing
|
||||
NGLIB_API Ng_Result Ng_OCC_GenerateEdgeMesh (Ng_OCC_Geometry * geom,
|
||||
Ng_Mesh * mesh,
|
||||
Ng_Meshing_Parameters * mp)
|
||||
{
|
||||
OCCGeometry * occgeom = (OCCGeometry*)geom;
|
||||
Mesh * me = (Mesh*)mesh;
|
||||
me->SetGeometry( shared_ptr<NetgenGeometry>(occgeom, &NOOP_Deleter) );
|
||||
|
||||
mp->Transfer_Parameters();
|
||||
|
||||
occgeom->FindEdges(*me, mparam);
|
||||
|
||||
if((me->GetNP()))
|
||||
{
|
||||
return NG_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
return NG_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Mesh the edges and add Face descriptors to prepare for surface meshing
|
||||
NGLIB_API Ng_Result Ng_OCC_GenerateSurfaceMesh (Ng_OCC_Geometry * geom,
|
||||
Ng_Mesh * mesh,
|
||||
Ng_Meshing_Parameters * mp)
|
||||
{
|
||||
int numpoints = 0;
|
||||
|
||||
OCCGeometry * occgeom = (OCCGeometry*)geom;
|
||||
Mesh * me = (Mesh*)mesh;
|
||||
me->SetGeometry( shared_ptr<NetgenGeometry>(occgeom, &NOOP_Deleter) );
|
||||
|
||||
// Set the internal meshing parameters structure from the nglib meshing
|
||||
// parameters structure
|
||||
mp->Transfer_Parameters();
|
||||
|
||||
numpoints = me->GetNP();
|
||||
|
||||
// Initially set up only for surface meshing without any optimisation
|
||||
int perfstepsend = MESHCONST_MESHSURFACE;
|
||||
|
||||
// Check and if required, enable surface mesh optimisation step
|
||||
if(mp->optsurfmeshenable)
|
||||
{
|
||||
perfstepsend = MESHCONST_OPTSURFACE;
|
||||
}
|
||||
|
||||
occgeom->MeshSurface(*me, mparam);
|
||||
occgeom->OptimizeSurface(*me, mparam);
|
||||
|
||||
me->CalcSurfacesOfNode();
|
||||
|
||||
if(me->GetNP() <= numpoints)
|
||||
return NG_ERROR;
|
||||
|
||||
if(me->GetNSE() <= 0)
|
||||
return NG_ERROR;
|
||||
|
||||
return NG_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Extract the face map from the OCC geometry
|
||||
// The face map basically gives an index to each face in the geometry,
|
||||
// which can be used to access a specific face
|
||||
NGLIB_API Ng_Result Ng_OCC_GetFMap(Ng_OCC_Geometry * geom,
|
||||
Ng_OCC_TopTools_IndexedMapOfShape * FMap)
|
||||
{
|
||||
OCCGeometry* occgeom = (OCCGeometry*)geom;
|
||||
TopTools_IndexedMapOfShape *occfmap = (TopTools_IndexedMapOfShape *)FMap;
|
||||
|
||||
// Copy the face map from the geometry to the given variable
|
||||
occfmap->Assign(occgeom->fmap);
|
||||
|
||||
if(occfmap->Extent())
|
||||
{
|
||||
return NG_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
return NG_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------ End - OCC Geometry / Meshing Utility Functions ----------------
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@ -1119,13 +923,6 @@ namespace nglib
|
||||
|
||||
|
||||
|
||||
#ifdef OCCGEOMETRY
|
||||
NGLIB_API void Ng_OCC_Generate_SecondOrder (Ng_OCC_Geometry * geom,
|
||||
Ng_Mesh * mesh)
|
||||
{
|
||||
((OCCGeometry*)geom )->GetRefinement().MakeSecondOrder(*(Mesh*) mesh);
|
||||
}
|
||||
#endif
|
||||
// ------------------ End - Second Order Mesh generation functions ------------------
|
||||
|
||||
|
||||
@ -1168,13 +965,6 @@ namespace nglib
|
||||
|
||||
|
||||
|
||||
#ifdef OCCGEOMETRY
|
||||
NGLIB_API void Ng_OCC_Uniform_Refinement (Ng_OCC_Geometry * geom,
|
||||
Ng_Mesh * mesh)
|
||||
{
|
||||
( (OCCGeometry*)geom ) -> GetRefinement().Refine ( * (Mesh*) mesh );
|
||||
}
|
||||
#endif
|
||||
// ------------------ End - Uniform Mesh Refinement functions -----------------------
|
||||
} // End of namespace nglib
|
||||
|
||||
|
@ -7,6 +7,8 @@
|
||||
/* Date: 7. May. 2000 */
|
||||
/**************************************************************************/
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
/*!
|
||||
\file nglib.h
|
||||
\brief Library interface to the netgen meshing kernel
|
||||
@ -23,9 +25,8 @@
|
||||
|
||||
// Philippose - 14.02.2009
|
||||
// Modifications for creating a DLL in Windows
|
||||
#ifndef NGLIB_API
|
||||
#ifdef WIN32
|
||||
#ifdef NGLIB_EXPORTS || nglib_EXPORTS
|
||||
#ifdef nglib_EXPORTS
|
||||
#define NGLIB_API __declspec(dllexport)
|
||||
#else
|
||||
#define NGLIB_API __declspec(dllimport)
|
||||
@ -33,7 +34,6 @@
|
||||
#else
|
||||
#define NGLIB_API __attribute__((visibility("default")))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
// ** Constants used within Netgen *********************
|
||||
@ -58,11 +58,6 @@ typedef void * Ng_Geometry_2D;
|
||||
/// Data type for NETGEN STL geometry
|
||||
typedef void * Ng_STL_Geometry;
|
||||
|
||||
#ifdef OCCGEOMETRY
|
||||
/// Data type for NETGEN OpenCascade geometry
|
||||
typedef void * Ng_OCC_Geometry;
|
||||
typedef void * Ng_OCC_TopTools_IndexedMapOfShape;
|
||||
#endif
|
||||
|
||||
|
||||
// *** Special Enum types used within Netgen ***********
|
||||
@ -650,47 +645,6 @@ NGLIB_API Ng_Result Ng_ACIS_GenerateSurfaceMesh (Ng_ACIS_Geometry * geom,
|
||||
|
||||
|
||||
|
||||
#ifdef OCCGEOMETRY
|
||||
|
||||
// **********************************************************
|
||||
// ** OpenCascade Geometry / Meshing Utilities **
|
||||
// **********************************************************
|
||||
|
||||
// Create new OCC Geometry Object
|
||||
NGLIB_API Ng_OCC_Geometry * Ng_OCC_NewGeometry ();
|
||||
|
||||
// Delete an OCC Geometry Object
|
||||
NGLIB_API Ng_Result Ng_OCC_DeleteGeometry (Ng_OCC_Geometry * geom);
|
||||
|
||||
// Loads geometry from STEP file
|
||||
NGLIB_API Ng_OCC_Geometry * Ng_OCC_Load_STEP (const char * filename);
|
||||
|
||||
// Loads geometry from IGES file
|
||||
NGLIB_API Ng_OCC_Geometry * Ng_OCC_Load_IGES (const char * filename);
|
||||
|
||||
// Loads geometry from BREP file
|
||||
NGLIB_API Ng_OCC_Geometry * Ng_OCC_Load_BREP (const char * filename);
|
||||
|
||||
// Set the local mesh size based on geometry / topology
|
||||
NGLIB_API Ng_Result Ng_OCC_SetLocalMeshSize (Ng_OCC_Geometry * geom,
|
||||
Ng_Mesh * mesh,
|
||||
Ng_Meshing_Parameters * mp);
|
||||
|
||||
// Mesh the edges and add Face descriptors to prepare for surface meshing
|
||||
NGLIB_API Ng_Result Ng_OCC_GenerateEdgeMesh (Ng_OCC_Geometry * geom,
|
||||
Ng_Mesh * mesh,
|
||||
Ng_Meshing_Parameters * mp);
|
||||
|
||||
// Mesh the surfaces of an OCC geometry
|
||||
NGLIB_API Ng_Result Ng_OCC_GenerateSurfaceMesh (Ng_OCC_Geometry * geom,
|
||||
Ng_Mesh * mesh,
|
||||
Ng_Meshing_Parameters * mp);
|
||||
|
||||
// Get the face map of an already loaded OCC geometry
|
||||
NGLIB_API Ng_Result Ng_OCC_GetFMap(Ng_OCC_Geometry * geom,
|
||||
Ng_OCC_TopTools_IndexedMapOfShape * FMap);
|
||||
|
||||
#endif // OCCGEOMETRY
|
||||
|
||||
|
||||
|
||||
@ -713,10 +667,6 @@ NGLIB_API void Ng_STL_Uniform_Refinement (Ng_STL_Geometry * geom,
|
||||
NGLIB_API void Ng_CSG_Uniform_Refinement (Ng_CSG_Geometry * geom,
|
||||
Ng_Mesh * mesh);
|
||||
|
||||
#ifdef OCCGEOMETRY
|
||||
NGLIB_API void Ng_OCC_Uniform_Refinement (Ng_OCC_Geometry * geom,
|
||||
Ng_Mesh * mesh);
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@ -739,10 +689,9 @@ NGLIB_API void Ng_STL_Generate_SecondOrder (Ng_STL_Geometry * geom,
|
||||
NGLIB_API void Ng_CSG_Generate_SecondOrder (Ng_CSG_Geometry * geom,
|
||||
Ng_Mesh * mesh);
|
||||
|
||||
|
||||
#ifdef OCCGEOMETRY
|
||||
NGLIB_API void Ng_OCC_Generate_SecondOrder (Ng_OCC_Geometry * geom,
|
||||
Ng_Mesh * mesh);
|
||||
#endif
|
||||
|
||||
|
||||
#include "nglib_occ.h"
|
||||
#endif // OCCGEOMETRY
|
||||
//
|
||||
#endif // NGLIB
|
||||
|
212
nglib/nglib_occ.cpp
Normal file
212
nglib/nglib_occ.cpp
Normal file
@ -0,0 +1,212 @@
|
||||
#include <mystdlib.h>
|
||||
#include <myadt.hpp>
|
||||
#include <occgeom.hpp>
|
||||
|
||||
#define OCCGEOMETRY 1
|
||||
namespace nglib {
|
||||
#include "nglib.h"
|
||||
}
|
||||
|
||||
|
||||
namespace netgen
|
||||
{
|
||||
inline void NOOP_Deleter(void *) { ; }
|
||||
extern MeshingParameters mparam;
|
||||
DLL_HEADER extern OCCParameters occparam;
|
||||
} // namespace netgen
|
||||
|
||||
using namespace netgen;
|
||||
|
||||
namespace nglib
|
||||
{
|
||||
|
||||
// --------------------- OCC Geometry / Meshing Utility Functions -------------------
|
||||
// Create new OCC Geometry Object
|
||||
NGLIB_API Ng_OCC_Geometry * Ng_OCC_NewGeometry ()
|
||||
{
|
||||
return (Ng_OCC_Geometry*)(void*)new OCCGeometry;
|
||||
}
|
||||
|
||||
|
||||
// Delete the OCC Geometry Object
|
||||
NGLIB_API Ng_Result Ng_OCC_DeleteGeometry(Ng_OCC_Geometry * geom)
|
||||
{
|
||||
if (geom != NULL)
|
||||
{
|
||||
delete (OCCGeometry*)geom;
|
||||
geom = NULL;
|
||||
return NG_OK;
|
||||
}
|
||||
|
||||
return NG_ERROR;
|
||||
}
|
||||
|
||||
|
||||
// Loads geometry from STEP File
|
||||
NGLIB_API Ng_OCC_Geometry * Ng_OCC_Load_STEP (const char * filename)
|
||||
{
|
||||
// Call the STEP File Load function. Note.. the geometry class
|
||||
// is created and instantiated within the load function
|
||||
OCCGeometry * occgeo = LoadOCC_STEP(filename);
|
||||
|
||||
return ((Ng_OCC_Geometry *)occgeo);
|
||||
}
|
||||
|
||||
|
||||
// Loads geometry from IGES File
|
||||
NGLIB_API Ng_OCC_Geometry * Ng_OCC_Load_IGES (const char * filename)
|
||||
{
|
||||
// Call the IGES File Load function. Note.. the geometry class
|
||||
// is created and instantiated within the load function
|
||||
OCCGeometry * occgeo = LoadOCC_IGES(filename);
|
||||
|
||||
return ((Ng_OCC_Geometry *)occgeo);
|
||||
}
|
||||
|
||||
|
||||
// Loads geometry from BREP File
|
||||
NGLIB_API Ng_OCC_Geometry * Ng_OCC_Load_BREP (const char * filename)
|
||||
{
|
||||
// Call the BREP File Load function. Note.. the geometry class
|
||||
// is created and instantiated within the load function
|
||||
OCCGeometry * occgeo = LoadOCC_BREP(filename);
|
||||
|
||||
return ((Ng_OCC_Geometry *)occgeo);
|
||||
}
|
||||
|
||||
|
||||
// Locally limit the size of the mesh to be generated at various points
|
||||
// based on the topology of the geometry
|
||||
NGLIB_API Ng_Result Ng_OCC_SetLocalMeshSize (Ng_OCC_Geometry * geom,
|
||||
Ng_Mesh * mesh,
|
||||
Ng_Meshing_Parameters * mp)
|
||||
{
|
||||
OCCGeometry * occgeom = (OCCGeometry*)geom;
|
||||
Mesh * me = (Mesh*)mesh;
|
||||
me->SetGeometry( shared_ptr<NetgenGeometry>(occgeom, &NOOP_Deleter) );
|
||||
|
||||
me->geomtype = Mesh::GEOM_OCC;
|
||||
|
||||
mp->Transfer_Parameters();
|
||||
|
||||
if(mp->closeedgeenable)
|
||||
mparam.closeedgefac = mp->closeedgefact;
|
||||
|
||||
// Delete the mesh structures in order to start with a clean
|
||||
// slate
|
||||
me->DeleteMesh();
|
||||
|
||||
OCCSetLocalMeshSize(*occgeom, *me, mparam, occparam);
|
||||
|
||||
return(NG_OK);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Mesh the edges and add Face descriptors to prepare for surface meshing
|
||||
NGLIB_API Ng_Result Ng_OCC_GenerateEdgeMesh (Ng_OCC_Geometry * geom,
|
||||
Ng_Mesh * mesh,
|
||||
Ng_Meshing_Parameters * mp)
|
||||
{
|
||||
OCCGeometry * occgeom = (OCCGeometry*)geom;
|
||||
Mesh * me = (Mesh*)mesh;
|
||||
me->SetGeometry( shared_ptr<NetgenGeometry>(occgeom, &NOOP_Deleter) );
|
||||
|
||||
mp->Transfer_Parameters();
|
||||
|
||||
occgeom->FindEdges(*me, mparam);
|
||||
|
||||
if((me->GetNP()))
|
||||
{
|
||||
return NG_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
return NG_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Mesh the edges and add Face descriptors to prepare for surface meshing
|
||||
NGLIB_API Ng_Result Ng_OCC_GenerateSurfaceMesh (Ng_OCC_Geometry * geom,
|
||||
Ng_Mesh * mesh,
|
||||
Ng_Meshing_Parameters * mp)
|
||||
{
|
||||
int numpoints = 0;
|
||||
|
||||
OCCGeometry * occgeom = (OCCGeometry*)geom;
|
||||
Mesh * me = (Mesh*)mesh;
|
||||
me->SetGeometry( shared_ptr<NetgenGeometry>(occgeom, &NOOP_Deleter) );
|
||||
|
||||
// Set the internal meshing parameters structure from the nglib meshing
|
||||
// parameters structure
|
||||
mp->Transfer_Parameters();
|
||||
|
||||
numpoints = me->GetNP();
|
||||
|
||||
// Initially set up only for surface meshing without any optimisation
|
||||
int perfstepsend = MESHCONST_MESHSURFACE;
|
||||
|
||||
// Check and if required, enable surface mesh optimisation step
|
||||
if(mp->optsurfmeshenable)
|
||||
{
|
||||
perfstepsend = MESHCONST_OPTSURFACE;
|
||||
}
|
||||
|
||||
occgeom->MeshSurface(*me, mparam);
|
||||
occgeom->OptimizeSurface(*me, mparam);
|
||||
|
||||
me->CalcSurfacesOfNode();
|
||||
|
||||
if(me->GetNP() <= numpoints)
|
||||
return NG_ERROR;
|
||||
|
||||
if(me->GetNSE() <= 0)
|
||||
return NG_ERROR;
|
||||
|
||||
return NG_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Extract the face map from the OCC geometry
|
||||
// The face map basically gives an index to each face in the geometry,
|
||||
// which can be used to access a specific face
|
||||
NGLIB_API Ng_Result Ng_OCC_GetFMap(Ng_OCC_Geometry * geom,
|
||||
Ng_OCC_TopTools_IndexedMapOfShape * FMap)
|
||||
{
|
||||
OCCGeometry* occgeom = (OCCGeometry*)geom;
|
||||
TopTools_IndexedMapOfShape *occfmap = (TopTools_IndexedMapOfShape *)FMap;
|
||||
|
||||
// Copy the face map from the geometry to the given variable
|
||||
occfmap->Assign(occgeom->fmap);
|
||||
|
||||
if(occfmap->Extent())
|
||||
{
|
||||
return NG_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
return NG_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------ End - OCC Geometry / Meshing Utility Functions ----------------
|
||||
|
||||
NGLIB_API void Ng_OCC_Generate_SecondOrder (Ng_OCC_Geometry * geom,
|
||||
Ng_Mesh * mesh)
|
||||
{
|
||||
((OCCGeometry*)geom )->GetRefinement().MakeSecondOrder(*(Mesh*) mesh);
|
||||
}
|
||||
|
||||
NGLIB_API void Ng_OCC_Uniform_Refinement (Ng_OCC_Geometry * geom,
|
||||
Ng_Mesh * mesh)
|
||||
{
|
||||
( (OCCGeometry*)geom ) -> GetRefinement().Refine ( * (Mesh*) mesh );
|
||||
}
|
||||
|
||||
} // namespace nglib
|
50
nglib/nglib_occ.h
Normal file
50
nglib/nglib_occ.h
Normal file
@ -0,0 +1,50 @@
|
||||
#ifndef NGLIB_OCC_HPP_INCLUDED
|
||||
#define NGLIB_OCC_HPP_INCLUDED
|
||||
|
||||
/// Data type for NETGEN OpenCascade geometry
|
||||
typedef void * Ng_OCC_Geometry;
|
||||
typedef void * Ng_OCC_TopTools_IndexedMapOfShape;
|
||||
|
||||
// **********************************************************
|
||||
// ** OpenCascade Geometry / Meshing Utilities **
|
||||
// **********************************************************
|
||||
|
||||
// Create new OCC Geometry Object
|
||||
NGLIB_API Ng_OCC_Geometry * Ng_OCC_NewGeometry ();
|
||||
|
||||
// Delete an OCC Geometry Object
|
||||
NGLIB_API Ng_Result Ng_OCC_DeleteGeometry (Ng_OCC_Geometry * geom);
|
||||
|
||||
// Loads geometry from STEP file
|
||||
NGLIB_API Ng_OCC_Geometry * Ng_OCC_Load_STEP (const char * filename);
|
||||
|
||||
// Loads geometry from IGES file
|
||||
NGLIB_API Ng_OCC_Geometry * Ng_OCC_Load_IGES (const char * filename);
|
||||
|
||||
// Loads geometry from BREP file
|
||||
NGLIB_API Ng_OCC_Geometry * Ng_OCC_Load_BREP (const char * filename);
|
||||
|
||||
// Set the local mesh size based on geometry / topology
|
||||
NGLIB_API Ng_Result Ng_OCC_SetLocalMeshSize (Ng_OCC_Geometry * geom,
|
||||
Ng_Mesh * mesh,
|
||||
Ng_Meshing_Parameters * mp);
|
||||
|
||||
// Mesh the edges and add Face descriptors to prepare for surface meshing
|
||||
NGLIB_API Ng_Result Ng_OCC_GenerateEdgeMesh (Ng_OCC_Geometry * geom,
|
||||
Ng_Mesh * mesh,
|
||||
Ng_Meshing_Parameters * mp);
|
||||
|
||||
// Mesh the surfaces of an OCC geometry
|
||||
NGLIB_API Ng_Result Ng_OCC_GenerateSurfaceMesh (Ng_OCC_Geometry * geom,
|
||||
Ng_Mesh * mesh,
|
||||
Ng_Meshing_Parameters * mp);
|
||||
|
||||
// Get the face map of an already loaded OCC geometry
|
||||
NGLIB_API Ng_Result Ng_OCC_GetFMap(Ng_OCC_Geometry * geom,
|
||||
Ng_OCC_TopTools_IndexedMapOfShape * FMap);
|
||||
|
||||
NGLIB_API void Ng_OCC_Uniform_Refinement (Ng_OCC_Geometry * geom,
|
||||
Ng_Mesh * mesh);
|
||||
NGLIB_API void Ng_OCC_Generate_SecondOrder (Ng_OCC_Geometry * geom,
|
||||
Ng_Mesh * mesh);
|
||||
#endif // NGLIB_OCC_HPP_INCLUDED
|
@ -17,12 +17,13 @@ del os
|
||||
from . import libngpy
|
||||
|
||||
if config.USE_GUI:
|
||||
from . import libngguipy
|
||||
global _Redraw, Redraw
|
||||
_Redraw = libngpy.meshvis._Redraw
|
||||
_Redraw = libngguipy.meshvis._Redraw
|
||||
|
||||
def RedrawWithEventHandling(*args, **kwargs):
|
||||
try:
|
||||
if libngpy.meshvis._Redraw(*args, **kwargs):
|
||||
if libngguipy.meshvis._Redraw(*args, **kwargs):
|
||||
import netgen
|
||||
import tkinter
|
||||
cnt = 0
|
||||
|
29
rules/CMakeLists.txt
Normal file
29
rules/CMakeLists.txt
Normal file
@ -0,0 +1,29 @@
|
||||
# this file is included from the parent directory (otherwise generated source files are not recognized properly by cmake)
|
||||
|
||||
# generate .cpp files containing the string of the .rls meshing rule files
|
||||
add_executable(makerls rules/makerlsfile.cpp)
|
||||
|
||||
set(rules
|
||||
hexrules
|
||||
prismrules2
|
||||
pyramidrules
|
||||
pyramidrules2
|
||||
quadrules
|
||||
tetrules
|
||||
triarules
|
||||
)
|
||||
|
||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/rules/)
|
||||
|
||||
foreach(rule ${rules})
|
||||
list(APPEND rules_sources ${CMAKE_CURRENT_BINARY_DIR}/rules/rule_${rule}.cpp)
|
||||
set(rule_file ${CMAKE_CURRENT_SOURCE_DIR}/rules/${rule}.rls)
|
||||
set(rule_cpp ${CMAKE_CURRENT_BINARY_DIR}/rules/rule_${rule}.cpp)
|
||||
|
||||
add_custom_command(OUTPUT ${rule_cpp}
|
||||
COMMAND makerls ${rule_file} ${rule_cpp} ${rule}
|
||||
DEPENDS makerls ${rule_file}
|
||||
)
|
||||
endforeach()
|
||||
|
||||
target_sources(nglib PRIVATE ${rules_sources})
|
@ -2,6 +2,7 @@ import pytest
|
||||
import netgen.meshing
|
||||
|
||||
mpi4py = pytest.importorskip("mpi4py")
|
||||
_ = pytest.importorskip("pytest_mpi")
|
||||
|
||||
@pytest.mark.mpi
|
||||
def test_mpi4py():
|
||||
|
Loading…
Reference in New Issue
Block a user