Salome HOME
Merge multi-study removal branch. Before_python3_27062017
authorrnv <rnv@opencascade.com>
Thu, 8 Jun 2017 15:40:59 +0000 (18:40 +0300)
committerrnv <rnv@opencascade.com>
Thu, 8 Jun 2017 15:41:14 +0000 (18:41 +0300)
19 files changed:
CMakeLists.txt
doc/salome/gui/NETGENPLUGIN/input/additional_hypo.doc
doc/salome/gui/NETGENPLUGIN/static/footer.html
resources/NETGENPlugin.xml
src/GUI/NETGENPlugin_msg_ja.ts
src/NETGEN/netgen53ForSalome.patch
src/NETGEN/netgen53ForWindows.patch [new file with mode: 0644]
src/NETGENPlugin/NETGENPlugin_Hypothesis_2D_ONLY_i.cxx
src/NETGENPlugin/NETGENPlugin_Hypothesis_3D_i.cxx
src/NETGENPlugin/NETGENPlugin_Mesher.cxx
src/NETGENPlugin/NETGENPlugin_Mesher.hxx
src/NETGENPlugin/NETGENPlugin_NETGEN_2D3D.cxx
src/NETGENPlugin/NETGENPlugin_NETGEN_2D3D.hxx
src/NETGENPlugin/NETGENPlugin_NETGEN_2D3D_i.cxx
src/NETGENPlugin/NETGENPlugin_NETGEN_2D_ONLY.cxx
src/NETGENPlugin/NETGENPlugin_NETGEN_2D_ONLY_i.cxx
src/NETGENPlugin/NETGENPlugin_NETGEN_3D.cxx
src/NETGENPlugin/NETGENPlugin_SimpleHypothesis_2D_i.cxx
src/NETGENPlugin/NETGENPlugin_SimpleHypothesis_3D_i.cxx

index 8b99a798c8271c3d06d310b7cb73493698dcd4dd..abe7aa868c3de2c618b3d24569583f4149955658 100755 (executable)
@@ -31,7 +31,7 @@ ENDIF(WIN32)
 STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC)
 
 SET(${PROJECT_NAME_UC}_MAJOR_VERSION 8)
-SET(${PROJECT_NAME_UC}_MINOR_VERSION 1)
+SET(${PROJECT_NAME_UC}_MINOR_VERSION 3)
 SET(${PROJECT_NAME_UC}_PATCH_VERSION 0)
 SET(${PROJECT_NAME_UC}_VERSION
   ${${PROJECT_NAME_UC}_MAJOR_VERSION}.${${PROJECT_NAME_UC}_MINOR_VERSION}.${${PROJECT_NAME_UC}_PATCH_VERSION})
index 7e4523c56aef828ed5ae13c6d6cecfc97841becb..c439a3463e6329344457072460b0bb1d3e263c82 100644 (file)
@@ -8,7 +8,8 @@ introducing additional concepts to mesh creation.
 Following additional hypotheses can be used together with NETGEN algoritm:
 <ul>
 
-<li><b>Viscous Layers</b> additional hypothesis can be used together with NETGEN 3D.
+<li><b>Viscous Layers</b> additional hypothesis can be used together
+  with NETGEN 3D and NETGEN 1D-2D-3D algorithms.
 This hypothesis allows creation of layers of highly stretched prisms near
 mesh boundary, which is beneficial for high quality viscous
 computations. The prisms constructed on the quadrangular mesh faces are
index 91afd6cc8ab252063767ab204030ae63dd6ee52b..7cf11feba01a088027958a2e4c7639c64f7adb19 100755 (executable)
@@ -4,7 +4,7 @@
   <ul>
     $navpath
     <li class="footer">
-      Copyright &copy; 2007-2016  CEA/DEN, EDF R&amp;D, OPEN CASCADE<br>
+      Copyright &copy; 2007-2017  CEA/DEN, EDF R&amp;D, OPEN CASCADE<br>
       Copyright &copy; 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&amp;D, LEG, PRINCIPIA R&amp;D, BUREAU VERITAS<br>
     </li>
   </ul>
index 9e0c77e24ed572b2bde3bf0de122db753f4ace0d..d7d7651a429ee3e7241829e2a547297e7ae66a9e 100644 (file)
                group-id         ="1"
                priority         ="10"
                hypos            ="NETGEN_Parameters, NETGEN_SimpleParameters_3D"
+               opt-hypos        ="ViscousLayers"
                output           ="TETRA,PYRAMID"
                dim              ="3"
                support-submeshes="true">
         <algo>NETGEN_2D3D=Tetrahedron(algo=smeshBuilder.NETGEN_1D2D3D)</algo>
         <hypo>NETGEN_Parameters=Parameters()</hypo>
         <hypo>NETGEN_SimpleParameters_3D=Parameters(smeshBuilder.SIMPLE)</hypo>
+        <hypo>ViscousLayers=ViscousLayers(SetTotalThickness(),SetNumberLayers(),SetStretchFactor(),SetFaces(1),SetFaces(2),SetMethod())</hypo>
       </python-wrap>
     </algorithm>
 
index 73b3c29600801515acbb2f5bdfee1d83fecd16ad..606b2241b126c0121b9e1cf8f24fe0a524549e8c 100644 (file)
@@ -5,7 +5,7 @@
     <name>@default</name>
     <message>
       <source>NETGEN_2D_HYPOTHESIS</source>
-      <translation>NETGEN 2D</translation>
+      <translation>Netgen 2D</translation>
     </message>
     <message>
       <source>NETGEN_2D_TITLE</source>
@@ -13,7 +13,7 @@
     </message>
     <message>
       <source>NETGEN_3D_HYPOTHESIS</source>
-      <translation>NETGEN 3D</translation>
+      <translation>Netgen 3D</translation>
     </message>
     <message>
       <source>NETGEN_3D_TITLE</source>
@@ -21,7 +21,7 @@
     </message>
     <message>
       <source>NETGEN_SimpleParameters_3D_HYPOTHESIS</source>
-      <translation>NETGEN 3D 簡易パラメーター</translation>
+      <translation>Netgen 3D 簡易パラメーター</translation>
     </message>
     <message>
       <source>NETGEN_SimpleParameters_3D_TITLE</source>
@@ -29,7 +29,7 @@
     </message>
     <message>
       <source>NETGEN_SimpleParameters_2D_HYPOTHESIS</source>
-      <translation>NETGEN 2D 簡易パラメーター</translation>
+      <translation>Netgen 2D 簡易パラメーター</translation>
     </message>
     <message>
       <source>NETGEN_SimpleParameters_2D_TITLE</source>
       <source>LSZ_LOCALSIZE_COLUMN</source>
       <translation>値</translation>
     </message>
+    <message>
+      <source>NETGEN_LSZ_FILE</source>
+      <translation>メッシュサイズファイル</translation>
+    </message>
   </context>
 </TS>
index 7db28303be4d4aeb35e391180fffaac6edb44abf..ccd4e8c93a10df652300e72a1eec875fafb0b4bc 100644 (file)
@@ -1,3 +1,15 @@
+diff -NaurwB netgen-5.3.1_orig/Makefile.am netgen-5.3.1_new/Makefile.am
+--- netgen-5.3.1_orig/Makefile.am      2016-10-21 17:32:01.000000000 +0300
++++ netgen-5.3.1_new/Makefile.am       2016-10-21 17:31:54.000000000 +0300
+@@ -2,7 +2,7 @@
+ METASOURCES = AUTO
+-SUBDIRS = libsrc ng tutorials doc windows nglib
++SUBDIRS = libsrc nglib #tutorials doc windows nglib
+ # TESTS = ng/netgen -batchmode
 diff -NaurwB netgen-5.3.1_orig/Makefile.in netgen-5.3.1_new/Makefile.in
 --- netgen-5.3.1_orig/Makefile.in      2014-10-06 15:04:37.000000000 +0400
 +++ netgen-5.3.1_new/Makefile.in       2016-10-03 16:17:10.164707368 +0300
@@ -13,15 +25,26 @@ diff -NaurwB netgen-5.3.1_orig/Makefile.in netgen-5.3.1_new/Makefile.in
 diff -NaurwB netgen-5.3.1_orig/configure.ac netgen-5.3.1_new/configure.ac
 --- netgen-5.3.1_orig/configure.ac     2014-10-06 15:00:17.000000000 +0400
 +++ netgen-5.3.1_new/configure.ac      2016-09-29 14:34:11.957389447 +0300
-@@ -42,7 +42,7 @@
+@@ -20,7 +20,7 @@
+ CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"
+ # LDFLAGS="$LDFLAGS $OPENMP_CXXFLAGS"
+-AM_PROG_AR
++m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
+ AC_PROG_LIBTOOL
+ LT_INIT
+@@ -42,8 +42,8 @@
  
  if test a$occon = atrue ; then
  
 -      AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/inc -I/usr/include/opencascade"])
+-      AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF -lFWOSPlugin"])
 +      AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/include/opencascade"])
-       AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF -lFWOSPlugin"])
++      AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF"])
  
  #  -lTKDCAF
 diff -NaurwB netgen-5.3.1_orig/libsrc/meshing/findip.hpp netgen-5.3.1_new/libsrc/meshing/findip.hpp
 --- netgen-5.3.1_orig/libsrc/meshing/findip.hpp        2014-08-29 13:54:05.000000000 +0400
 +++ netgen-5.3.1_new/libsrc/meshing/findip.hpp 2016-09-30 20:38:56.662234111 +0300
@@ -1289,3 +1312,144 @@ diff -NaurwB netgen-5.3.1_orig/nglib/nglib.h netgen-5.3.1_new/nglib/nglib.h
        #define DLL_HEADER   __declspec(dllexport)\r
     #else\r
        #define DLL_HEADER   __declspec(dllimport)\r
