[packages/netgen-mesher] - started update to 6.2.2404 - doesn't build with mpi - removed obsolete patches and added patches f

baggins baggins at pld-linux.org
Sat Dec 28 19:48:46 CET 2024


commit 88b5f9b0680a955dda4c5fc560cfdcb5015380de
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Sat Dec 28 20:29:36 2024 +0100

    - started update to 6.2.2404
    - doesn't build with mpi
    - removed obsolete patches and added patches from fedora

 0002-Rename-libraries-add-library-versions.patch |  35 +
 0010-rename-netgen-binary.patch                  |  12 +
 link-libraries.patch                             |  23 +
 netgen-5.3.0_fixes.patch                         | 887 -----------------------
 netgen-5.3.0_metis.patch                         |  94 ---
 netgen-5.3.0_msc-ver.patch                       |  31 -
 netgen-5.3.1_build.patch                         | 372 ----------
 netgen-mesher.png                                | Bin 0 -> 3871 bytes
 netgen-mesher.spec                               | 239 +++---
 netgen-mesher_egg-info-version.patch             |  12 +
 netgen_fallback-version.patch                    |  14 +
 netgen_include-order.patch                       |  49 ++
 std-namespace.patch                              | 124 ++++
 13 files changed, 358 insertions(+), 1534 deletions(-)
---
diff --git a/netgen-mesher.spec b/netgen-mesher.spec
index 59ff9d8..4a8c09d 100644
--- a/netgen-mesher.spec
+++ b/netgen-mesher.spec
@@ -1,42 +1,48 @@
+#
+# Conditional build:
+%bcond_with	mpich		# build mpich packages
+#
 Summary:	Automatic mesh generation tool
 Name:		netgen-mesher
-Version:	5.3.1
+Version:	6.2.2404
 Release:	0.1
 License:	LGPLv2
 Group:		Libraries
-URL:		http://sourceforge.net/projects/netgen-mesher/
-Source0:	http://downloads.sourceforge.net/netgen-mesher/netgen-%{version}.tar.gz
-# Source0-md5:	afd5a9b0b1296c242a9c554f06af6510
-Source1:	%{name}.png
+Source0:	https://github.com/NGSolve/netgen/archive/v%{version}/netgen-%{version}.tar.gz
+# Source0-md5:	0d1dd5b8858e35ed2564ec86703ff602
+Source1:        netgen-mesher.png
 Source2:	%{name}.desktop
-# Fix various configure.ac and Makefiles issues:
-# - Fix configure.ac to correctly detect dependencies
-# - Fix makefile for togl
-# - Rename shared libaries, the original names are often way too generic
-# - Add missing libraries to LIBADD
-# - Fix nglib invalid soname
-Patch0:		netgen-5.3.1_build.patch
-# Some fixes to the code (taken from salome netgen plugin)
-Patch1:		netgen-5.3.0_fixes.patch
-# Fix build against recent metis
-Patch2:		netgen-5.3.0_metis.patch
 # Set a default NETGENDIR appropriate for the fedora packaging
-Patch3:		netgen-5.3.0_netgendir.patch
-# Remove some MSC_VER ifdefs (why are they there?)
-Patch4:		netgen-5.3.0_msc-ver.patch
+Patch0:		netgen-5.3.0_netgendir.patch
 # Make some includes relative (needed for when headers are in -private subpackage)
-Patch5:		netgen-5.3.0_relative-includes.patch
+Patch1:		netgen-5.3.0_relative-includes.patch
+# Rename shared libaries (the original names are often way too generic), add library version
+Patch2:         0002-Rename-libraries-add-library-versions.patch
+# Rename binary in cmake so that exported modules work correctly
+Patch3:         0010-rename-netgen-binary.patch
+# Link against libjpeg and ffmpeg
+Patch4:         link-libraries.patch
+# Fix fallback version
+# See https://bugzilla.redhat.com/show_bug.cgi?id=1993574#c11
+Patch5:         netgen_fallback-version.patch
+# Fix Status typedef symbol collision by re-ordering includes
+# /usr/include/mpich-x86_64/mpicxx.h:160:18: error: expected identifier before ‘int’
+#   160 |     friend class Status;
+Patch6:         netgen_include-order.patch
+# Fix invalid egg-info version
+Patch7:         netgen-mesher_egg-info-version.patch
+Patch8:		std-namespace.patch
+URL:		https://www.ngsolve.org/
 BuildRequires:	Mesa-libGLU-devel
-BuildRequires:	OCE-devel
-BuildRequires:	Togl-devel
-BuildRequires:	autoconf
-BuildRequires:	automake
+BuildRequires:	OpenCASCADE-devel
+BuildRequires:	cmake
+BuildRequires:	ffmpeg-devel
 BuildRequires:	desktop-file-utils
 BuildRequires:	dos2unix
 BuildRequires:	libjpeg-turbo-devel
-BuildRequires:	libtool
 BuildRequires:	metis-devel
-BuildRequires:	mpich-devel
+%{?with_mpich:BuildRequires:	mpich-c++-devel}
+BuildRequires:	python3-pybind11
 BuildRequires:	tk-devel
 BuildRequires:	xorg-lib-libXmu-devel
 Requires:	%{name}-common = %{version}-%{release}
@@ -79,39 +85,6 @@ Requires:	%{name}-devel = %{version}-%{release}
 Private headers of netgen, needed to build certain netgen based
 software packages.
 
-
-
-###############################################################################
-
-%package        openmpi
-Summary:	Netgen compiled against openmpi
-# Require explicitly for dir ownership and to guarantee the pickup of the right runtime
-Requires:	%{name}-common = %{version}-%{release}
-Requires:	%{name}-openmpi-libs = %{version}-%{release}
-Requires:	openmpi
-
-%description    openmpi
-Netgen compiled against openmpi.
-
-%package        openmpi-libs
-Summary:	Netgen libraries compiled against openmpi
-
-%description    openmpi-libs
-Netgen libraries compiled against openmpi.
-
-%package        openmpi-devel
-Summary:	Development files for Netgen compiled against openmpi
-# Require explicitly for dir ownership
-Requires:	%{name}-openmpi = %{version}-%{release}
-Requires:	openmpi-devel
-
-%description    openmpi-devel
-Development files for Netgen compiled against openmpi.
-
-
-
-###############################################################################
-
 %package        mpich
 Summary:	Netgen compiled against mpich
 # Require explicitly for dir ownership and to guarantee the pickup of the right runtime
@@ -137,68 +110,66 @@ Requires:	mpich-devel
 %description    mpich-devel
 Development files for Netgen compiled against mpich.
 
-
-###############################################################################
-
 %prep
 %setup -q -n netgen-%{version}
 
-# Convert line endings
-find . -type f -exec dos2unix {} \;
-
 %patch0 -p1
 %patch1 -p1
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
 %patch5 -p1
-
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
 
 %build
-autoreconf -ifv
-### serial version ###
-mkdir serial
-cd serial
-%configure --enable-occ --with-togl=%{tcl_sitearch}/Togl1.7 --enable-jpeglib \
-		   --includedir=%{_includedir}/%{name} --datadir=%{_datadir}/%{name}
-#		  --enable-ffmpeg
-# Fix unused-direct-shlib-dependency
-sed -i -e 's! -shared ! -Wl,--as-needed\0!g' libtool
-%{__make} %{?_smp_mflags}
-cd ..
-
-### openmpi version ###
-%{_openmpi_load}
-export CXX=mpicxx
-mkdir openmpi
-cd openmpi
-%configure --enable-occ --with-togl=%{tcl_sitearch}/Togl1.7 --enable-jpeglib --enable-parallel \
-		   --bindir=$MPI_BIN --libdir=$MPI_LIB --includedir=$MPI_INCLUDE/%{name} --datadir=%{_datadir}/%{name}
-#		  --enable-ffmpeg
-# Fix unused-direct-shlib-dependency
-sed -i -e 's! -shared ! -Wl,--as-needed\0!g' libtool
-%{__make} %{?_smp_mflags}
-cd ..
-%{_openmpi_unload}
+mkdir -p build
+cd build
+%cmake ../ \
+	-DUSE_SUPERBUILD=OFF \
+	-DUSE_NATIVE_ARCH=OFF \
+	-DNG_INSTALL_SUFFIX=netgen_mesher \
+	-DNG_INSTALL_DIR_INCLUDE=%{_includedir}/%{name} \
+	-DNG_INSTALL_DIR_LIB=%{_libdir} \
+	-DNG_INSTALL_DIR_CMAKE=%{_libdir}/cmake/%{name} \
+	-DNG_INSTALL_DIR_PYTHON=%{py3_sitearch} \
+	-DPREFER_SYSTEM_PYBIND11=ON \
+	-DUSE_JPEG=ON \
+	-DUSE_MPEG=ON \
+	-DUSE_OCC=ON \
+	-DOpenGL_GL_PREFERENCE=GLVND
+
+%{__make}
 
 ### mpich version ###
-%{_mpich_load}
+%if %{with mpich}
+cd ../
+mkdir -p build-mpich
+cd build-mpich
 export CXX=mpicxx
-mkdir mpich
-cd mpich
-%configure --enable-occ --with-togl=%{tcl_sitearch}/Togl1.7 --enable-jpeglib --enable-parallel \
-		   --bindir=$MPI_BIN --libdir=$MPI_LIB --includedir=$MPI_INCLUDE/%{name} --datadir=%{_datadir}/%{name}
-#		  --enable-ffmpeg
-# Fix unused-direct-shlib-dependency
-sed -i -e 's! -shared ! -Wl,--as-needed\0!g' libtool
-%{__make} %{?_smp_mflags}
-cd ..
-%{_mpich_unload}
+%cmake ../ \
+	-DUSE_SUPERBUILD=OFF \
+	-DUSE_NATIVE_ARCH=OFF \
+	-DNG_INSTALL_SUFFIX=netgen_mesher \
+	-DNG_INSTALL_DIR_INCLUDE=%{_includedir}/mpich/%{name} \
+	-DNG_INSTALL_DIR_BIN=%{_libdir}/mpich/bin/ \
+	-DNG_INSTALL_DIR_LIB=%{_libdir}/mpich/lib/ \
+	-DNG_INSTALL_DIR_CMAKE=%{_libdir}/mpich/lib/cmake/%{name} \
+	-DNG_INSTALL_DIR_PYTHON=%{_libdir}/mpich/python%{python3_version}/site-packages \
+	-DPREFER_SYSTEM_PYBIND11=ON \
+	-DUSE_JPEG=ON \
+	-DUSE_MPEG=ON \
+	-DUSE_OCC=ON \
+	-DUSE_MPI=ON \
+	-DOpenGL_GL_PREFERENCE=GLVND
+
+%{__make}
+%endif
 
 %install
 %define writepkgconfig() \
-rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT/$MPI_LIB/pkgconfig; \
+install -d -m 0755 $RPM_BUILD_ROOT/$MPI_LIB/pkgconfig; \
 cat > $RPM_BUILD_ROOT/$MPI_LIB/pkgconfig/%{name}.pc << EOF\
 prefix=%{_prefix}\
 exec_prefix=${prefix}\
@@ -214,45 +185,30 @@ Cflags: -I\\\${includedir}\
 EOF\
 %{nil}
 
