Compare commits
16 Commits
master
...
V3_2_6pre4
Author | SHA1 | Date | |
---|---|---|---|
![]() |
861e381989 | ||
![]() |
2c929246f6 | ||
![]() |
c2c6bf25cc | ||
![]() |
59ab1d8e2b | ||
![]() |
29bdee2b25 | ||
![]() |
3797701125 | ||
![]() |
7004be4f8a | ||
![]() |
27a9ce955f | ||
![]() |
41ac578763 | ||
![]() |
566aa2640b | ||
![]() |
0b1c10baab | ||
![]() |
33346e31ba | ||
![]() |
1dd5913e4e | ||
![]() |
9ab44e1f03 | ||
![]() |
30b91f7405 | ||
![]() |
a1bb961bcb |
145
adm_local/unix/config_files/check_NETGEN.m4
Normal file
145
adm_local/unix/config_files/check_NETGEN.m4
Normal file
@ -0,0 +1,145 @@
|
||||
AC_DEFUN([CHECK_NETGEN],[
|
||||
|
||||
AC_REQUIRE([AC_PROG_CXX])dnl
|
||||
AC_REQUIRE([AC_PROG_CXXCPP])dnl
|
||||
|
||||
AC_CHECKING(for Netgen 4.5 and higher Libraries)
|
||||
|
||||
AC_LANG_SAVE
|
||||
AC_LANG_CPLUSPLUS
|
||||
|
||||
AC_ARG_WITH(netgen,
|
||||
[ --with-netgen=DIR root directory path of NETGEN installation],
|
||||
NETGEN_HOME=$withval,NETGEN_HOME="")
|
||||
|
||||
NETGEN_INCLUDES=""
|
||||
NETGEN_LIBS_DIR=""
|
||||
|
||||
Netgen_ok=no
|
||||
|
||||
if test "x$NETGEN_HOME" == "x" ; then
|
||||
|
||||
# no --with-netgen option used
|
||||
if test "x$NETGENHOME" != "x" ; then
|
||||
|
||||
# NETGENHOME environment variable defined
|
||||
NETGEN_HOME=$NETGENHOME
|
||||
|
||||
fi
|
||||
#
|
||||
fi
|
||||
|
||||
if test "x$NETGEN_HOME" != "x"; then
|
||||
|
||||
echo
|
||||
echo
|
||||
echo -------------------------------------------------
|
||||
echo You are about to choose to use somehow the
|
||||
echo Netgen Library to generate Tetrahedric mesh.
|
||||
echo
|
||||
echo WARNING
|
||||
echo ----------------------------------------------------------
|
||||
echo ----------------------------------------------------------
|
||||
echo You are strongly advised to consult the file
|
||||
echo NETGENPLUGIN_SRC/src/NETGEN/ReadMeForNgUsers, particularly about
|
||||
echo assumptions made on the installation of the Netgen
|
||||
echo application and libraries.
|
||||
echo Ask your system administrator for those details.
|
||||
echo ----------------------------------------------------------
|
||||
echo ----------------------------------------------------------
|
||||
echo
|
||||
echo
|
||||
|
||||
|
||||
|
||||
NETGEN_INCLUDES="-I${NETGEN_HOME}/include"
|
||||
|
||||
# check ${NETGEN_HOME}/lib/LINUX directory for libraries
|
||||
if test -f ${NETGEN_HOME}/lib/LINUX/libcsg.a ; then
|
||||
NETGEN_LIBS_DIR="${NETGEN_HOME}/lib/LINUX"
|
||||
else
|
||||
# check ${NETGEN_HOME}/lib/LINUX64 directory for libraries
|
||||
if test -f ${NETGEN_HOME}/lib/LINUX64/libcsg.a ; then
|
||||
NETGEN_LIBS_DIR="${NETGEN_HOME}/lib/LINUX64"
|
||||
else
|
||||
NETGEN_LIBS_DIR="${NETGEN_HOME}/lib"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "NETGEN_LIBS_DIR = $NETGEN_LIBS_DIR"
|
||||
|
||||
CPPFLAGS_old="$CPPFLAGS"
|
||||
CXXFLAGS_old="$CXXFLAGS"
|
||||
CPPFLAGS="$NETGEN_INCLUDES $CAS_CPPFLAGS $CPPFLAGS"
|
||||
CXXFLAGS="$NETGEN_INCLUDES $CAS_CPPFLAGS $CXXFLAGS"
|
||||
|
||||
AC_MSG_CHECKING(for Netgen header file)
|
||||
|
||||
AC_CHECK_HEADER(nglib.h,Netgen_ok=yes,Netgen_ok=no)
|
||||
if test "x$Netgen_ok" == "xyes"; then
|
||||
|
||||
AC_MSG_CHECKING(for Netgen libraries)
|
||||
|
||||
LDFLAGS_old="$LDFLAGS"
|
||||
LDFLAGS="-L. -lNETGEN $CAS_LDPATH -lTKBRep -lTKShHealing -lTKSTEP -lTKXSBase -lTKIGES -lTKSTL -lTKTopAlgo $LDFLAGS"
|
||||
|
||||
AC_TRY_COMPILE(#include <iostream.h>
|
||||
#include <fstream.h>
|
||||
namespace nglib {
|
||||
#include "nglib.h"
|
||||
}
|
||||
#define OCCGEOMETRY
|
||||
#include <occgeom.hpp>
|
||||
,nglib::Ng_Init();
|
||||
netgen::OCCGeometry occgeo;
|
||||
nglib::Ng_Exit();,Netgen_ok=yes;ar x "$NETGEN_LIBS_DIR/libnginterface.a";
|
||||
ar x "$NETGEN_LIBS_DIR/libocc.a";
|
||||
ar x "$NETGEN_LIBS_DIR/libcsg.a";
|
||||
ar x "$NETGEN_LIBS_DIR/libgprim.a";
|
||||
ar x "$NETGEN_LIBS_DIR/libmesh.a";
|
||||
ar x "$NETGEN_LIBS_DIR/libopti.a";
|
||||
ar x "$NETGEN_LIBS_DIR/libgen.a";
|
||||
ar x "$NETGEN_LIBS_DIR/libla.a";
|
||||
ar x "$NETGEN_LIBS_DIR/libstlgeom.a";
|
||||
ar x "$NETGEN_LIBS_DIR/libgeom2d.a";
|
||||
$CXX -shared linopt.o bfgs.o linsearch.o global.o bisect.o meshtool.o refine.o ruler3.o improve3.o adfront3.o tetrarls.o prism2rls.o profiler.o pyramidrls.o pyramid2rls.o netrule3.o ruler2.o meshclass.o improve2.o adfront2.o netrule2.o triarls.o geomsearch.o secondorder.o meshtype.o parser3.o quadrls.o specials.o parser2.o meshing2.o meshing3.o meshfunc.o localh.o improve2gen.o delaunay.o boundarylayer.o msghandler.o meshfunc2d.o smoothing2.o smoothing3.o topology.o curvedelems_new.o clusters.o zrefine.o ngexception.o geomtest3d.o geom2d.o geom2dmesh.o geom3d.o adtree.o transform3d.o geomfuncs.o polynomial.o densemat.o vector.o basemat.o sparsmat.o algprim.o brick.o manifold.o bspline2d.o meshsurf.o csgeom.o polyhedra.o curve2d.o singularref.o edgeflw.o solid.o explicitcurve2d.o specpoin.o gencyl.o revolution.o genmesh.o genmesh2d.o spline3d.o surface.o identify.o triapprox.o meshstlsurface.o stlline.o stltopology.o stltool.o stlgeom.o stlgeomchart.o stlgeommesh.o table.o optmem.o spbita2d.o hashtabl.o sort.o flags.o seti.o bitarray.o array.o symbolta.o mystring.o moveablemem.o spline.o splinegeometry.o ngnewdelete.o nglib.o hprefinement.o Partition_Inter2d.o Partition_Loop.o Partition_Loop3d.o Partition_Inter3d.o Partition_Loop2d.o Partition_Spliter.o occgeom.o occgenmesh.o occmeshsurf.o -o libNETGEN.so;
|
||||
rm -rf linopt.o bfgs.o linsearch.o global.o bisect.o meshtool.o refine.o ruler3.o improve3.o adfront3.o tetrarls.o prism2rls.o profiler.o pyramidrls.o pyramid2rls.o netrule3.o ruler2.o meshclass.o improve2.o adfront2.o netrule2.o triarls.o geomsearch.o secondorder.o meshtype.o parser3.o quadrls.o specials.o parser2.o meshing2.o meshing3.o meshfunc.o localh.o improve2gen.o delaunay.o boundarylayer.o msghandler.o meshfunc2d.o smoothing2.o smoothing3.o topology.o curvedelems_new.o clusters.o zrefine.o ngexception.o geomtest3d.o geom2d.o geom2dmesh.o geom3d.o adtree.o transform3d.o geomfuncs.o polynomial.o densemat.o vector.o basemat.o sparsmat.o algprim.o brick.o manifold.o bspline2d.o meshsurf.o csgeom.o polyhedra.o curve2d.o singularref.o edgeflw.o solid.o explicitcurve2d.o specpoin.o gencyl.o revolution.o genmesh.o genmesh2d.o spline3d.o surface.o identify.o triapprox.o meshstlsurface.o stlline.o stltopology.o stltool.o stlgeom.o stlgeomchart.o stlgeommesh.o table.o optmem.o spbita2d.o hashtabl.o sort.o flags.o seti.o bitarray.o array.o symbolta.o mystring.o moveablemem.o spline.o splinegeometry.o ngnewdelete.o nglib.o hprefinement.o Partition_Inter2d.o Partition_Loop.o Partition_Loop3d.o Partition_Inter3d.o Partition_Loop2d.o Partition_Spliter.o occgeom.o occgenmesh.o occmeshsurf.o csgparser.o dynamicmem.o extrusion.o occconstruction.o parthreads.o readuser.o writeabaqus.o writediffpack.o writeelmer.o writefeap.o writefluent.o writegmsh.o writejcm.o writepermas.o writetecplot.o writetochnog.o writeuser.o wuchemnitz.o,
|
||||
Netgen_ok=no)
|
||||
|
||||
AC_CACHE_VAL(salome_netgen_lib,[
|
||||
AC_TRY_LINK(
|
||||
#include <iostream.h>
|
||||
#include <fstream.h>
|
||||
namespace nglib {
|
||||
#include "nglib.h"
|
||||
}
|
||||
#define OCCGEOMETRY
|
||||
#include <occgeom.hpp>
|
||||
,nglib::Ng_Init();
|
||||
netgen::OCCGeometry occgeo;
|
||||
nglib::Ng_Exit();,
|
||||
eval "salome_netgen_lib=yes";rm -rf libNETGEN.so,eval "salome_netgen_lib=no";rm -rf libNETGEN.so)
|
||||
])
|
||||
Netgen_ok="$salome_netgen_lib"
|
||||
|
||||
|
||||
LDFLAGS="$LDFLAGS_old"
|
||||
fi
|
||||
|
||||
CPPFLAGS="$CPPFLAGS_old"
|
||||
CXXFLAGS="$CXXFLAGS_old"
|
||||
|
||||
if test "x$Netgen_ok" == xno ; then
|
||||
AC_MSG_RESULT(no)
|
||||
AC_MSG_WARN(Netgen libraries not found or not properly installed)
|
||||
else
|
||||
AC_MSG_RESULT(yes)
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(NETGEN_INCLUDES)
|
||||
AC_SUBST(NETGEN_LIBS_DIR)
|
||||
|
||||
AC_LANG_RESTORE
|
||||
|
||||
])dnl
|
@ -1,132 +1,53 @@
|
||||
AC_DEFUN([CHECK_NETGEN],[
|
||||
#------------------------------------------------------------
|
||||
# Check availability of Salome NETGEN mesh plugin module
|
||||
# distribution
|
||||
#------------------------------------------------------------
|
||||
|
||||
AC_REQUIRE([AC_PROG_CXX])dnl
|
||||
AC_REQUIRE([AC_PROG_CXXCPP])dnl
|
||||
AC_DEFUN([CHECK_NETGENPLUGIN],[
|
||||
|
||||
AC_CHECKING(for Netgen 4.5 and higher Libraries)
|
||||
AC_CHECKING(for NETGEN mesh plugin)
|
||||
|
||||
AC_LANG_SAVE
|
||||
AC_LANG_CPLUSPLUS
|
||||
NGplugin_ok=no
|
||||
|
||||
AC_ARG_WITH(netgen,
|
||||
[ --with-netgen=DIR root directory path of NETGEN installation],
|
||||
NETGEN_HOME=$withval,NETGEN_HOME="")
|
||||
NETGENPLUGIN_LDLAGS=""
|
||||
NETGENPLUGIN_CXXFLAGS=""
|
||||
|
||||
NETGEN_INCLUDES=""
|
||||
NETGEN_LIBS_DIR=""
|
||||
AC_ARG_WITH(netgenplugin,
|
||||
[ --with-netgenplugin=DIR root directory path of NETGEN mesh plugin installation ],
|
||||
NETGENPLUGIN_DIR="$withval",NETGENPLUGIN_DIR="")
|
||||
|
||||
Netgen_ok=no
|
||||
if test "x$NETGENPLUGIN_DIR" == "x" ; then
|
||||
|
||||
if test "x$NETGEN_HOME" == "x" ; then
|
||||
# no --with-netgenplugin-dir option used
|
||||
|
||||
# no --with-netgen option used
|
||||
if test "x$NETGENHOME" != "x" ; then
|
||||
if test "x$NETGENPLUGIN_ROOT_DIR" != "x" ; then
|
||||
|
||||
# NETGENHOME environment variable defined
|
||||
NETGEN_HOME=$NETGENHOME
|
||||
# NETGENPLUGIN_ROOT_DIR environment variable defined
|
||||
NETGENPLUGIN_DIR=$NETGENPLUGIN_ROOT_DIR
|
||||
|
||||
fi
|
||||
#
|
||||
fi
|
||||
|
||||
if test "x$NETGEN_HOME" != "x"; then
|
||||
if test -f ${NETGENPLUGIN_DIR}/lib${LIB_LOCATION_SUFFIX}/salome/libNETGENEngine.so ; then
|
||||
NGplugin_ok=yes
|
||||
AC_MSG_RESULT(Using NETGEN mesh plugin distribution in ${NETGENPLUGIN_DIR})
|
||||
|
||||
echo
|
||||
echo
|
||||
echo -------------------------------------------------
|
||||
echo You are about to choose to use somehow the
|
||||
echo Netgen Library to generate Tetrahedric mesh.
|
||||
echo
|
||||
echo WARNING
|
||||
echo ----------------------------------------------------------
|
||||
echo ----------------------------------------------------------
|
||||
echo You are strongly advised to consult the file
|
||||
echo NETGENPLUGIN_SRC/src/ReadMeForNgUsers, particularly about
|
||||
echo assumptions made on the installation of the Netgen
|
||||
echo application and libraries.
|
||||
echo Ask your system administrator for those details.
|
||||
echo ----------------------------------------------------------
|
||||
echo ----------------------------------------------------------
|
||||
echo
|
||||
echo
|
||||
|
||||
|
||||
|
||||
NETGEN_INCLUDES="-I$NETGEN_HOME/include"
|
||||
NETGEN_LIBS_DIR="$NETGEN_HOME/lib/LINUX"
|
||||
|
||||
CPPFLAGS_old="$CPPFLAGS"
|
||||
CXXFLAGS_old="$CXXFLAGS"
|
||||
CPPFLAGS="$NETGEN_INCLUDES $CAS_CPPFLAGS $CPPFLAGS"
|
||||
CXXFLAGS="$NETGEN_INCLUDES $CAS_CPPFLAGS $CXXFLAGS"
|
||||
|
||||
AC_MSG_CHECKING(for Netgen header file)
|
||||
|
||||
AC_CHECK_HEADER(nglib.h,Netgen_ok=yes,Netgen_ok=no)
|
||||
if test "x$Netgen_ok" == "xyes"; then
|
||||
|
||||
AC_MSG_CHECKING(for Netgen libraries)
|
||||
|
||||
LDFLAGS_old="$LDFLAGS"
|
||||
LDFLAGS="-L. -lNETGEN $CAS_LDPATH -lTKBRep -lTKShHealing -lTKSTEP -lTKXSBase -lTKIGES -lTKSTL -lTKTopAlgo $LDFLAGS"
|
||||
|
||||
AC_TRY_COMPILE(#include <iostream.h>
|
||||
#include <fstream.h>
|
||||
namespace nglib {
|
||||
#include "nglib.h"
|
||||
}
|
||||
#define OCCGEOMETRY
|
||||
#include <occgeom.hpp>
|
||||
,nglib::Ng_Init();
|
||||
netgen::OCCGeometry occgeo;
|
||||
nglib::Ng_Exit();,Netgen_ok=yes;ar x "$NETGEN_LIBS_DIR/libnginterface.a";
|
||||
ar x "$NETGEN_LIBS_DIR/libocc.a";
|
||||
ar x "$NETGEN_LIBS_DIR/libcsg.a";
|
||||
ar x "$NETGEN_LIBS_DIR/libgprim.a";
|
||||
ar x "$NETGEN_LIBS_DIR/libmesh.a";
|
||||
ar x "$NETGEN_LIBS_DIR/libopti.a";
|
||||
ar x "$NETGEN_LIBS_DIR/libgen.a";
|
||||
ar x "$NETGEN_LIBS_DIR/libla.a";
|
||||
ar x "$NETGEN_LIBS_DIR/libstlgeom.a";
|
||||
ar x "$NETGEN_LIBS_DIR/libgeom2d.a";
|
||||
$CXX -shared linopt.o bfgs.o linsearch.o global.o bisect.o meshtool.o refine.o ruler3.o improve3.o adfront3.o tetrarls.o prism2rls.o profiler.o pyramidrls.o pyramid2rls.o netrule3.o ruler2.o meshclass.o improve2.o adfront2.o netrule2.o triarls.o geomsearch.o secondorder.o meshtype.o parser3.o quadrls.o specials.o parser2.o meshing2.o meshing3.o meshfunc.o localh.o improve2gen.o delaunay.o boundarylayer.o msghandler.o meshfunc2d.o smoothing2.o smoothing3.o topology.o curvedelems_new.o clusters.o zrefine.o ngexception.o geomtest3d.o geom2d.o geom2dmesh.o geom3d.o adtree.o transform3d.o geomfuncs.o polynomial.o densemat.o vector.o basemat.o sparsmat.o algprim.o brick.o manifold.o bspline2d.o meshsurf.o csgeom.o polyhedra.o curve2d.o singularref.o edgeflw.o solid.o explicitcurve2d.o specpoin.o gencyl.o revolution.o genmesh.o genmesh2d.o spline3d.o surface.o identify.o triapprox.o meshstlsurface.o stlline.o stltopology.o stltool.o stlgeom.o stlgeomchart.o stlgeommesh.o table.o optmem.o spbita2d.o hashtabl.o sort.o flags.o seti.o bitarray.o array.o symbolta.o mystring.o moveablemem.o spline.o splinegeometry.o ngnewdelete.o nglib.o hprefinement.o Partition_Inter2d.o Partition_Loop.o Partition_Loop3d.o Partition_Inter3d.o Partition_Loop2d.o Partition_Spliter.o occgeom.o occgenmesh.o occmeshsurf.o -o libNETGEN.so;
|
||||
rm -rf linopt.o bfgs.o linsearch.o global.o bisect.o meshtool.o refine.o ruler3.o improve3.o adfront3.o tetrarls.o prism2rls.o profiler.o pyramidrls.o pyramid2rls.o netrule3.o ruler2.o meshclass.o improve2.o adfront2.o netrule2.o triarls.o geomsearch.o secondorder.o meshtype.o parser3.o quadrls.o specials.o parser2.o meshing2.o meshing3.o meshfunc.o localh.o improve2gen.o delaunay.o boundarylayer.o msghandler.o meshfunc2d.o smoothing2.o smoothing3.o topology.o curvedelems_new.o clusters.o zrefine.o ngexception.o geomtest3d.o geom2d.o geom2dmesh.o geom3d.o adtree.o transform3d.o geomfuncs.o polynomial.o densemat.o vector.o basemat.o sparsmat.o algprim.o brick.o manifold.o bspline2d.o meshsurf.o csgeom.o polyhedra.o curve2d.o singularref.o edgeflw.o solid.o explicitcurve2d.o specpoin.o gencyl.o revolution.o genmesh.o genmesh2d.o spline3d.o surface.o identify.o triapprox.o meshstlsurface.o stlline.o stltopology.o stltool.o stlgeom.o stlgeomchart.o stlgeommesh.o table.o optmem.o spbita2d.o hashtabl.o sort.o flags.o seti.o bitarray.o array.o symbolta.o mystring.o moveablemem.o spline.o splinegeometry.o ngnewdelete.o nglib.o hprefinement.o Partition_Inter2d.o Partition_Loop.o Partition_Loop3d.o Partition_Inter3d.o Partition_Loop2d.o Partition_Spliter.o occgeom.o occgenmesh.o occmeshsurf.o csgparser.o dynamicmem.o extrusion.o occconstruction.o parthreads.o readuser.o writeabaqus.o writediffpack.o writeelmer.o writefeap.o writefluent.o writegmsh.o writejcm.o writepermas.o writetecplot.o writetochnog.o writeuser.o wuchemnitz.o,
|
||||
Netgen_ok=no)
|
||||
|
||||
AC_CACHE_VAL(salome_netgen_lib,[
|
||||
AC_TRY_LINK(
|
||||
#include <iostream.h>
|
||||
#include <fstream.h>
|
||||
namespace nglib {
|
||||
#include "nglib.h"
|
||||
}
|
||||
#define OCCGEOMETRY
|
||||
#include <occgeom.hpp>
|
||||
,nglib::Ng_Init();
|
||||
netgen::OCCGeometry occgeo;
|
||||
nglib::Ng_Exit();,
|
||||
eval "salome_netgen_lib=yes";rm -rf libNETGEN.so,eval "salome_netgen_lib=no";rm -rf libNETGEN.so)
|
||||
])
|
||||
Netgen_ok="$salome_netgen_lib"
|
||||
|
||||
|
||||
LDFLAGS="$LDFLAGS_old"
|
||||
if test "x$NETGENPLUGIN_ROOT_DIR" == "x" ; then
|
||||
NETGENPLUGIN_ROOT_DIR=${NETGENPLUGIN_DIR}
|
||||
fi
|
||||
AC_SUBST(NETGENPLUGIN_ROOT_DIR)
|
||||
|
||||
CPPFLAGS="$CPPFLAGS_old"
|
||||
CXXFLAGS="$CXXFLAGS_old"
|
||||
NETGENPLUGIN_LDFLAGS=-L${NETGENPLUGIN_DIR}/lib${LIB_LOCATION_SUFFIX}/salome
|
||||
NETGENPLUGIN_CXXFLAGS=-I${NETGENPLUGIN_DIR}/include/salome
|
||||
|
||||
AC_SUBST(NETGENPLUGIN_LDFLAGS)
|
||||
AC_SUBST(NETGENPLUGIN_CXXFLAGS)
|
||||
|
||||
if test "x$Netgen_ok" == xno ; then
|
||||
AC_MSG_RESULT(no)
|
||||
AC_MSG_WARN(Netgen libraries not found or not properly installed)
|
||||
else
|
||||
AC_MSG_RESULT(yes)
|
||||
fi
|
||||
AC_MSG_WARN("Cannot find compiled NETGEN mesh plugin distribution")
|
||||
fi
|
||||
|
||||
AC_SUBST(NETGEN_INCLUDES)
|
||||
AC_SUBST(NETGEN_LIBS_DIR)
|
||||
|
||||
AC_LANG_RESTORE
|
||||
AC_MSG_RESULT(for NETGEN mesh plugin: $NGplugin_ok)
|
||||
|
||||
])dnl
|
||||
|
@ -1,6 +1,8 @@
|
||||
# common directories to put headerfiles
|
||||
inc_builddir=$(top_builddir)/include/salome
|
||||
|
||||
MODULE_NAME=@MODULE_NAME@
|
||||
|
||||
@SET_MAKE@
|
||||
SHELL=/bin/sh
|
||||
|
||||
@ -10,7 +12,7 @@ HAVE_SSTREAM=@HAVE_SSTREAM@
|
||||
|
||||
|
||||
LIBS=@LIBS@
|
||||
LDFLAGS=@LDFLAGS@ -L$(top_builddir)/lib/salome -Xlinker -rpath-link -Xlinker $(top_builddir)/lib/salome
|
||||
LDFLAGS=@LDFLAGS@ -L$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome -Xlinker -rpath-link -Xlinker $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome
|
||||
# add libstdc++ to link c++ library with libtool !
|
||||
LDFLAGS+= -lstdc++
|
||||
|
||||
@ -34,6 +36,15 @@ CXX = @CXX@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CXX_DEPEND_FLAG = @CXX_DEPEND_FLAG@
|
||||
|
||||
# FORTRAN
|
||||
|
||||
F77 = @F77@
|
||||
FC = @FC@
|
||||
FFLAGS = @FFLAGS@
|
||||
FCFLAGS = @FCFLAGS@
|
||||
FLIBS = @FLIBS@
|
||||
FCLIBS = @FCLIBS@
|
||||
|
||||
# BOOST Library
|
||||
|
||||
BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
|
||||
@ -173,7 +184,7 @@ SALOME_INCLUDES = \
|
||||
CPPFLAGS += -DSOLIDGEOM -DLINUX $(OCC_INCLUDES) $(SALOME_INCLUDES) $(BOOST_CPPFLAGS)
|
||||
CXXFLAGS += -DSOLIDGEOM -DLINUX $(OCC_CXXFLAGS) $(SALOME_INCLUDES)
|
||||
|
||||
LDFLAGS += -lSMESHimpl -lSMESHEngine -lStdMeshers -lStdMeshersEngine -L${KERNEL_ROOT_DIR}/lib/salome -L${SMESH_ROOT_DIR}/lib/salome -L${GEOM_ROOT_DIR}/lib/salome -lSalomeGenericObj
|
||||
LDFLAGS += -lSMESHimpl -lSMESHEngine -lStdMeshers -lStdMeshersEngine -L${KERNEL_ROOT_DIR}/lib@LIB_LOCATION_SUFFIX@/salome -L${SMESH_ROOT_DIR}/lib@LIB_LOCATION_SUFFIX@/salome -L${GEOM_ROOT_DIR}/lib@LIB_LOCATION_SUFFIX@/salome -lSalomeGenericObj
|
||||
|
||||
# add corba libs when link salome application !
|
||||
#LDFLAGS+= $(CORBA_LIBS)
|
||||
@ -203,7 +214,7 @@ LN_S=@LN_S@
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
bindir=@bindir@/salome
|
||||
libdir=@libdir@/salome
|
||||
libdir=@exec_prefix@/lib@LIB_LOCATION_SUFFIX@/salome
|
||||
# warning : if user give this path in configure we could have salome/salome :-(
|
||||
includedir=@includedir@/salome
|
||||
datadir=@datadir@/salome
|
||||
|
@ -22,11 +22,15 @@ AC_CANONICAL_HOST
|
||||
PACKAGE=salome
|
||||
AC_SUBST(PACKAGE)
|
||||
|
||||
VERSION=3.2.0
|
||||
XVERSION=0x030200
|
||||
VERSION=3.2.6
|
||||
XVERSION=0x030206
|
||||
AC_SUBST(VERSION)
|
||||
AC_SUBST(XVERSION)
|
||||
|
||||
# set up MODULE_NAME variable for dynamic construction of directories (resources, etc.)
|
||||
MODULE_NAME=netgenplugin
|
||||
AC_SUBST(MODULE_NAME)
|
||||
|
||||
dnl
|
||||
dnl Initialize source and build root directories
|
||||
dnl
|
||||
@ -102,6 +106,23 @@ AC_DEPEND_FLAG
|
||||
# AC_CC_WARNINGS([ansi])
|
||||
cc_ok=yes
|
||||
|
||||
echo
|
||||
echo ---------------------------------------------
|
||||
echo testing Fortran
|
||||
echo ---------------------------------------------
|
||||
echo
|
||||
|
||||
fortran_ok=no
|
||||
AC_PROG_F77
|
||||
AC_F77_LIBRARY_LDFLAGS
|
||||
AC_PROG_FC
|
||||
AC_FC_LIBRARY_LDFLAGS
|
||||
if test "X$FC" != "X" ; then
|
||||
fortran_ok=yes
|
||||
fi
|
||||
|
||||
echo
|
||||
|
||||
dnl Library libdl :
|
||||
AC_CHECK_LIB(dl,dlopen)
|
||||
|
||||
@ -326,7 +347,7 @@ echo ---------------------------------------------
|
||||
echo
|
||||
|
||||
echo Configure
|
||||
variables="cc_ok boost_ok lex_yacc_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok vtk_ok hdf5_ok omniORB_ok occ_ok doxygen_ok graphviz_ok Kernel_ok Geom_ok SMesh_ok Netgen_ok"
|
||||
variables="cc_ok fortran_ok boost_ok lex_yacc_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok vtk_ok hdf5_ok omniORB_ok occ_ok doxygen_ok graphviz_ok Kernel_ok Geom_ok SMesh_ok Netgen_ok"
|
||||
|
||||
for var in $variables
|
||||
do
|
||||
@ -356,7 +377,7 @@ else
|
||||
fi
|
||||
|
||||
# make other build directories
|
||||
for rep in salome_adm adm_local doc bin/salome include/salome lib/salome share/salome/resources idl
|
||||
for rep in salome_adm adm_local doc bin/salome include/salome lib${LIB_LOCATION_SUFFIX}/salome share/salome/resources/${MODULE_NAME} idl
|
||||
do
|
||||
# if test ! -d $rep ; then
|
||||
# eval mkdir $rep
|
||||
|
@ -46,7 +46,7 @@ $(IDL_FILES:%=$(top_builddir)/idl/salome/%):$(IDL_FILES:%=$(top_srcdir)/idl/%)
|
||||
# python wrap
|
||||
lib: pyidl
|
||||
|
||||
PYTHON_BUILD_SITE=$(top_builddir)/lib/python$(PYTHON_VERSION)/site-packages/@PACKAGE@
|
||||
PYTHON_BUILD_SITE=$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages/@PACKAGE@
|
||||
|
||||
pyidl: $(PYTHON_BUILD_SITE) $(IDL_FILES:%.idl=$(PYTHON_BUILD_SITE)/%_idl.py)
|
||||
|
||||
|
@ -67,8 +67,7 @@ CPPFLAGS += $(QT_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) \
|
||||
CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome \
|
||||
-I${GEOM_ROOT_DIR}/include/salome -I${SMESH_ROOT_DIR}/include/salome
|
||||
|
||||
LDFLAGS += -lSMESH $(OCC_KERNEL_LIBS) -L${KERNEL_ROOT_DIR}/lib/salome \
|
||||
-L${GUI_ROOT_DIR}/lib/salome -L${GEOM_ROOT_DIR}/lib/salome \
|
||||
-L${SMESH_ROOT_DIR}/lib/salome
|
||||
LDFLAGS += $(OCC_KERNEL_LIBS) $(KERNEL_LDFLAGS) $(GUI_LDFLAGS) ${GEOM_LDFLAGS} ${SMESH_LDFLAGS} -lSMESH
|
||||
|
||||
|
||||
@CONCLUDE@
|
||||
|
@ -77,12 +77,6 @@ LIB_OBJ_LO = $(LIB_OBJ_O:%.o=%.lo)
|
||||
$(LIB): $(LIB_OBJ_O) $(LIB_OBJ_LO)
|
||||
LIB_OBJ = $(LIB_OBJ_LO)
|
||||
|
||||
ifeq ($(F77),gfortran)
|
||||
LDFLAGS += -lgfortran
|
||||
else
|
||||
LDFLAGS += -lg2c
|
||||
endif
|
||||
|
||||
LDFLAGS += $(OCC_LDPATH) -lTKBRep -lTKShHealing -lTKSTEP -lTKXSBase -lTKIGES
|
||||
LDFLAGS += $(OCC_LDPATH) $(FCLIBS) -lTKBRep -lTKShHealing -lTKSTEP -lTKXSBase -lTKIGES
|
||||
|
||||
MOSTLYCLEAN += $(LIB_OBJ_O)
|
||||
|
@ -1,23 +1,40 @@
|
||||
The Netgen 4.5 from the web location : http://www.hpfem.jku.at/netgen/
|
||||
(CVS access) is used in the SMESH Module of Salome3 distribution.
|
||||
|
||||
How to build Netgen for Salome
|
||||
1. How to build Netgen for Salome
|
||||
------------------------------
|
||||
|
||||
Patch the netgen 4.5 distribution:
|
||||
1.1. Download Netgen 4.5 from the NETGEN home site (see above).
|
||||
|
||||
1.2. Unpack the downloaded Netgen 4.5 archive
|
||||
(hereafter we assume that this is netgen45 directory)
|
||||
|
||||
1.3. Patch the netgen 4.5 distribution for SALOME:
|
||||
|
||||
$ cd netgen45
|
||||
$ patch -p1 < patch_directory/netgen45ForSalome.patch
|
||||
|
||||
Then run makeForSalome.sh (it will be created by the patch):
|
||||
1.4. For 64-bit platform you also need to apply another patch:
|
||||
|
||||
$ cd netgen45
|
||||
$ patch -p1 < patch_directory/netgen45lib64.patch
|
||||
|
||||
1.5. Set CASROOT environment variable to OCCT installation path,
|
||||
since Netgen 4.5 requires Open CASCADE Technology:
|
||||
|
||||
$ setenv CASROOT <occt_installation_path>
|
||||
|
||||
1.6. Compile and install netgen 4.5. To do this, simply run
|
||||
makeForSalome.sh script (it is created from the patch):
|
||||
|
||||
$ sh makeForSalome.sh
|
||||
|
||||
|
||||
Additional information for maintainers
|
||||
2. Additional information for maintainers
|
||||
--------------------------------------
|
||||
|
||||
The file check_NETGENPLUGIN.m4 assumes
|
||||
that Netgen is installed in the directory <netgen_installation_path> as follow:
|
||||
The file check_NETGEN.m4 assumes that Netgen is installed in
|
||||
the directory <netgen_installation_path> as follow:
|
||||
|
||||
prompt> ls <netgen_installation_path>
|
||||
|
||||
@ -50,17 +67,16 @@ edgeflw.hpp hpref_pyramid.hpp msghandler.hpp sparsmat.hpp
|
||||
|
||||
prompt> ls <netgen_installation_path>/lib
|
||||
|
||||
LINUX/
|
||||
|
||||
prompt> ls <netgen_installation_path>/lib/LINUX
|
||||
|
||||
libcsg.a libgeom2d.a libla.a libnginterface.a libopti.a
|
||||
libgen.a libgprim.a libmesh.a libocc.a libstlgeom.a
|
||||
|
||||
The library files can be also installed in the LINUX or LINUX64
|
||||
subfolder of the lib directory.
|
||||
|
||||
All the libraries *.a should be compiled without the option -DOPENGL.
|
||||
netgen45 is assumed to be the directory downloaded from the above web
|
||||
location archive of Netgen. The library
|
||||
<netgen_installation_path>/lib/LINUX/libnginterface.a should contain the objects
|
||||
<netgen_installation_path>/lib/libnginterface.a should contain the objects
|
||||
nglib.o (from netgen45/libsrc/interface/nglib.cpp) and ngnewdelete.o
|
||||
(from netgen45/ngtcltk/ngnewdelete.cpp).
|
||||
|
||||
@ -72,7 +88,7 @@ nglib.o and ngnewdelete.o to the library libnginterface.a and
|
||||
recompile the libraries only.
|
||||
All this job is done by applying the patch and running the script makeForSalome.sh.
|
||||
|
||||
Th suggested patch alters some Netgen sources to compile them.
|
||||
The suggested patch alters some Netgen sources to compile them.
|
||||
|
||||
Michael SAZONOV
|
||||
m-sazonov@opencascade.com
|
||||
|
File diff suppressed because it is too large
Load Diff
45
src/NETGEN/netgen45lib64.patch
Executable file
45
src/NETGEN/netgen45lib64.patch
Executable file
@ -0,0 +1,45 @@
|
||||
diff -ur netgen-4.5.old/libsrc/makefile.inc netgen-4.5.new/libsrc/makefile.inc
|
||||
--- netgen-4.5/libsrc/makefile.inc 2006-04-27 13:12:54.000000000 +0400
|
||||
+++ netgen-4.5/libsrc/makefile.inc 2006-09-05 14:16:32.000000000 +0400
|
||||
@@ -14,7 +14,7 @@
|
||||
#
|
||||
include $(LIBSRC_DIR)/makefile.mach.$(MACHINE)
|
||||
#
|
||||
-CPLUSPLUSFLAGS1 = -c -I$(LIBSRC_DIR)/include -I$(OCCINC_DIR) \
|
||||
+CPLUSPLUSFLAGS1 = -c -m64 -fPIC -I$(LIBSRC_DIR)/include -I$(OCCINC_DIR) \
|
||||
-DOCCGEOMETRY -DOCC52 -DHAVE_IOSTREAM -DHAVE_LIMITS_H
|
||||
#
|
||||
ARFLAGS = r
|
||||
diff -ur netgen-4.5.old/libsrc/makefile.mach.LINUX64 netgen-4.5.new/libsrc/makefile.mach.LINUX64
|
||||
--- netgen-4.5/libsrc/makefile.mach.LINUX64 2006-03-29 15:09:32.000000000 +0400
|
||||
+++ netgen-4.5/libsrc/makefile.mach.LINUX64 2006-09-07 15:48:39.000000000 +0400
|
||||
@@ -11,7 +11,7 @@
|
||||
#
|
||||
#
|
||||
CFLAGS2 =
|
||||
-CPLUSPLUSFLAGS2 = -pg -march=nocona -O2 -DLINUX -DOPENGL \
|
||||
+CPLUSPLUSFLAGS2 = -pg -march=nocona -O2 -DLINUX \
|
||||
-ftemplate-depth-99 -finline-limit=100000 \
|
||||
-fforce-addr -funroll-loops \
|
||||
-DTRAFO -DNGSOLVE -DnoADDON -DnoLAPACK -DnoFAST \
|
||||
@@ -23,7 +23,7 @@
|
||||
#
|
||||
#
|
||||
|
||||
-LINKFLAGS2 = -pg -L/usr/openwin/lib64 -L/usr/X11R6/lib64 -L/usr/lib/GL3.5 -L/usr/lib64
|
||||
+LINKFLAGS2 = -fPIC -pg -L/usr/openwin/lib64 -L/usr/X11R6/lib64 -L/usr/lib/GL3.5 -L/usr/lib64
|
||||
|
||||
|
||||
SYSLIB2 = -lstdc++
|
||||
diff -ur netgen-4.5.old/Makefile netgen-4.5.new/Makefile
|
||||
--- netgen-4.5/Makefile 2006-03-29 15:09:12.000000000 +0400
|
||||
+++ netgen-4.5/Makefile 2006-09-07 15:46:07.000000000 +0400
|
||||
@@ -72,7 +72,7 @@
|
||||
#
|
||||
#CPLUSPLUSFLAGS1 = -c -I$(LIBSRC_DIR)/include -DOPENGL
|
||||
|
||||
-CPLUSPLUSFLAGS1 = -c -I$(LIBSRC_DIR)/include -I$(OCCINC_DIR) -I./ngsolve/include -Ilibsrc/interface -DOPENGL -I$(METISINC)
|
||||
+CPLUSPLUSFLAGS1 = -c -m64 -I$(LIBSRC_DIR)/include -I$(OCCINC_DIR) -I./ngsolve/include -Ilibsrc/interface -I$(METISINC)
|
||||
|
||||
LINKFLAGS1 = -lGL -lGLU -lX11 -lXext -lXmu
|
||||
#
|
@ -52,6 +52,9 @@ LIB_SERVER_IDL = NETGENPlugin_Algorithm.idl
|
||||
LIB_CLIENT_IDL = \
|
||||
SALOME_Component.idl \
|
||||
SALOME_Comm.idl \
|
||||
SALOME_Exception.idl \
|
||||
SALOME_GenericObj.idl \
|
||||
SMESH_Hypothesis.idl \
|
||||
GEOM_Gen.idl \
|
||||
MED.idl
|
||||
|
||||
@ -61,6 +64,6 @@ LIB = libNETGENEngine.la
|
||||
NETGEN_INCLUDES = @NETGEN_INCLUDES@
|
||||
CPPFLAGS += $(NETGEN_INCLUDES)
|
||||
CXXFLAGS += $(NETGEN_INCLUDES)
|
||||
LDFLAGS += -lNETGEN
|
||||
LDFLAGS += -L${NETGENPLUGIN_ROOT_DIR}/lib@LIB_LOCATION_SUFFIX@/salome -lNETGEN
|
||||
|
||||
@CONCLUDE@
|
||||
|
@ -30,6 +30,9 @@ using namespace std;
|
||||
#include "NETGENPlugin_Mesher.hxx"
|
||||
#include "NETGENPlugin_Hypothesis_2D.hxx"
|
||||
|
||||
#include <SMESH_Mesh.hxx>
|
||||
#include <SMESH_Comment.hxx>
|
||||
#include <SMESH_subMesh.hxx>
|
||||
#include <SMESHDS_Mesh.hxx>
|
||||
#include <SMDS_MeshElement.hxx>
|
||||
#include <SMDS_MeshNode.hxx>
|
||||
@ -62,10 +65,10 @@ namespace netgen {
|
||||
*/
|
||||
//=============================================================================
|
||||
|
||||
NETGENPlugin_Mesher::NETGENPlugin_Mesher (SMESHDS_Mesh* meshDS,
|
||||
NETGENPlugin_Mesher::NETGENPlugin_Mesher (SMESH_Mesh* mesh,
|
||||
const TopoDS_Shape& aShape,
|
||||
const bool isVolume)
|
||||
: _meshDS (meshDS),
|
||||
: _mesh (mesh),
|
||||
_shape (aShape),
|
||||
_isVolume(isVolume),
|
||||
_optimize(true)
|
||||
@ -156,6 +159,7 @@ bool NETGENPlugin_Mesher::Compute()
|
||||
" second order = " << netgen::mparam.secondorder << "\n"
|
||||
" quad allowed = " << netgen::mparam.quad);
|
||||
|
||||
SMESH_ComputeErrorPtr error = SMESH_ComputeError::New();
|
||||
nglib::Ng_Init();
|
||||
|
||||
// -------------------------
|
||||
@ -193,14 +197,17 @@ bool NETGENPlugin_Mesher::Compute()
|
||||
char *optstr;
|
||||
|
||||
int err = 0;
|
||||
SMESH_Comment comment;
|
||||
try
|
||||
{
|
||||
err = netgen::OCCGenerateMesh(occgeo, ngMesh, startWith, endWith, optstr);
|
||||
if (err) comment << "Error in netgen::OCCGenerateMesh()";
|
||||
if (!err && !_optimize)
|
||||
{
|
||||
// we have got surface mesh only, so generate volume mesh
|
||||
startWith = endWith = netgen::MESHCONST_MESHVOLUME;
|
||||
err = netgen::OCCGenerateMesh(occgeo, ngMesh, startWith, endWith, optstr);
|
||||
if (err) comment << "Error in netgen::OCCGenerateMesh()";
|
||||
}
|
||||
if (!err && netgen::mparam.secondorder > 0)
|
||||
{
|
||||
@ -210,8 +217,8 @@ bool NETGENPlugin_Mesher::Compute()
|
||||
}
|
||||
catch (netgen::NgException exc)
|
||||
{
|
||||
MESSAGE ("Exception in NETGEN: " << exc.What());
|
||||
err = 1;
|
||||
error->myName = err = COMPERR_ALGO_FAILED;
|
||||
comment << exc.What();
|
||||
}
|
||||
|
||||
int nbNod = ngMesh->GetNP();
|
||||
@ -229,8 +236,9 @@ bool NETGENPlugin_Mesher::Compute()
|
||||
// Feed back the SMESHDS with the generated Nodes and Elements
|
||||
// -----------------------------------------------------------
|
||||
|
||||
SMESHDS_Mesh* meshDS = _mesh->GetMeshDS();
|
||||
bool isOK = ( !err && (_isVolume ? (nbVol > 0) : (nbFac > 0)) );
|
||||
if ( isOK )
|
||||
if ( true /*isOK*/ ) // get whatever built
|
||||
{
|
||||
// vector of nodes in which node index == netgen ID
|
||||
vector< SMDS_MeshNode* > nodeVec ( nbNod + 1 );
|
||||
@ -238,7 +246,7 @@ bool NETGENPlugin_Mesher::Compute()
|
||||
NCollection_Map<int> pindMap;
|
||||
// create and insert nodes into nodeVec
|
||||
int i;
|
||||
for (i = 1; i <= nbNod && isOK; ++i )
|
||||
for (i = 1; i <= nbNod /*&& isOK*/; ++i )
|
||||
{
|
||||
const netgen::MeshPoint& ngPoint = ngMesh->Point(i);
|
||||
SMDS_MeshNode* node = NULL;
|
||||
@ -248,7 +256,7 @@ bool NETGENPlugin_Mesher::Compute()
|
||||
{
|
||||
// point on vertex
|
||||
aVert = TopoDS::Vertex(occgeo.vmap(i));
|
||||
SMESHDS_SubMesh * submesh = _meshDS->MeshElements(aVert);
|
||||
SMESHDS_SubMesh * submesh = meshDS->MeshElements(aVert);
|
||||
if (submesh)
|
||||
{
|
||||
SMDS_NodeIteratorPtr it = submesh->GetNodes();
|
||||
@ -262,25 +270,26 @@ bool NETGENPlugin_Mesher::Compute()
|
||||
newNodeOnVertex = true;
|
||||
}
|
||||
if (!node)
|
||||
node = _meshDS->AddNode(ngPoint.X(), ngPoint.Y(), ngPoint.Z());
|
||||
node = meshDS->AddNode(ngPoint.X(), ngPoint.Y(), ngPoint.Z());
|
||||
if (!node)
|
||||
{
|
||||
MESSAGE("Cannot create a mesh node");
|
||||
isOK = false;
|
||||
if ( !comment.size() ) comment << "Cannot create a mesh node";
|
||||
nbSeg = nbFac = nbVol = isOK = 0;
|
||||
break;
|
||||
}
|
||||
nodeVec.at(i) = node;
|
||||
if (newNodeOnVertex)
|
||||
{
|
||||
// point on vertex
|
||||
_meshDS->SetNodeOnVertex(node, aVert);
|
||||
meshDS->SetNodeOnVertex(node, aVert);
|
||||
pindMap.Add(i);
|
||||
}
|
||||
}
|
||||
|
||||
// create mesh segments along geometric edges
|
||||
NCollection_Map<Link> linkMap;
|
||||
for (i = 1; i <= nbSeg && isOK; ++i )
|
||||
for (i = 1; i <= nbSeg/* && isOK*/; ++i )
|
||||
{
|
||||
const netgen::Segment& seg = ngMesh->LineSegment(i);
|
||||
Link link(seg.p1, seg.p2);
|
||||
@ -314,28 +323,29 @@ bool NETGENPlugin_Mesher::Compute()
|
||||
continue;
|
||||
if (!aEdge.IsNull())
|
||||
{
|
||||
_meshDS->SetNodeOnEdge(nodeVec.at(pind), aEdge, param);
|
||||
meshDS->SetNodeOnEdge(nodeVec.at(pind), aEdge, param);
|
||||
pindMap.Add(pind);
|
||||
}
|
||||
}
|
||||
SMDS_MeshEdge* edge;
|
||||
if (nbp < 3) // second order ?
|
||||
edge = _meshDS->AddEdge(nodeVec.at(pinds[0]), nodeVec.at(pinds[1]));
|
||||
edge = meshDS->AddEdge(nodeVec.at(pinds[0]), nodeVec.at(pinds[1]));
|
||||
else
|
||||
edge = _meshDS->AddEdge(nodeVec.at(pinds[0]), nodeVec.at(pinds[1]),
|
||||
edge = meshDS->AddEdge(nodeVec.at(pinds[0]), nodeVec.at(pinds[1]),
|
||||
nodeVec.at(pinds[2]));
|
||||
if (!edge)
|
||||
{
|
||||
if ( !comment.size() ) comment << "Cannot create a mesh edge";
|
||||
MESSAGE("Cannot create a mesh edge");
|
||||
isOK = false;
|
||||
nbSeg = nbFac = nbVol = isOK = 0;
|
||||
break;
|
||||
}
|
||||
if (!aEdge.IsNull())
|
||||
_meshDS->SetMeshElementOnShape(edge, aEdge);
|
||||
meshDS->SetMeshElementOnShape(edge, aEdge);
|
||||
}
|
||||
|
||||
// create mesh faces along geometric faces
|
||||
for (i = 1; i <= nbFac && isOK; ++i )
|
||||
for (i = 1; i <= nbFac/* && isOK*/; ++i )
|
||||
{
|
||||
const netgen::Element2d& elem = ngMesh->SurfaceElement(i);
|
||||
int aGeomFaceInd = elem.GetIndex();
|
||||
@ -353,7 +363,7 @@ bool NETGENPlugin_Mesher::Compute()
|
||||
if (!aFace.IsNull())
|
||||
{
|
||||
const netgen::PointGeomInfo& pgi = elem.GeomInfoPi(j);
|
||||
_meshDS->SetNodeOnFace(node, aFace, pgi.u, pgi.v);
|
||||
meshDS->SetNodeOnFace(node, aFace, pgi.u, pgi.v);
|
||||
pindMap.Add(pind);
|
||||
}
|
||||
}
|
||||
@ -361,16 +371,16 @@ bool NETGENPlugin_Mesher::Compute()
|
||||
switch (elem.GetType())
|
||||
{
|
||||
case netgen::TRIG:
|
||||
face = _meshDS->AddFace(nodes[0],nodes[1],nodes[2]);
|
||||
face = meshDS->AddFace(nodes[0],nodes[1],nodes[2]);
|
||||
break;
|
||||
case netgen::QUAD:
|
||||
face = _meshDS->AddFace(nodes[0],nodes[1],nodes[2],nodes[3]);
|
||||
face = meshDS->AddFace(nodes[0],nodes[1],nodes[2],nodes[3]);
|
||||
break;
|
||||
case netgen::TRIG6:
|
||||
face = _meshDS->AddFace(nodes[0],nodes[1],nodes[2],nodes[5],nodes[3],nodes[4]);
|
||||
face = meshDS->AddFace(nodes[0],nodes[1],nodes[2],nodes[5],nodes[3],nodes[4]);
|
||||
break;
|
||||
case netgen::QUAD8:
|
||||
face = _meshDS->AddFace(nodes[0],nodes[1],nodes[2],nodes[3],
|
||||
face = meshDS->AddFace(nodes[0],nodes[1],nodes[2],nodes[3],
|
||||
nodes[4],nodes[7],nodes[5],nodes[6]);
|
||||
break;
|
||||
default:
|
||||
@ -379,16 +389,17 @@ bool NETGENPlugin_Mesher::Compute()
|
||||
}
|
||||
if (!face)
|
||||
{
|
||||
if ( !comment.size() ) comment << "Cannot create a mesh face";
|
||||
MESSAGE("Cannot create a mesh face");
|
||||
isOK = false;
|
||||
nbSeg = nbFac = nbVol = isOK = 0;
|
||||
break;
|
||||
}
|
||||
if (!aFace.IsNull())
|
||||
_meshDS->SetMeshElementOnShape(face, aFace);
|
||||
meshDS->SetMeshElementOnShape(face, aFace);
|
||||
}
|
||||
|
||||
// create tetrahedra
|
||||
for (i = 1; i <= nbVol && isOK; ++i)
|
||||
for (i = 1; i <= nbVol/* && isOK*/; ++i)
|
||||
{
|
||||
const netgen::Element& elem = ngMesh->VolumeElement(i);
|
||||
int aSolidInd = elem.GetIndex();
|
||||
@ -406,7 +417,7 @@ bool NETGENPlugin_Mesher::Compute()
|
||||
if (!aSolid.IsNull())
|
||||
{
|
||||
// point in solid
|
||||
_meshDS->SetNodeInVolume(node, aSolid);
|
||||
meshDS->SetNodeInVolume(node, aSolid);
|
||||
pindMap.Add(pind);
|
||||
}
|
||||
}
|
||||
@ -414,10 +425,10 @@ bool NETGENPlugin_Mesher::Compute()
|
||||
switch (elem.GetType())
|
||||
{
|
||||
case netgen::TET:
|
||||
vol = _meshDS->AddVolume(nodes[0],nodes[1],nodes[2],nodes[3]);
|
||||
vol = meshDS->AddVolume(nodes[0],nodes[1],nodes[2],nodes[3]);
|
||||
break;
|
||||
case netgen::TET10:
|
||||
vol = _meshDS->AddVolume(nodes[0],nodes[1],nodes[2],nodes[3],
|
||||
vol = meshDS->AddVolume(nodes[0],nodes[1],nodes[2],nodes[3],
|
||||
nodes[4],nodes[7],nodes[5],nodes[6],nodes[8],nodes[9]);
|
||||
break;
|
||||
default:
|
||||
@ -426,17 +437,41 @@ bool NETGENPlugin_Mesher::Compute()
|
||||
}
|
||||
if (!vol)
|
||||
{
|
||||
if ( !comment.size() ) comment << "Cannot create a mesh volume";
|
||||
MESSAGE("Cannot create a mesh volume");
|
||||
isOK = false;
|
||||
nbSeg = nbFac = nbVol = isOK = 0;
|
||||
break;
|
||||
}
|
||||
if (!aSolid.IsNull())
|
||||
_meshDS->SetMeshElementOnShape(vol, aSolid);
|
||||
meshDS->SetMeshElementOnShape(vol, aSolid);
|
||||
}
|
||||
}
|
||||
|
||||
if ( error->IsOK() && ( !isOK || comment.size() > 0 ))
|
||||
error->myName = COMPERR_ALGO_FAILED;
|
||||
if ( !comment.empty() )
|
||||
error->myComment = comment;
|
||||
|
||||
// set bad compute error to subshapes of all failed subshapes shapes
|
||||
if ( !error->IsOK() && err )
|
||||
{
|
||||
for (int i = 1; i <= occgeo.fmap.Extent(); i++) {
|
||||
int status = occgeo.facemeshstatus[i-1];
|
||||
if (status == 1 ) continue;
|
||||
if ( SMESH_subMesh* sm = _mesh->GetSubMeshContaining( occgeo.fmap( i ))) {
|
||||
SMESH_ComputeErrorPtr& smError = sm->GetComputeError();
|
||||
if ( !smError || smError->IsOK() ) {
|
||||
if ( status == -1 )
|
||||
smError.reset( new SMESH_ComputeError( error->myName, error->myComment ));
|
||||
else
|
||||
smError.reset( new SMESH_ComputeError( COMPERR_ALGO_FAILED, "Ignored" ));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
nglib::Ng_DeleteMesh((nglib::Ng_Mesh*)ngMesh);
|
||||
nglib::Ng_Exit();
|
||||
|
||||
return isOK;
|
||||
return error->IsOK();
|
||||
}
|
||||
|
@ -29,6 +29,9 @@
|
||||
#ifndef _NETGENPlugin_Mesher_HXX_
|
||||
#define _NETGENPlugin_Mesher_HXX_
|
||||
|
||||
#include "SMESH_ComputeError.hxx"
|
||||
|
||||
class SMESH_Mesh;
|
||||
class SMESHDS_Mesh;
|
||||
class TopoDS_Shape;
|
||||
class NETGENPlugin_Hypothesis;
|
||||
@ -42,7 +45,7 @@ class NETGENPlugin_Mesher
|
||||
public:
|
||||
// ---------- PUBLIC METHODS ----------
|
||||
|
||||
NETGENPlugin_Mesher (SMESHDS_Mesh* meshDS, const TopoDS_Shape& aShape,
|
||||
NETGENPlugin_Mesher (SMESH_Mesh* mesh, const TopoDS_Shape& aShape,
|
||||
const bool isVolume);
|
||||
|
||||
void SetParameters(const NETGENPlugin_Hypothesis* hyp);
|
||||
@ -50,7 +53,7 @@ class NETGENPlugin_Mesher
|
||||
bool Compute();
|
||||
|
||||
private:
|
||||
SMESHDS_Mesh* _meshDS;
|
||||
SMESH_Mesh* _mesh;
|
||||
const TopoDS_Shape& _shape;
|
||||
bool _isVolume;
|
||||
bool _optimize;
|
||||
|
@ -119,53 +119,10 @@ bool NETGENPlugin_NETGEN_2D::CheckHypothesis
|
||||
bool NETGENPlugin_NETGEN_2D::Compute(SMESH_Mesh& aMesh,
|
||||
const TopoDS_Shape& aShape)
|
||||
{
|
||||
SMESHDS_Mesh* meshDS = aMesh.GetMeshDS();
|
||||
//SMESHDS_Mesh* meshDS = aMesh.GetMeshDS();
|
||||
|
||||
NETGENPlugin_Mesher mesher(meshDS, aShape, false);
|
||||
NETGENPlugin_Mesher mesher(&aMesh, aShape, false);
|
||||
// NETGENPlugin_Mesher mesher(meshDS, aShape, false);
|
||||
mesher.SetParameters(_hypothesis);
|
||||
return mesher.Compute();
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
/*!
|
||||
*
|
||||
*/
|
||||
//=============================================================================
|
||||
|
||||
ostream & NETGENPlugin_NETGEN_2D::SaveTo(ostream & save)
|
||||
{
|
||||
return save;
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
/*!
|
||||
*
|
||||
*/
|
||||
//=============================================================================
|
||||
|
||||
istream & NETGENPlugin_NETGEN_2D::LoadFrom(istream & load)
|
||||
{
|
||||
return load;
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
/*!
|
||||
*
|
||||
*/
|
||||
//=============================================================================
|
||||
|
||||
ostream & operator << (ostream & save, NETGENPlugin_NETGEN_2D & hyp)
|
||||
{
|
||||
return hyp.SaveTo( save );
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
/*!
|
||||
*
|
||||
*/
|
||||
//=============================================================================
|
||||
|
||||
istream & operator >> (istream & load, NETGENPlugin_NETGEN_2D & hyp)
|
||||
{
|
||||
return hyp.LoadFrom( load );
|
||||
}
|
||||
|
@ -49,11 +49,6 @@ public:
|
||||
virtual bool Compute(SMESH_Mesh& aMesh,
|
||||
const TopoDS_Shape& aShape);
|
||||
|
||||
ostream & SaveTo(ostream & save);
|
||||
istream & LoadFrom(istream & load);
|
||||
friend ostream & operator << (ostream & save, NETGENPlugin_NETGEN_2D & hyp);
|
||||
friend istream & operator >> (istream & load, NETGENPlugin_NETGEN_2D & hyp);
|
||||
|
||||
protected:
|
||||
const NETGENPlugin_Hypothesis_2D* _hypothesis;
|
||||
};
|
||||
|
@ -121,53 +121,10 @@ bool NETGENPlugin_NETGEN_2D3D::CheckHypothesis
|
||||
bool NETGENPlugin_NETGEN_2D3D::Compute(SMESH_Mesh& aMesh,
|
||||
const TopoDS_Shape& aShape)
|
||||
{
|
||||
SMESHDS_Mesh* meshDS = aMesh.GetMeshDS();
|
||||
// SMESHDS_Mesh* meshDS = aMesh.GetMeshDS();
|
||||
|
||||
NETGENPlugin_Mesher mesher(meshDS, aShape, true);
|
||||
NETGENPlugin_Mesher mesher(&aMesh, aShape, true);
|
||||
// NETGENPlugin_Mesher mesher(meshDS, aShape, true);
|
||||
mesher.SetParameters(_hypothesis);
|
||||
return mesher.Compute();
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
/*!
|
||||
*
|
||||
*/
|
||||
//=============================================================================
|
||||
|
||||
ostream & NETGENPlugin_NETGEN_2D3D::SaveTo(ostream & save)
|
||||
{
|
||||
return save;
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
/*!
|
||||
*
|
||||
*/
|
||||
//=============================================================================
|
||||
|
||||
istream & NETGENPlugin_NETGEN_2D3D::LoadFrom(istream & load)
|
||||
{
|
||||
return load;
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
/*!
|
||||
*
|
||||
*/
|
||||
//=============================================================================
|
||||
|
||||
ostream & operator << (ostream & save, NETGENPlugin_NETGEN_2D3D & hyp)
|
||||
{
|
||||
return hyp.SaveTo( save );
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
/*!
|
||||
*
|
||||
*/
|
||||
//=============================================================================
|
||||
|
||||
istream & operator >> (istream & load, NETGENPlugin_NETGEN_2D3D & hyp)
|
||||
{
|
||||
return hyp.LoadFrom( load );
|
||||
}
|
||||
|
@ -49,11 +49,6 @@ public:
|
||||
virtual bool Compute(SMESH_Mesh& aMesh,
|
||||
const TopoDS_Shape& aShape);
|
||||
|
||||
ostream & SaveTo(ostream & save);
|
||||
istream & LoadFrom(istream & load);
|
||||
friend ostream & operator << (ostream & save, NETGENPlugin_NETGEN_2D3D & hyp);
|
||||
friend istream & operator >> (istream & load, NETGENPlugin_NETGEN_2D3D & hyp);
|
||||
|
||||
protected:
|
||||
const NETGENPlugin_Hypothesis* _hypothesis;
|
||||
};
|
||||
|
@ -30,12 +30,13 @@ using namespace std;
|
||||
|
||||
#include "NETGENPlugin_NETGEN_3D.hxx"
|
||||
|
||||
#include "SMESH_Gen.hxx"
|
||||
#include "SMESH_Mesh.hxx"
|
||||
#include "SMESH_ControlsDef.hxx"
|
||||
#include "SMESHDS_Mesh.hxx"
|
||||
#include "SMDS_MeshElement.hxx"
|
||||
#include "SMDS_MeshNode.hxx"
|
||||
#include "SMESHDS_Mesh.hxx"
|
||||
#include "SMESH_Comment.hxx"
|
||||
#include "SMESH_ControlsDef.hxx"
|
||||
#include "SMESH_Gen.hxx"
|
||||
#include "SMESH_Mesh.hxx"
|
||||
#include "SMESH_MesherHelper.hxx"
|
||||
|
||||
#include <BRep_Tool.hxx>
|
||||
@ -160,7 +161,8 @@ bool NETGENPlugin_NETGEN_3D::Compute(SMESH_Mesh& aMesh,
|
||||
// get triangles on aShell and make a map of nodes to Netgen node IDs
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
SMESH_MesherHelper* myTool = new SMESH_MesherHelper(aMesh);
|
||||
SMESH_MesherHelper helper(aMesh);
|
||||
SMESH_MesherHelper* myTool = &helper;
|
||||
bool _quadraticMesh = myTool->IsQuadraticSubMesh(aShape);
|
||||
|
||||
typedef map< const SMDS_MeshNode*, int> TNodeToIDMap;
|
||||
@ -187,12 +189,12 @@ bool NETGENPlugin_NETGEN_3D::Compute(SMESH_Mesh& aMesh,
|
||||
{
|
||||
// check element
|
||||
const SMDS_MeshElement* elem = iteratorElem->next();
|
||||
if ( !elem ||
|
||||
!( elem->NbNodes()==3 || ( _quadraticMesh && elem->NbNodes()==6) ) ) {
|
||||
INFOS( "NETGENPlugin_NETGEN_3D::Compute(), bad mesh");
|
||||
delete myTool; myTool = 0;
|
||||
return false;
|
||||
}
|
||||
if ( !elem )
|
||||
return error( COMPERR_BAD_INPUT_MESH, "Null element encounters");
|
||||
bool isTraingle = ( elem->NbNodes()==3 || (_quadraticMesh && elem->NbNodes()==6 ));
|
||||
if ( !isTraingle )
|
||||
return error( COMPERR_BAD_INPUT_MESH,
|
||||
SMESH_Comment("Not triangle element ")<<elem->GetID());
|
||||
// keep a triangle
|
||||
triangles.push_back( elem );
|
||||
isReversed.push_back( isRev );
|
||||
@ -316,8 +318,18 @@ bool NETGENPlugin_NETGEN_3D::Compute(SMESH_Mesh& aMesh,
|
||||
}
|
||||
catch (...) {
|
||||
MESSAGE("An exception has been caught during the Volume Mesh Generation ...");
|
||||
error(dfltErr(), "Exception in Ng_GenerateVolumeMesh()");
|
||||
status = NG_VOLUME_FAILURE;
|
||||
}
|
||||
if ( GetComputeError()->IsOK() ) {
|
||||
switch ( status ) {
|
||||
case NG_SURFACE_INPUT_ERROR:error( status, "NG_SURFACE_INPUT_ERROR");
|
||||
case NG_VOLUME_FAILURE: error( status, "NG_VOLUME_FAILURE");
|
||||
case NG_STL_INPUT_ERROR: error( status, "NG_STL_INPUT_ERROR");
|
||||
case NG_SURFACE_FAILURE: error( status, "NG_SURFACE_FAILURE");
|
||||
case NG_FILE_NOT_FOUND: error( status, "NG_FILE_NOT_FOUND");
|
||||
};
|
||||
}
|
||||
|
||||
int Netgen_NbOfNodesNew = Ng_GetNP(Netgen_mesh);
|
||||
|
||||
@ -331,7 +343,7 @@ bool NETGENPlugin_NETGEN_3D::Compute(SMESH_Mesh& aMesh,
|
||||
// Feed back the SMESHDS with the generated Nodes and Volume Elements
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
bool isOK = ( status == NG_OK && Netgen_NbOfTetra > 0 );
|
||||
bool isOK = ( /*status == NG_OK &&*/ Netgen_NbOfTetra > 0 );// get whatever built
|
||||
if ( isOK )
|
||||
{
|
||||
// vector of nodes in which node index == netgen ID
|
||||
@ -368,51 +380,5 @@ bool NETGENPlugin_NETGEN_3D::Compute(SMESH_Mesh& aMesh,
|
||||
Ng_DeleteMesh(Netgen_mesh);
|
||||
Ng_Exit();
|
||||
|
||||
delete myTool; myTool = 0;
|
||||
|
||||
return isOK;
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
/*!
|
||||
*
|
||||
*/
|
||||
//=============================================================================
|
||||
|
||||
ostream & NETGENPlugin_NETGEN_3D::SaveTo(ostream & save)
|
||||
{
|
||||
return save;
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
/*!
|
||||
*
|
||||
*/
|
||||
//=============================================================================
|
||||
|
||||
istream & NETGENPlugin_NETGEN_3D::LoadFrom(istream & load)
|
||||
{
|
||||
return load;
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
/*!
|
||||
*
|
||||
*/
|
||||
//=============================================================================
|
||||
|
||||
ostream & operator << (ostream & save, NETGENPlugin_NETGEN_3D & hyp)
|
||||
{
|
||||
return hyp.SaveTo( save );
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
/*!
|
||||
*
|
||||
*/
|
||||
//=============================================================================
|
||||
|
||||
istream & operator >> (istream & load, NETGENPlugin_NETGEN_3D & hyp)
|
||||
{
|
||||
return hyp.LoadFrom( load );
|
||||
return (status == NG_OK);
|
||||
}
|
||||
|
@ -48,11 +48,6 @@ public:
|
||||
virtual bool Compute(SMESH_Mesh& aMesh,
|
||||
const TopoDS_Shape& aShape);
|
||||
|
||||
ostream & SaveTo(ostream & save);
|
||||
istream & LoadFrom(istream & load);
|
||||
friend ostream & operator << (ostream & save, NETGENPlugin_NETGEN_3D & hyp);
|
||||
friend istream & operator >> (istream & load, NETGENPlugin_NETGEN_3D & hyp);
|
||||
|
||||
protected:
|
||||
double _maxElementVolume;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user