[packages/netgen-mesher] - (almost) raw from fc
arekm
arekm at pld-linux.org
Fri Jun 19 12:45:05 CEST 2015
commit 73e3a9b4e643c658abc6f3f9696fcdadca22ac8d
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Fri Jun 19 12:44:49 2015 +0200
- (almost) raw from fc
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.0_netgendir.patch | 18 +
netgen-5.3.0_relative-includes.patch | 18 +
netgen-5.3.1_build.patch | 372 +++++++++++++++
netgen-mesher.desktop | 10 +
netgen-mesher.spec | 349 ++++++++++++++
8 files changed, 1779 insertions(+)
---
diff --git a/netgen-mesher.spec b/netgen-mesher.spec
new file mode 100644
index 0000000..59ff9d8
--- /dev/null
+++ b/netgen-mesher.spec
@@ -0,0 +1,349 @@
+Summary: Automatic mesh generation tool
+Name: netgen-mesher
+Version: 5.3.1
+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
+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
+# Make some includes relative (needed for when headers are in -private subpackage)
+Patch5: netgen-5.3.0_relative-includes.patch
+BuildRequires: Mesa-libGLU-devel
+BuildRequires: OCE-devel
+BuildRequires: Togl-devel
+BuildRequires: autoconf
+BuildRequires: automake
+BuildRequires: desktop-file-utils
+BuildRequires: dos2unix
+BuildRequires: libjpeg-turbo-devel
+BuildRequires: libtool
+BuildRequires: metis-devel
+BuildRequires: mpich-devel
+BuildRequires: tk-devel
+BuildRequires: xorg-lib-libXmu-devel
+Requires: %{name}-common = %{version}-%{release}
+Requires: %{name}-libs = %{version}-%{release}
+
+%description
+NETGEN is an automatic 3d tetrahedral mesh generator. It accepts input
+from constructive solid geometry (CSG) or boundary representation
+(BRep) from STL file format. The connection to a geometry kernel
+allows the handling of IGES and STEP files. NETGEN contains modules
+for mesh optimization and hierarchical mesh refinement.
+
+%package common
+Summary: Common files for netgen
+Requires: hicolor-icon-theme
+Requires: tix
+BuildArch: noarch
+
+%description common
+Common files for netgen.
+
+%package libs
+Summary: Netgen libraries
+
+%description libs
+Netgen libraries.
+
+%package devel
+Summary: Development files for netgen
+Requires: %{name} = %{version}-%{release}
+
+%description devel
+Development files for netgen.
+
+%package devel-private
+Summary: Private headers of netgen
+Requires: %{name}-devel = %{version}-%{release}
+
+%description devel-private
+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
+Requires: %{name}-common = %{version}-%{release}
+Requires: %{name}-mpich-libs = %{version}-%{release}
+Requires: mpich
+
+%description mpich
+Netgen compiled against mpich.
+
+%package mpich-libs
+Summary: Netgen libraries compiled against mpich
+
+%description mpich-libs
+Netgen libraries compiled against mpich.
+
+%package mpich-devel
+Summary: Development files for Netgen compiled against mpich
+# Require explicitly for dir ownership
+Requires: %{name}-mpich = %{version}-%{release}
+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
+
+
+%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}
+
+### mpich version ###
+%{_mpich_load}
+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}
+
+%install
+%define writepkgconfig() \
+rm -rf $RPM_BUILD_ROOT
+install -d $RPM_BUILD_ROOT/$MPI_LIB/pkgconfig; \
+cat > $RPM_BUILD_ROOT/$MPI_LIB/pkgconfig/%{name}.pc << EOF\
+prefix=%{_prefix}\
+exec_prefix=${prefix}\
+libdir=$MPI_LIB\
+includedir=$MPI_INCLUDE/%{name}\
+\
+Name: %{name}\
+Description: %{summary}\
+Version: %{version}\
+Libs: -L\\\${libdir} -lnglib\
+Libs.private: -lngcgs -lnggeom2d -lngmesh -lngocc -lngstl\
+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
+%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}
+
+### serial version ###
+%{__make} install \
+ DESTDIR=$RPM_BUILD_ROOT -C serial
+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
+
+# Delete the doc folder, the files are in %%doc below
+rm -rf $RPM_BUILD_ROOT/%{_docdir}
+
+# Install private headers
+(
+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/{} \;
+)
+
+
+%post common
+%update_desktop_database
+/bin/%update_icon_cache_post hicolor &>/dev/null || :
+
+%postun common
+%update_desktop_database
+if [ $1 -eq 0 ] ; then
+ /bin/%update_icon_cache_post hicolor &>/dev/null
+ %{_bindir}/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+fi
+
+%posttrans common
+%{_bindir}/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+
+
+%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
+
+%files common
+%defattr(644,root,root,755)
+%doc AUTHORS doc/ng4.pdf
+%{_datadir}/%{name}/
+%{_iconsdir}/hicolor/48x48/apps/%{name}.png
+%{_desktopdir}/%{name}.desktop
+
+%files
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/*
+
+%files libs
+%defattr(644,root,root,755)
+%{_libdir}/*.so.*
+%{_libdir}/libnglib-%{version}.so
+
+%files devel
+%defattr(644,root,root,755)
+%{_includedir}/%{name}
+%exclude %{_includedir}/%{name}/private
+%{_libdir}/*.so
+%exclude %{_libdir}/libnglib-%{version}.so
+%{_pkgconfigdir}/%{name}.pc
+
+%files devel-private
+%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
+
+%files mpich
+%defattr(644,root,root,755)
+%{_libdir}/mpich/bin/*
+
+%files mpich-libs
+%defattr(644,root,root,755)
+%{_libdir}/mpich/lib/*.so.*
+%{_libdir}/mpich/lib/libnglib-%{version}.so
+
+%files mpich-devel
+%defattr(644,root,root,755)
+%{_includedir}/mpich*/%{name}
+%{_libdir}/mpich/lib/*.so
+%{_libdir}/mpich/lib/pkgconfig/%{name}.pc
+%exclude %{_libdir}/mpich/lib/libnglib-%{version}.so
diff --git a/netgen-5.3.0_fixes.patch b/netgen-5.3.0_fixes.patch
new file mode 100644
index 0000000..a1e146f
--- /dev/null
+++ b/netgen-5.3.0_fixes.patch
@@ -0,0 +1,887 @@
+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
new file mode 100644
index 0000000..96ee961
--- /dev/null
+++ b/netgen-5.3.0_metis.patch
@@ -0,0 +1,94 @@
+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
new file mode 100644
index 0000000..f05c007
--- /dev/null
+++ b/netgen-5.3.0_msc-ver.patch
@@ -0,0 +1,31 @@
+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.0_netgendir.patch b/netgen-5.3.0_netgendir.patch
new file mode 100644
index 0000000..29687f2
--- /dev/null
+++ b/netgen-5.3.0_netgendir.patch
@@ -0,0 +1,18 @@
+diff -rupN netgen-5.3.0/ng/ngappinit.cpp netgen-5.3.0-new/ng/ngappinit.cpp
+--- netgen-5.3.0/ng/ngappinit.cpp 2014-09-01 20:54:49.511249194 +0200
++++ netgen-5.3.0-new/ng/ngappinit.cpp 2014-09-01 21:03:21.679227844 +0200
+@@ -148,9 +148,11 @@ int main(int argc, char ** argv)
+
+ if (getenv ("NETGENDIR") && strlen (getenv ("NETGENDIR")))
+ ngdir = getenv ("NETGENDIR");
+- else
+- ngdir = ".";
+-
++ else {
++ ngdir = "/usr/share/netgen-mesher";
++ setenv("NETGENDIR", ngdir.c_str(), 1);
++ }
++
+ verbose = parameters.GetDefineFlag ("V");
+
+ if (verbose)
diff --git a/netgen-5.3.0_relative-includes.patch b/netgen-5.3.0_relative-includes.patch
new file mode 100644
index 0000000..602f9a1
--- /dev/null
+++ b/netgen-5.3.0_relative-includes.patch
@@ -0,0 +1,18 @@
+diff -rupN netgen-5.1/libsrc/include/meshing.hpp netgen-5.1-new/libsrc/include/meshing.hpp
+--- netgen-5.1/libsrc/include/meshing.hpp 2013-06-25 13:28:58.000000000 +0200
++++ netgen-5.1-new/libsrc/include/meshing.hpp 2014-06-14 14:05:30.481877485 +0200
+@@ -1 +1 @@
+-#include <../meshing/meshing.hpp>
++#include "../meshing/meshing.hpp"
+diff -rupN netgen-5.1/libsrc/include/myadt.hpp netgen-5.1-new/libsrc/include/myadt.hpp
+--- netgen-5.1/libsrc/include/myadt.hpp 2013-06-25 13:28:58.000000000 +0200
++++ netgen-5.1-new/libsrc/include/myadt.hpp 2014-06-14 14:04:39.274878998 +0200
+@@ -1 +1 @@
+-#include <../general/myadt.hpp>
++#include "../general/myadt.hpp"
+diff -rupN netgen-5.1/libsrc/include/stlgeom.hpp netgen-5.1-new/libsrc/include/stlgeom.hpp
+--- netgen-5.1/libsrc/include/stlgeom.hpp 2013-06-25 13:28:58.000000000 +0200
++++ netgen-5.1-new/libsrc/include/stlgeom.hpp 2014-06-14 14:05:18.911877827 +0200
+@@ -1 +1 @@
+-#include <../stlgeom/stlgeom.hpp>
++#include "../stlgeom/stlgeom.hpp"
diff --git a/netgen-5.3.1_build.patch b/netgen-5.3.1_build.patch
new file mode 100644
index 0000000..dd8d395
--- /dev/null
+++ b/netgen-5.3.1_build.patch
@@ -0,0 +1,372 @@
+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.desktop b/netgen-mesher.desktop
new file mode 100644
index 0000000..e0a2341
--- /dev/null
+++ b/netgen-mesher.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Version=1.0
+Name=Netgen
+GenericName=Mesh Generator
+Comment=3D finite element mesh generator
+Exec=netgen-mesher
+Icon=netgen-mesher
+Type=Application
+Terminal=false
+Categories=Science;Engineering;
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/netgen-mesher.git/commitdiff/73e3a9b4e643c658abc6f3f9696fcdadca22ac8d
More information about the pld-cvs-commit
mailing list