+diff -Naur netgen-5.3.1_orig/libsrc/csg/Makefile.am netgen-5.3.1_new/libsrc/csg/Makefile.am
+--- netgen-5.3.1_orig/libsrc/csg/Makefile.am   2014-08-29 13:54:06.000000000 +0400
++++ netgen-5.3.1_new/libsrc/csg/Makefile.am    2016-11-08 17:48:02.000000000 +0300
+@@ -8,7 +8,7 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include  $(TCL_INCLUDES)
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libcsg.la
++noinst_LTLIBRARIES = libcsg.la
+ libcsg_la_SOURCES = algprim.cpp brick.cpp   \
+@@ -17,12 +17,9 @@
+ manifold.cpp meshsurf.cpp polyhedra.cpp revolution.cpp singularref.cpp \
+ solid.cpp specpoin.cpp spline3d.cpp surface.cpp triapprox.cpp
+-libcsg_la_LIBADD =  $(top_builddir)/libsrc/meshing/libmesh.la
+-
+-
+ if NGGUI
+-lib_LTLIBRARIES += libcsgvis.la 
++lib_LTLIBRARIES = libcsgvis.la 
+ libcsgvis_la_SOURCES = vscsg.cpp csgpkg.cpp
+ libcsgvis_la_LIBADD = libcsg.la
+diff -Naur netgen-5.3.1_orig/libsrc/geom2d/Makefile.am netgen-5.3.1_new/libsrc/geom2d/Makefile.am
+--- netgen-5.3.1_orig/libsrc/geom2d/Makefile.am        2014-08-29 13:54:06.000000000 +0400
++++ netgen-5.3.1_new/libsrc/geom2d/Makefile.am 2016-11-08 17:49:13.000000000 +0300
+@@ -4,16 +4,15 @@
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libgeom2d.la 
++noinst_LTLIBRARIES = libgeom2d.la 
+ if NGGUI
+-lib_LTLIBRARIES += libgeom2dvis.la 
++lib_LTLIBRARIES = libgeom2dvis.la 
+ endif
+ libgeom2d_la_SOURCES = genmesh2d.cpp geom2dmesh.cpp geometry2d.cpp
+-libgeom2d_la_LIBADD =         $(top_builddir)/libsrc/meshing/libmesh.la
+ libgeom2dvis_la_SOURCES = geom2dpkg.cpp vsgeom2d.cpp
+ libgeom2dvis_la_LIBADD = libgeom2d.la
+diff -Naur netgen-5.3.1_orig/libsrc/interface/Makefile.am netgen-5.3.1_new/libsrc/interface/Makefile.am
+--- netgen-5.3.1_orig/libsrc/interface/Makefile.am     2014-08-29 13:54:02.000000000 +0400
++++ netgen-5.3.1_new/libsrc/interface/Makefile.am      2016-11-08 17:49:26.000000000 +0300
+@@ -2,14 +2,11 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include -I$(top_srcdir)/libsrc/interface  $(MPI_INCLUDES) $(TCL_INCLUDES) -DOPENGL
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libinterface.la
++noinst_LTLIBRARIES = libinterface.la
+ libinterface_la_SOURCES = 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 
+-
+-libinterface_la_LIBADD = $(top_builddir)/libsrc/meshing/libmesh.la
+-
+ # libinterface_la_LDFLAGS = -rdynamic
+diff -Naur netgen-5.3.1_orig/libsrc/meshing/Makefile.am netgen-5.3.1_new/libsrc/meshing/Makefile.am
+--- netgen-5.3.1_orig/libsrc/meshing/Makefile.am       2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/meshing/Makefile.am        2016-11-08 17:48:44.000000000 +0300
+@@ -15,7 +15,7 @@
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libmesh.la
++noinst_LTLIBRARIES = libmesh.la
+ libmesh_la_SOURCES = adfront2.cpp adfront3.cpp bisect.cpp boundarylayer.cpp \
+       clusters.cpp curvedelems.cpp delaunay.cpp delaunay2d.cpp            \
+@@ -30,8 +30,5 @@
+       topology.cpp triarls.cpp validate.cpp zrefine.cpp bcfunctions.cpp   \
+       parallelmesh.cpp  paralleltop.cpp  paralleltop.hpp basegeom.cpp 
+-libmesh_la_LIBADD =  $(top_builddir)/libsrc/linalg/libla.la \
+-      $(top_builddir)/libsrc/gprim/libgprim.la \
+-      $(top_builddir)/libsrc/general/libgen.la \
+-      -lz
++libmesh_la_LIBADD = -lz
+diff -Naur netgen-5.3.1_orig/libsrc/occ/Makefile.am netgen-5.3.1_new/libsrc/occ/Makefile.am
+--- netgen-5.3.1_orig/libsrc/occ/Makefile.am   2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Makefile.am    2016-11-08 17:30:53.000000000 +0300
+@@ -14,10 +14,10 @@
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libocc.la
++noinst_LTLIBRARIES = libocc.la
+ if NGGUI
+-lib_LTLIBRARIES += liboccvis.la 
++lib_LTLIBRARIES = liboccvis.la 
+ endif
+diff -Naur netgen-5.3.1_orig/libsrc/stlgeom/Makefile.am netgen-5.3.1_new/libsrc/stlgeom/Makefile.am
+--- netgen-5.3.1_orig/libsrc/stlgeom/Makefile.am       2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/stlgeom/Makefile.am        2016-11-08 18:28:09.000000000 +0300
+@@ -4,10 +4,10 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include $(TCL_INCLUDES)
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libstl.la 
++noinst_LTLIBRARIES = libstl.la 
+ if NGGUI
+-lib_LTLIBRARIES += libstlvis.la 
++lib_LTLIBRARIES = libstlvis.la 
+ endif
+ libstl_la_SOURCES = meshstlsurface.cpp stlgeom.cpp stlgeomchart.cpp \
+@@ -16,6 +16,5 @@
+ libstlvis_la_SOURCES = stlpkg.cpp vsstl.cpp
+ libstlvis_la_LIBADD = libstl.la
+-libstl_la_LIBADD =  $(top_builddir)/libsrc/meshing/libmesh.la
+ # libstlvis_la_LIBADD = libstl.la $(top_builddir)/libsrc/linalg/libla.la 
+diff -Naur netgen-5.3.1_orig/nglib/Makefile.am netgen-5.3.1_new/nglib/Makefile.am
+--- netgen-5.3.1_orig/nglib/Makefile.am        2014-08-29 13:54:00.000000000 +0400
++++ netgen-5.3.1_new/nglib/Makefile.am 2016-11-08 19:01:17.000000000 +0300
+@@ -14,6 +14,9 @@
+       $(top_builddir)/libsrc/stlgeom/libstl.la \
+       $(top_builddir)/libsrc/occ/libocc.la \
+       $(top_builddir)/libsrc/meshing/libmesh.la \
++      $(top_builddir)/libsrc/general/libgen.la \
++      $(top_builddir)/libsrc/gprim/libgprim.la \
++      $(top_builddir)/libsrc/linalg/libla.la
+       $(OCCLIBS) $(MPI_LIBS)
+ libnglib_la_LDFLAGS = -avoid-version
diff --git a/src/NETGEN/netgen53ForWindows.patch b/src/NETGEN/netgen53ForWindows.patch
new file mode 100644 (file)
index 0000000..2ad9da4
--- /dev/null
@@ -0,0 +1,1155 @@
+diff -Naur netgen-5.3.1_SRC_orig/CMakeLists.txt netgen-5.3.1_SRC_modif/CMakeLists.txt
+--- netgen-5.3.1_SRC_orig/CMakeLists.txt       1970-01-01 03:00:00.000000000 +0300
++++ netgen-5.3.1_SRC_modif/CMakeLists.txt      2016-11-25 11:04:22.150776900 +0300
+@@ -0,0 +1,75 @@
++# Copyright (C) 2016 OPEN CASCADE
++#
++# This library is free software; you can redistribute it and/or
++# modify it under the terms of the GNU Lesser General Public
++# License as published by the Free Software Foundation; either
++# version 2.1 of the License, or (at your option) any later version.
++#
++# This library is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++# Lesser General Public License for more details.
++#
++# You should have received a copy of the GNU Lesser General Public
++# License along with this library; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
++#
++# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
++#
++CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8 FATAL_ERROR)
++INCLUDE(CMakeDependentOption)
++
++PROJECT(netgen C CXX)
++
++# Ensure a proper linker behavior:
++CMAKE_POLICY(SET CMP0003 NEW)
++
++# Versioning
++# ===========
++# Project name, upper case
++STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC)
++
++SET(${PROJECT_NAME_UC}_MAJOR_VERSION 5)
++SET(${PROJECT_NAME_UC}_MINOR_VERSION 3)
++SET(${PROJECT_NAME_UC}_PATCH_VERSION 1)
++SET(${PROJECT_NAME_UC}_VERSION
++  ${${PROJECT_NAME_UC}_MAJOR_VERSION}.${${PROJECT_NAME_UC}_MINOR_VERSION}.${${PROJECT_NAME_UC}_PATCH_VERSION})
++
++# Common CMake macros
++# ===================
++LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
++# Detect platform
++INCLUDE(FindPLATFORM) 
++# Detect OCCT
++INCLUDE(FindCAS)
++
++# Detect ZLIB on Windows
++IF(WIN32)
++  SET(ZLIB_ROOT_DIR $ENV{ZLIB_ROOT_DIR})
++  IF(EXISTS ${ZLIB_ROOT_DIR})
++    SET(ZLIB_ROOT ${ZLIB_ROOT_DIR})
++    INCLUDE(FindZLIB)
++    IF (NOT ${ZLIB_FOUND})
++      MESSAGE(FATAL_ERROR "We absolutely need the zlib library, please check zlib installation !")
++    ENDIF()
++  ELSE()
++    MESSAGE(FATAL_ERROR "We absolutely need the zlib library, please define ZLIB_ROOT_DIR !")
++  ENDIF()
++ENDIF()
++
++
++# Common definitions
++# ==================
++ADD_DEFINITIONS(-DNO_PARALLEL_THREADS)
++ADD_DEFINITIONS(-DOCCGEOMETRY)
++
++# Target directories
++SET(NETGEN_INSTALL_BINS "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Install path: netgen binaries")
++SET(NETGEN_INSTALL_LIBS "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Install path: netgen libs")
++SET(NETGEN_INSTALL_HEADERS "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Install path: netgen headers")
++SET(NETGEN_INSTALL_CMAKE "${CMAKE_INSTALL_PREFIX}/cmake" CACHE PATH "Install path: netgen cmake files")
++
++# Sub-directories
++ADD_SUBDIRECTORY(nglib)
++ADD_SUBDIRECTORY(cmake)
++
+diff -Naur netgen-5.3.1_SRC_orig/cmake/CMakeLists.txt netgen-5.3.1_SRC_modif/cmake/CMakeLists.txt
+--- netgen-5.3.1_SRC_orig/cmake/CMakeLists.txt 1970-01-01 03:00:00.000000000 +0300
++++ netgen-5.3.1_SRC_modif/cmake/CMakeLists.txt        2016-11-25 11:06:44.049656800 +0300
+@@ -0,0 +1,22 @@
++# Copyright (C) 2016 OPEN CASCADE
++#
++# This library is free software; you can redistribute it and/or
++# modify it under the terms of the GNU Lesser General Public
++# License as published by the Free Software Foundation; either
++# version 2.1 of the License, or (at your option) any later version.
++#
++# This library is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++# Lesser General Public License for more details.
++#
++# You should have received a copy of the GNU Lesser General Public
++# License along with this library; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
++#
++# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
++#
++
++IF(WIN32)
++ INSTALL(FILES FindZLIB.cmake DESTINATION ${NETGEN_INSTALL_CMAKE})
++ENDIF()
+\ В конце файла нет новой строки
+diff -Naur netgen-5.3.1_SRC_orig/cmake/FindCAS.cmake netgen-5.3.1_SRC_modif/cmake/FindCAS.cmake
+--- netgen-5.3.1_SRC_orig/cmake/FindCAS.cmake  1970-01-01 03:00:00.000000000 +0300
++++ netgen-5.3.1_SRC_modif/cmake/FindCAS.cmake 2016-11-23 16:14:01.050542400 +0300
+@@ -0,0 +1,152 @@
++#  Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
++#
++#  This library is free software; you can redistribute it and/or
++#  modify it under the terms of the GNU Lesser General Public
++#  License as published by the Free Software Foundation; either
++#  version 2.1 of the License.
++#
++#  This library is distributed in the hope that it will be useful,
++#  but WITHOUT ANY WARRANTY; without even the implied warranty of
++#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++#  Lesser General Public License for more details.
++#
++#  You should have received a copy of the GNU Lesser General Public
++#  License along with this library; if not, write to the Free Software
++#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
++#
++#  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
++#
++
++SET(CASROOT $ENV{CASROOT})
++ADD_DEFINITIONS(-DLIN -DLINTEL -DCSFDB)
++ADD_DEFINITIONS(-DNo_exception)
++ADD_DEFINITIONS(-DHAVE_LIMITS_H)
++
++IF(CMAKE_SIZEOF_VOID_P STREQUAL 8)
++  ADD_DEFINITIONS(-D_OCC64)
++ENDIF(CMAKE_SIZEOF_VOID_P STREQUAL 8)
++
++IF(NOT WINDOWS)
++  FIND_LIBRARY(Xmu Xmu)
++  IF(Xmu)
++    SET(CAS_LDPATH ${Xmu})
++  ENDIF(Xmu)
++ENDIF(NOT WINDOWS)
++
++IF(WINDOWS)
++  IF(CMAKE_BUILD_TYPE STREQUAL Debug)
++    SET(CASROOT_LIBDIR ${CASROOT}/win32/libd ${CASROOT}/win64/vc10/lib)
++  ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
++    SET(CASROOT_LIBDIR ${CASROOT}/win32/lib ${CASROOT}/win64/vc10/lib)
++  ENDIF(CMAKE_BUILD_TYPE STREQUAL Debug)
++ELSE(WINDOWS)
++  SET(CASROOT_LIBDIR ${CASROOT}/lib)
++ENDIF(WINDOWS)
++
++SET(_CAS_VERSION_FILE_NAME Standard_Version.hxx)
++
++# Include directories:
++FIND_PATH(CAS_INCLUDE_DIRS ${_CAS_VERSION_FILE_NAME} PATHS ${CASROOT} PATH_SUFFIXES include/opencascade)
++IF(CAS_INCLUDE_DIRS)
++ELSE()
++  FIND_PATH(CAS_INCLUDE_DIRS ${_CAS_VERSION_FILE_NAME} PATHS ${CASROOT} PATH_SUFFIXES include inc)
++ENDIF()
++
++
++FIND_LIBRARY(BinLPlugin BinLPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(BinPlugin BinPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(BinTObjPlugin BinTObjPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(BinXCAFPlugin BinXCAFPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(FWOSPlugin FWOSPlugin PATHS ${CASROOT_LIBDIR})
++
++FIND_LIBRARY(PTKernel PTKernel PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(StdLPlugin StdLPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(StdPlugin StdPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKAdvTools TKAdvTools PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBin TKBin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBinL TKBinL PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBinTObj TKBinTObj PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBinXCAF TKBinXCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBO TKBO PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBool TKBool PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBRep TKBRep PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKCAF TKCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKCDF TKCDF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKernel TKernel PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKFeat TKFeat PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKFillet TKFillet PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKG2d TKG2d PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKG3d TKG3d PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKGeomAlgo TKGeomAlgo PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKGeomBase TKGeomBase PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKHLR TKHLR PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKIGES TKIGES PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKLCAF TKLCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKMath TKMath PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKMesh TKMesh PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKMeshVS TKMeshVS PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKNIS TKNIS PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKOffset TKOffset PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKOpenGl TKOpenGl PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKPCAF TKPCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKPLCAF TKPLCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKPrim TKPrim PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKPShape TKPShape PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKService TKService PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKShapeSchema TKShapeSchema PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKShHealing TKShHealing PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKStdLSchema TKStdLSchema PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKStdSchema TKStdSchema PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKSTEP TKSTEP PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKSTEP209 TKSTEP209 PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKSTEPAttr TKSTEPAttr PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKSTEPBase TKSTEPBase PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKSTL TKSTL PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKTObj TKTObj PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKTopAlgo TKTopAlgo PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKV2d TKV2d PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKV3d TKV3d PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKVRML TKVRML PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXCAF TKXCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXCAFSchema TKXCAFSchema PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXDEIGES TKXDEIGES PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXDESTEP TKXDESTEP PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXMesh TKXMesh PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXml TKXml PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXmlL TKXmlL PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXmlTObj TKXmlTObj PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXmlXCAF TKXmlXCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXSBase TKXSBase PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(XCAFPlugin XCAFPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(XmlLPlugin XmlLPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(XmlPlugin XmlPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(XmlTObjPlugin XmlTObjPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(XmlXCAFPlugin XmlXCAFPlugin PATHS ${CASROOT_LIBDIR})
++
++SET(CAS_KERNEL ${TKernel} ${TKMath})
++SET(CAS_OCAF ${TKernel} ${TKMath} ${TKCDF} ${TKLCAF})
++SET(CAS_VIEWER ${TKService} ${TKV3d} ${TKG3d} ${TKGeomBase} ${TKBRep})
++SET(CAS_OCAFVIS ${TKCAF} ${TKBRep} ${TKG2d})
++SET(CAS_MODELER ${TKG3d} ${TKGeomBase} ${TKGeomAlgo} ${TKBRep} ${TKTopAlgo} ${TKG2d})
++
++SET(TKV3d_EA ${TKernel} ${TKMath} ${TKV3d})
++SET(TKBool_EA ${TKernel} ${TKMath} ${TKBRep} ${TKG2d} ${TKG3d} ${TKGeomBase} ${TKGeomAlgo} ${TKTopAlgo} ${TKBool})
++SET(TKBRep_EA ${TKernel} ${TKMath} ${TKBRep})
++SET(TKIGES_EA ${TKernel} ${TKMath} ${TKXSBase} ${TKBRep} ${TKIGES})
++SET(TKSTEP_EA ${TKernel} ${TKMath} ${TKXSBase} ${TKBRep} ${TKSTEP})
++SET(TKSTL_EA ${TKernel} ${TKMath} ${TKSTL})
++SET(TKCAF_EA ${TKPrim} ${TKCAF})
++
++SET(TKV3d ${TKV3d_EA})
++SET(TKBool ${TKBool_EA})
++SET(TKBRep ${TKBRep_EA})
++SET(TKIGES ${TKIGES_EA})
++SET(TKSTEP ${TKSTEP_EA})
++SET(TKSTL ${TKSTL_EA})
++SET(TKCAF ${TKCAF_EA})
++
++#LIBRARIES
++SET(OCCLIBS ${CAS_LDPATH})
++SET(OCCLIBS ${OCCLIBS} ${TKernel} ${TKGeomBase} ${TKMath} ${TKG2d} ${TKG3d} ${TKXSBase} ${TKOffset} ${TKFillet} ${TKShHealing})
++SET(OCCLIBS ${OCCLIBS} ${TKMesh} ${TKMeshVS} ${TKTopAlgo} ${TKGeomAlgo} ${TKBool} ${TKPrim} ${TKBO} ${TKIGES} ${TKBRep})
++SET(OCCLIBS ${OCCLIBS} ${TKSTEPBase} ${TKSTEP} ${TKSTL} ${TKSTEPAttr} ${TKSTEP209} ${TKXDESTEP} ${TKXDEIGES} ${TKXCAF} ${TKLCAF})
+\ В конце файла нет новой строки
+diff -Naur netgen-5.3.1_SRC_orig/cmake/FindPLATFORM.cmake netgen-5.3.1_SRC_modif/cmake/FindPLATFORM.cmake
+--- netgen-5.3.1_SRC_orig/cmake/FindPLATFORM.cmake     1970-01-01 03:00:00.000000000 +0300
++++ netgen-5.3.1_SRC_modif/cmake/FindPLATFORM.cmake    2016-11-22 19:05:57.195348500 +0300
+@@ -0,0 +1,96 @@
++#  Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
++#
++#  This library is free software; you can redistribute it and/or
++#  modify it under the terms of the GNU Lesser General Public
++#  License as published by the Free Software Foundation; either
++#  version 2.1 of the License.
++#
++#  This library is distributed in the hope that it will be useful,
++#  but WITHOUT ANY WARRANTY; without even the implied warranty of
++#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++#  Lesser General Public License for more details.
++#
++#  You should have received a copy of the GNU Lesser General Public
++#  License along with this library; if not, write to the Free Software
++#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
++#
++#  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
++#
++
++MARK_AS_ADVANCED(ISSUE)
++FIND_FILE(ISSUE issue /etc)
++IF(ISSUE)
++  SET(WINDOWS 0)
++ELSE()
++  SET(WINDOWS 1)
++ENDIF(ISSUE)
++
++IF(WINDOWS)
++  SET(MACHINE WINDOWS)
++ELSE(WINDOWS)
++  SET(MACHINE PCLINUX)
++ENDIF(WINDOWS)
++
++SET(CMAKE_INSTALL_PREFIX_ENV $ENV{CMAKE_INSTALL_PREFIX})
++IF(CMAKE_INSTALL_PREFIX_ENV)
++  SET(CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX_ENV} CACHE PATH "installation prefix" FORCE)
++ENDIF(CMAKE_INSTALL_PREFIX_ENV)
++
++IF(NOT CMAKE_BUILD_TYPE)
++  SET(CMAKE_BUILD_TYPE $ENV{CMAKE_BUILD_TYPE})
++ENDIF(NOT CMAKE_BUILD_TYPE)
++
++IF(NOT CMAKE_BUILD_TYPE)
++  SET(CMAKE_BUILD_TYPE Release)
++ENDIF(NOT CMAKE_BUILD_TYPE)
++
++IF(WINDOWS)
++ELSE(WINDOWS)
++  SET(ADD_WERROR ON)
++  SET(NAMES ACCEPT_SALOME_WARNINGS ACCEPT_${MODULE}_WARNINGS I_AM_A_TROLL_I_DO_NOT_FIX_${MODULE}_WARNINGS)
++  FOREACH(name ${NAMES})
++    SET(VAL $ENV{${name}})
++    IF(X${VAL} STREQUAL X0)
++      SET(ADD_WERROR ON)
++    ENDIF(X${VAL} STREQUAL X0)
++    IF(X${VAL} STREQUAL X1)
++      SET(ADD_WERROR OFF)
++    ENDIF(X${VAL} STREQUAL X1)
++  ENDFOREACH(name ${NAMES})
++  IF(ADD_WERROR)
++    SET(CMAKE_C_FLAGS "-Werror")
++    SET(CMAKE_CXX_FLAGS "-Werror")
++  ENDIF(ADD_WERROR)
++ENDIF(WINDOWS)
++
++IF(CMAKE_BUILD_TYPE)
++  IF(WINDOWS)
++    MARK_AS_ADVANCED(CLEAR CMAKE_CONFIGURATION_TYPES)
++    SET(CMAKE_CONFIGURATION_TYPES ${CMAKE_BUILD_TYPE} CACHE STRING "compilation types" FORCE)
++  ELSE(WINDOWS)
++    IF(CMAKE_BUILD_TYPE STREQUAL Debug)
++      SET(CMAKE_C_FLAGS_DEBUG "-g")
++      SET(CMAKE_CXX_FLAGS_DEBUG "-g")
++    ENDIF(CMAKE_BUILD_TYPE STREQUAL Debug)
++    IF(CMAKE_BUILD_TYPE STREQUAL Release)
++      SET(CMAKE_C_FLAGS_RELEASE "-O1 -DNDEBUG")
++      SET(CMAKE_CXX_FLAGS_RELEASE "-O1 -DNDEBUG")
++    ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
++  ENDIF(WINDOWS)
++ENDIF(CMAKE_BUILD_TYPE)
++
++SET(PLATFORM_CPPFLAGS)
++SET(PLATFORM_LDFLAGS)
++SET(PLATFORM_LIBADD)
++IF(WINDOWS)
++  ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)  # To disable windows warnings for strcpy, fopen, ...
++  ADD_DEFINITIONS(-D_SCL_SECURE_NO_WARNINGS)  # To disable windows warnings std::copy, std::transform, ...
++  ADD_DEFINITIONS(-DWNT)
++  ADD_DEFINITIONS(-DPPRO_NT) # For medfile
++  ADD_DEFINITIONS(-D_USE_MATH_DEFINES) # At least for MEDMEM
++  ADD_DEFINITIONS(-D_WIN32_WINNT=0x0500) # Windows 2000 or later API is required
++  SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} Ws2_32.lib)
++  SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} Userenv.lib) # At least for GEOM suit
++ELSE(WINDOWS)
++  SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} -ldl)
++ENDIF(WINDOWS) 
+\ В конце файла нет новой строки
+diff -Naur netgen-5.3.1_SRC_orig/cmake/FindZLIB.cmake netgen-5.3.1_SRC_modif/cmake/FindZLIB.cmake
+--- netgen-5.3.1_SRC_orig/cmake/FindZLIB.cmake 1970-01-01 03:00:00.000000000 +0300
++++ netgen-5.3.1_SRC_modif/cmake/FindZLIB.cmake        2016-11-25 10:50:13.990626900 +0300
+@@ -0,0 +1,45 @@
++#  Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
++#
++#  This library is free software; you can redistribute it and/or
++#  modify it under the terms of the GNU Lesser General Public
++#  License as published by the Free Software Foundation; either
++#  version 2.1 of the License.
++#
++#  This library is distributed in the hope that it will be useful,
++#  but WITHOUT ANY WARRANTY; without even the implied warranty of
++#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++#  Lesser General Public License for more details.
++#
++#  You should have received a copy of the GNU Lesser General Public
++#  License along with this library; if not, write to the Free Software
++#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
++#
++#  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
++#
++
++SET(_ZLIB_SDIRS)
++
++# Search in ZLIB_ROOT_DIR first
++IF(ZLIB_ROOT_DIR)
++  SET(_ZLIB_SEARCH_ROOT PATHS ${ZLIB_ROOT_DIR} NO_DEFAULT_PATH)
++  list(APPEND _ZLIB_SDIRS _ZLIB_SEARCH_ROOT)
++ENDIF()
++
++SET(ZLIB_NAMES z zlib zdll zlib1 zlibd zlibd1 zlib1d)
++
++# Try each search configuration.
++FOREACH(search ${_ZLIB_SDIRS})
++  FIND_PATH(ZLIB_INCLUDE_DIR NAMES zlib.h        ${${search}} PATH_SUFFIXES include)
++  FIND_LIBRARY(ZLIB_LIBRARY  NAMES ${ZLIB_NAMES} ${search} PATH_SUFFIXES lib)
++ENDFOREACH()
++
++MARK_AS_ADVANCED(ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
++
++
++INCLUDE(FindPackageHandleStandardArgs)
++FIND_PACKAGE_HANDLE_STANDARD_ARGS(ZLIB REQUIRED_VARS ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
++
++IF(ZLIB_FOUND)
++    SET(ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR})
++    SET(ZLIB_LIBRARIES ${ZLIB_LIBRARY})
++ENDIF()
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/csg/specpoin.hpp netgen-5.3.1_SRC_modif/libsrc/csg/specpoin.hpp
+--- netgen-5.3.1_SRC_orig/libsrc/csg/specpoin.hpp      2014-08-29 12:54:06.000000000 +0300
++++ netgen-5.3.1_SRC_modif/libsrc/csg/specpoin.hpp     2016-11-25 16:14:55.370008500 +0300
+@@ -8,10 +8,12 @@
+ /* Date:   01. Okt. 95                                                    */
+ /**************************************************************************/
++#include <myadt.hpp>
++
+ namespace netgen
+ {
+-  extern DLL_HEADER MeshingParameters mparam;
++  DLL_HEADER extern MeshingParameters mparam;
+   /*
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/general/template.hpp netgen-5.3.1_SRC_modif/libsrc/general/template.hpp
+--- netgen-5.3.1_SRC_orig/libsrc/general/template.hpp  2014-08-29 12:54:06.000000000 +0300
++++ netgen-5.3.1_SRC_modif/libsrc/general/template.hpp 2016-11-25 15:43:03.276818300 +0300
+@@ -26,10 +26,10 @@
+ DLL_HEADER extern ostream * testout;
+ /** use instead of cout */
+-extern ostream * mycout;
++DLL_HEADER extern ostream * mycout;
+ /** error output stream */
+-extern ostream * myerr;
++DLL_HEADER extern ostream * myerr;
+ /** Error messages display.
+   Error messages are displayed by this function */
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/include/mystdlib.h netgen-5.3.1_SRC_modif/libsrc/include/mystdlib.h
+--- netgen-5.3.1_SRC_orig/libsrc/include/mystdlib.h    2014-08-29 12:54:03.000000000 +0300
++++ netgen-5.3.1_SRC_modif/libsrc/include/mystdlib.h   2016-11-22 20:32:24.590261200 +0300
+@@ -66,6 +66,7 @@
+ #  ifdef MSVC_EXPRESS
+ #   include <pthread.h>
+ #  else
++    #define _AFXDLL
+ #   include <afxwin.h>
+ #   include <afxmt.h>
+ #  endif // MSVC_EXPRESS
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/interface/nginterface.cpp netgen-5.3.1_SRC_modif/libsrc/interface/nginterface.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/interface/nginterface.cpp     2014-08-29 12:54:02.000000000 +0300
++++ netgen-5.3.1_SRC_modif/libsrc/interface/nginterface.cpp    2016-11-23 14:28:40.204193800 +0300
+@@ -1,3 +1,16 @@
++#ifdef _MSC_VER
++#ifndef MSVC_EXPRESS
++
++#define _AFXDLL
++
++#include <Afxwin.h>
++#include <winsock2.h>
++#include <winsock.h>
++#include <windows.h>
++
++#endif
++#endif
++
+ #include <mystdlib.h>
+ #include <meshing.hpp>
+@@ -11,7 +24,6 @@
+ #include "nginterface.h"
+ #include "../visualization/soldata.hpp"
+-
+ #ifdef _MSC_VER
+ // Philippose - 30/01/2009
+ // MSVC Express Edition Support
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/meshing/global.hpp netgen-5.3.1_SRC_modif/libsrc/meshing/global.hpp
+--- netgen-5.3.1_SRC_orig/libsrc/meshing/global.hpp    2014-08-29 12:54:05.000000000 +0300
++++ netgen-5.3.1_SRC_modif/libsrc/meshing/global.hpp   2016-11-25 16:03:52.591737300 +0300
+@@ -8,6 +8,8 @@
+ /* Date:   01. Okt. 95                                                    */
+ /**************************************************************************/
++#include <myadt.hpp>
++
+ /*
+   global functions and variables
+ */
+@@ -29,7 +31,7 @@
+   extern Array<int> tets_in_qualclass;
+-  class multithreadt
++  class DLL_HEADER multithreadt
+   {
+   public:
+     int pause;
+@@ -44,7 +46,7 @@
+     multithreadt();
+   };
+-  extern volatile multithreadt multithread;
++  DLL_HEADER extern volatile multithreadt multithread;
+   DLL_HEADER extern string ngdir;
+   extern DebugParameters debugparam;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/meshing/meshclass.hpp netgen-5.3.1_SRC_modif/libsrc/meshing/meshclass.hpp
+--- netgen-5.3.1_SRC_orig/libsrc/meshing/meshclass.hpp 2014-08-29 12:54:05.000000000 +0300
++++ netgen-5.3.1_SRC_modif/libsrc/meshing/meshclass.hpp        2016-11-25 15:13:36.136123300 +0300
+@@ -311,7 +311,7 @@
+     { return lockedpoints; }
+     /// Returns number of domains
+-    int GetNDomains() const;
++    DLL_HEADER int GetNDomains() const;
+     ///
+     int GetDimension() const 
+@@ -320,7 +320,7 @@
+     { dimension = dim; }
+     /// sets internal tables
+-    void CalcSurfacesOfNode ();
++    void DLL_HEADER CalcSurfacesOfNode ();
+     /// additional (temporarily) fix points 
+     void FixPoints (const BitArray & fixpoints);
+@@ -390,13 +390,13 @@
+     ///
+     DLL_HEADER void SetGlobalH (double h);
+     ///
+-    void SetMinimalH (double h);
++    void DLL_HEADER SetMinimalH (double h);
+     ///
+     double MaxHDomain (int dom) const;
+     ///
+     void SetMaxHDomain (const Array<double> & mhd);
+     ///
+-    double GetH (const Point3d & p) const;
++    double DLL_HEADER GetH (const Point3d & p) const;
+     ///
+     double GetMinH (const Point3d & pmin, const Point3d & pmax);
+     ///
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/meshing/meshtype.hpp netgen-5.3.1_SRC_modif/libsrc/meshing/meshtype.hpp
+--- netgen-5.3.1_SRC_orig/libsrc/meshing/meshtype.hpp  2016-11-23 16:20:00.392157700 +0300
++++ netgen-5.3.1_SRC_modif/libsrc/meshing/meshtype.hpp 2016-11-25 15:34:15.767388200 +0300
+@@ -324,19 +324,19 @@
+   public:
+     ///
+-    Element2d ();
++    DLL_HEADER Element2d ();
+     ///
+-    Element2d (int anp);
++    DLL_HEADER Element2d (int anp);
+     ///
+     DLL_HEADER Element2d (ELEMENT_TYPE type);
+     ///
+-    Element2d (int pi1, int pi2, int pi3);
++    DLL_HEADER Element2d (int pi1, int pi2, int pi3);
+     ///
+-    Element2d (int pi1, int pi2, int pi3, int pi4);
++    DLL_HEADER Element2d (int pi1, int pi2, int pi3, int pi4);
+     ///
+-    ELEMENT_TYPE GetType () const { return typ; }
++    DLL_HEADER ELEMENT_TYPE GetType () const { return typ; }
+     /// 
+-    void SetType (ELEMENT_TYPE atyp)
++    DLL_HEADER  void SetType (ELEMENT_TYPE atyp)
+     {
+       typ = atyp;
+       switch (typ)
+@@ -351,9 +351,9 @@
+       }
+     }
+     ///
+-    int GetNP() const { return np; }
++    DLL_HEADER int GetNP() const { return np; }
+     ///
+-    int GetNV() const
++    DLL_HEADER int GetNV() const
+     {
+       if (typ == TRIG || typ == TRIG6)
+         return 3;
+@@ -385,95 +385,95 @@
+     }
+     ///
+-    PointIndex & operator[] (int i) { return pnum[i]; }
++    DLL_HEADER  PointIndex & operator[] (int i) { return pnum[i]; }
+     ///
+-    const PointIndex & operator[] (int i) const { return pnum[i]; }
++    DLL_HEADER const PointIndex & operator[] (int i) const { return pnum[i]; }
+-    FlatArray<const PointIndex> PNums () const 
++    DLL_HEADER  FlatArray<const PointIndex> PNums () const 
+     { return FlatArray<const PointIndex> (np, &pnum[0]); }
+     
+     ///
+-    PointIndex & PNum (int i) { return pnum[i-1]; }
++    DLL_HEADER PointIndex & PNum (int i) { return pnum[i-1]; }
+     ///
+-    const PointIndex & PNum (int i) const { return pnum[i-1]; }
++    DLL_HEADER const PointIndex & PNum (int i) const { return pnum[i-1]; }
+     ///
+-    PointIndex & PNumMod (int i) { return pnum[(i-1) % np]; }
++    DLL_HEADER PointIndex & PNumMod (int i) { return pnum[(i-1) % np]; }
+     ///
+-    const PointIndex & PNumMod (int i) const { return pnum[(i-1) % np]; }
++    DLL_HEADER const PointIndex & PNumMod (int i) const { return pnum[(i-1) % np]; }
+     ///
+     ///
+-    PointGeomInfo & GeomInfoPi (int i) { return geominfo[i-1]; }
++    DLL_HEADER PointGeomInfo & GeomInfoPi (int i) { return geominfo[i-1]; }
+     ///
+-    const PointGeomInfo & GeomInfoPi (int i) const { return geominfo[i-1]; }
++    DLL_HEADER const PointGeomInfo & GeomInfoPi (int i) const { return geominfo[i-1]; }
+     ///
+-    PointGeomInfo & GeomInfoPiMod (int i) { return geominfo[(i-1) % np]; }
++    DLL_HEADER PointGeomInfo & GeomInfoPiMod (int i) { return geominfo[(i-1) % np]; }
+     ///
+-    const PointGeomInfo & GeomInfoPiMod (int i) const { return geominfo[(i-1) % np]; }
++    DLL_HEADER const PointGeomInfo & GeomInfoPiMod (int i) const { return geominfo[(i-1) % np]; }
+-    void SetIndex (int si) { index = si; }
++    DLL_HEADER void SetIndex (int si) { index = si; }
+     ///
+-    int GetIndex () const { return index; }
++    DLL_HEADER int GetIndex () const { return index; }
+-    int GetOrder () const { return orderx; }
+-    void SetOrder (int aorder) { orderx = ordery = aorder; }
++    DLL_HEADER int GetOrder () const { return orderx; }
++    DLL_HEADER void SetOrder (int aorder) { orderx = ordery = aorder; }
+-    void GetOrder (int & ox, int & oy) const { ox = orderx, oy =ordery;};
+-    void GetOrder (int & ox, int & oy, int & oz) const { ox = orderx; oy = ordery; oz=0; }
+-    void SetOrder (int ox, int oy, int  /* oz */) { orderx = ox; ordery = oy;}
+-    void SetOrder (int ox, int oy) { orderx = ox; ordery = oy;}
++    DLL_HEADER void GetOrder (int & ox, int & oy) const { ox = orderx, oy =ordery;};
++    DLL_HEADER void GetOrder (int & ox, int & oy, int & oz) const { ox = orderx; oy = ordery; oz=0; }
++    DLL_HEADER void SetOrder (int ox, int oy, int  /* oz */) { orderx = ox; ordery = oy;}
++    DLL_HEADER void SetOrder (int ox, int oy) { orderx = ox; ordery = oy;}
+     ///
+-    void GetBox (const T_POINTS & points, Box3d & box) const;
++    DLL_HEADER void GetBox (const T_POINTS & points, Box3d & box) const;
+     /// invert orientation
+-    inline void Invert ();
++    DLL_HEADER inline void Invert ();
+     ///
+-    void Invert2 ();
++    DLL_HEADER void Invert2 ();
+     /// first point number is smallest
+-    inline void NormalizeNumbering ();
++    DLL_HEADER inline void NormalizeNumbering ();
+     ///
+-    void NormalizeNumbering2 ();
++    DLL_HEADER void NormalizeNumbering2 ();
+-    bool BadElement() const { return badel; }
++    DLL_HEADER bool BadElement() const { return badel; }
+     // friend ostream & operator<<(ostream  & s, const Element2d & el);
+     friend class Mesh;
+     /// get number of 'integration points'
+-    int GetNIP () const;
+-    void GetIntegrationPoint (int ip, Point2d & p, double & weight) const;
++    DLL_HEADER int GetNIP () const;
++    DLL_HEADER void GetIntegrationPoint (int ip, Point2d & p, double & weight) const;
+-    void GetTransformation (int ip, const Array<Point2d> & points,
++    DLL_HEADER void GetTransformation (int ip, const Array<Point2d> & points,
+                           class DenseMatrix & trans) const;
+-    void GetTransformation (int ip, class DenseMatrix & pmat,
++    DLL_HEADER void GetTransformation (int ip, class DenseMatrix & pmat,
+                           class DenseMatrix & trans) const;
+-    void GetShape (const Point2d & p, class Vector & shape) const;
+-    void GetShapeNew (const Point<2> & p, class FlatVector & shape) const;
++    DLL_HEADER void GetShape (const Point2d & p, class Vector & shape) const;
++    DLL_HEADER void GetShapeNew (const Point<2> & p, class FlatVector & shape) const;
+     /// matrix 2 * np
+-    void GetDShape (const Point2d & p, class DenseMatrix & dshape) const;
+-    void GetDShapeNew (const Point<2> & p, class MatrixFixWidth<2> & dshape) const;
++    DLL_HEADER void GetDShape (const Point2d & p, class DenseMatrix & dshape) const;
++    DLL_HEADER void GetDShapeNew (const Point<2> & p, class MatrixFixWidth<2> & dshape) const;
+     /// matrix 2 * np
+-    void GetPointMatrix (const Array<Point2d> & points,
++    DLL_HEADER void GetPointMatrix (const Array<Point2d> & points,
+                        class DenseMatrix & pmat) const; 
+-    void ComputeIntegrationPointData () const;
++    DLL_HEADER void ComputeIntegrationPointData () const;
+   
+-    double CalcJacobianBadness (const Array<Point2d> & points) const;
+-    double CalcJacobianBadness (const T_POINTS & points, 
++    DLL_HEADER double CalcJacobianBadness (const Array<Point2d> & points) const;
++    DLL_HEADER double CalcJacobianBadness (const T_POINTS & points, 
+                               const Vec<3> & n) const;
+-    double CalcJacobianBadnessDirDeriv (const Array<Point2d> & points,
++    DLL_HEADER double CalcJacobianBadnessDirDeriv (const Array<Point2d> & points,
+                                       int pi, Vec2d & dir, double & dd) const;
+-    void Delete () { deleted = 1; pnum[0] = pnum[1] = pnum[2] = pnum[3] = PointIndex::BASE-1; }
+-    bool IsDeleted () const 
++    DLL_HEADER void Delete () { deleted = 1; pnum[0] = pnum[1] = pnum[2] = pnum[3] = PointIndex::BASE-1; }
++    DLL_HEADER bool IsDeleted () const 
+     {
+ #ifdef DEBUG
+       if (pnum[0] < PointIndex::BASE && !deleted)
+@@ -484,27 +484,27 @@
+     // Philippose - 08 August 2010
+     // Access functions for the new property: visible
+-    void Visible(bool vis = 1) 
++    DLL_HEADER void Visible(bool vis = 1) 
+     { visible = vis; }
+-    bool IsVisible () const 
++    DLL_HEADER bool IsVisible () const 
+     { return visible; }
+    
+-    void SetRefinementFlag (bool rflag = 1) 
++    DLL_HEADER void SetRefinementFlag (bool rflag = 1) 
+     { refflag = rflag; }
+-    bool TestRefinementFlag () const
++    DLL_HEADER bool TestRefinementFlag () const
+     { return refflag; }
+-    void SetStrongRefinementFlag (bool rflag = 1) 
++    DLL_HEADER void SetStrongRefinementFlag (bool rflag = 1) 
+     { strongrefflag = rflag; }
+-    bool TestStrongRefinementFlag () const
++    DLL_HEADER bool TestStrongRefinementFlag () const
+     { return strongrefflag; }
+   
+-    SurfaceElementIndex NextElement() { return next; }
++    DLL_HEADER SurfaceElementIndex NextElement() { return next; }
+-    bool operator==(const Element2d & el2) const;
++    DLL_HEADER bool operator==(const Element2d & el2) const;
+-    int HasFace(const Element2d& el) const;
++    DLL_HEADER int HasFace(const Element2d& el) const;
+     ///
+     int meshdocval;
+     ///
+@@ -517,7 +517,7 @@
+   };
+-  ostream & operator<<(ostream  & s, const Element2d & el);
++  DLL_HEADER ostream & operator<<(ostream  & s, const Element2d & el);
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/occgenmesh.cpp netgen-5.3.1_SRC_modif/libsrc/occ/occgenmesh.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/occ/occgenmesh.cpp    2016-11-23 16:20:00.432158900 +0300
++++ netgen-5.3.1_SRC_modif/libsrc/occ/occgenmesh.cpp   2016-11-25 16:26:13.181305600 +0300
+@@ -18,7 +18,7 @@
+ #define VSMALL 1e-10
+-   bool merge_solids = 1;
++   DLL_HEADER bool merge_solids = 1;
+   // can you please explain what you intend to compute here (JS) !!!
+@@ -540,7 +540,7 @@
+                  
+                   Point<3> fp = occ2ng (BRep_Tool::Pnt (v1));
+                   Point<3> lp = occ2ng (BRep_Tool::Pnt (v2));
+-                  double tol2 = std::min( eps*eps, 1e-6 * Dist2( fp, lp ));
++                  double tol2 = min( eps*eps, 1e-6 * Dist2( fp, lp ));
+                   if ( isClosedEdge )
+                     tol2 = BRep_Tool::Tolerance( v1 ) * BRep_Tool::Tolerance( v1 );
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/occgeom.hpp netgen-5.3.1_SRC_modif/libsrc/occ/occgeom.hpp
+--- netgen-5.3.1_SRC_orig/libsrc/occ/occgeom.hpp       2016-11-23 16:20:00.442159200 +0300
++++ netgen-5.3.1_SRC_modif/libsrc/occ/occgeom.hpp      2016-11-25 15:59:20.505531400 +0300
+@@ -9,6 +9,8 @@
+ #ifdef OCCGEOMETRY
++#include <myadt.hpp>
++
+ #include <meshing.hpp>
+ #include "BRep_Tool.hxx"
+@@ -122,7 +124,7 @@
+ {
+ #include "occmeshsurf.hpp"
+-  extern DLL_HEADER MeshingParameters mparam;
++  DLL_HEADER extern MeshingParameters mparam;
+ #define PROJECTION_TOLERANCE 1e-10
+@@ -197,7 +199,7 @@
+-   class OCCGeometry : public NetgenGeometry
++   class DLL_HEADER OCCGeometry : public NetgenGeometry
+    {
+       Point<3> center;
+       // -- Optimization: to use cached projector and classifier
+@@ -413,7 +415,7 @@
+-   class OCCParameters
++   class DLL_HEADER OCCParameters
+    {
+    public:
+@@ -453,21 +455,21 @@
+    OCCGeometry * LoadOCC_STEP (const char * filename);
+    OCCGeometry * LoadOCC_BREP (const char * filename);
+-   extern OCCParameters occparam;
++   extern DLL_HEADER OCCParameters occparam;
+    // Philippose - 31.09.2009
+    // External access to the mesh generation functions within the OCC
+    // subsystem (Not sure if this is the best way to implement this....!!)
+-   extern int OCCGenerateMesh (OCCGeometry & occgeometry, Mesh*& mesh,
++   extern DLL_HEADER int OCCGenerateMesh (OCCGeometry & occgeometry, Mesh*& mesh,
+                              MeshingParameters & mparam,
+                              int perfstepsstart, int perfstepsend);
+-  extern void OCCSetLocalMeshSize(OCCGeometry & geom, Mesh & mesh);
++  extern DLL_HEADER void OCCSetLocalMeshSize(OCCGeometry & geom, Mesh & mesh);
+-   extern void OCCMeshSurface (OCCGeometry & geom, Mesh & mesh, int perfstepsend);
++   extern DLL_HEADER void OCCMeshSurface (OCCGeometry & geom, Mesh & mesh, int perfstepsend);
+-   extern void OCCFindEdges (OCCGeometry & geom, Mesh & mesh);
++   extern DLL_HEADER void OCCFindEdges (OCCGeometry & geom, Mesh & mesh);
+ }
+ #endif
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/occmeshsurf.hpp netgen-5.3.1_SRC_modif/libsrc/occ/occmeshsurf.hpp
+--- netgen-5.3.1_SRC_orig/libsrc/occ/occmeshsurf.hpp   2014-08-29 12:54:03.000000000 +0300
++++ netgen-5.3.1_SRC_modif/libsrc/occ/occmeshsurf.hpp  2016-11-25 12:46:27.828676600 +0300
+@@ -169,7 +169,7 @@
+ class OCCGeometry;
+-class OCCRefinementSurfaces : public Refinement
++class DLL_HEADER OCCRefinementSurfaces : public Refinement
+ {
+   const OCCGeometry & geometry;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/stlgeom/stlgeom.hpp netgen-5.3.1_SRC_modif/libsrc/stlgeom/stlgeom.hpp
+--- netgen-5.3.1_SRC_orig/libsrc/stlgeom/stlgeom.hpp   2014-08-29 12:54:05.000000000 +0300
++++ netgen-5.3.1_SRC_modif/libsrc/stlgeom/stlgeom.hpp  2016-11-25 16:22:27.290718800 +0300
+@@ -38,7 +38,7 @@
+     return true;
+   }
+   
+-  extern DLL_HEADER MeshingParameters mparam;
++  DLL_HEADER extern MeshingParameters mparam;
+   
+diff -Naur netgen-5.3.1_SRC_orig/nglib/CMakeLists.txt netgen-5.3.1_SRC_modif/nglib/CMakeLists.txt
+--- netgen-5.3.1_SRC_orig/nglib/CMakeLists.txt 1970-01-01 03:00:00.000000000 +0300
++++ netgen-5.3.1_SRC_modif/nglib/CMakeLists.txt        2016-11-23 16:28:18.630104800 +0300
+@@ -0,0 +1,252 @@
++# Copyright (C) 2016 OPEN CASCADE
++#
++# This library is free software; you can redistribute it and/or
++# modify it under the terms of the GNU Lesser General Public
++# License as published by the Free Software Foundation; either
++# version 2.1 of the License, or (at your option) any later version.
++#
++# This library is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++# Lesser General Public License for more details.
++#
++# You should have received a copy of the GNU Lesser General Public
++# License along with this library; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
++#
++# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
++#
++INCLUDE_DIRECTORIES(
++    ${CMAKE_CURRENT_SOURCE_DIR}
++    ${PROJECT_SOURCE_DIR}/libsrc/include
++    ${ZLIB_INCLUDE_DIRS}
++    ${CAS_INCLUDE_DIRS}
++)
++
++
++# CGS
++SET(CGS_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/algprim.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/brick.cpp
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/bspline2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/csgeom.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/csgparser.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/curve2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/edgeflw.cpp      
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/explicitcurve2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/extrusion.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/gencyl.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/genmesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/identify.cpp  
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/manifold.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/meshsurf.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/polyhedra.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/revolution.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/singularref.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/solid.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/specpoin.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/spline3d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/surface.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/triapprox.cpp)
++
++# GENERAL
++SET(GENERAL_SOURCES 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/array.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/bitarray.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/dynamicmem.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/flags.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/hashtabl.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/mystring.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/ngexception.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/optmem.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/parthreads.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/profiler.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/seti.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/sort.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/spbita2d.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/symbolta.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/table.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/mpi_interface.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/gzstream.cpp)
++
++FILE(GLOB GENERAL_INCLUDES "${PROJECT_SOURCE_DIR}/libsrc/general/*.hpp")
++LIST(APPEND GENERAL_INCLUDES ${PROJECT_SOURCE_DIR}/libsrc/general/gzstream.h)
++
++# GEOM2D
++SET (GEOM2D_SOURCES 
++     ${PROJECT_SOURCE_DIR}/libsrc/geom2d/genmesh2d.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/geom2d/geom2dmesh.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/geom2d/geometry2d.cpp)
++
++# GPRIM
++SET(GPRIM_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/adtree.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/geom2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/geom3d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/geomfuncs.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/geomtest3d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/transform3d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/spline.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/splinegeometry.cpp)
++
++FILE(GLOB GPRIM_INCLUDES "${PROJECT_SOURCE_DIR}/libsrc/gprim/*.hpp")
++
++# INCLUDE
++SET(INCLUDE_INCLUDES 
++    ${PROJECT_SOURCE_DIR}/libsrc/include/nginterface.h
++    ${PROJECT_SOURCE_DIR}/libsrc/include/nginterface_v2.hpp
++    ${PROJECT_SOURCE_DIR}/libsrc/include/mystdlib.h
++    ${PROJECT_SOURCE_DIR}/libsrc/include/mydefs.hpp)
++
++# INTERFACE
++SET(INTERFACE_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/nginterface.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/nginterface_v2.cpp
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/read_fnf_mesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/readtetmesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/readuser.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writeabaqus.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writediffpack.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writedolfin.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writeelmer.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writefeap.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writefluent.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writegmsh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writejcm.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writepermas.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writetecplot.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writetet.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writetochnog.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writeuser.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/wuchemnitz.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writegmsh2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writeOpenFOAM15x.cpp)
++
++# LINALG
++SET (LINALG_SOURCES 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/densemat.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/polynomial.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/bfgs.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/linopt.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/linsearch.cpp)
++
++FILE(GLOB LINALG_INCLUDES "${PROJECT_SOURCE_DIR}/libsrc/linalg/*.hpp")
++
++# MESHING
++SET(MESHING_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/adfront2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/adfront3.cpp
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/bisect.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/boundarylayer.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/clusters.cpp      
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/curvedelems.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/delaunay.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/delaunay2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/geomsearch.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/global.cpp     
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/hprefinement.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/improve2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/improve2gen.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/improve3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/localh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshclass.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshfunc.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshfunc2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshing2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshing3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshtool.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshtype.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/msghandler.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/netrule2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/netrule3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/parser2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/parser3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/prism2rls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/pyramid2rls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/pyramidrls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/quadrls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/refine.cpp   
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/ruler2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/ruler3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/secondorder.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/smoothing2.5.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/smoothing2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/smoothing3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/specials.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/tetrarls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/topology.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/triarls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/validate.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/zrefine.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/bcfunctions.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/parallelmesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/paralleltop.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/paralleltop.hpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/basegeom.cpp)
++
++FILE(GLOB MESHING_INCLUDES "${PROJECT_SOURCE_DIR}/libsrc/meshing/*.hpp")
++
++# OCC
++SET(OCC_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Inter2d.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Inter3d.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Loop.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Loop2d.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Loop3d.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Spliter.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/occconstruction.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/occgenmesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/occgeom.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/occmeshsurf.cpp)
++
++SET(OCC_INCLUDES ${PROJECT_SOURCE_DIR}/libsrc/occ/occgeom.hpp ${PROJECT_SOURCE_DIR}/libsrc/occ/occmeshsurf.hpp)
++
++# STLGEOM
++SET(STLGEOM_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/meshstlsurface.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlgeom.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlgeomchart.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlgeommesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlline.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stltool.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stltopology.cpp)
++
++# NGLIB
++SET(NGLIB_SOURCES nglib.cpp)
++ADD_LIBRARY(nglib SHARED 
++            ${NGLIB_SOURCES}
++            ${CGS_SOURCES} 
++            ${GENERAL_SOURCES}
++            ${GPRIM_SOURCES}
++            ${GEOM2D_SOURCES}
++            ${INTERFACE_SOURCES} 
++            ${LINALG_SOURCES} 
++            ${MESHING_SOURCES} 
++            ${OCC_SOURCES}
++            ${STLGEOM_SOURCES})
++
++TARGET_LINK_LIBRARIES(nglib ${OCCLIBS} ${PLATFORM_LIBADD} ${ZLIB_LIBRARIES})
++INSTALL(TARGETS nglib DESTINATION ${NETGEN_INSTALL_LIBS}) 
++
++# Install headers
++INSTALL(FILES ${GENERAL_INCLUDES} 
++              ${INCLUDE_INCLUDES}
++              ${GPRIM_INCLUDES} 
++              ${LINALG_INCLUDES} 
++              ${MESHING_INCLUDES} 
++              ${OCC_INCLUDES} 
++              nglib.h 
++              DESTINATION ${NETGEN_INSTALL_HEADERS})
++
++
++# NG_VOL
++SET(NG_VOL_SOURCES ng_vol.cpp)
++ADD_EXECUTABLE(ng_vol ${NG_VOL_SOURCES})
++TARGET_LINK_LIBRARIES(ng_vol nglib)
++INSTALL(TARGETS ng_vol  DESTINATION ${NETGEN_INSTALL_BINS})
++
++# NG_STL
++SET(NG_STL_SOURCES ng_stl.cpp)
++ADD_EXECUTABLE(ng_stl ${NG_STL_SOURCES})
++TARGET_LINK_LIBRARIES(ng_stl nglib)
++INSTALL(TARGETS ng_stl  DESTINATION ${NETGEN_INSTALL_BINS})
+diff -Naur netgen-5.3.1_SRC_orig/nglib/nglib.cpp netgen-5.3.1_SRC_modif/nglib/nglib.cpp
+--- netgen-5.3.1_SRC_orig/nglib/nglib.cpp      2014-08-29 12:54:00.000000000 +0300
++++ netgen-5.3.1_SRC_modif/nglib/nglib.cpp     2016-11-23 14:58:26.631177200 +0300
+@@ -87,7 +87,8 @@
+    // Clean-up functions before ending usage of nglib
+    DLL_HEADER void Ng_Exit ()
+    {
+-      ;
++       delete testout;
++       testout = 0;
+    }
index 15fa3dced31b0251347b0754c7c3a1e4490a0737..784e8334cf86273576543c2ebe5cb1c6638fc6e5 100644 (file)
@@ -43,7 +43,6 @@ NETGENPlugin_Hypothesis_2D_ONLY_i (PortableServer::POA_ptr thePOA,
     SMESH_Hypothesis_i( thePOA ),
     NETGENPlugin_Hypothesis_2D_i( thePOA, theGenImpl )
 {
-  MESSAGE( "NETGENPlugin_Hypothesis_2D_ONLY_i::NETGENPlugin_Hypothesis_2D_ONLY_i" );
   myBaseImpl = new ::NETGENPlugin_Hypothesis_2D (theGenImpl->GetANewId(),
                                                  theGenImpl);
 }
@@ -56,7 +55,6 @@ NETGENPlugin_Hypothesis_2D_ONLY_i (PortableServer::POA_ptr thePOA,
 
 NETGENPlugin_Hypothesis_2D_ONLY_i::~NETGENPlugin_Hypothesis_2D_ONLY_i()
 {
-  MESSAGE( "NETGENPlugin_Hypothesis_2D_ONLY_i::~NETGENPlugin_Hypothesis_2D_ONLY_i" );
 }
 //================================================================================
 /*!
index 0fe377a935e50a99945224e918c17f6496a9e71c..8523ff33ec1fbb204c15aa7a0ad45239faa0a6fc 100644 (file)
@@ -45,7 +45,7 @@ NETGENPlugin_Hypothesis_3D_i (PortableServer::POA_ptr thePOA,
     SMESH_Hypothesis_i( thePOA ),
     NETGENPlugin_Hypothesis_i( thePOA, theGenImpl )
 {
-  MESSAGE( "NETGENPlugin_Hypothesis_3D_i::NETGENPlugin_Hypothesis_3D_i" );
+  //MESSAGE( "NETGENPlugin_Hypothesis_3D_i::NETGENPlugin_Hypothesis_3D_i" );
 }
 
 //=============================================================================
@@ -55,7 +55,7 @@ NETGENPlugin_Hypothesis_3D_i (PortableServer::POA_ptr thePOA,
 //=============================================================================
 NETGENPlugin_Hypothesis_3D_i::~NETGENPlugin_Hypothesis_3D_i()
 {
-  MESSAGE( "NETGENPlugin_Hypothesis_3D_i::~NETGENPlugin_Hypothesis_3D_i" );
+  //MESSAGE( "NETGENPlugin_Hypothesis_3D_i::~NETGENPlugin_Hypothesis_3D_i" );
 }
 
 //================================================================================
index 01f9c8cca04c3e5caaaeb63cb721d5cfa89712de..73e8c6d89387e14aa11aab0cc125c5ecad149264 100644 (file)
@@ -82,8 +82,18 @@ namespace netgen {
   extern int OCCGenerateMesh (OCCGeometry&, Mesh*&, int, int, char*);
 #endif
   //extern void OCCSetLocalMeshSize(OCCGeometry & geom, Mesh & mesh);
+#if defined(NETGEN_V5) && defined(WIN32)
+  DLL_HEADER 
+#endif
   extern MeshingParameters mparam;
+#if defined(NETGEN_V5) && defined(WIN32)
+  DLL_HEADER 
+#endif
   extern volatile multithreadt multithread;
+
+#if defined(NETGEN_V5) && defined(WIN32)
+  DLL_HEADER 
+#endif
   extern bool merge_solids;
 
   // values used for occgeo.facemeshstatus
@@ -147,6 +157,7 @@ NETGENPlugin_Mesher::NETGENPlugin_Mesher (SMESH_Mesh*         mesh,
     _progressTic(1),
     _totalTime(1.0),
     _simpleHyp(NULL),
+    _viscousLayersHyp(NULL),
     _ptrToMe(NULL)
 {
   SetDefaultParameters();
@@ -321,6 +332,17 @@ void NETGENPlugin_Mesher::SetParameters(const NETGENPlugin_SimpleHypothesis_2D*
     SetDefaultParameters();
 }
 
+//================================================================================
+/*!
+ * \brief Store a Viscous Layers hypothesis
+ */
+//================================================================================
+
+void NETGENPlugin_Mesher::SetParameters(const StdMeshers_ViscousLayers* hyp )
+{
+  _viscousLayersHyp = hyp;
+}
+
 //=============================================================================
 /*!
  *  Link - a pair of integer numbers
@@ -793,7 +815,7 @@ double NETGENPlugin_Mesher::GetDefaultMinSize(const TopoDS_Shape& geom,
   }
   else
   {
-    minh = 3 * sqrt( minh ); // triangulation for visualization is rather fine
+    minh = sqrt( minh ); // triangulation for visualization is rather fine
     //cout << "TRIANGULATION minh = " <<minh << endl;
   }
   if ( minh > 0.5 * maxSize )
@@ -911,7 +933,7 @@ bool NETGENPlugin_Mesher::FillNgMesh(netgen::OCCGeometry&           occgeom,
 
         // get all nodes from connected <edges>
         const bool isQuad = smDS->IsQuadratic();
-        StdMeshers_FaceSide fSide( face, edges, _mesh, isForwad, isQuad );
+        StdMeshers_FaceSide fSide( face, edges, _mesh, isForwad, isQuad, &helper );
         const vector<UVPtStruct>& points = fSide.GetUVPtStruct();
         if ( points.empty() )
           return false; // invalid node params?
@@ -1039,13 +1061,6 @@ bool NETGENPlugin_Mesher::FillNgMesh(netgen::OCCGeometry&           occgeom,
 
       // Find solids the geomFace bounds
       int solidID1 = 0, solidID2 = 0;
-      StdMeshers_QuadToTriaAdaptor* quadAdaptor =
-        dynamic_cast<StdMeshers_QuadToTriaAdaptor*>( proxyMesh.get() );
-      if ( quadAdaptor )
-      {
-        solidID1 = occgeom.somap.FindIndex( quadAdaptor->GetShape() );
-      }
-      else
       {
         PShapeIteratorPtr solidIt = helper.GetAncestors( geomFace, *sm->GetFather(), TopAbs_SOLID);
         while ( const TopoDS_Shape * solid = solidIt->next() )
@@ -1055,6 +1070,81 @@ bool NETGENPlugin_Mesher::FillNgMesh(netgen::OCCGeometry&           occgeom,
           else                              solidID1 = id;
         }
       }
+      if ( proxyMesh && proxyMesh->GetProxySubMesh( geomFace ))
+      {
+        // if a proxy sub-mesh contains temporary faces, then these faces
+        // should be used to mesh only one SOLID
+        bool hasTmp = false;
+        smDS = proxyMesh->GetSubMesh( geomFace );
+        SMDS_ElemIteratorPtr faces = smDS->GetElements();
+        while ( faces->more() )
+        {
+          const SMDS_MeshElement* f = faces->next();
+          if ( proxyMesh->IsTemporary( f ))
+          {
+            hasTmp = true;
+            std::vector<const SMDS_MeshNode*> fNodes( f->begin_nodes(), f->end_nodes() );
+            std::vector<const SMDS_MeshElement*> vols;
+            if ( _mesh->GetMeshDS()->GetElementsByNodes( fNodes, vols, SMDSAbs_Volume ) == 1 )
+            {
+              int geomID = vols[0]->getshapeId();
+              const TopoDS_Shape& solid =  helper.GetMeshDS()->IndexToShape( geomID );
+              if ( !solid.IsNull() )
+                solidID1 = occgeom.somap.FindIndex ( solid );
+              solidID2 = 0;
+              break;
+            }
+          }
+        }
+        // exclude faces generated by NETGEN from computation of 3D mesh
+        const int fID = occgeom.fmap.FindIndex( geomFace );
+        if ( !hasTmp ) // shrunk mesh
+        {
+          // move netgen points according to moved nodes
+          SMESH_subMeshIteratorPtr smIt = sm->getDependsOnIterator(/*includeSelf=*/true);
+          while ( smIt->more() )
+          {
+            SMESH_subMesh* sub = smIt->next();
+            if ( !sub->GetSubMeshDS() ) continue;
+            SMDS_NodeIteratorPtr nodeIt = sub->GetSubMeshDS()->GetNodes();
+            while ( nodeIt->more() )
+            {
+              const SMDS_MeshNode* n = nodeIt->next();
+              int ngID = ngNodeId( n, ngMesh, nodeNgIdMap );
+              netgen::MeshPoint& ngPoint = ngMesh.Point( ngID );
+              ngPoint(0) = n->X();
+              ngPoint(1) = n->Y();
+              ngPoint(2) = n->Z();
+            }
+          }
+          // remove faces near boundary to avoid their overlapping
+          // with shrunk faces
+          for ( int i = 1; i <= ngMesh.GetNSE(); ++i )
+          {
+            const netgen::Element2d& elem = ngMesh.SurfaceElement(i);
+            if ( elem.GetIndex() == fID )
+            {
+              for ( int iN = 0; iN < elem.GetNP(); ++iN )
+                if ( ngMesh[ elem[ iN ]].Type() != netgen::SURFACEPOINT )
+                {
+                  ngMesh.DeleteSurfaceElement( i );
+                  break;
+                }
+            }
+          }
+        }
+        //if ( hasTmp )
+        {
+          faceNgID++;
+          ngMesh.AddFaceDescriptor( netgen::FaceDescriptor( faceNgID,/*solid1=*/0,/*solid2=*/0,0 ));
+          for (int i = 1; i <= ngMesh.GetNSE(); ++i )
+          {
+            const netgen::Element2d& elem = ngMesh.SurfaceElement(i);
+            if ( elem.GetIndex() == fID )
+              const_cast< netgen::Element2d& >( elem ).SetIndex( faceNgID );
+          }
+        }
+      }
       // Add ng face descriptors of meshed faces
       faceNgID++;
       ngMesh.AddFaceDescriptor( netgen::FaceDescriptor( faceNgID, solidID1, solidID2, 0 ));
@@ -1097,8 +1187,6 @@ bool NETGENPlugin_Mesher::FillNgMesh(netgen::OCCGeometry&           occgeom,
       cout << "SMESH face " << helper.GetMeshDS()->ShapeToIndex( geomFace )
            << " internal="<<isInternalFace << endl;
 #endif
-      if ( proxyMesh )
-        smDS = proxyMesh->GetSubMesh( geomFace );
 
       SMDS_ElemIteratorPtr faces = smDS->GetElements();
       while ( faces->more() )
@@ -1415,10 +1503,15 @@ namespace
     int   ngIdCloseN; //!< ng id of closest node of the closest 2d mesh element
   };
 
-  inline double dist2(const netgen::MeshPoint& p1, const netgen::MeshPoint& p2)
+  inline double dist2( const netgen::MeshPoint& p1, const netgen::MeshPoint& p2 )
   {
     return gp_Pnt( NGPOINT_COORDS(p1)).SquareDistance( gp_Pnt( NGPOINT_COORDS(p2)));
   }
+
+  // inline double dist2(const netgen::MeshPoint& p, const SMDS_MeshNode* n )
+  // {
+  //   return gp_Pnt( NGPOINT_COORDS(p)).SquareDistance( SMESH_NodeXYZ(n));
+  // }
 }
 
 //================================================================================
@@ -2121,13 +2214,35 @@ int NETGENPlugin_Mesher::FillSMesh(const netgen::OCCGeometry&          occgeo,
   if ( quadHelper && !quadHelper->GetIsQuadratic() && quadHelper->GetTLinkNodeMap().empty() )
     quadHelper = 0;
 
+  int i, nbInitNod = initState._nbNodes;
+  if ( initState._elementsRemoved )
+  {
+    // PAL23427. Update nodeVec to track removal of netgen free points as a result
+    // of removal of faces in FillNgMesh() in the case of a shrunk sub-mesh
+    int ngID, nodeVecSize = nodeVec.size();
+    const double eps = std::numeric_limits<double>::min();
+    for ( ngID = i = 1; i < nodeVecSize; ++ngID, ++i )
+    {
+      gp_Pnt ngPnt( NGPOINT_COORDS( ngMesh.Point( ngID )));
+      gp_Pnt node ( SMESH_NodeXYZ ( nodeVec[ i ]));
+      if ( ngPnt.SquareDistance( node ) < eps )
+      {
+        nodeVec[ ngID ] = nodeVec[ i ];
+      }
+      else
+      {
+        --ngID;
+      }
+    }
+    nodeVec.resize( ngID );
+    nbInitNod = ngID - 1;
+  }
   // -------------------------------------
   // Create and insert nodes into nodeVec
   // -------------------------------------
 
   nodeVec.resize( nbNod + 1 );
-  int i, nbInitNod = initState._nbNodes;
-  for (i = nbInitNod+1; i <= nbNod; ++i )
+  for ( i = nbInitNod+1; i <= nbNod; ++i )
   {
     const netgen::MeshPoint& ngPoint = ngMesh.Point(i);
     SMDS_MeshNode* node = NULL;
@@ -2488,8 +2603,6 @@ bool NETGENPlugin_Mesher::Compute()
   SMESH_MesherHelper quadHelper( *_mesh );
   quadHelper.SetIsQuadratic( mparams.secondorder );
 
-  static string debugFile = "/tmp/ngMesh.py"; /* to call toPython( _ngMesh, debugFile )
-                                                 while debugging netgen */
   // -------------------------
   // Prepare OCC geometry
   // -------------------------
@@ -2776,7 +2889,7 @@ bool NETGENPlugin_Mesher::Compute()
           helper.SetSubShape( F );
           TSideVector wires =
             StdMeshers_FaceSide::GetFaceWires( F, *_mesh, /*skipMediumNodes=*/true,
-                                               error, viscousMesh );
+                                               error, &helper, viscousMesh );
           error = AddSegmentsToMesh( *_ngMesh, occgeo, wires, helper, nodeVec );
 
           if ( !error ) error = SMESH_ComputeError::New();
@@ -2820,37 +2933,58 @@ bool NETGENPlugin_Mesher::Compute()
     // generate volume mesh
     // ---------------------
     // Fill _ngMesh with nodes and faces of computed 2D submeshes
-    if ( !err && _isVolume && ( !meshedSM[ MeshDim_2D ].empty() || mparams.quad ))
+    if ( !err && _isVolume &&
+         ( !meshedSM[ MeshDim_2D ].empty() || mparams.quad || _viscousLayersHyp ))
     {
       // load SMESH with computed segments and faces
       FillSMesh( occgeo, *_ngMesh, initState, *_mesh, nodeVec, comment, &quadHelper );
 
+      // compute prismatic boundary volumes
+      int nbQuad = _mesh->NbQuadrangles();
+      SMESH_ProxyMesh::Ptr viscousMesh;
+      if ( _viscousLayersHyp )
+      {
+        viscousMesh = _viscousLayersHyp->Compute( *_mesh, _shape );
+        if ( !viscousMesh )
+          return false;
+      }
       // compute pyramids on quadrangles
-      SMESH_ProxyMesh::Ptr proxyMesh;
-      if ( _mesh->NbQuadrangles() > 0 )
+      vector<SMESH_ProxyMesh::Ptr> pyramidMeshes( occgeo.somap.Extent() );
+      if ( nbQuad > 0 )
         for ( int iS = 1; iS <= occgeo.somap.Extent(); ++iS )
         {
-          StdMeshers_QuadToTriaAdaptor* Adaptor = new StdMeshers_QuadToTriaAdaptor;
-          proxyMesh.reset( Adaptor );
-
-          int nbPyrams = _mesh->NbPyramids();
-          Adaptor->Compute( *_mesh, occgeo.somap(iS) );
-          if ( nbPyrams != _mesh->NbPyramids() )
+          StdMeshers_QuadToTriaAdaptor* adaptor = new StdMeshers_QuadToTriaAdaptor;
+          pyramidMeshes[ iS-1 ].reset( adaptor );
+          bool ok = adaptor->Compute( *_mesh, occgeo.somap(iS), viscousMesh.get() );
+          if ( !ok )
+            return false;
+        }
+      // add proxy faces to NG mesh
+      list< SMESH_subMesh* > viscousSM;
+      for ( int iS = 1; iS <= occgeo.somap.Extent(); ++iS )
+      {
+        list< SMESH_subMesh* > quadFaceSM;
+        for (TopExp_Explorer face(occgeo.somap(iS), TopAbs_FACE); face.More(); face.Next())
+          if ( pyramidMeshes[iS-1] && pyramidMeshes[iS-1]->GetProxySubMesh( face.Current() ))
           {
-            list< SMESH_subMesh* > quadFaceSM;
-            for (TopExp_Explorer face(occgeo.somap(iS), TopAbs_FACE); face.More(); face.Next())
-              if ( Adaptor->GetProxySubMesh( face.Current() ))
-              {
-                quadFaceSM.push_back( _mesh->GetSubMesh( face.Current() ));
-                meshedSM[ MeshDim_2D ].remove( quadFaceSM.back() );
-              }
-            FillNgMesh(occgeo, *_ngMesh, nodeVec, quadFaceSM, &quadHelper, proxyMesh);
+            quadFaceSM.push_back( _mesh->GetSubMesh( face.Current() ));
+            meshedSM[ MeshDim_2D ].remove( quadFaceSM.back() );
           }
-        }
+          else if ( viscousMesh && viscousMesh->GetProxySubMesh( face.Current() ))
+          {
+            viscousSM.push_back( _mesh->GetSubMesh( face.Current() ));
+            meshedSM[ MeshDim_2D ].remove( viscousSM.back() );
+          }
+        if ( !quadFaceSM.empty() )
+          FillNgMesh(occgeo, *_ngMesh, nodeVec, quadFaceSM, &quadHelper, pyramidMeshes[iS-1]);
+      }
+      if ( !viscousSM.empty() )
+        FillNgMesh(occgeo, *_ngMesh, nodeVec, viscousSM, &quadHelper, viscousMesh );
+
       // fill _ngMesh with faces of sub-meshes
       err = ! ( FillNgMesh(occgeo, *_ngMesh, nodeVec, meshedSM[ MeshDim_2D ], &quadHelper));
-      initState = NETGENPlugin_ngMeshInfo(_ngMesh);
-      //toPython( _ngMesh, "/tmp/ngPython.py");
+      initState = NETGENPlugin_ngMeshInfo(_ngMesh, /*checkRemovedElems=*/true);
+      // toPython( _ngMesh );
     }
     if (!err && _isVolume)
     {
@@ -3477,7 +3611,7 @@ void NETGENPlugin_Mesher::toPython( const netgen::Mesh* ngMesh )
   ofstream outfile( pyFile, ios::out );
   if ( !outfile ) return;
 
-  outfile << "import SMESH" << endl
+  outfile << "import salome, SMESH" << endl
           << "from salome.smesh import smeshBuilder" << endl
           << "smesh = smeshBuilder.New()" << endl
           << "mesh = smesh.Mesh()" << endl << endl;
@@ -3541,8 +3675,9 @@ void NETGENPlugin_Mesher::toPython( const netgen::Mesh* ngMesh )
  */
 //================================================================================
 
-NETGENPlugin_ngMeshInfo::NETGENPlugin_ngMeshInfo( netgen::Mesh* ngMesh):
-  _copyOfLocalH(0)
+NETGENPlugin_ngMeshInfo::NETGENPlugin_ngMeshInfo( netgen::Mesh* ngMesh,
+                                                  bool          checkRemovedElems):
+  _elementsRemoved( false ), _copyOfLocalH(0)
 {
   if ( ngMesh )
   {
@@ -3550,6 +3685,10 @@ NETGENPlugin_ngMeshInfo::NETGENPlugin_ngMeshInfo( netgen::Mesh* ngMesh):
     _nbSegments = ngMesh->GetNSeg();
     _nbFaces    = ngMesh->GetNSE();
     _nbVolumes  = ngMesh->GetNE();
+
+    if ( checkRemovedElems )
+      for ( int i = 1; i <= ngMesh->GetNSE() &&  !_elementsRemoved; ++i )
+        _elementsRemoved = ngMesh->SurfaceElement(i).IsDeleted();
   }
   else
   {
index 01a387f59d755780d0bd98cabb66f2611863ca8f..88e093effba3fdb36ea7d96cdb23ce494faccf76 100644 (file)
@@ -46,14 +46,15 @@ namespace nglib {
 #include <vector>
 #include <set>
 
+class NETGENPlugin_Hypothesis;
+class NETGENPlugin_Internals;
+class NETGENPlugin_SimpleHypothesis_2D;
 class SMESHDS_Mesh;
 class SMESH_Comment;
 class SMESH_Mesh;
 class SMESH_MesherHelper;
+class StdMeshers_ViscousLayers;
 class TopoDS_Shape;
-class NETGENPlugin_Hypothesis;
-class NETGENPlugin_SimpleHypothesis_2D;
-class NETGENPlugin_Internals;
 namespace netgen {
   class OCCGeometry;
   class Mesh;
@@ -66,9 +67,10 @@ namespace netgen {
 
 struct NETGENPlugin_ngMeshInfo
 {
-  int _nbNodes, _nbSegments, _nbFaces, _nbVolumes;
+  int   _nbNodes, _nbSegments, _nbFaces, _nbVolumes;
+  bool  _elementsRemoved; // case where netgen can remove free nodes
   char* _copyOfLocalH;
-  NETGENPlugin_ngMeshInfo( netgen::Mesh* ngMesh=0);
+  NETGENPlugin_ngMeshInfo( netgen::Mesh* ngMesh=0, bool checkRemovedElems=false );
   void transferLocalH( netgen::Mesh* fromMesh, netgen::Mesh* toMesh );
   void restoreLocalH ( netgen::Mesh* ngMesh);
 };
@@ -120,6 +122,7 @@ class NETGENPLUGIN_EXPORT NETGENPlugin_Mesher
 
   void SetParameters(const NETGENPlugin_Hypothesis*          hyp);
   void SetParameters(const NETGENPlugin_SimpleHypothesis_2D* hyp);
+  void SetParameters(const StdMeshers_ViscousLayers*         hyp );
   void SetViscousLayers2DAssigned(bool isAssigned) { _isViscousLayers2D = isAssigned; }
   static void SetLocalSize( netgen::OCCGeometry& occgeo, netgen::Mesh& ngMesh );
 
@@ -210,6 +213,7 @@ class NETGENPLUGIN_EXPORT NETGENPlugin_Mesher
   volatile double      _totalTime;
 
   const NETGENPlugin_SimpleHypothesis_2D * _simpleHyp;
+  const StdMeshers_ViscousLayers*   _viscousLayersHyp;
 
   // a pointer to NETGENPlugin_Mesher* field of the holder, that will be
   // nullified at destruction of this
index 4797cc7314bf62057db83769bd561b2ece5fdd4f..99f5994b8b6b285cd3bb65202042b23b8cb2a25b 100644 (file)
 #include "NETGENPlugin_SimpleHypothesis_3D.hxx"
 #include "NETGENPlugin_Mesher.hxx"
 
+#include <SMESHDS_Mesh.hxx>
+#include <SMESH_ControlsDef.hxx>
 #include <SMESH_Gen.hxx>
 #include <SMESH_Mesh.hxx>
-#include <SMESH_ControlsDef.hxx>
-#include <SMESHDS_Mesh.hxx>
+#include <StdMeshers_ViscousLayers.hxx>
+
 #include <utilities.h>
 
 #include <list>
@@ -57,11 +59,12 @@ NETGENPlugin_NETGEN_2D3D::NETGENPlugin_NETGEN_2D3D(int hypId,
                                                    SMESH_Gen* gen)
   : SMESH_3D_Algo(hypId, gen)
 {
-  MESSAGE("NETGENPlugin_NETGEN_2D3D::NETGENPlugin_NETGEN_2D3D");
+  //MESSAGE("NETGENPlugin_NETGEN_2D3D::NETGENPlugin_NETGEN_2D3D");
   _name = "NETGEN_2D3D";
   _shapeType = (1 << TopAbs_SHELL) | (1 << TopAbs_SOLID);// 1 bit /shape type
   _compatibleHypothesis.push_back("NETGEN_Parameters");
   _compatibleHypothesis.push_back("NETGEN_SimpleParameters_3D");
+  _compatibleHypothesis.push_back( StdMeshers_ViscousLayers::GetHypType() );
   _requireDiscreteBoundary = false;
   _onlyUnaryInput = false;
   _hypothesis = NULL;
@@ -70,52 +73,56 @@ NETGENPlugin_NETGEN_2D3D::NETGENPlugin_NETGEN_2D3D(int hypId,
 
 //=============================================================================
 /*!
- *  
+ *
  */
 //=============================================================================
 
 NETGENPlugin_NETGEN_2D3D::~NETGENPlugin_NETGEN_2D3D()
 {
-  MESSAGE("NETGENPlugin_NETGEN_2D3D::~NETGENPlugin_NETGEN_2D3D");
+  //MESSAGE("NETGENPlugin_NETGEN_2D3D::~NETGENPlugin_NETGEN_2D3D");
 }
 
 //=============================================================================
 /*!
- *  
+ *
  */
 //=============================================================================
 
-bool NETGENPlugin_NETGEN_2D3D::CheckHypothesis
-                         (SMESH_Mesh& aMesh,
-                          const TopoDS_Shape& aShape,
-                          SMESH_Hypothesis::Hypothesis_Status& aStatus)
+bool NETGENPlugin_NETGEN_2D3D::CheckHypothesis (SMESH_Mesh&         aMesh,
+                                                const TopoDS_Shape& aShape,
+                                                Hypothesis_Status&  aStatus)
 {
-  MESSAGE("NETGENPlugin_NETGEN_2D3D::CheckHypothesis");
-
-  _hypothesis = NULL;
-  _mesher     = NULL;
+  _hypothesis       = NULL;
+  _viscousLayersHyp = NULL;
+  _mesher           = NULL;
 
-  const list<const SMESHDS_Hypothesis*>& hyps = GetUsedHypothesis(aMesh, aShape);
-  int nbHyp = hyps.size();
-  if (!nbHyp)
+  const list<const SMESHDS_Hypothesis*>& hyps = GetUsedHypothesis(aMesh, aShape, /*noAux=*/false);
+  if ( hyps.empty() )
   {
     aStatus = SMESH_Hypothesis::HYP_OK;
     return true;  // can work with no hypothesis
   }
 
-  const SMESHDS_Hypothesis* theHyp = hyps.front(); // use only the first hypothesis
-
-  string hypName = theHyp->GetName();
-
-  if ( find( _compatibleHypothesis.begin(), _compatibleHypothesis.end(),
-             hypName ) != _compatibleHypothesis.end() )
-  {
-    _hypothesis = theHyp;
-    aStatus = SMESH_Hypothesis::HYP_OK;
-  }
-  else
+  list<const SMESHDS_Hypothesis*>::const_iterator h = hyps.begin();
+  for ( ; h != hyps.end(); ++h )
   {
-    aStatus = SMESH_Hypothesis::HYP_INCOMPATIBLE;
+    const SMESHDS_Hypothesis* aHyp = *h;
+    std::string            hypName = aHyp->GetName();
+
+    if ( std::find( _compatibleHypothesis.begin(), _compatibleHypothesis.end(),
+                    hypName ) != _compatibleHypothesis.end() )
+    {
+      if ( hypName == StdMeshers_ViscousLayers::GetHypType() )
+        _viscousLayersHyp = dynamic_cast<const StdMeshers_ViscousLayers*>( aHyp );
+      else
+        _hypothesis = aHyp;
+      aStatus = SMESH_Hypothesis::HYP_OK;
+    }
+    else
+    {
+      aStatus = SMESH_Hypothesis::HYP_INCOMPATIBLE;
+      break;
+    }
   }
 
   return aStatus == SMESH_Hypothesis::HYP_OK;
@@ -135,6 +142,7 @@ bool NETGENPlugin_NETGEN_2D3D::Compute(SMESH_Mesh&         aMesh,
   NETGENPlugin_Mesher mesher(&aMesh, aShape, true);
   mesher.SetParameters(dynamic_cast<const NETGENPlugin_Hypothesis*>(_hypothesis));
   mesher.SetParameters(dynamic_cast<const NETGENPlugin_SimpleHypothesis_3D*>(_hypothesis));
+  mesher.SetParameters(_viscousLayersHyp);
   mesher.SetSelfPointer( &_mesher );
   return mesher.Compute();
 }
index e95e3b76fedc3f838f90a830103ac4f57ace7a44..1f7e36add2e0e59c1c315b78667f8d1794f453ec 100644 (file)
@@ -35,6 +35,7 @@
 #include <SMESH_Algo.hxx>
 
 class NETGENPlugin_Mesher;
+class StdMeshers_ViscousLayers;
 
 class NETGENPLUGIN_EXPORT NETGENPlugin_NETGEN_2D3D: public SMESH_3D_Algo
 {
@@ -42,11 +43,11 @@ public:
   NETGENPlugin_NETGEN_2D3D(int hypId, SMESH_Gen* gen);
   virtual ~NETGENPlugin_NETGEN_2D3D();
 
-  virtual bool CheckHypothesis(SMESH_Mesh& aMesh,
+  virtual bool CheckHypothesis(SMESH_Mesh&         aMesh,
                                const TopoDS_Shape& aShape,
-                               SMESH_Hypothesis::Hypothesis_Status& aStatus);
+                               Hypothesis_Status&  aStatus);
 
-  virtual bool Compute(SMESH_Mesh& aMesh,
+  virtual bool Compute(SMESH_Mesh&         aMesh,
                        const TopoDS_Shape& aShape);
 
   virtual void CancelCompute();
@@ -54,13 +55,14 @@ public:
   virtual double GetProgress() const;
 
 
-  virtual bool Evaluate(SMESH_Mesh& aMesh,
+  virtual bool Evaluate(SMESH_Mesh&         aMesh,
                         const TopoDS_Shape& aShape,
-                        MapShapeNbElems& aResMap);
+                        MapShapeNbElems&    aResMap);
 
 protected:
-  const SMESHDS_Hypothesis* _hypothesis;
-  NETGENPlugin_Mesher *     _mesher;
+  const SMESHDS_Hypothesis*       _hypothesis;
+  const StdMeshers_ViscousLayers* _viscousLayersHyp;
+  NETGENPlugin_Mesher *           _mesher;
 };
 
 #endif
index e74baa1e0db16f1a45492d54ab10a745b6f7eace..d3bb788c19c78994307c1093be156ff29759608b 100644 (file)
@@ -49,7 +49,7 @@ NETGENPlugin_NETGEN_2D3D_i::NETGENPlugin_NETGEN_2D3D_i( PortableServer::POA_ptr
        SMESH_Algo_i( thePOA ),
        SMESH_3D_Algo_i( thePOA )
 {
-  MESSAGE( "NETGENPlugin_NETGEN_2D3D_i::NETGENPlugin_NETGEN_2D3D_i" );
+  //MESSAGE( "NETGENPlugin_NETGEN_2D3D_i::NETGENPlugin_NETGEN_2D3D_i" );
   myBaseImpl = new ::NETGENPlugin_NETGEN_2D3D( theGenImpl->GetANewId(),
                                                theGenImpl );
 }
@@ -64,7 +64,7 @@ NETGENPlugin_NETGEN_2D3D_i::NETGENPlugin_NETGEN_2D3D_i( PortableServer::POA_ptr
 
 NETGENPlugin_NETGEN_2D3D_i::~NETGENPlugin_NETGEN_2D3D_i()
 {
-  MESSAGE( "NETGENPlugin_NETGEN_2D3D_i::~NETGENPlugin_NETGEN_2D3D_i" );
+  //MESSAGE( "NETGENPlugin_NETGEN_2D3D_i::~NETGENPlugin_NETGEN_2D3D_i" );
 }
 
 //=============================================================================
@@ -77,6 +77,5 @@ NETGENPlugin_NETGEN_2D3D_i::~NETGENPlugin_NETGEN_2D3D_i()
 
 ::NETGENPlugin_NETGEN_2D3D* NETGENPlugin_NETGEN_2D3D_i::GetImpl()
 {
-  MESSAGE( "NETGENPlugin_NETGEN_2D3D_i::GetImpl" );
   return ( ::NETGENPlugin_NETGEN_2D3D* )myBaseImpl;
 }
index 74aaf0a3b474acb3ef991040855041d901ae0aa8..93752e8ec349fa265f5a84300893b28f802b8118 100644 (file)
@@ -67,6 +67,9 @@ namespace netgen {
   extern int OCCGenerateMesh (OCCGeometry&, Mesh*&, MeshingParameters&, int, int);
 #else
   extern int OCCGenerateMesh (OCCGeometry&, Mesh*&, int, int, char*);
+#endif
+#if defined(NETGEN_V5) && defined(WIN32)
+  DLL_HEADER 
 #endif
   extern MeshingParameters mparam;
   extern void OCCSetLocalMeshSize(OCCGeometry & geom, Mesh & mesh);
@@ -111,7 +114,7 @@ NETGENPlugin_NETGEN_2D_ONLY::NETGENPlugin_NETGEN_2D_ONLY(int        hypId,
 
 NETGENPlugin_NETGEN_2D_ONLY::~NETGENPlugin_NETGEN_2D_ONLY()
 {
-  MESSAGE("NETGENPlugin_NETGEN_2D_ONLY::~NETGENPlugin_NETGEN_2D_ONLY");
+  //MESSAGE("NETGENPlugin_NETGEN_2D_ONLY::~NETGENPlugin_NETGEN_2D_ONLY");
 }
 
 //=============================================================================
@@ -351,7 +354,7 @@ bool NETGENPlugin_NETGEN_2D_ONLY::Compute(SMESH_Mesh&         aMesh,
     // get all EDGEs of a FACE
     // ------------------------
     TSideVector wires =
-      StdMeshers_FaceSide::GetFaceWires( F, aMesh, ignoreMediumNodes, faceErr, proxyMesh );
+      StdMeshers_FaceSide::GetFaceWires( F, aMesh, ignoreMediumNodes, faceErr, &helper, proxyMesh );
     if ( faceErr && !faceErr->IsOK() )
       continue;
     int nbWires = wires.size();
index e0c5481123b432a9fd4f3c888bfd6315b839f51c..0fec081e340ebb7101344f1fa9e3694dbd9ea8f5 100644 (file)
@@ -42,7 +42,6 @@ NETGENPlugin_NETGEN_2D_ONLY_i::NETGENPlugin_NETGEN_2D_ONLY_i( PortableServer::PO
        SMESH_Algo_i( thePOA ),
        SMESH_2D_Algo_i( thePOA )
 {
-  MESSAGE( "NETGENPlugin_NETGEN_2D_ONLY_i::NETGENPlugin_NETGEN_2D_ONLY_i" );
   myBaseImpl = new ::NETGENPlugin_NETGEN_2D_ONLY( theGenImpl->GetANewId(),
                                                   theGenImpl );
 }
@@ -57,7 +56,6 @@ NETGENPlugin_NETGEN_2D_ONLY_i::NETGENPlugin_NETGEN_2D_ONLY_i( PortableServer::PO
 
 NETGENPlugin_NETGEN_2D_ONLY_i::~NETGENPlugin_NETGEN_2D_ONLY_i()
 {
-  MESSAGE( "NETGENPlugin_NETGEN_2D_ONLY_i::~NETGENPlugin_NETGEN_2D_ONLY_i" );
 }
 
 //=============================================================================
@@ -70,7 +68,6 @@ NETGENPlugin_NETGEN_2D_ONLY_i::~NETGENPlugin_NETGEN_2D_ONLY_i()
 
 ::NETGENPlugin_NETGEN_2D_ONLY* NETGENPlugin_NETGEN_2D_ONLY_i::GetImpl()
 {
-  MESSAGE( "NETGENPlugin_NETGEN_2D_ONLY_i::GetImpl" );
   return ( ::NETGENPlugin_NETGEN_2D_ONLY* )myBaseImpl;
 }
 
index eeeb1b6735e1bbb7a5023c9ce13533c8948e3eb8..b379d7aafa9e222f091a86ab683cb41fb5d6b0ba 100644 (file)
@@ -81,7 +81,13 @@ namespace netgen {
 #else
   extern int OCCGenerateMesh (OCCGeometry&, Mesh*&, int, int, char*);
 #endif
-  extern MeshingParameters mparam;
+#if defined(NETGEN_V5) && defined(WIN32)
+  DLL_HEADER 
+#endif
+extern MeshingParameters mparam;
+#if defined(NETGEN_V5) && defined(WIN32)
+  DLL_HEADER
+#endif
   extern volatile multithreadt multithread;
 }
 using namespace nglib;
@@ -524,10 +530,6 @@ bool NETGENPlugin_NETGEN_3D::compute(SMESH_Mesh&                     aMesh,
   int Netgen_NbOfNodesNew = Ng_GetNP(Netgen_mesh);
   int Netgen_NbOfTetra    = Ng_GetNE(Netgen_mesh);
 
-  MESSAGE("End of Volume Mesh Generation. err=" << err <<
-          ", nb new nodes: " << Netgen_NbOfNodesNew - Netgen_NbOfNodes <<
-          ", nb tetra: " << Netgen_NbOfTetra);
-
   // -------------------------------------------------------------------
   // Feed back the SMESHDS with the generated Nodes and Volume Elements
   // -------------------------------------------------------------------
index ba2f4b8bb0358e73a824e364a0748562d7d1448b..e434f847844d2868b84f0e68f762df0f769b3675 100644 (file)
@@ -49,7 +49,7 @@ NETGENPlugin_SimpleHypothesis_2D_i (PortableServer::POA_ptr thePOA,
   : SALOME::GenericObj_i( thePOA ),
     SMESH_Hypothesis_i( thePOA )
 {
-  MESSAGE( "NETGENPlugin_SimpleHypothesis_2D_i::NETGENPlugin_SimpleHypothesis_2D_i" );
+  //MESSAGE( "NETGENPlugin_SimpleHypothesis_2D_i::NETGENPlugin_SimpleHypothesis_2D_i" );
   myBaseImpl = new ::NETGENPlugin_SimpleHypothesis_2D (theGenImpl->GetANewId(),
                                                        theGenImpl);
 }
@@ -63,7 +63,7 @@ NETGENPlugin_SimpleHypothesis_2D_i (PortableServer::POA_ptr thePOA,
 //=============================================================================
 NETGENPlugin_SimpleHypothesis_2D_i::~NETGENPlugin_SimpleHypothesis_2D_i()
 {
-  MESSAGE( "NETGENPlugin_SimpleHypothesis_2D_i::~NETGENPlugin_SimpleHypothesis_2D_i" );
+  //MESSAGE( "NETGENPlugin_SimpleHypothesis_2D_i::~NETGENPlugin_SimpleHypothesis_2D_i" );
 }
 
 //=============================================================================
@@ -74,7 +74,6 @@ NETGENPlugin_SimpleHypothesis_2D_i::~NETGENPlugin_SimpleHypothesis_2D_i()
 void NETGENPlugin_SimpleHypothesis_2D_i::SetNumberOfSegments(CORBA::Short nb)
   throw ( SALOME::SALOME_Exception )
 {
-  MESSAGE("NETGENPlugin_SimpleHypothesis_2D_i::SetNumberOfSegments");
   ASSERT(myBaseImpl);
   try {
     this->GetImpl()->SetNumberOfSegments(nb);
@@ -92,7 +91,6 @@ void NETGENPlugin_SimpleHypothesis_2D_i::SetNumberOfSegments(CORBA::Short nb)
 //=============================================================================
 CORBA::Short NETGENPlugin_SimpleHypothesis_2D_i::GetNumberOfSegments()
 {
-  MESSAGE("NETGENPlugin_SimpleHypothesis_2D_i::GetNumberOfSegments");
   ASSERT(myBaseImpl);
   return this->GetImpl()->GetNumberOfSegments();
 }
@@ -105,7 +103,6 @@ CORBA::Short NETGENPlugin_SimpleHypothesis_2D_i::GetNumberOfSegments()
 
 void NETGENPlugin_SimpleHypothesis_2D_i::SetLocalLength(CORBA::Double segmentLength)
 {
-  MESSAGE("NETGENPlugin_SimpleHypothesis_2D_i::SetLocalLength");
   ASSERT(myBaseImpl);
   try {
     this->GetImpl()->SetLocalLength(segmentLength);
@@ -124,7 +121,6 @@ void NETGENPlugin_SimpleHypothesis_2D_i::SetLocalLength(CORBA::Double segmentLen
 
 CORBA::Double NETGENPlugin_SimpleHypothesis_2D_i::GetLocalLength()
 {
-  MESSAGE("NETGENPlugin_SimpleHypothesis_2D_i::GetLocalLength");
   ASSERT(myBaseImpl);
   return this->GetImpl()->GetLocalLength();
 }
@@ -136,7 +132,6 @@ CORBA::Double NETGENPlugin_SimpleHypothesis_2D_i::GetLocalLength()
 //=============================================================================
 void NETGENPlugin_SimpleHypothesis_2D_i::LengthFromEdges()
 {
-  MESSAGE("NETGENPlugin_SimpleHypothesis_2D_i::LengthFromEdges");
   ASSERT(myBaseImpl);
   this->GetImpl()->LengthFromEdges();
   SMESH::TPythonDump() << _this() << ".LengthFromEdges()";
@@ -149,7 +144,6 @@ void NETGENPlugin_SimpleHypothesis_2D_i::LengthFromEdges()
 //=============================================================================
 void NETGENPlugin_SimpleHypothesis_2D_i::SetMaxElementArea(CORBA::Double area)
 {
-  MESSAGE("NETGENPlugin_SimpleHypothesis_2D_i::SetMaxElementArea");
   ASSERT(myBaseImpl);
   this->GetImpl()->SetMaxElementArea(area);
   SMESH::TPythonDump() << _this() << ".SetMaxElementArea( " << SMESH::TVar(area) << " )";
@@ -164,7 +158,6 @@ void NETGENPlugin_SimpleHypothesis_2D_i::SetMaxElementArea(CORBA::Double area)
 
 CORBA::Double NETGENPlugin_SimpleHypothesis_2D_i::GetMaxElementArea()
 {
-  MESSAGE("NETGENPlugin_SimpleHypothesis_2D_i::GetMaxElementArea");
   ASSERT(myBaseImpl);
   return this->GetImpl()->GetMaxElementArea();
 }
@@ -199,7 +192,6 @@ CORBA::Boolean NETGENPlugin_SimpleHypothesis_2D_i::GetAllowQuadrangles()
 //=============================================================================
 ::NETGENPlugin_SimpleHypothesis_2D* NETGENPlugin_SimpleHypothesis_2D_i::GetImpl() const
 {
-  MESSAGE("NETGENPlugin_SimpleHypothesis_2D_i::GetImpl");
   return (::NETGENPlugin_SimpleHypothesis_2D*)myBaseImpl;
 }
 
index 05dc66b850035d15d65c733aa0fc10e1c817c414..f851b530d1f4078442d1026e13a201a396af520a 100644 (file)
@@ -48,7 +48,7 @@ NETGENPlugin_SimpleHypothesis_3D_i (PortableServer::POA_ptr thePOA,
     SMESH_Hypothesis_i( thePOA ),
     NETGENPlugin_SimpleHypothesis_2D_i( thePOA,theGenImpl )
 {
-  MESSAGE( "NETGENPlugin_SimpleHypothesis_3D_i::NETGENPlugin_SimpleHypothesis_3D_i" );
+  //MESSAGE( "NETGENPlugin_SimpleHypothesis_3D_i::NETGENPlugin_SimpleHypothesis_3D_i" );
   if ( myBaseImpl )
     delete myBaseImpl;
   myBaseImpl = new ::NETGENPlugin_SimpleHypothesis_3D (theGenImpl->GetANewId(),
@@ -64,7 +64,7 @@ NETGENPlugin_SimpleHypothesis_3D_i (PortableServer::POA_ptr thePOA,
 //=============================================================================
 NETGENPlugin_SimpleHypothesis_3D_i::~NETGENPlugin_SimpleHypothesis_3D_i()
 {
-  MESSAGE( "NETGENPlugin_SimpleHypothesis_3D_i::~NETGENPlugin_SimpleHypothesis_3D_i" );
+  //MESSAGE( "NETGENPlugin_SimpleHypothesis_3D_i::~NETGENPlugin_SimpleHypothesis_3D_i" );
 }
 
 //=============================================================================
@@ -74,7 +74,6 @@ NETGENPlugin_SimpleHypothesis_3D_i::~NETGENPlugin_SimpleHypothesis_3D_i()
 //=============================================================================
 void NETGENPlugin_SimpleHypothesis_3D_i::LengthFromFaces()
 {
-  MESSAGE("NETGENPlugin_SimpleHypothesis_3D_i::LengthFromFaces");
   ASSERT(myBaseImpl);
   this->GetImpl()->LengthFromFaces();
   SMESH::TPythonDump() << _this() << ".LengthFromFaces()";
@@ -87,7 +86,6 @@ void NETGENPlugin_SimpleHypothesis_3D_i::LengthFromFaces()
 //=============================================================================
 void NETGENPlugin_SimpleHypothesis_3D_i::SetMaxElementVolume(CORBA::Double value)
 {
-  MESSAGE("NETGENPlugin_SimpleHypothesis_3D_i::SetMaxElementVolume");
   ASSERT(myBaseImpl);
   this->GetImpl()->SetMaxElementVolume(value);
   SMESH::TPythonDump() << _this() << ".SetMaxElementVolume( " << SMESH::TVar(value) << " )";
@@ -101,7 +99,6 @@ void NETGENPlugin_SimpleHypothesis_3D_i::SetMaxElementVolume(CORBA::Double value
 //=============================================================================
 CORBA::Double NETGENPlugin_SimpleHypothesis_3D_i::GetMaxElementVolume()
 {
-  MESSAGE("NETGENPlugin_SimpleHypothesis_3D_i::GetMaxElementVolume");
   ASSERT(myBaseImpl);
   return this->GetImpl()->GetMaxElementVolume();
 }
@@ -112,7 +109,6 @@ CORBA::Double NETGENPlugin_SimpleHypothesis_3D_i::GetMaxElementVolume()
 //=============================================================================
 ::NETGENPlugin_SimpleHypothesis_3D* NETGENPlugin_SimpleHypothesis_3D_i::GetImpl()
 {
-  MESSAGE("NETGENPlugin_SimpleHypothesis_3D_i::GetImpl");
   return (::NETGENPlugin_SimpleHypothesis_3D*)myBaseImpl;
 }