-### openmpi version ###
-%{_openmpi_load}
-%{__make} install \
-	DESTDIR=$RPM_BUILD_ROOT -C openmpi
-%writepkgconfig
-# Avoid conflicts with netgen, remove data files (are correctly installed below)
-mv $RPM_BUILD_ROOT/$MPI_BIN/netgen $RPM_BUILD_ROOT/$MPI_BIN/%{name}
-rm -f $RPM_BUILD_ROOT/$MPI_BIN/*.tcl rm -f $RPM_BUILD_ROOT/$MPI_BIN/*.ocf
-%{_openmpi_unload}
-
 ### mpich version ###
-%{_mpich_load}
-%{__make} install \
-	DESTDIR=$RPM_BUILD_ROOT -C mpich
+%if %{with mpich}
+%{__make} -C build-mpich install \
+	DESTDIR=$RPM_BUILD_ROOT
 %writepkgconfig
 # Avoid conflicts with netgen, remove data files (are correctly installed below)
 mv $RPM_BUILD_ROOT/$MPI_BIN/netgen $RPM_BUILD_ROOT/$MPI_BIN/%{name}
 rm -f $RPM_BUILD_ROOT/$MPI_BIN/*.tcl rm -f $RPM_BUILD_ROOT/$MPI_BIN/*.ocf
-%{_mpich_unload}
+%endif
 
 ### serial version ###
-%{__make} install \
-	DESTDIR=$RPM_BUILD_ROOT -C serial
+%{__make} -C build install \
+	DESTDIR=$RPM_BUILD_ROOT
+
 export MPI_LIB=%{_libdir}
 export MPI_INCLUDE=%{_includedir}
 %writepkgconfig
-# Avoid conflicts with netgen, move data files to correct place
-mv $RPM_BUILD_ROOT/%{_bindir}/netgen $RPM_BUILD_ROOT/%{_bindir}/%{name}
-mv $RPM_BUILD_ROOT%{_bindir}/*.tcl $RPM_BUILD_ROOT%{_bindir}/*.ocf $RPM_BUILD_ROOT%{_datadir}/%{name}
-chmod -x $RPM_BUILD_ROOT%{_datadir}/%{name}/*.tcl $RPM_BUILD_ROOT%{_datadir}/%{name}/*.ocf
-
-find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'
 
 # Install icon and desktop file
-install -Dpm 0644 %SOURCE1 $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/48x48/apps/%{name}.png
-desktop-file-install --dir $RPM_BUILD_ROOT/%{_desktopdir}/ %SOURCE2
+install -Dpm 0644 %{SOURCE1} %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/%{name}.png
+desktop-file-install --dir %{buildroot}/%{_datadir}/applications/ %{SOURCE2}
 
 # Delete the doc folder, the files are in %%doc below
-rm -rf $RPM_BUILD_ROOT/%{_docdir}
+rm -rf %{buildroot}/%{_prefix}/doc
 
 # Install private headers
 (
@@ -260,6 +216,8 @@ cd libsrc
 find \( -name *.hpp -or -name *.hxx -or -name *.h -or -name *.ixx -or -name *.jxx \) -exec install -Dpm 0644 {} $RPM_BUILD_ROOT%{_includedir}/%{name}/private/{} \;
 )
 
+# Install the nglib.h header
+install -Dpm 0644 nglib/nglib.h %{buildroot}%{_includedir}/%{name}/nglib.h
 
 %post common
 %update_desktop_database
@@ -279,11 +237,6 @@ fi
 %post libs -p /sbin/ldconfig
 %postun libs -p /sbin/ldconfig
 
-%post openmpi-libs -p /sbin/ldconfig
-%postun openmpi-libs -p /sbin/ldconfig
-
-%post mpich-libs -p /sbin/ldconfig
-%postun mpich-libs -p /sbin/ldconfig
 
 %clean
 rm -rf $RPM_BUILD_ROOT
@@ -316,22 +269,7 @@ rm -rf $RPM_BUILD_ROOT
 %defattr(644,root,root,755)
 %{_includedir}/%{name}/private
 
-%files openmpi
-%defattr(644,root,root,755)
-%{_libdir}/openmpi/bin/*
-
-%files openmpi-libs
-%defattr(644,root,root,755)
-%{_libdir}/openmpi/lib/*.so.*
-%{_libdir}/openmpi/lib/libnglib-%{version}.so
-
-%files openmpi-devel
-%defattr(644,root,root,755)
-%{_includedir}/openmpi*/%{name}
-%{_libdir}/openmpi/lib/*.so
-%{_libdir}/openmpi/lib/pkgconfig/%{name}.pc
-%exclude %{_libdir}/openmpi/lib/libnglib-%{version}.so
-
+%if %{with mpich}
 %files mpich
 %defattr(644,root,root,755)
 %{_libdir}/mpich/bin/*
@@ -347,3 +285,4 @@ rm -rf $RPM_BUILD_ROOT
 %{_libdir}/mpich/lib/*.so
 %{_libdir}/mpich/lib/pkgconfig/%{name}.pc
 %exclude %{_libdir}/mpich/lib/libnglib-%{version}.so
+%endif
diff --git a/0002-Rename-libraries-add-library-versions.patch b/0002-Rename-libraries-add-library-versions.patch
new file mode 100644
index 0000000..4a99e91
--- /dev/null
+++ b/0002-Rename-libraries-add-library-versions.patch
@@ -0,0 +1,35 @@
+diff -rupN --no-dereference netgen-6.2.2406/CMakeLists.txt netgen-6.2.2406-new/CMakeLists.txt
+--- netgen-6.2.2406/CMakeLists.txt	2024-11-25 17:25:40.000000000 +0100
++++ netgen-6.2.2406-new/CMakeLists.txt	2024-12-03 18:26:10.964477186 +0100
+@@ -248,8 +248,10 @@ endif(APPLE)
+ 
+ #######################################################################
+ add_library(nglib ${NGLIB_LIBRARY_TYPE})
++set_target_properties(nglib PROPERTIES VERSION ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR})
+ if(USE_GUI)
+     add_library(nggui ${NGGUI_LIBRARY_TYPE})
++    set_target_properties(nggui PROPERTIES VERSION ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR})
+     if(WIN32)
+         set_target_properties( nggui PROPERTIES OUTPUT_NAME "libnggui")
+     endif(WIN32)
+diff -rupN --no-dereference netgen-6.2.2406/libsrc/core/CMakeLists.txt netgen-6.2.2406-new/libsrc/core/CMakeLists.txt
+--- netgen-6.2.2406/libsrc/core/CMakeLists.txt	2024-11-25 17:25:40.000000000 +0100
++++ netgen-6.2.2406-new/libsrc/core/CMakeLists.txt	2024-12-03 18:26:10.964477186 +0100
+@@ -14,6 +14,7 @@ add_library(ngcore ${NGCORE_LIBRARY_TYPE
+   version.cpp
+   ng_mpi_wrapper.cpp
+   )
++set_target_properties(ngcore PROPERTIES VERSION ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR})
+ 
+ string(REPLACE "|" ";" ng_compile_flags_replace_sep "${NG_COMPILE_FLAGS}")
+ target_compile_options(ngcore PUBLIC ${ng_compile_flags_replace_sep})
+diff -rupN --no-dereference netgen-6.2.2406/ng/Togl2.1/CMakeLists.txt netgen-6.2.2406-new/ng/Togl2.1/CMakeLists.txt
+--- netgen-6.2.2406/ng/Togl2.1/CMakeLists.txt	2024-11-25 17:25:40.000000000 +0100
++++ netgen-6.2.2406-new/ng/Togl2.1/CMakeLists.txt	2024-12-03 18:26:10.965477158 +0100
+@@ -33,4 +33,6 @@ endif(WIN32)
+ target_include_directories(togl PUBLIC ${OPENGL_INCLUDE_DIR})
+ target_link_libraries(togl PUBLIC ${OPENGL_LIBRARY})
+ set_target_properties(togl PROPERTIES POSITION_INDEPENDENT_CODE ON )
++set_target_properties(togl PROPERTIES OUTPUT_NAME "ngtogl")
++set_target_properties(togl PROPERTIES VERSION ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR})
+ install(TARGETS togl DESTINATION ${NG_INSTALL_DIR} COMPONENT netgen)
diff --git a/0010-rename-netgen-binary.patch b/0010-rename-netgen-binary.patch
new file mode 100644
index 0000000..ae5d3b7
--- /dev/null
+++ b/0010-rename-netgen-binary.patch
@@ -0,0 +1,12 @@
+diff -rupN --no-dereference netgen-6.2.2406/ng/CMakeLists.txt netgen-6.2.2406-new/ng/CMakeLists.txt
+--- netgen-6.2.2406/ng/CMakeLists.txt	2024-11-25 17:25:40.000000000 +0100
++++ netgen-6.2.2406-new/ng/CMakeLists.txt	2024-12-03 18:26:11.278468519 +0100
+@@ -31,6 +31,8 @@ if(USE_GUI)
+     target_link_libraries( netgen ${Python3_LIBRARIES} ${TCL_LIBRARY} ${TK_LIBRARY})
+     endif(NOT BUILD_FOR_CONDA)
+ 
++    set_target_properties(netgen PROPERTIES OUTPUT_NAME netgen-mesher)
++
+     install(TARGETS nggui ${NG_INSTALL_DIR})
+ endif(USE_GUI)
+ 
diff --git a/link-libraries.patch b/link-libraries.patch
new file mode 100644
index 0000000..4bce838
--- /dev/null
+++ b/link-libraries.patch
@@ -0,0 +1,23 @@
+diff -rupN --no-dereference netgen-6.2.2406/CMakeLists.txt netgen-6.2.2406-new/CMakeLists.txt
+--- netgen-6.2.2406/CMakeLists.txt	2024-12-03 18:26:11.119472907 +0100
++++ netgen-6.2.2406-new/CMakeLists.txt	2024-12-03 18:26:11.383465621 +0100
+@@ -252,6 +252,7 @@ set_target_properties(nglib PROPERTIES V
+ if(USE_GUI)
+     add_library(nggui ${NGGUI_LIBRARY_TYPE})
+     set_target_properties(nggui PROPERTIES VERSION ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR})
++    target_link_libraries(nggui PRIVATE ${JPEG_LIBRARIES} ${FFMPEG_LIBRARIES})
+     if(WIN32)
+         set_target_properties( nggui PROPERTIES OUTPUT_NAME "libnggui")
+     endif(WIN32)
+diff -rupN --no-dereference netgen-6.2.2406/ng/CMakeLists.txt netgen-6.2.2406-new/ng/CMakeLists.txt
+--- netgen-6.2.2406/ng/CMakeLists.txt	2024-12-03 18:26:11.376465814 +0100
++++ netgen-6.2.2406-new/ng/CMakeLists.txt	2024-12-03 18:26:11.384465593 +0100
+@@ -23,7 +23,7 @@ if(USE_GUI)
+     if(WIN32)
+       target_sources(netgen PRIVATE ../windows/netgen.rc)
+     endif(WIN32)
+-    target_link_libraries( netgen nglib nggui netgen_python netgen_gui)
++    target_link_libraries( netgen nglib nggui netgen_python netgen_gui ${JPEG_LIBRARIES} ${FFMPEG_LIBRARIES})
+     install(TARGETS netgen ${NG_INSTALL_DIR})
+     if(APPLE)
+         set_target_properties(netgen PROPERTIES OUTPUT_NAME netgen)
diff --git a/netgen-5.3.0_fixes.patch b/netgen-5.3.0_fixes.patch
deleted file mode 100644
index a1e146f..0000000
--- a/netgen-5.3.0_fixes.patch
+++ /dev/null
@@ -1,887 +0,0 @@
-diff -rupN netgen-5.3.0/libsrc/meshing/meshtype.cpp netgen-5.3.0-new/libsrc/meshing/meshtype.cpp
---- netgen-5.3.0/libsrc/meshing/meshtype.cpp	2014-09-01 20:54:48.985249216 +0200
-+++ netgen-5.3.0-new/libsrc/meshing/meshtype.cpp	2014-09-01 20:55:10.298248328 +0200
-@@ -1,4 +1,5 @@
- #include <mystdlib.h>
-+#include <float.h> // to get DBL_MIN defined
- 
- #include "meshing.hpp"  
- 
-@@ -666,7 +667,8 @@ namespace netgen
- 
-         double det = trans.Det();
- 
--        if (det <= 0)
-+        // if (det <= 0)
-+        if (det <= DBL_MIN) // avoid FPE
-           err += 1e12;
-         else
-           err += frob * frob / det;
-@@ -722,7 +724,8 @@ namespace netgen
- 
-             double det = trans(0,0)*trans(1,1)-trans(1,0)*trans(0,1);
- 
--            if (det <= 0)
-+            // if (det <= 0)
-+            if (det <= DBL_MIN)  // avoid FPE
-               {
-                 dd = 0;
-                 return 1e12;
-@@ -806,7 +809,8 @@ namespace netgen
-           = dtrans(0,0) * trans(1,1) - trans(0,1) * dtrans(1,0)
-           + trans(0,0) * dtrans(1,1) - dtrans(0,1) * trans(1,0);
- 
--        if (det <= 0)
-+        // if (det <= 0)
-+        if (det <= DBL_MIN) // avoid FPE
-           err += 1e12;
-         else
-           {
-@@ -856,7 +860,8 @@ namespace netgen
-         frob /= 2;
- 
-         double det = trans.Det();
--        if (det <= 0)
-+        //if (det <= 0)
-+        if (det <= DBL_MIN) // avoid FPE
-           err += 1e12;
-         else
-           err += frob * frob / det;
-@@ -1864,7 +1869,8 @@ namespace netgen
-       case PYRAMID:
-         {
-           double noz = 1-p(2);
--          if (noz == 0.0) noz = 1e-10;
-+          //if (noz == 0.0) noz = 1e-10;
-+          if (noz <= DBL_MIN) noz = 1e-10; // avoid FPE
- 
-           double xi  = p(0) / noz;
-           double eta = p(1) / noz;
-@@ -2030,7 +2036,8 @@ namespace netgen
- 
-         double det = -trans.Det();
-       
--        if (det <= 0)
-+        //if (det <= 0)
-+        if (det <= DBL_MIN) // avoid FPE
-           err += 1e12;
-         else
-           err += frob * frob * frob / det;
-@@ -2102,7 +2109,8 @@ namespace netgen
-         ddet *= -1;
- 
-       
--        if (det <= 0)
-+        //if (det <= 0)
-+        if (det <= DBL_MIN) // avoid FPE
-           err += 1e12;
-         else
-           {
-@@ -2184,7 +2192,7 @@ namespace netgen
-       
-         det *= -1;
-       
--        if (det <= 0)
-+        if (det <= DBL_MIN)
-           err += 1e12;
-         else
-           {
-@@ -2513,10 +2521,10 @@ namespace netgen
- 
-   MeshingParameters :: MeshingParameters ()
-   {
--    optimize3d = "cmdmustm";
-+    optimize3d = (char*)"cmdmustm"; // optimize3d = "cmdmustm";
-     //optimize3d = "cmdmstm";
-     optsteps3d = 3;
--    optimize2d = "smsmsmSmSmSm";
-+    optimize2d = (char*)"smsmsmSmSmSm"; // optimize2d = "smsmsmSmSmSm";
-     optsteps2d = 3;
-     opterrpow = 2;
-     blockfill = 1;
-diff -rupN netgen-5.3.0/libsrc/meshing/meshtype.hpp netgen-5.3.0-new/libsrc/meshing/meshtype.hpp
---- netgen-5.3.0/libsrc/meshing/meshtype.hpp	2014-09-01 20:54:48.973249217 +0200
-+++ netgen-5.3.0-new/libsrc/meshing/meshtype.hpp	2014-09-01 20:55:10.298248328 +0200
-@@ -15,6 +15,7 @@ namespace netgen
-     Classes for NETGEN
-   */
- 
-+class Mesh; // added due to compilation errors on some platforms
- 
- 
-   enum ELEMENT_TYPE { 
-diff -rupN netgen-5.3.0/libsrc/meshing/smoothing2.cpp netgen-5.3.0-new/libsrc/meshing/smoothing2.cpp
---- netgen-5.3.0/libsrc/meshing/smoothing2.cpp	2014-09-01 20:54:49.063249213 +0200
-+++ netgen-5.3.0-new/libsrc/meshing/smoothing2.cpp	2014-09-01 20:55:10.299248328 +0200
-@@ -361,7 +361,8 @@ namespace netgen
-     vgrad = 0;
-     double badness = 0;
- 
--    ld.meshthis -> GetNormalVector (ld.surfi, ld.sp1, ld.gi1, n);
-+    //normal already computed: ld.meshthis -> GetNormalVector (ld.surfi, ld.sp1, ld.gi1, n);
-+    n = ld.normal;
-     pp1 = ld.sp1 + x(0) * ld.t1 + x(1) * ld.t2;
- 
-     //  meshthis -> ProjectPoint (surfi, pp1);
-@@ -577,7 +578,8 @@ namespace netgen
-     vgrad = 0;
-     badness = 0;
- 
--    ld.meshthis -> GetNormalVector (ld.surfi, ld.sp1, ld.gi1, n);
-+    //normal already computed: ld.meshthis -> GetNormalVector (ld.surfi, ld.sp1, ld.gi1, n);
-+    n = ld.normal;
- 
-     pp1 = ld.sp1 + x(0) * ld.t1 + x(1) * ld.t2;
- 
-@@ -649,7 +651,8 @@ namespace netgen
-     vgrad = 0;
-     badness = 0;
- 
--    ld.meshthis -> GetNormalVector (ld.surfi, ld.sp1, ld.gi1, n);
-+    //normal already computed: ld.meshthis -> GetNormalVector (ld.surfi, ld.sp1, ld.gi1, n);
-+    n = ld.normal;
- 
-     // pp1 = sp1;
-     //    pp1.Add2 (x.Get(1), t1, x.Get(2), t2);
-@@ -1079,7 +1082,7 @@ namespace netgen
- 		{
- 		  mesh[pi] = Point<3> (origp);
- 		}
--	    
-+	      break; // exit as <fact> is not used anymore
- 	    }
- 	}
-       }
-diff -rupN netgen-5.3.0/libsrc/occ/occconstruction.cpp netgen-5.3.0-new/libsrc/occ/occconstruction.cpp
---- netgen-5.3.0/libsrc/occ/occconstruction.cpp	2014-09-01 20:54:48.461249238 +0200
-+++ netgen-5.3.0-new/libsrc/occ/occconstruction.cpp	2014-09-01 20:55:10.299248328 +0200
-@@ -28,7 +28,7 @@
- #include <BRepAlgoAPI_Common.hxx>
- #include <BRepAlgoAPI_Fuse.hxx>
- #include <BRepAlgoAPI_Section.hxx>
--#include <BRepOffsetAPI_Sewing.hxx>
-+//#include <BRepOffsetAPI_Sewing.hxx>
- //#include <BRepAlgo_Sewing.hxx>
- #include <BRepOffsetAPI_MakeOffsetShape.hxx>
- #include <ShapeFix_Shape.hxx>
-diff -rupN netgen-5.3.0/libsrc/occ/occgenmesh.cpp netgen-5.3.0-new/libsrc/occ/occgenmesh.cpp
---- netgen-5.3.0/libsrc/occ/occgenmesh.cpp	2014-09-01 20:54:48.330249244 +0200
-+++ netgen-5.3.0-new/libsrc/occ/occgenmesh.cpp	2014-09-01 20:55:10.300248328 +0200
-@@ -57,6 +57,8 @@ namespace netgen
- 
- 
- 
-+   
-+   static // useless out of this file
-    double ComputeH (double kappa)
-    {
-       double hret;
-@@ -74,8 +76,7 @@ namespace netgen
-    }
- 
- 
--
--
-+   static // useless out of this file
-    void RestrictHTriangle (gp_Pnt2d & par0, gp_Pnt2d & par1, gp_Pnt2d & par2,
-                            BRepLProp_SLProps * prop, Mesh & mesh, int depth, double h = 0)
-    {
-@@ -171,8 +172,8 @@ namespace netgen
-          if(h < 1e-4*maxside)
-             return;
- 
--
--         if (h > 30) return;
-+         // commented to restrict H on a large sphere for example
-+         //if (h > 30) return;
-       }
- 
-       if (h < maxside && depth < 10)
-@@ -231,6 +232,7 @@ namespace netgen
- 
- 
- 
-+   static // useless out of this file
-    void DivideEdge (TopoDS_Edge & edge, Array<MeshPoint> & ps,
-                     Array<double> & params, Mesh & mesh)
-    {
-@@ -250,8 +252,8 @@ namespace netgen
-       hvalue[0] = 0;
-       pnt = c->Value(s0);
- 
--      double olddist = 0;
--      double dist = 0;
-+      //double olddist = 0; -- useless variables
-+      //double dist = 0;
- 
-       int tmpVal = (int)(DIVIDEEDGESECTIONS);
- 
-@@ -259,15 +261,19 @@ namespace netgen
-       {
-          oldpnt = pnt;
-          pnt = c->Value(s0+(i/double(DIVIDEEDGESECTIONS))*(s1-s0));
-+         // -- no more than 1 segment per <edge length>/DIVIDEEDGESECTIONS
-          hvalue[i] = hvalue[i-1] +
--            1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
--            pnt.Distance(oldpnt);
-+         //   1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
-+         //   pnt.Distance(oldpnt);
-+           min( 1.0,
-+                1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
-+                pnt.Distance(oldpnt));
- 
-          //(*testout) << "mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z())) " << mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))
-          //	   <<  " pnt.Distance(oldpnt) " << pnt.Distance(oldpnt) << endl;
- 
--         olddist = dist;
--         dist = pnt.Distance(oldpnt);
-+         //olddist = dist; -- useless variables
-+         //dist = pnt.Distance(oldpnt);
-       }
- 
-       //  nsubedges = int(ceil(hvalue[DIVIDEEDGESECTIONS]));
-@@ -282,7 +288,10 @@ namespace netgen
-       {
-          if (hvalue[i1]/hvalue[DIVIDEEDGESECTIONS]*nsubedges >= i)
-          {
--            params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
-+            // -- for nsubedges comparable to DIVIDEEDGESECTIONS
-+            //params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
-+            double d1 = i1 - (hvalue[i1] - i*hvalue[DIVIDEEDGESECTIONS]/nsubedges)/(hvalue[i1]-hvalue[i1-1]);
-+            params[i] = s0+(d1/double(DIVIDEEDGESECTIONS))*(s1-s0);
-             pnt = c->Value(params[i]);
-             ps[i-1] = MeshPoint (Point3d(pnt.X(), pnt.Y(), pnt.Z()));
-             i++;
-@@ -326,6 +335,7 @@ namespace netgen
-       (*testout) << "nedges = " << nedges << endl;
- 
-       double eps = 1e-6 * geom.GetBoundingBox().Diam();
-+      const double eps2 = eps * eps; // -- small optimization
- 
-       for (int i = 1; i <= nvertices; i++)
-       {
-@@ -335,7 +345,8 @@ namespace netgen
-          bool exists = 0;
-          if (merge_solids)
-             for (PointIndex pi = 1; pi <= mesh.GetNP(); pi++)
--               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)
-+               //if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)              
-+               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps2 ) // -- small optimization
-                {
-                   exists = 1;
-                   break;
-@@ -365,6 +376,7 @@ namespace netgen
-          {
-             TopoDS_Face face = TopoDS::Face(exp1.Current());
-             int facenr = geom.fmap.FindIndex(face);
-+            if ( facenr < 1 ) continue; // -- to support SALOME sub-meshes
- 
-             if (face2solid[0][facenr-1] == 0)
-                face2solid[0][facenr-1] = solidnr;
-@@ -384,6 +396,7 @@ namespace netgen
-       int facenr = 0;
-       int edgenr = 0;
- 
-+      edgenr = mesh.GetNSeg(); // to support SALOME sub-meshes
- 
-       (*testout) << "faces = " << geom.fmap.Extent() << endl;
-       int curr = 0;
-@@ -445,6 +458,7 @@ namespace netgen
-                   //(*testout) << "ignoring degenerated edge" << endl;
-                   continue;
-                }
-+               if ( geom.emap.FindIndex(edge) < 1 ) continue; // to support SALOME sub-meshes
- 
-                if (geom.vmap.FindIndex(TopExp::FirstVertex (edge)) ==
-                   geom.vmap.FindIndex(TopExp::LastVertex (edge)))
-@@ -482,15 +496,64 @@ namespace netgen
-                }
-                else
-                {
--                  Point<3> fp = occ2ng (BRep_Tool::Pnt (TopExp::FirstVertex (edge)));
--                  Point<3> lp = occ2ng (BRep_Tool::Pnt (TopExp::LastVertex (edge)));
-+                 TopoDS_Iterator vIt( edge, false );
-+                 TopoDS_Vertex v1 = TopoDS::Vertex( vIt.Value() ); vIt.Next();
-+                 TopoDS_Vertex v2 = TopoDS::Vertex( vIt.Value() );
-+                 if ( v1.Orientation() == TopAbs_REVERSED )
-+                   std::swap( v1, v2 );
-+                 const bool isClosedEdge = v1.IsSame( v2 );
-+                 
-+                  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 ));
-+                  if ( isClosedEdge )
-+                    tol2 = BRep_Tool::Tolerance( v1 ) * BRep_Tool::Tolerance( v1 );
- 
-                   pnums[0] = -1;
-                   pnums.Last() = -1;
-                   for (PointIndex pi = 1; pi < first_ep; pi++)
-                   {
--                     if (Dist2 (mesh[pi], fp) < eps*eps) pnums[0] = pi;
--                     if (Dist2 (mesh[pi], lp) < eps*eps) pnums.Last() = pi;
-+                    if (Dist2 (mesh[pi], fp) < tol2) pnums[0] = pi;
-+                    if (Dist2 (mesh[pi], lp) < tol2) pnums.Last() = pi;
-+                  }
-+                  if (( isClosedEdge && pnums[0] != pnums.Last() ) ||
-+                      ( !isClosedEdge && pnums[0] == pnums.Last() ))
-+                    pnums[0] = pnums.Last() = -1;
-+                  if ( pnums[0] == -1 || pnums.Last() == -1 )
-+                  {
-+                    // take into account a possible large gap between a vertex and an edge curve
-+                    // end and a large vertex tolerance covering the whole edge
-+                    if ( pnums[0] == -1 )
-+                    {
-+                      double tol = BRep_Tool::Tolerance( v1 );
-+                      for (PointIndex pi = 1; pi < first_ep; pi++)
-+                        if (pi != pnums.Last() && Dist2 (mesh[pi], fp) < 2*tol*tol)
-+                          pnums[0] = pi;
-+
-+                      if ( pnums[0] == -1 )
-+                        pnums[0] = first_ep-1- nvertices + geom.vmap.FindIndex ( v1 );
-+                    }
-+                    if ( isClosedEdge )
-+                    {
-+                      pnums.Last() = pnums[0];
-+                    }
-+                    else
-+                    {
-+                      if ( pnums.Last() == -1 )
-+                      {
-+                        double tol = BRep_Tool::Tolerance( v2 );
-+                        for (PointIndex pi = 1; pi < first_ep; pi++)
-+                          if (pi != pnums[0] && Dist2 (mesh[pi], lp) < 2*tol*tol)
-+                            pnums.Last() = pi;
-+
-+                        if ( pnums.Last() == -1 )
-+                          pnums.Last() = first_ep-1-nvertices + geom.vmap.FindIndex ( v2 );
-+                      }
-+
-+                      if ( Dist2( fp, mesh[PointIndex(pnums[0])]) >
-+                           Dist2( lp, mesh[PointIndex(pnums.Last())]))
-+                      std::swap( pnums[0], pnums.Last() );
-+                    }
-                   }
-                }
- 
-@@ -1465,3 +1528,4 @@ namespace netgen
- }
- 
- #endif
-+
-diff -rupN netgen-5.3.0/libsrc/occ/occgeom.cpp netgen-5.3.0-new/libsrc/occ/occgeom.cpp
---- netgen-5.3.0/libsrc/occ/occgeom.cpp	2014-09-01 20:54:48.357249242 +0200
-+++ netgen-5.3.0-new/libsrc/occ/occgeom.cpp	2014-09-01 20:55:10.300248328 +0200
-@@ -8,6 +8,8 @@
- #include "ShapeAnalysis_CheckSmallFace.hxx"
- #include "ShapeAnalysis_DataMapOfShapeListOfReal.hxx"
- #include "ShapeAnalysis_Surface.hxx"
-+#include <BRepTopAdaptor_FClass2d.hxx> // -- to optimize Project() and FastProject()
-+#include <TopAbs_State.hxx>
- #include "BRepAlgoAPI_Fuse.hxx"
- #include "BRepCheck_Analyzer.hxx"
- #include "BRepLib.hxx"
-@@ -16,10 +18,17 @@
- #include "ShapeFix_FixSmallFace.hxx"
- #include "Partition_Spliter.hxx"
- 
--
- namespace netgen
- {
--   void OCCGeometry :: PrintNrShapes ()
-+  // free data used to optimize Project() and FastProject()
-+  OCCGeometry::~OCCGeometry()
-+  {
-+    NCollection_DataMap<int,BRepTopAdaptor_FClass2d*>::Iterator it(fclsmap);
-+    for (; it.More(); it.Next())
-+      delete it.Value();
-+  }
-+
-+  void OCCGeometry :: PrintNrShapes ()
-    {
-       TopExp_Explorer e;
-       int count = 0;
-@@ -951,25 +960,58 @@ namespace netgen
-    }
- 
- 
-+   // returns a projector and a classifier for the given surface
-+   void OCCGeometry::GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
-+                                  BRepTopAdaptor_FClass2d*& cls) const
-+   {
-+     //MSV: organize caching projector in the map
-+     if (fprjmap.IsBound(surfi))
-+     {
-+       proj = fprjmap.Find(surfi);
-+       cls = fclsmap.Find(surfi);
-+     }
-+     else
-+     {
-+       const TopoDS_Face& aFace = TopoDS::Face(fmap(surfi));
-+       Handle(Geom_Surface) aSurf = BRep_Tool::Surface(aFace);
-+       proj = new ShapeAnalysis_Surface(aSurf);
-+       fprjmap.Bind(surfi, proj);
-+       cls = new BRepTopAdaptor_FClass2d(aFace,Precision::Confusion());
-+       fclsmap.Bind(surfi, cls);
-+     }
-+   }
- 
--
--   void OCCGeometry :: Project (int surfi, Point<3> & p) const
-+   // void OCCGeometry :: Project (int surfi, Point<3> & p) const
-+   bool OCCGeometry :: Project (int surfi, Point<3> & p, double& u, double& v) const
-    {
-       static int cnt = 0;
-       if (++cnt % 1000 == 0) cout << "Project cnt = " << cnt << endl;
- 
-       gp_Pnt pnt(p(0), p(1), p(2));
- 
--      double u,v;
--      Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
--      Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
--      gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
--      suval.Coord( u, v);
--      pnt = thesurf->Value( u, v );
--
--
-+      // -- Optimization: use cached projector and classifier
-+      // double u,v;
-+      // Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
-+      // Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
-+      // gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
-+      // suval.Coord( u, v);
-+      // pnt = thesurf->Value( u, v );  
-+
-+      Handle(ShapeAnalysis_Surface) proj;
-+      BRepTopAdaptor_FClass2d *cls;
-+      GetFaceTools(surfi, proj, cls);
-+  
-+      gp_Pnt2d p2d = proj->ValueOfUV(pnt, Precision::Confusion());
-+      if (cls->Perform(p2d) == TopAbs_OUT)
-+      {
-+        return false;
-+      }
-+      pnt = proj->Value(p2d);
-+      p2d.Coord(u, v);
-+  
-       p = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
- 
-+      return true;
-    }
- 
- 
-@@ -979,54 +1021,69 @@ namespace netgen
-    {
-       gp_Pnt p(ap(0), ap(1), ap(2));
- 
--      Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
--
--      gp_Pnt x = surface->Value (u,v);
--
--      if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
--
--      gp_Vec du, dv;
--
--      surface->D1(u,v,x,du,dv);
--
--      int count = 0;
--
--      gp_Pnt xold;
--      gp_Vec n;
--      double det, lambda, mu;
--
--      do {
--         count++;
--
--         n = du^dv;
--
--         det = Det3 (n.X(), du.X(), dv.X(),
--            n.Y(), du.Y(), dv.Y(),
--            n.Z(), du.Z(), dv.Z());
--
--         if (det < 1e-15) return false;
--
--         lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
--            n.Y(), p.Y()-x.Y(), dv.Y(),
--            n.Z(), p.Z()-x.Z(), dv.Z())/det;
--
--         mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
--            n.Y(), du.Y(), p.Y()-x.Y(),
--            n.Z(), du.Z(), p.Z()-x.Z())/det;
--
--         u += lambda;
--         v += mu;
--
--         xold = x;
--         surface->D1(u,v,x,du,dv);
--
--      } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
--
--      //    (*testout) << "FastProject count: " << count << endl;
--
--      if (count == 50) return false;
--
--      ap = Point<3> (x.X(), x.Y(), x.Z());
-+      // -- Optimization: use cached projector and classifier
-+      // Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
-+      // 
-+      // gp_Pnt x = surface->Value (u,v);
-+      // 
-+      // if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
-+      // 
-+      // gp_Vec du, dv;
-+      // 
-+      // surface->D1(u,v,x,du,dv);
-+      // 
-+      // int count = 0;
-+      // 
-+      // gp_Pnt xold;
-+      // gp_Vec n;
-+      // double det, lambda, mu;
-+      // 
-+      // do {
-+      //    count++;
-+      // 
-+      //    n = du^dv;
-+      // 
-+      //    det = Det3 (n.X(), du.X(), dv.X(),
-+      //       n.Y(), du.Y(), dv.Y(),
-+      //       n.Z(), du.Z(), dv.Z());
-+      // 
-+      //    if (det < 1e-15) return false;
-+      // 
-+      //    lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
-+      //       n.Y(), p.Y()-x.Y(), dv.Y(),
-+      //       n.Z(), p.Z()-x.Z(), dv.Z())/det;
-+      // 
-+      //    mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
-+      //       n.Y(), du.Y(), p.Y()-x.Y(),
-+      //       n.Z(), du.Z(), p.Z()-x.Z())/det;
-+      // 
-+      //    u += lambda;
-+      //    v += mu;
-+      // 
-+      //    xold = x;
-+      //    surface->D1(u,v,x,du,dv);
-+      // 
-+      // } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
-+      // 
-+      // //    (*testout) << "FastProject count: " << count << endl;
-+      // 
-+      // if (count == 50) return false;
-+      // 
-+      // ap = Point<3> (x.X(), x.Y(), x.Z());
-+      Handle(ShapeAnalysis_Surface) proj;
-+      BRepTopAdaptor_FClass2d *cls;
-+      GetFaceTools(surfi, proj, cls);
-+    
-+      gp_Pnt2d p2d = proj->NextValueOfUV(gp_Pnt2d(u,v), p, Precision::Confusion());
-+      if (cls->Perform(p2d) == TopAbs_OUT)
-+      {
-+        //cout << "Projection fails" << endl;
-+        return false;
-+      }
-+    
-+      p = proj->Value(p2d);
-+      p2d.Coord(u, v);
-+      ap = Point<3> (p.X(), p.Y(), p.Z());
- 
-       return true;
-    }
-diff -rupN netgen-5.3.0/libsrc/occ/occgeom.hpp netgen-5.3.0-new/libsrc/occ/occgeom.hpp
---- netgen-5.3.0/libsrc/occ/occgeom.hpp	2014-09-01 20:54:48.429249239 +0200
-+++ netgen-5.3.0-new/libsrc/occ/occgeom.hpp	2014-09-01 20:55:10.300248328 +0200
-@@ -15,8 +15,8 @@
- #include "Geom_Curve.hxx"
- #include "Geom2d_Curve.hxx"
- #include "Geom_Surface.hxx"
--#include "GeomAPI_ProjectPointOnSurf.hxx"
--#include "GeomAPI_ProjectPointOnCurve.hxx"
-+// #include "GeomAPI_ProjectPointOnSurf.hxx"
-+// #include "GeomAPI_ProjectPointOnCurve.hxx"
- #include "BRepTools.hxx"
- #include "TopExp.hxx"
- #include "BRepBuilderAPI_MakeVertex.hxx"
-@@ -42,8 +42,8 @@
- #include "Geom_Curve.hxx"
- #include "Geom2d_Curve.hxx"
- #include "Geom_Surface.hxx"
--#include "GeomAPI_ProjectPointOnSurf.hxx"
--#include "GeomAPI_ProjectPointOnCurve.hxx"
-+// #include "GeomAPI_ProjectPointOnSurf.hxx"
-+// #include "GeomAPI_ProjectPointOnCurve.hxx"
- #include "TopoDS_Wire.hxx"
- #include "BRepTools_WireExplorer.hxx"
- #include "BRepTools.hxx"
-@@ -68,7 +68,7 @@
- #include "IGESToBRep_Reader.hxx"
- #include "Interface_Static.hxx"
- #include "GeomAPI_ExtremaCurveCurve.hxx"
--#include "Standard_ErrorHandler.hxx"
-+//#include "Standard_ErrorHandler.hxx"
- #include "Standard_Failure.hxx"
- #include "ShapeUpgrade_ShellSewing.hxx"
- #include "ShapeFix_Shape.hxx"
-@@ -80,6 +80,10 @@
- #include "ShapeAnalysis.hxx"
- #include "ShapeBuild_ReShape.hxx"
- 
-+// -- Optimization: to use cached projector and classifier
-+#include <NCollection_DataMap.hxx>
-+class Handle_ShapeAnalysis_Surface;
-+class BRepTopAdaptor_FClass2d;
- 
- // Philippose - 29/01/2009
- // OpenCascade XDE Support
-@@ -192,6 +196,9 @@ namespace netgen
-    class OCCGeometry : public NetgenGeometry
-    {
-       Point<3> center;
-+      // -- Optimization: to use cached projector and classifier
-+      mutable NCollection_DataMap<int,Handle_ShapeAnalysis_Surface> fprjmap;
-+      mutable NCollection_DataMap<int,BRepTopAdaptor_FClass2d*> fclsmap;
- 
-    public:
-       TopoDS_Shape shape;
-@@ -247,6 +254,8 @@ namespace netgen
-      virtual void Save (string filename) const;
- 
- 
-+      ~OCCGeometry();      // -- to free cached projector and classifier
-+
-       void BuildFMap();
- 
-       Box<3> GetBoundingBox()
-@@ -266,9 +275,14 @@ namespace netgen
-       Point<3> Center()
-       {  return center;}
- 
--      void Project (int surfi, Point<3> & p) const;
-+      // void Project (int surfi, Point<3> & p) const; -- optimization
-+      bool Project (int surfi, Point<3> & p, double& u, double& v) const;
-       bool FastProject (int surfi, Point<3> & ap, double& u, double& v) const;
- 
-+      // -- Optimization: to use cached projector and classifier
-+      void GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
-+                        BRepTopAdaptor_FClass2d*& cls) const;
-+
-       OCCSurface GetSurface (int surfi)
-       {
-          cout << "OCCGeometry::GetSurface using PLANESPACE" << endl;
-diff -rupN netgen-5.3.0/libsrc/occ/occmeshsurf.cpp netgen-5.3.0-new/libsrc/occ/occmeshsurf.cpp
---- netgen-5.3.0/libsrc/occ/occmeshsurf.cpp	2014-09-01 20:54:48.386249241 +0200
-+++ netgen-5.3.0-new/libsrc/occ/occmeshsurf.cpp	2014-09-01 20:55:10.304248328 +0200
-@@ -6,6 +6,7 @@
- #include <meshing.hpp>
- #include <GeomLProp_SLProps.hxx>
- #include <ShapeAnalysis_Surface.hxx>
-+#include <GeomAPI_ProjectPointOnCurve.hxx> // -- moved here from occgeom.hpp
- 
- 
- namespace netgen
-@@ -434,23 +435,33 @@ namespace netgen
- 
-   void MeshOptimize2dOCCSurfaces :: ProjectPoint (INDEX surfind, Point<3> & p) const
-   {
--    geometry.Project (surfind, p);
-+    // geometry.Project (surfind, p); -- signature of Project() changed for optimization
-+    double u, v;
-+    geometry.Project (surfind, p, u, v);
-   }
- 
- 
-   int MeshOptimize2dOCCSurfaces :: ProjectPointGI (INDEX surfind, Point<3> & p, PointGeomInfo & gi) const
-   {
--    double u = gi.u;
--    double v = gi.v;
-+    //double u = gi.u;
-+    //double v = gi.v;
- 
-     Point<3> hp = p;
--    if (geometry.FastProject (surfind, hp, u, v))
--      {
--	p = hp;
--	return 1;
--      }
--    ProjectPoint (surfind, p); 
--    return CalcPointGeomInfo (surfind, gi, p); 
-+    // -- u and v are computed by FastProject() and Project(), no need to call CalcPointGeomInfo()
-+    // if (geometry.FastProject (surfind, hp, u, v))
-+    //   {
-+    //    p = hp;
-+    //    return 1;
-+    //   }
-+    // ProjectPoint (surfind, p); 
-+    // return CalcPointGeomInfo (surfind, gi, p); 
-+    bool ok;
-+    if (gi.trignum > 0)
-+      ok = geometry.FastProject (surfind, hp, gi.u, gi.v);
-+    else
-+      ok = geometry.Project (surfind, hp, gi.u, gi.v);
-+    p = hp;
-+    return ok;
-   }
- 
- 
-@@ -680,7 +691,8 @@ namespace netgen
- 	if (!geometry.FastProject (surfi, hnewp, u, v))
- 	  {
- 	  //  cout << "Fast projection to surface fails! Using OCC projection" << endl;
--	    geometry.Project (surfi, hnewp);
-+	    // geometry.Project (surfi, hnewp); -- Project() changed for optimization
-+	    geometry.Project (surfi, hnewp, u, v);
- 	  }
- 
- 	newgi.trignum = 1;
-@@ -689,7 +701,7 @@ namespace netgen
-       }
-   
-     newp = hnewp;
--  }
-+  }//; -- to compile with -Wall -pedantic
- 
- 
-   void OCCRefinementSurfaces :: 
-@@ -708,14 +720,18 @@ namespace netgen
-     hnewp = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
-     newp = hnewp;
-     newgi = ap1;
--  };
-+  }
- 
- 
-   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi) const
-   {
-     if (surfi > 0)
--      geometry.Project (surfi, p);
--  };
-+    // geometry.Project (surfi, p); -- Project() changed for optimization
-+    {
-+      double u, v;
-+      geometry.Project (surfi, p, u, v);
-+    }
-+  }//; -- to compile with -Wall -pedantic
- 
-   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi, PointGeomInfo & gi) const
-   {
-@@ -723,9 +739,10 @@ namespace netgen
-       if (!geometry.FastProject (surfi, p, gi.u, gi.v))
- 	{
- 	  cout << "Fast projection to surface fails! Using OCC projection" << endl;
--	  geometry.Project (surfi, p);
-+          double u, v;
-+	  geometry.Project (surfi, p, u, v);
- 	}
--  };
-+  }
- 
- 
- 
-diff -rupN netgen-5.3.0/libsrc/occ/Partition_Inter3d.cxx netgen-5.3.0-new/libsrc/occ/Partition_Inter3d.cxx
---- netgen-5.3.0/libsrc/occ/Partition_Inter3d.cxx	2014-09-01 20:54:48.316249244 +0200
-+++ netgen-5.3.0-new/libsrc/occ/Partition_Inter3d.cxx	2014-09-01 20:58:56.691238891 +0200
-@@ -243,9 +243,11 @@ static void PutInBounds (const TopoDS_Fa
-       Standard_Integer i, nbExt = anExtPS.NbExt();
-       Extrema_POnSurf aPOnSurf;
-       for (i = 1; i <= nbExt; ++i )
--	  // if (anExtPS.Value( i ) <= TolE)               // V6.3
--	  if (anExtPS.SquareDistance( i ) <= TolE)   // V6.5
--	  {
-+       // porting to OCCT6.5.1
-+       // if (anExtPS.Value( i ) <= TolE)               // V6.3
-+       // if (anExtPS.SquareDistance( i ) <= TolE)   // V6.5
-+       if (anExtPS.SquareDistance( i ) <= TolE * TolE)
-+       {
-           aPOnSurf = anExtPS.Point( i );
-           break;
-         }
-diff -rupN netgen-5.3.0/libsrc/occ/Partition_Loop2d.cxx netgen-5.3.0-new/libsrc/occ/Partition_Loop2d.cxx
---- netgen-5.3.0/libsrc/occ/Partition_Loop2d.cxx	2014-09-01 20:54:48.419249240 +0200
-+++ netgen-5.3.0-new/libsrc/occ/Partition_Loop2d.cxx	2014-09-01 20:55:10.305248328 +0200
-@@ -210,7 +210,7 @@ static Standard_Boolean  SelectEdge(cons
-     Cc->D1(uc, PC, CTg1);
-     if (!isForward) CTg1.Reverse();
- 
--    Standard_Real anglemin = 3 * PI, tolAng = 1.e-8;
-+    Standard_Real anglemin = 3 * M_PI, tolAng = 1.e-8;
- 
-     // select an edge whose first derivative is most left of CTg1
-     // ie an angle between Tg1 and CTg1 is least
-@@ -234,7 +234,7 @@ static Standard_Boolean  SelectEdge(cons
-       // -PI < angle < PI
-       Standard_Real angle = Tg1.Angle(CTg1);
- 
--      if (PI - Abs(angle) <= tolAng)
-+      if (M_PI - Abs(angle) <= tolAng)
-       {
-         // an angle is too close to PI; assure that an angle sign really
-         // reflects an edge position: +PI - an edge is worst,
-diff -rupN netgen-5.3.0/libsrc/occ/Partition_Spliter.cxx netgen-5.3.0-new/libsrc/occ/Partition_Spliter.cxx
---- netgen-5.3.0/libsrc/occ/Partition_Spliter.cxx	2014-09-01 20:54:48.277249246 +0200
-+++ netgen-5.3.0-new/libsrc/occ/Partition_Spliter.cxx	2014-09-01 20:58:36.954239713 +0200
-@@ -1169,8 +1169,10 @@ static void findEqual (const TopTools_Li
-           for (; j<=nbj && ok; ++j) {
-             if (Extrema.IsMin(j)) {
- 	      hasMin = Standard_True;
-+	      // porting to OCCT6.5.1
- 	      // ok = Extrema.Value(j) <= tol;  // V6.3
--	      ok = Extrema.SquareDistance(j) <= tol;  // V6.5
-+	      // ok = Extrema.SquareDistance(j) <= tol;  // V6.5
-+	      ok = Extrema.SquareDistance(j) <= tol * tol;
- 	    }
-           }
-         }
-diff -rupN netgen-5.3.0/libsrc/occ/utilities.h netgen-5.3.0-new/libsrc/occ/utilities.h
---- netgen-5.3.0/libsrc/occ/utilities.h	2014-09-01 20:54:48.457249238 +0200
-+++ netgen-5.3.0-new/libsrc/occ/utilities.h	2014-09-01 20:55:10.306248327 +0200
-@@ -33,6 +33,7 @@
- 
- #include <string>
- #include <iostream>
-+#include <iomanip>
- #include <cstdlib>
- // #include "SALOME_Log.hxx"
- 
-diff -rupN netgen-5.3.0/libsrc/stlgeom/stlgeommesh.cpp netgen-5.3.0-new/libsrc/stlgeom/stlgeommesh.cpp
---- netgen-5.3.0/libsrc/stlgeom/stlgeommesh.cpp	2014-09-01 20:54:47.912249261 +0200
-+++ netgen-5.3.0-new/libsrc/stlgeom/stlgeommesh.cpp	2014-09-01 20:55:10.307248327 +0200
-@@ -1435,7 +1435,8 @@ int STLMeshingDummy (STLGeometry* stlgeo
- 	  /*
- 	  if (!optstring || strlen(optstring) == 0)
- 	    {
--	      mparam.optimize2d = "smcm";
-+	      //mparam.optimize2d = (char*)"smcm";
-+              mparam.optimize2d = (char*)"smcm";
- 	    }
- 	  else
- 	    {
-@@ -1453,7 +1454,7 @@ int STLMeshingDummy (STLGeometry* stlgeo
- 	      mesh -> LoadLocalMeshSize (mparam.meshsizefilename);	      
- 	      mesh -> CalcLocalHFromSurfaceCurvature (mparam.grading, 
- 						      stlparam.resthsurfmeshcurvfac);
--	      mparam.optimize2d = "cmsmSm";
-+	      mparam.optimize2d = "(char*)cmsmSm";
- 	      STLSurfaceOptimization (*stlgeometry, *mesh, mparam);
- #ifdef STAT_STREAM
- 	      (*statout) << GetTime() << " & ";
-@@ -1560,7 +1561,8 @@ int STLMeshingDummy (STLGeometry* stlgeo
- 	  /*
- 	  if (!optstring || strlen(optstring) == 0)
- 	    {
--	      mparam.optimize3d = "cmdmstm";
-+              //mparam.optimize3d = "cmdmstm";
-+	      mparam.optimize3d = (char*)"cmdmstm";
- 	    }
- 	  else
- 	    {
-diff -rupN netgen-5.3.0/nglib/nglib.h netgen-5.3.0-new/nglib/nglib.h
---- netgen-5.3.0/nglib/nglib.h	2014-09-01 20:54:47.470249279 +0200
-+++ netgen-5.3.0-new/nglib/nglib.h	2014-09-01 20:55:10.307248327 +0200
-@@ -24,7 +24,7 @@
- // Philippose - 14.02.2009
- // Modifications for creating a DLL in Windows
- #ifdef WIN32
--   #ifdef NGLIB_EXPORTS || nglib_EXPORTS
-+   #if defined NGLIB_EXPORTS || defined nglib_EXPORTS
-       #define DLL_HEADER   __declspec(dllexport)
-    #else
-       #define DLL_HEADER   __declspec(dllimport)
diff --git a/netgen-5.3.0_metis.patch b/netgen-5.3.0_metis.patch
deleted file mode 100644
index 96ee961..0000000
--- a/netgen-5.3.0_metis.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-diff -rupN netgen-5.3.0/libsrc/meshing/parallelmesh.cpp netgen-5.3.0-new/libsrc/meshing/parallelmesh.cpp
---- netgen-5.3.0/libsrc/meshing/parallelmesh.cpp	2014-09-01 20:54:48.987249216 +0200
-+++ netgen-5.3.0-new/libsrc/meshing/parallelmesh.cpp	2014-09-01 21:02:25.783230174 +0200
-@@ -14,7 +14,7 @@ namespace metis {
- 
- #if METIS_VER_MAJOR >= 5
- #define METIS5
--    typedef idx_t idxtype;   
-+    typedef metis::idx_t idxtype;   
- #else
- #define METIS4
-     typedef idxtype idx_t;  
-@@ -794,10 +794,10 @@ namespace netgen
-     eptr.Append (eind.Size());
-     Array<idx_t> epart(ne), npart(nn);
- 
--    int nparts = ntasks-1;
--    int edgecut;
-+    metis::idx_t nparts = ntasks-1;
-+    metis::idx_t edgecut;
- 
--    int ncommon = 3;
-+    metis::idx_t ncommon = 3;
-     METIS_PartMeshDual (&ne, &nn, &eptr[0], &eind[0], NULL, NULL, &ncommon, &nparts,
- 			NULL, NULL,
- 			&edgecut, &epart[0], &npart[0]);
-@@ -1029,11 +1029,11 @@ namespace netgen
-     eptr.Append (eind.Size());
-     Array<idx_t> epart(ne), npart(nn);
- 
--    int nparts = ntasks-1;
--    int edgecut;
-+    metis::idx_t nparts = ntasks-1;
-+    metis::idx_t edgecut;
- 
- 
--    int ncommon = 3;
-+    metis::idx_t ncommon = 3;
-     METIS_PartMeshDual (&ne, &nn, &eptr[0], &eind[0], &nwgt[0], NULL, &ncommon, &nparts,
- 			NULL, NULL,
- 			&edgecut, &epart[0], &npart[0]);
-@@ -1266,7 +1266,7 @@ namespace netgen
- 
-     for ( int vert = 0; vert < nn; vert++ )
-       {
--	FlatArray<int> array ( cnt[vert], &adjacency[ xadj[vert] ] );
-+	FlatArray<metis::idx_t> array ( cnt[vert], &adjacency[ xadj[vert] ] );
- 	BubbleSort(array);
-       }
- 
-@@ -1377,7 +1377,7 @@ namespace netgen
- 
-     for ( int el = 0; el < ne; el++ )
-       {
--	FlatArray<int> array ( cnt[el], &adjacency[ xadj[el] ] );
-+	FlatArray<metis::idx_t> array ( cnt[el], &adjacency[ xadj[el] ] );
- 	BubbleSort(array);
-       }
- 
-@@ -1428,8 +1428,8 @@ namespace netgen
-   void Mesh :: PartDualHybridMesh2D ( ) 
-   {
- #ifdef METIS
--    int ne = GetNSE();
--    int nv = GetNV();
-+    metis::idx_t ne = GetNSE();
-+    metis::idx_t nv = GetNV();
- 
-     Array<idxtype> xadj(ne+1);
-     Array<idxtype> adjacency(ne*4);
-@@ -1484,18 +1484,18 @@ namespace netgen
- 
-     idxtype *v_weights = NULL, *e_weights = NULL;
- 
--    int weightflag = 0;
--    // int numflag = 0;
--    int nparts = ntasks - 1;
-+    metis::idx_t weightflag = 0;
-+    metis::idx_t numflag = 0;
-+    metis::idx_t nparts = ntasks - 1;
- 
--    int edgecut;
-+    metis::idx_t edgecut;
-     Array<idxtype> part(ne);
- 
-     for ( int el = 0; el < ne; el++ )
-       BubbleSort (adjacency.Range (xadj[el], xadj[el+1]));
- 
- #ifdef METIS4	
--    int options[5];
-+    metis::idx_t options[5];
-     options[0] = 0;
-     METIS_PartGraphKway ( &ne, &xadj[0], &adjacency[0], v_weights, e_weights, &weightflag, 
- 			  &numflag, &nparts, options, &edgecut, &part[0] );
diff --git a/netgen-5.3.0_msc-ver.patch b/netgen-5.3.0_msc-ver.patch
deleted file mode 100644
index f05c007..0000000
--- a/netgen-5.3.0_msc-ver.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-diff -rupN netgen-5.3.0/ng/ngpkg.cpp netgen-5.3.0-new/ng/ngpkg.cpp
---- netgen-5.3.0/ng/ngpkg.cpp	2014-09-01 20:54:49.423249198 +0200
-+++ netgen-5.3.0-new/ng/ngpkg.cpp	2014-09-01 21:04:13.023225704 +0200
-@@ -3136,13 +3136,11 @@ void PlayAnimFile(const char* name, int
-   extern "C" int Ng_Init (Tcl_Interp * interp);
-   extern "C" int Ng_CSG_Init (Tcl_Interp * interp);
- 
--#ifdef _MSC_VER
-   extern "C" int Ng_stl_Init (Tcl_Interp * interp);
-   extern "C" int Ng_geom2d_Init (Tcl_Interp * interp);
-   #ifdef OCCGEOMETRY
-     extern "C" int Ng_occ_Init (Tcl_Interp * interp);
-   #endif
--#endif
- 
- 
-   // extern "C" int Ng_Geom2d_Init (Tcl_Interp * interp); 
-@@ -3160,13 +3158,11 @@ void PlayAnimFile(const char* name, int
- #endif
- 
-     Ng_CSG_Init(interp);
--#ifdef _MSC_VER
-     Ng_stl_Init(interp);
-     Ng_geom2d_Init (interp);
- #ifdef OCCGEOMETRY
-     Ng_occ_Init (interp);
- #endif
--#endif
- 
- 
-     // Ng_Geom2d_Init(interp);
diff --git a/netgen-5.3.1_build.patch b/netgen-5.3.1_build.patch
deleted file mode 100644
index dd8d395..0000000
--- a/netgen-5.3.1_build.patch
+++ /dev/null
@@ -1,372 +0,0 @@
-diff -rupN netgen-5.3.1/configure.ac netgen-5.3.1-new/configure.ac
---- netgen-5.3.1/configure.ac	2014-10-07 21:38:21.990021106 +0200
-+++ netgen-5.3.1-new/configure.ac	2014-10-07 21:39:14.530034275 +0200
-@@ -35,15 +35,15 @@ AC_ARG_WITH([occ],
-         [AC_HELP_STRING([--with-occ=dir],[use OpenCascade installed in directory dir])],
-         [occdir=$withval] 
- 	[occon=true],
--	[occdir=/opt/OpenCASCADE]
-+	[occdir=/usr]
-         )
- 
- 
- 
- 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/usr/include/oce"])
-+	AC_SUBST([OCCLIBS], ["-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"])
- 
- #  -lTKDCAF
- 
-@@ -89,18 +89,18 @@ AC_ARG_ENABLE([gui],
-         [AC_HELP_STRING([--disable-gui],[don't build netgen with GUI])],
-         [if test "$enableval" = yes; then ngguion=true; else ngguion=false; fi])
- 
--metisdir=/usr/local
-+metisdir=/usr
- AC_ARG_WITH([metis], 
-         [AC_HELP_STRING([--with-metis=dir],[path to metis 5.x])],
-         [metisdir=$withval],
--        [metisdir=/usr/local]
-+        [metisdir=/usr]
- 	)
- 
- AC_ARG_ENABLE([parallel],
-         [AC_HELP_STRING([--enable-parallel],[enable mpi parallelization])],
--	[AC_SUBST([MPI_INCLUDES], "-I$metisdir/include -DMETIS")]
-+	[AC_SUBST([MPI_INCLUDES], "-DMETIS")]
-         [CXXFLAGS="$CXXFLAGS -DPARALLEL"]
--	[AC_SUBST([MPI_LIBS], "-L$metisdir/lib -lmetis")]
-+	[AC_SUBST([MPI_LIBS], "-lmetis")]
-         )       
- #          -DVTRACE
- #          -lvt-hyb
-diff -rupN netgen-5.3.1/libsrc/csg/Makefile.am netgen-5.3.1-new/libsrc/csg/Makefile.am
---- netgen-5.3.1/libsrc/csg/Makefile.am	2014-10-07 21:38:21.787017193 +0200
-+++ netgen-5.3.1-new/libsrc/csg/Makefile.am	2014-10-07 21:39:14.530034275 +0200
-@@ -8,24 +8,24 @@ revolution.hpp spline3d.hpp vscsg.hpp
- AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include  $(TCL_INCLUDES)
- METASOURCES = AUTO
- 
--lib_LTLIBRARIES = libcsg.la
-+lib_LTLIBRARIES = libngcsg.la
- 
- 
--libcsg_la_SOURCES = algprim.cpp brick.cpp   \
-+libngcsg_la_SOURCES = algprim.cpp brick.cpp   \
- bspline2d.cpp csgeom.cpp csgparser.cpp curve2d.cpp edgeflw.cpp	       \
- explicitcurve2d.cpp extrusion.cpp gencyl.cpp genmesh.cpp identify.cpp  \
- manifold.cpp meshsurf.cpp polyhedra.cpp revolution.cpp singularref.cpp \
- solid.cpp specpoin.cpp spline3d.cpp surface.cpp triapprox.cpp
- 
--libcsg_la_LIBADD =  $(top_builddir)/libsrc/meshing/libmesh.la
-+libngcsg_la_LIBADD =  $(top_builddir)/libsrc/meshing/libngmesh.la
- 
- 
- 
- if NGGUI
--lib_LTLIBRARIES += libcsgvis.la 
-+lib_LTLIBRARIES += libngcsgvis.la
- 
--libcsgvis_la_SOURCES = vscsg.cpp csgpkg.cpp
--libcsgvis_la_LIBADD = libcsg.la
-+libngcsgvis_la_SOURCES = vscsg.cpp csgpkg.cpp
-+libngcsgvis_la_LIBADD = libngcsg.la
- endif
- 
- #   $(top_builddir)/libsrc/geom2d/libgeom2d.la 
-diff -rupN netgen-5.3.1/libsrc/general/Makefile.am netgen-5.3.1-new/libsrc/general/Makefile.am
---- netgen-5.3.1/libsrc/general/Makefile.am	2014-10-07 21:38:21.638014320 +0200
-+++ netgen-5.3.1-new/libsrc/general/Makefile.am	2014-10-07 21:39:14.531034296 +0200
-@@ -4,8 +4,8 @@ include_HEADERS = ngexception.hpp
- 
- AM_CPPFLAGS =  $(MPI_INCLUDES) -I$(top_srcdir)/libsrc/include
- METASOURCES = AUTO
--noinst_LTLIBRARIES = libgen.la
--libgen_la_SOURCES = array.cpp bitarray.cpp dynamicmem.cpp flags.cpp \
-+noinst_LTLIBRARIES = libnggen.la
-+libnggen_la_SOURCES = array.cpp bitarray.cpp dynamicmem.cpp flags.cpp \
- 	hashtabl.cpp mystring.cpp ngexception.cpp optmem.cpp parthreads.cpp \
- 	profiler.cpp seti.cpp sort.cpp spbita2d.cpp symbolta.cpp table.cpp \
- 	mpi_interface.cpp gzstream.cpp
-diff -rupN netgen-5.3.1/libsrc/geom2d/Makefile.am netgen-5.3.1-new/libsrc/geom2d/Makefile.am
---- netgen-5.3.1/libsrc/geom2d/Makefile.am	2014-10-07 21:38:21.832018060 +0200
-+++ netgen-5.3.1-new/libsrc/geom2d/Makefile.am	2014-10-07 21:39:14.531034296 +0200
-@@ -4,18 +4,18 @@ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/inc
- 
- METASOURCES = AUTO
- 
--lib_LTLIBRARIES = libgeom2d.la 
-+lib_LTLIBRARIES = libnggeom2d.la 
- 
- if NGGUI
--lib_LTLIBRARIES += libgeom2dvis.la 
-+lib_LTLIBRARIES += libnggeom2dvis.la 
- endif
- 
- 
- 
--libgeom2d_la_SOURCES = genmesh2d.cpp geom2dmesh.cpp geometry2d.cpp
--libgeom2d_la_LIBADD = 	$(top_builddir)/libsrc/meshing/libmesh.la
-+libnggeom2d_la_SOURCES = genmesh2d.cpp geom2dmesh.cpp geometry2d.cpp
-+libnggeom2d_la_LIBADD = $(top_builddir)/libsrc/meshing/libngmesh.la $(MPI_LIBS)
- 
--libgeom2dvis_la_SOURCES = geom2dpkg.cpp vsgeom2d.cpp
--libgeom2dvis_la_LIBADD = libgeom2d.la
-+libnggeom2dvis_la_SOURCES = geom2dpkg.cpp vsgeom2d.cpp
-+libnggeom2dvis_la_LIBADD = libnggeom2d.la -lGL $(MPI_LIBS)
- 
- 
-diff -rupN netgen-5.3.1/libsrc/gprim/Makefile.am netgen-5.3.1-new/libsrc/gprim/Makefile.am
---- netgen-5.3.1/libsrc/gprim/Makefile.am	2014-10-07 21:38:21.719015882 +0200
-+++ netgen-5.3.1-new/libsrc/gprim/Makefile.am	2014-10-07 21:39:14.531034296 +0200
-@@ -2,6 +2,6 @@ noinst_HEADERS = adtree.hpp  geom3d.hpp
- 
- AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include
- METASOURCES = AUTO
--noinst_LTLIBRARIES = libgprim.la
--libgprim_la_SOURCES = adtree.cpp geom2d.cpp geom3d.cpp geomfuncs.cpp \
-+noinst_LTLIBRARIES = libnggprim.la
-+libnggprim_la_SOURCES = adtree.cpp geom2d.cpp geom3d.cpp geomfuncs.cpp \
- 	geomtest3d.cpp transform3d.cpp spline.cpp splinegeometry.cpp
-diff -rupN netgen-5.3.1/libsrc/interface/Makefile.am netgen-5.3.1-new/libsrc/interface/Makefile.am
---- netgen-5.3.1/libsrc/interface/Makefile.am	2014-10-07 21:38:21.846018330 +0200
-+++ netgen-5.3.1-new/libsrc/interface/Makefile.am	2014-10-07 21:44:17.523887314 +0200
-@@ -2,14 +2,14 @@ noinst_HEADERS = writeuser.hpp
- 
- AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include -I$(top_srcdir)/libsrc/interface  $(MPI_INCLUDES) $(TCL_INCLUDES) -DOPENGL
- METASOURCES = AUTO
--lib_LTLIBRARIES = libinterface.la
--libinterface_la_SOURCES = nginterface.cpp nginterface_v2.cpp \
-+lib_LTLIBRARIES = libnginterface.la
-+libnginterface_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
-+libnginterface_la_LIBADD = $(top_builddir)/libsrc/meshing/libngmesh.la
- 
- # libinterface_la_LDFLAGS = -rdynamic
-diff -rupN netgen-5.3.1/libsrc/linalg/Makefile.am netgen-5.3.1-new/libsrc/linalg/Makefile.am
---- netgen-5.3.1/libsrc/linalg/Makefile.am	2014-10-07 21:38:21.667014879 +0200
-+++ netgen-5.3.1-new/libsrc/linalg/Makefile.am	2014-10-07 21:39:14.532034315 +0200
-@@ -1,8 +1,8 @@
- noinst_HEADERS = densemat.hpp linalg.hpp polynomial.hpp vector.hpp opti.hpp
- AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include
- METASOURCES = AUTO
--noinst_LTLIBRARIES = libla.la
--libla_la_SOURCES = densemat.cpp polynomial.cpp bfgs.cpp linopt.cpp linsearch.cpp
-+noinst_LTLIBRARIES = libngla.la
-+libngla_la_SOURCES = densemat.cpp polynomial.cpp bfgs.cpp linopt.cpp linsearch.cpp
- 
- #  vector.cpp
- 
-diff -rupN netgen-5.3.1/libsrc/meshing/Makefile.am netgen-5.3.1-new/libsrc/meshing/Makefile.am
---- netgen-5.3.1/libsrc/meshing/Makefile.am	2014-10-07 21:38:21.895019275 +0200
-+++ netgen-5.3.1-new/libsrc/meshing/Makefile.am	2014-10-07 21:39:14.532034315 +0200
-@@ -15,9 +15,9 @@ clusters.hpp hprefinement.hpp improve3.h
- 
- METASOURCES = AUTO
- 
--lib_LTLIBRARIES = libmesh.la
-+lib_LTLIBRARIES = libngmesh.la
- 
--libmesh_la_SOURCES = adfront2.cpp adfront3.cpp bisect.cpp boundarylayer.cpp \
-+libngmesh_la_SOURCES = adfront2.cpp adfront3.cpp bisect.cpp boundarylayer.cpp \
- 	clusters.cpp curvedelems.cpp delaunay.cpp delaunay2d.cpp	    \
- 	geomsearch.cpp global.cpp hprefinement.cpp improve2.cpp		    \
- 	improve2gen.cpp improve3.cpp localh.cpp meshclass.cpp		    \
-@@ -30,8 +30,8 @@ libmesh_la_SOURCES = adfront2.cpp adfron
- 	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
-+libngmesh_la_LIBADD =  $(top_builddir)/libsrc/linalg/libngla.la \
-+	$(top_builddir)/libsrc/gprim/libnggprim.la \
-+	$(top_builddir)/libsrc/general/libnggen.la \
-+	$(MPI_LIBS) -lz
- 
-diff -rupN netgen-5.3.1/libsrc/occ/Makefile.am netgen-5.3.1-new/libsrc/occ/Makefile.am
---- netgen-5.3.1/libsrc/occ/Makefile.am	2014-10-07 21:38:21.739016267 +0200
-+++ netgen-5.3.1-new/libsrc/occ/Makefile.am	2014-10-07 21:39:14.533034334 +0200
-@@ -14,20 +14,20 @@ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/inc
- 
- METASOURCES = AUTO
- 
--lib_LTLIBRARIES = libocc.la
-+lib_LTLIBRARIES = libngocc.la
- 
- if NGGUI
--lib_LTLIBRARIES += liboccvis.la 
-+lib_LTLIBRARIES += libngoccvis.la 
- endif
- 
- 
--libocc_la_SOURCES = Partition_Inter2d.cxx Partition_Inter3d.cxx \
-+libngocc_la_SOURCES = Partition_Inter2d.cxx Partition_Inter3d.cxx \
- 	Partition_Loop.cxx Partition_Loop2d.cxx Partition_Loop3d.cxx Partition_Spliter.cxx \
- 	occconstruction.cpp occgenmesh.cpp occgeom.cpp occmeshsurf.cpp
- 
--libocc_la_LIBADD = $(OCCLIBS)
-+libngocc_la_LIBADD = $(OCCLIBS)
- 
--liboccvis_la_SOURCES = occpkg.cpp vsocc.cpp
--liboccvis_la_LIBADD = libocc.la
-+libngoccvis_la_SOURCES = occpkg.cpp vsocc.cpp
-+libngoccvis_la_LIBADD = libngocc.la $(TCL_LIB_SPEC)
- 
- 
-diff -rupN netgen-5.3.1/libsrc/stlgeom/Makefile.am netgen-5.3.1-new/libsrc/stlgeom/Makefile.am
---- netgen-5.3.1/libsrc/stlgeom/Makefile.am	2014-10-07 21:38:21.683015188 +0200
-+++ netgen-5.3.1-new/libsrc/stlgeom/Makefile.am	2014-10-07 21:39:14.533034334 +0200
-@@ -4,18 +4,18 @@ stltool.hpp stltopology.hpp vsstl.hpp
- AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include $(TCL_INCLUDES)
- METASOURCES = AUTO
- 
--lib_LTLIBRARIES = libstl.la 
-+lib_LTLIBRARIES = libngstl.la 
- 
- if NGGUI
--lib_LTLIBRARIES += libstlvis.la 
-+lib_LTLIBRARIES += libngstlvis.la 
- endif
- 
--libstl_la_SOURCES = meshstlsurface.cpp stlgeom.cpp stlgeomchart.cpp \
-+libngstl_la_SOURCES = meshstlsurface.cpp stlgeom.cpp stlgeomchart.cpp \
- 	stlgeommesh.cpp stlline.cpp stltool.cpp stltopology.cpp
- 
- 
--libstlvis_la_SOURCES = stlpkg.cpp vsstl.cpp
--libstlvis_la_LIBADD = libstl.la
--libstl_la_LIBADD =  $(top_builddir)/libsrc/meshing/libmesh.la
-+libngstlvis_la_SOURCES = stlpkg.cpp vsstl.cpp
-+libngstlvis_la_LIBADD = libngstl.la  -lGL $(MPI_LIBS) $(TCL_LIB_SPEC)
-+libngstl_la_LIBADD = $(top_builddir)/libsrc/meshing/libngmesh.la $(MPI_LIBS)
- # libstlvis_la_LIBADD = libstl.la $(top_builddir)/libsrc/linalg/libla.la 
- 
-diff -rupN netgen-5.3.1/libsrc/visualization/Makefile.am netgen-5.3.1-new/libsrc/visualization/Makefile.am
---- netgen-5.3.1/libsrc/visualization/Makefile.am	2014-10-07 21:38:21.822017867 +0200
-+++ netgen-5.3.1-new/libsrc/visualization/Makefile.am	2014-10-07 21:39:14.533034334 +0200
-@@ -7,11 +7,11 @@ AM_CPPFLAGS =  $(MPI_INCLUDES) -I$(top_s
- METASOURCES = AUTO
- 
- if NGGUI
--noinst_LTLIBRARIES = libvisual.la
-+noinst_LTLIBRARIES = libngvisual.la
- endif
- 
- 
--libvisual_la_SOURCES = meshdoc.cpp mvdraw.cpp \
-+libngvisual_la_SOURCES = meshdoc.cpp mvdraw.cpp \
- 	vsfieldlines.cpp vsmesh.cpp vssolution.cpp importsolution.cpp
- 
--
-+libngvisual_la_LIBADD = -lGL
-diff -rupN netgen-5.3.1/ng/Makefile.am netgen-5.3.1-new/ng/Makefile.am
---- netgen-5.3.1/ng/Makefile.am	2014-10-07 21:38:21.973020778 +0200
-+++ netgen-5.3.1-new/ng/Makefile.am	2014-10-07 21:39:14.534034353 +0200
-@@ -17,21 +17,18 @@ MKL_LIBS = -L$(MKLROOT)/lib/intel64  -lm
- endif
- # -lpardiso500-GNU472-X86-64 -lgfortran
- 
--netgen_LDADD = $(top_builddir)/libsrc/visualization/libvisual.la \
--	$(top_builddir)/libsrc/csg/libcsgvis.la \
--	$(top_builddir)/libsrc/csg/libcsg.la \
--	$(top_builddir)/libsrc/interface/libinterface.la \
--	$(top_builddir)/libsrc/meshing/libmesh.la \
--	-L$(TK_BIN_DIR)/Togl1.7 $(TOGLLIBDIR) -lTogl $(LIBGLU) $(TK_LIB_SPEC) $(TCL_LIB_SPEC) $(MPI_LIBS) $(FFMPEG_LIBS) $(JPEGLIB_LIBS) $(PKG_LIBS) $(MKL_LIBS) 
--
--
--#
--#	$(top_builddir)/libsrc/occ/liboccvis.la 
--#	$(top_builddir)/libsrc/occ/libocc.la 
--#	$(top_builddir)/libsrc/stlgeom/libstlvis.la 
--#	$(top_builddir)/libsrc/stlgeom/libstl.la 
--#	$(top_builddir)/libsrc/geom2d/libgeom2d.la 
--#	$(top_builddir)/libsrc/geom2d/libgeom2dvis.la 
-+netgen_LDADD = $(top_builddir)/libsrc/visualization/libngvisual.la \
-+	$(top_builddir)/libsrc/csg/libngcsgvis.la \
-+	$(top_builddir)/libsrc/csg/libngcsg.la \
-+	$(top_builddir)/libsrc/interface/libnginterface.la \
-+	$(top_builddir)/libsrc/meshing/libngmesh.la \
-+	$(top_builddir)/libsrc/occ/libngoccvis.la \
-+	$(top_builddir)/libsrc/occ/libngocc.la \
-+	$(top_builddir)/libsrc/stlgeom/libngstlvis.la \
-+	$(top_builddir)/libsrc/stlgeom/libngstl.la \
-+	$(top_builddir)/libsrc/geom2d/libnggeom2d.la \
-+	$(top_builddir)/libsrc/geom2d/libnggeom2dvis.la \
-+	-L$(TK_BIN_DIR)/Togl1.7 $(TOGLLIBDIR) -lTogl1.7 -ldl -lX11 $(LIBGLU) $(TK_LIB_SPEC) $(TCL_LIB_SPEC) $(MPI_LIBS) $(FFMPEG_LIBS) $(JPEGLIB_LIBS) $(PKG_LIBS) $(MKL_LIBS)
- 
- 
- # add for static linkage of ngsolve:
-diff -rupN netgen-5.3.1/nglib/Makefile.am netgen-5.3.1-new/nglib/Makefile.am
---- netgen-5.3.1/nglib/Makefile.am	2014-10-07 21:38:21.552012662 +0200
-+++ netgen-5.3.1-new/nglib/Makefile.am	2014-10-07 21:39:27.915292493 +0200
-@@ -8,15 +8,15 @@ lib_LTLIBRARIES = libnglib.la
- libnglib_la_SOURCES = nglib.cpp 
- 
- libnglib_la_LIBADD = \
--	$(top_builddir)/libsrc/interface/libinterface.la \
--	$(top_builddir)/libsrc/geom2d/libgeom2d.la \
--	$(top_builddir)/libsrc/csg/libcsg.la \
--	$(top_builddir)/libsrc/stlgeom/libstl.la \
--	$(top_builddir)/libsrc/occ/libocc.la \
--	$(top_builddir)/libsrc/meshing/libmesh.la \
-+	$(top_builddir)/libsrc/interface/libnginterface.la \
-+	$(top_builddir)/libsrc/geom2d/libnggeom2d.la \
-+	$(top_builddir)/libsrc/csg/libngcsg.la \
-+	$(top_builddir)/libsrc/stlgeom/libngstl.la \
-+	$(top_builddir)/libsrc/occ/libngocc.la \
-+	$(top_builddir)/libsrc/meshing/libngmesh.la \
- 	$(OCCLIBS) $(MPI_LIBS)
- 
--libnglib_la_LDFLAGS = -avoid-version
-+libnglib_la_LDFLAGS = -release $(PACKAGE_VERSION)
- #  -rdynamic
- 
- 
-@@ -25,24 +25,24 @@ bin_PROGRAMS = ng_vol ng_stl
- 
- ng_vol_SOURCES = ng_vol.cpp
- ng_vol_LDADD = libnglib.la \
--	$(top_builddir)/libsrc/interface/libinterface.la \
--	$(top_builddir)/libsrc/geom2d/libgeom2d.la \
--	$(top_builddir)/libsrc/csg/libcsg.la \
--	$(top_builddir)/libsrc/stlgeom/libstl.la \
--	$(top_builddir)/libsrc/occ/libocc.la \
--	$(top_builddir)/libsrc/meshing/libmesh.la \
-+	$(top_builddir)/libsrc/interface/libnginterface.la \
-+	$(top_builddir)/libsrc/geom2d/libnggeom2d.la \
-+	$(top_builddir)/libsrc/csg/libngcsg.la \
-+	$(top_builddir)/libsrc/stlgeom/libngstl.la \
-+	$(top_builddir)/libsrc/occ/libngocc.la \
-+	$(top_builddir)/libsrc/meshing/libngmesh.la \
- 	$(OCCLIBS) $(MPI_LIBS)
- 
- 
- 
- ng_stl_SOURCES = ng_stl.cpp
- ng_stl_LDADD = libnglib.la \
--	$(top_builddir)/libsrc/interface/libinterface.la \
--	$(top_builddir)/libsrc/geom2d/libgeom2d.la \
--	$(top_builddir)/libsrc/csg/libcsg.la \
--	$(top_builddir)/libsrc/stlgeom/libstl.la \
--	$(top_builddir)/libsrc/occ/libocc.la \
--	$(top_builddir)/libsrc/meshing/libmesh.la \
-+	$(top_builddir)/libsrc/interface/libnginterface.la \
-+	$(top_builddir)/libsrc/geom2d/libnggeom2d.la \
-+	$(top_builddir)/libsrc/csg/libngcsg.la \
-+	$(top_builddir)/libsrc/stlgeom/libngstl.la \
-+	$(top_builddir)/libsrc/occ/libngocc.la \
-+	$(top_builddir)/libsrc/meshing/libngmesh.la \
- 	$(OCCLIBS) $(MPI_LIBS)
- 
- # ng_occ_SOURCES = ng_occ.cpp
diff --git a/netgen-mesher.png b/netgen-mesher.png
new file mode 100644
index 0000000..9adbf7c
Binary files /dev/null and b/netgen-mesher.png differ
diff --git a/netgen-mesher_egg-info-version.patch b/netgen-mesher_egg-info-version.patch
new file mode 100644
index 0000000..8505146
--- /dev/null
+++ b/netgen-mesher_egg-info-version.patch
@@ -0,0 +1,12 @@
+diff -rupN --no-dereference netgen-6.2.2406/CMakeLists.txt netgen-6.2.2406-new/CMakeLists.txt
+--- netgen-6.2.2406/CMakeLists.txt	2024-12-03 18:26:11.508462171 +0100
++++ netgen-6.2.2406-new/CMakeLists.txt	2024-12-03 18:26:11.752455437 +0100
+@@ -641,7 +641,7 @@ if(USE_PYTHON AND NOT SKBUILD)
+   file( WRITE "netgen_mesher-py3.egg-info"
+ "Metadata-Version: 2.1
+ Name: netgen-mesher
+-Version: ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR}.${NETGEN_VERSION_PATCH}.post${NETGEN_VERSION_TWEAK}
++Version: ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR}.${NETGEN_VERSION_PATCH}
+ ")
+   install(FILES netgen_mesher-py3.egg-info DESTINATION ${NG_INSTALL_DIR_PYTHON} COMPONENT netgen)
+ endif()
diff --git a/netgen_fallback-version.patch b/netgen_fallback-version.patch
new file mode 100644
index 0000000..81e1388
--- /dev/null
+++ b/netgen_fallback-version.patch
@@ -0,0 +1,14 @@
+diff -rupN --no-dereference netgen-6.2.2406/cmake/generate_version_file.cmake netgen-6.2.2406-new/cmake/generate_version_file.cmake
+--- netgen-6.2.2406/cmake/generate_version_file.cmake	2024-11-25 17:25:40.000000000 +0100
++++ netgen-6.2.2406-new/cmake/generate_version_file.cmake	2024-12-03 18:26:11.523461757 +0100
+@@ -24,8 +24,8 @@ if(status AND NOT status EQUAL 0)
+       string(REGEX REPLACE "^netgen(.*)" "\\1" git_version_string "${git_version_string}")
+     endif()
+   else()
+-    MESSAGE(WARNING "Could not determine git-version from source code - assuming 6.2.0-0")
+-    set(git_version_string "v6.2.0-0")
++    MESSAGE(WARNING "Could not determine git-version from source code - assuming v6.2.2402")
++    set(git_version_string "v6.2.2402")
+   endif()
+ endif()
+ string(STRIP ${git_version_string} git_version_string)
diff --git a/netgen_include-order.patch b/netgen_include-order.patch
new file mode 100644
index 0000000..f064645
--- /dev/null
+++ b/netgen_include-order.patch
@@ -0,0 +1,49 @@
+diff -rupN --no-dereference netgen-6.2.2406/libsrc/csg/vscsg.cpp netgen-6.2.2406-new/libsrc/csg/vscsg.cpp
+--- netgen-6.2.2406/libsrc/csg/vscsg.cpp	2024-11-25 17:25:40.000000000 +0100
++++ netgen-6.2.2406-new/libsrc/csg/vscsg.cpp	2024-12-03 18:26:11.629458831 +0100
+@@ -1,11 +1,11 @@
+ #include <mystdlib.h>
+-#include "incopengl.hpp"
+ 
+ #include <myadt.hpp>
+ #include <meshing.hpp>
+ #include <csg.hpp>
+ #include <stlgeom.hpp>
+ 
++#include "incopengl.hpp"
+ #include <visual.hpp>
+ 
+ #include "vscsg.hpp"
+diff -rupN --no-dereference netgen-6.2.2406/libsrc/visualization/vsfieldlines.cpp netgen-6.2.2406-new/libsrc/visualization/vsfieldlines.cpp
+--- netgen-6.2.2406/libsrc/visualization/vsfieldlines.cpp	2024-11-25 17:25:40.000000000 +0100
++++ netgen-6.2.2406-new/libsrc/visualization/vsfieldlines.cpp	2024-12-03 18:26:11.630458804 +0100
+@@ -1,7 +1,6 @@
+ #ifndef NOTCL
+ 
+ #include <mystdlib.h>
+-#include <incopengl.hpp>
+ 
+ 
+ #include <myadt.hpp>
+@@ -9,6 +8,7 @@
+ #include <csg.hpp>
+ #include <stlgeom.hpp>
+ 
++#include <incopengl.hpp>
+ #include <visual.hpp>
+ #include <meshing/fieldlines.hpp>
+ 
+diff -rupN --no-dereference netgen-6.2.2406/ng/ngappinit.cpp netgen-6.2.2406-new/ng/ngappinit.cpp
+--- netgen-6.2.2406/ng/ngappinit.cpp	2024-11-25 17:25:40.000000000 +0100
++++ netgen-6.2.2406-new/ng/ngappinit.cpp	2024-12-03 18:26:11.631458776 +0100
+@@ -7,9 +7,9 @@
+ #undef USE_TK_STUBS
+ 
+ #include <mystdlib.h> 
++#include <core/mpi_wrapper.hpp>
+ #include <inctcl.hpp>
+ #include <meshing.hpp>
+-#include <core/mpi_wrapper.hpp>
+ 
+ #include "../libsrc/interface/writeuser.hpp"
+ 
diff --git a/std-namespace.patch b/std-namespace.patch
new file mode 100644
index 0000000..3fe2d59
--- /dev/null
+++ b/std-namespace.patch
@@ -0,0 +1,124 @@
+diff --git a/external_dependencies/.gitignore b/external_dependencies/.gitignore
+deleted file mode 100644
+index 335ec957..00000000
+--- a/external_dependencies/.gitignore
++++ /dev/null
+@@ -1 +0,0 @@
+-*.tar.gz
+diff --git a/ng/encoding.hpp b/ng/encoding.hpp
+index 9ea2ffb5..67bb09e8 100644
+--- a/ng/encoding.hpp
++++ b/ng/encoding.hpp
+@@ -79,7 +79,7 @@ class Mpeg {
+         ret = avcodec_send_frame(enc, frame);
+         if (ret < 0)
+         {
+-            cerr << "Error encoding video frame: " << endl;
++            std::cerr << "Error encoding video frame: " << std::endl;
+             return(1);
+         }
+ 
+@@ -90,7 +90,7 @@ class Mpeg {
+             return 0;
+ 
+         if (ret < 0) {
+-            cerr << "Error encoding video frame: " << endl;
++            std::cerr << "Error encoding video frame: " << std::endl;
+             return 1;
+         }
+ 
+@@ -106,17 +106,17 @@ class Mpeg {
+         }
+ 
+         if (ret < 0) {
+-            cerr << "Error while writing video frame: " << endl;
++            std::cerr << "Error while writing video frame: " << std::endl;
+             return(1);
+         }
+ 
+         return 0;
+     }
+ 
+-    int Start(string filename) {
++    int Start(std::string filename) {
+         AVCodec *video_codec;
+         if(is_started) {
+-            cerr << "Stream already started" << endl;
++            std::cerr << "Stream already started" << std::endl;
+             return 1;
+         }
+         is_started = true;
+@@ -144,19 +144,19 @@ class Mpeg {
+             /* find the encoder */
+             video_codec = (AVCodec*) avcodec_find_encoder(fmt->video_codec);
+             if (!(video_codec)) {
+-                cerr << "Could not find encoder for '" << avcodec_get_name(fmt->video_codec) << "'" << endl;
++                std::cerr << "Could not find encoder for '" << avcodec_get_name(fmt->video_codec) << "'" << std::endl;
+                 return 1;
+             }
+ 
+             st = avformat_new_stream(oc, NULL);
+             if (!st) {
+-                cerr << "Could not allocate stream\n";
++                std::cerr << "Could not allocate stream\n";
+                 return 1;
+             }
+             st->id = oc->nb_streams-1;
+             enc = avcodec_alloc_context3(video_codec);
+             if (!enc) {
+-                cerr << "Could not alloc an encoding context\n";
++                std::cerr << "Could not alloc an encoding context\n";
+                 return 1;
+             }
+ 
+@@ -187,7 +187,7 @@ class Mpeg {
+ //             enc->global_quality = 1180;
+         }
+         else {
+-            cerr << "could not init codecs!" << endl;
++            std::cerr << "could not init codecs!" << std::endl;
+             return 1;
+         }
+ 
+@@ -197,21 +197,21 @@ class Mpeg {
+         ret = avcodec_open2(enc, video_codec, &opt);
+         av_dict_free(&opt);
+         if (ret < 0) {
+-            cerr << "Could not open video codec" << endl;
++            std::cerr << "Could not open video codec" << std::endl;
+             return 1;
+         }
+ 
+         /* allocate and init a re-usable frame */
+         frame = alloc_picture(enc->pix_fmt);
+         if (!frame) {
+-            cerr << "Could not allocate video frame\n";
++            std::cerr << "Could not allocate video frame\n";
+             return 1;
+         }
+ 
+         /* copy the stream parameters to the muxer */
+         ret = avcodec_parameters_from_context(st->codecpar, enc);
+         if (ret < 0) {
+-            cerr << "Could not copy the stream parameters\n";
++            std::cerr << "Could not copy the stream parameters\n";
+             return 1;
+         }
+ 
+@@ -220,14 +220,14 @@ class Mpeg {
+         if (!(fmt->flags & AVFMT_NOFILE)) {
+             ret = avio_open(&oc->pb, filename.c_str(), AVIO_FLAG_WRITE);
+             if (ret < 0) {
+-                cerr << "Could not open " << filename << " : " << endl;
++                std::cerr << "Could not open " << filename << " : " << std::endl;
+                 return 1;
+             }
+         }
+ 
+         ret = avformat_write_header(oc, &opt);
+         if (ret < 0) {
+-            cerr << "Error occurred when opening output file: " << endl;;
++            std::cerr << "Error occurred when opening output file: " << std::endl;;
+             return 1;
+         }
+ 
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/netgen-mesher.git/commitdiff/88b5f9b0680a955dda4c5fc560cfdcb5015380de



More information about the pld-cvs-commit mailing list