smesh: [skip ci] port Netgen plugin to v6.2

This commit is contained in:
wmayer
2020-07-23 16:22:54 +02:00
parent f0ea5d9de9
commit 2f5d8085bf
7 changed files with 103 additions and 102 deletions

View File

@@ -108,7 +108,7 @@ else(Netgen_FOUND)
IF(NOT NGLIB_INCLUDE_DIR AND NOT NETGEN_DIR_include)
MESSAGE(STATUS "Cannot find NETGEN header files.")
ELSE()
ELSEIF(NOT NETGEN_VERSION)
file(STRINGS ${NETGEN_DIR_include}/mydefs.hpp NETGEN_VERSION
REGEX "#define PACKAGE_VERSION.*"
)
@@ -129,23 +129,27 @@ endif(Netgen_FOUND)
# Package-provided cMake file is not enough
IF(Netgen_FOUND)
IF(NETGEN_VERSION)
string(REGEX MATCHALL "[0-9]+" NETGEN_VERSION_expr ${NETGEN_VERSION})
list(LENGTH NETGEN_VERSION_expr NETGEN_VERSION_COUNT)
list(GET NETGEN_VERSION_expr 0 NETGEN_VERSION_MAJOR)
IF(NETGEN_VERSION_COUNT GREATER 1)
list(GET NETGEN_VERSION_expr 1 NETGEN_VERSION_MINOR)
ELSE()
set(NETGEN_VERSION_MINOR 0)
ENDIF()
ELSE() # workaround for netgen 6.2 and newer. currently there is no easy way to detect the version
# better use "find_package(netgen CONFIG REQUIRED)"
set(NETGEN_VERSION_MAJOR 6)
set(NETGEN_VERSION_MINOR 2)
IF(NOT NETGEN_VERSION_MAJOR)
IF(NETGEN_VERSION)
string(REGEX MATCHALL "[0-9]+" NETGEN_VERSION_expr ${NETGEN_VERSION})
list(LENGTH NETGEN_VERSION_expr NETGEN_VERSION_COUNT)
list(GET NETGEN_VERSION_expr 0 NETGEN_VERSION_MAJOR)
IF(NETGEN_VERSION_COUNT GREATER 1)
list(GET NETGEN_VERSION_expr 1 NETGEN_VERSION_MINOR)
ELSE()
set(NETGEN_VERSION_MINOR 0)
ENDIF()
ELSE() # workaround for netgen 6.2 and newer. currently there is no easy way to detect the version
# better use "find_package(netgen CONFIG REQUIRED)"
set(NETGEN_VERSION_MAJOR 6)
set(NETGEN_VERSION_MINOR 2)
ENDIF()
set(NETGEN_VERSION_PATCH 0)
ENDIF()
MATH(EXPR NETGEN_VERSION_C "(${NETGEN_VERSION_MAJOR} << 16) + (${NETGEN_VERSION_MINOR} << 8)")
MATH(EXPR NETGEN_VERSION_C "(${NETGEN_VERSION_MAJOR} << 16) + (${NETGEN_VERSION_MINOR} << 8) + (${NETGEN_VERSION_PATCH})")
MATH(EXPR NETGEN_VERSION_62 "(6 << 16) + (2 << 8)")
MATH(EXPR NETGEN_VERSION_62_2004 "(6 << 16) + (2 << 8) + (2004)")
IF(NOT NETGEN_VERSION_C LESS NETGEN_VERSION_62) # Version >= 6.2
IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
# Clang sometimes fails to include <cstdio>

View File

@@ -51,7 +51,7 @@ macro(PrintFinalReport)
endif(BUILD_SMESH)
if(DEFINED NETGEN_FOUND)
message(STATUS "NETGEN: ${NETGEN_VERSION} [${NETGEN_DEFINITIONS}] [${NETGEN_CXX_FLAGS}] [${NGLIB_INCLUDE_DIR}] [${NGLIB_LIBRARIES}] [${NETGEN_INCLUDE_DIRS}]")
message(STATUS "NETGEN: ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR}.${NETGEN_VERSION_PATCH} (${NETGEN_VERSION}) [${NETGEN_DEFINITIONS}] [${NETGEN_CXX_FLAGS}] [${NGLIB_INCLUDE_DIR}] [${NGLIB_LIBRARIES}] [${NETGEN_INCLUDE_DIRS}]")
else(DEFINED NETGEN_FOUND)
message(STATUS "NETGEN: not enabled")
endif(DEFINED NETGEN_FOUND)

View File

@@ -419,9 +419,12 @@ if(WIN32)
else()
set_target_properties(NETGENPlugin PROPERTIES COMPILE_FLAGS "${NETGEN_CXX_FLAGS}")
endif(WIN32)
IF(NOT NETGEN_VERSION_C LESS NETGEN_VERSION_62) # Version >= 6.2
IF(NOT NETGEN_VERSION_C LESS NETGEN_VERSION_62_2004) # Version >= 6.2.2004
set_target_properties(NETGENPlugin PROPERTIES CXX_STANDARD_REQUIRED ON)
set_target_properties(NETGENPlugin PROPERTIES CXX_STANDARD 17) # Standard std=c++1y could work aswell
ELSEIF(NOT NETGEN_VERSION_C LESS NETGEN_VERSION_62) # Version >= 6.2
set_target_properties(NETGENPlugin PROPERTIES CXX_STANDARD_REQUIRED ON)
set_target_properties(NETGENPlugin PROPERTIES CXX_STANDARD 14) # Standard std=c++1y could work aswell
ENDIF()
endif (BUILD_FEM_NETGEN)

View File

@@ -36,7 +36,7 @@
#include <SMESH_Algo.hxx>
#include <SMESH_ProxyMesh.hxx>
#define NETGEN_VERSION_STRING(a,b) (a << 16) + (b << 8)
#define NETGEN_VERSION_STRING(a,b,c) (a << 16) + (b << 8) + (c)
namespace nglib {
#include <nglib.h>
@@ -85,7 +85,7 @@ struct NETGENPlugin_ngMeshInfo
struct NETGENPLUGIN_EXPORT NETGENPlugin_NetgenLibWrapper
{
bool _isComputeOk;
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
nglib::Ng_Mesh * _ngMesh;
#else
std::shared_ptr<nglib::Ng_Mesh> _ngMesh;
@@ -204,7 +204,7 @@ class NETGENPLUGIN_EXPORT NETGENPlugin_Mesher
bool _optimize;
int _fineness;
bool _isViscousLayers2D;
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
netgen::Mesh* _ngMesh;
#else
std::shared_ptr<netgen::Mesh> _ngMesh;

View File

@@ -99,17 +99,15 @@ namespace nglib {
# pragma clang diagnostic pop
#endif
//#define NETGEN_VERSION_6_2_1909
namespace netgen {
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2)
#ifdef NETGEN_VERSION_6_2_1909
typedef Refinement OCCRefinementSurfaces;
#endif
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2,2004)
typedef Refinement OCCRefinementSurfaces;
DLL_HEADER extern int OCCGenerateMesh(OCCGeometry&, shared_ptr<Mesh>&, MeshingParameters&);
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2,0)
DLL_HEADER extern int OCCGenerateMesh (OCCGeometry&, shared_ptr<Mesh>&, MeshingParameters&);
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(6,0)
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(6,0,0)
DLL_HEADER extern int OCCGenerateMesh (OCCGeometry&, shared_ptr<Mesh>&, MeshingParameters&, int, int);
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0)
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0,0)
DLL_HEADER extern int OCCGenerateMesh (OCCGeometry&, Mesh*&, MeshingParameters&, int, int);
#else
DLL_HEADER extern int OCCGenerateMesh (OCCGeometry&, Mesh*&, int, int, char*);
@@ -190,7 +188,7 @@ NETGENPlugin_Mesher::~NETGENPlugin_Mesher()
if ( _ptrToMe )
*_ptrToMe = NULL;
_ptrToMe = 0;
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
_ngMesh = NULL;
#endif
}
@@ -2484,7 +2482,7 @@ bool NETGENPlugin_Mesher::Compute()
// -------------------------
// Generate the mesh
// -------------------------
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
_ngMesh = NULL;
#endif
NETGENPlugin_ngMeshInfo initState; // it remembers size of ng mesh equal to size of Smesh
@@ -2522,10 +2520,10 @@ bool NETGENPlugin_Mesher::Compute()
occgeo.face_maxh = mparams.maxh;
// Let netgen create _ngMesh and calculate element size on not meshed shapes
#if NETGEN_VERSION < NETGEN_VERSION_STRING(5,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(5,0,0)
char *optstr = 0;
#endif
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,2)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,2,0)
int startWith = netgen::MESHCONST_ANALYSE;
int endWith = netgen::MESHCONST_ANALYSE;
#else
@@ -2534,9 +2532,9 @@ bool NETGENPlugin_Mesher::Compute()
try
{
OCC_CATCH_SIGNALS;
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2)
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2,0)
err = netgen::OCCGenerateMesh(occgeo, _ngMesh, mparams);
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0)
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0,0)
err = netgen::OCCGenerateMesh(occgeo, _ngMesh, mparams, startWith, endWith);
#else
err = netgen::OCCGenerateMesh(occgeo, _ngMesh, startWith, endWith, optstr);
@@ -2553,7 +2551,7 @@ bool NETGENPlugin_Mesher::Compute()
err = 0; //- MESHCONST_ANALYSE isn't so important step
if ( !_ngMesh )
return false;
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
ngLib.setMesh(( Ng_Mesh*) _ngMesh);
#else
ngLib.setMesh(( Ng_Mesh*) _ngMesh.get() );
@@ -2621,7 +2619,7 @@ bool NETGENPlugin_Mesher::Compute()
intOccgeo.shape = occgeo.shape;
intOccgeo.face_maxh.SetSize(intOccgeo.fmap.Extent());
intOccgeo.face_maxh = netgen::mparam.maxh;
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
netgen::Mesh *tmpNgMesh = NULL;
#else
std::shared_ptr<netgen::Mesh> tmpNgMesh; // = std::make_shared<netgen::Mesh>();
@@ -2634,9 +2632,9 @@ bool NETGENPlugin_Mesher::Compute()
// let netgen create a temporary mesh
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2)
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2,0)
netgen::OCCGenerateMesh(intOccgeo, tmpNgMesh, mparams);
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0)
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0,0)
netgen::OCCGenerateMesh(intOccgeo, tmpNgMesh, mparams, startWith, endWith);
#else
netgen::OCCGenerateMesh(intOccgeo, tmpNgMesh, startWith, endWith, optstr);
@@ -2645,22 +2643,22 @@ bool NETGENPlugin_Mesher::Compute()
return false;
// copy LocalH from the main to temporary mesh
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
initState.transferLocalH( _ngMesh, tmpNgMesh );
#else
initState.transferLocalH( _ngMesh.get(), tmpNgMesh.get() );
#endif
// compute mesh on internal edges
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,2)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,2,0)
startWith = endWith = netgen::MESHCONST_MESHEDGES;
#else
mparams.perfstepsstart = mparams.perfstepsend = netgen::MESHCONST_MESHEDGES;
#endif
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2)
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2,0)
err = netgen::OCCGenerateMesh(intOccgeo, tmpNgMesh, mparams);
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0)
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0,0)
err = netgen::OCCGenerateMesh(intOccgeo, tmpNgMesh, mparams, startWith, endWith);
#else
err = netgen::OCCGenerateMesh(intOccgeo, tmpNgMesh, startWith, endWith, optstr);
@@ -2672,7 +2670,7 @@ bool NETGENPlugin_Mesher::Compute()
comment << text(ex);
err = 1;
}
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
initState.restoreLocalH( tmpNgMesh );
#else
initState.restoreLocalH( tmpNgMesh.get() );
@@ -2683,7 +2681,7 @@ bool NETGENPlugin_Mesher::Compute()
FillSMesh( intOccgeo, *tmpNgMesh, initState, *_mesh, tmpNodeVec, comment );
err = ( err || !comment.empty() );
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
nglib::Ng_DeleteMesh((nglib::Ng_Mesh*)tmpNgMesh);
#else
tmpNgMesh.reset();
@@ -2696,7 +2694,7 @@ bool NETGENPlugin_Mesher::Compute()
err = ! ( FillNgMesh(occgeo, *_ngMesh, nodeVec, meshedSM[ MeshDim_0D ]) &&
FillNgMesh(occgeo, *_ngMesh, nodeVec, meshedSM[ MeshDim_1D ], &quadHelper));
}
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
initState = NETGENPlugin_ngMeshInfo(_ngMesh);
#else
initState = NETGENPlugin_ngMeshInfo(_ngMesh.get());
@@ -2705,7 +2703,7 @@ bool NETGENPlugin_Mesher::Compute()
// Compute 1d mesh
if (!err)
{
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,2)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,2,0)
startWith = endWith = netgen::MESHCONST_MESHEDGES;
#else
mparams.perfstepsstart = mparams.perfstepsend = netgen::MESHCONST_MESHEDGES;
@@ -2713,9 +2711,9 @@ bool NETGENPlugin_Mesher::Compute()
try
{
OCC_CATCH_SIGNALS;
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2)
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2,0)
err = netgen::OCCGenerateMesh(occgeo, _ngMesh, mparams);
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0)
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0,0)
err = netgen::OCCGenerateMesh(occgeo, _ngMesh, mparams, startWith, endWith);
#else
err = netgen::OCCGenerateMesh(occgeo, _ngMesh, startWith, endWith, optstr);
@@ -2782,7 +2780,7 @@ bool NETGENPlugin_Mesher::Compute()
FillSMesh( occgeo, *_ngMesh, initState, *_mesh, nodeVec, comment );
// add segments to faces with internal vertices
AddIntVerticesInFaces( occgeo, *_ngMesh, nodeVec, internals );
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
initState = NETGENPlugin_ngMeshInfo(_ngMesh);
#else
initState = NETGENPlugin_ngMeshInfo(_ngMesh.get());
@@ -2794,7 +2792,7 @@ bool NETGENPlugin_Mesher::Compute()
{
if ( !internals.hasInternalVertexInFace() ) {
FillSMesh( occgeo, *_ngMesh, initState, *_mesh, nodeVec, comment );
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
initState = NETGENPlugin_ngMeshInfo(_ngMesh);
#else
initState = NETGENPlugin_ngMeshInfo(_ngMesh.get());
@@ -2824,7 +2822,7 @@ bool NETGENPlugin_Mesher::Compute()
if ( !error ) error = SMESH_ComputeError::New();
}
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
initState = NETGENPlugin_ngMeshInfo(_ngMesh);
#else
initState = NETGENPlugin_ngMeshInfo(_ngMesh.get());
@@ -2832,7 +2830,7 @@ bool NETGENPlugin_Mesher::Compute()
}
// Let netgen compute 2D mesh
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,2)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,2,0)
startWith = netgen::MESHCONST_MESHSURFACE;
endWith = _optimize ? netgen::MESHCONST_OPTSURFACE : netgen::MESHCONST_MESHSURFACE;
#else
@@ -2842,9 +2840,9 @@ bool NETGENPlugin_Mesher::Compute()
try
{
OCC_CATCH_SIGNALS;
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2)
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2,0)
err = netgen::OCCGenerateMesh(occgeo, _ngMesh, mparams);
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0)
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0,0)
err = netgen::OCCGenerateMesh(occgeo, _ngMesh, mparams, startWith, endWith);
#else
err = netgen::OCCGenerateMesh(occgeo, _ngMesh, startWith, endWith, optstr);
@@ -2903,7 +2901,7 @@ bool NETGENPlugin_Mesher::Compute()
// fill _ngMesh with faces of sub-meshes
err = ! ( FillNgMesh(occgeo, *_ngMesh, nodeVec, meshedSM[ MeshDim_2D ], &quadHelper));
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
initState = NETGENPlugin_ngMeshInfo(_ngMesh);
#else
initState = NETGENPlugin_ngMeshInfo(_ngMesh.get());
@@ -2928,7 +2926,7 @@ bool NETGENPlugin_Mesher::Compute()
_ngMesh->SetGlobalH (mparams.maxh);
mparams.grading = 0.4;
#if NETGEN_VERSION < NETGEN_VERSION_STRING(5,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(5,0,0)
_ngMesh->CalcLocalH();
#else
_ngMesh->CalcLocalH(mparams.grading);
@@ -2944,14 +2942,14 @@ bool NETGENPlugin_Mesher::Compute()
AddIntVerticesInSolids( occgeo, *_ngMesh, nodeVec, internals );
// duplicate mesh faces on internal faces
FixIntFaces( occgeo, *_ngMesh, internals );
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
initState = NETGENPlugin_ngMeshInfo(_ngMesh);
#else
initState = NETGENPlugin_ngMeshInfo(_ngMesh.get());
#endif
}
// Let netgen compute 3D mesh
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,2)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,2,0)
startWith = endWith = netgen::MESHCONST_MESHVOLUME;
#else
mparams.perfstepsstart = mparams.perfstepsend = netgen::MESHCONST_MESHVOLUME;
@@ -2959,9 +2957,9 @@ bool NETGENPlugin_Mesher::Compute()
try
{
OCC_CATCH_SIGNALS;
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2)
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2,0)
err = netgen::OCCGenerateMesh(occgeo, _ngMesh, mparams);
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0)
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0,0)
err = netgen::OCCGenerateMesh(occgeo, _ngMesh, mparams, startWith, endWith);
#else
err = netgen::OCCGenerateMesh(occgeo, _ngMesh, startWith, endWith, optstr);
@@ -2989,7 +2987,7 @@ bool NETGENPlugin_Mesher::Compute()
// Let netgen optimize 3D mesh
if ( !err && _optimize )
{
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,2)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,2,0)
startWith = endWith = netgen::MESHCONST_OPTVOLUME;
#else
mparams.perfstepsstart = mparams.perfstepsend = netgen::MESHCONST_OPTVOLUME;
@@ -2997,9 +2995,9 @@ bool NETGENPlugin_Mesher::Compute()
try
{
OCC_CATCH_SIGNALS;
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2)
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2,0)
err = netgen::OCCGenerateMesh(occgeo, _ngMesh, mparams);
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0)
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0,0)
err = netgen::OCCGenerateMesh(occgeo, _ngMesh, mparams, startWith, endWith);
#else
err = netgen::OCCGenerateMesh(occgeo, _ngMesh, startWith, endWith, optstr);
@@ -3211,15 +3209,15 @@ bool NETGENPlugin_Mesher::Evaluate(MapShapeNbElems& aResMap)
// let netgen create _ngMesh and calculate element size on not meshed shapes
NETGENPlugin_NetgenLibWrapper ngLib;
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
netgen::Mesh *ngMesh = NULL;
#else
std::shared_ptr<netgen::Mesh> ngMesh; // = std::make_shared<netgen::Mesh>();
#endif
#if NETGEN_VERSION < NETGEN_VERSION_STRING(5,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(5,0,0)
char *optstr = 0;
#endif
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,2)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,2,0)
int startWith = netgen::MESHCONST_ANALYSE;
int endWith = netgen::MESHCONST_MESHEDGES;
#else
@@ -3227,9 +3225,9 @@ bool NETGENPlugin_Mesher::Evaluate(MapShapeNbElems& aResMap)
mparams.perfstepsend = netgen::MESHCONST_MESHEDGES;
#endif
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2)
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2,0)
int err = netgen::OCCGenerateMesh(occgeo, ngMesh, mparams);
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0)
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0,0)
int err = netgen::OCCGenerateMesh(occgeo, ngMesh, mparams, startWith, endWith);
#else
int err = netgen::OCCGenerateMesh(occgeo, ngMesh, startWith, endWith, optstr);
@@ -3237,7 +3235,7 @@ bool NETGENPlugin_Mesher::Evaluate(MapShapeNbElems& aResMap)
if(netgen::multithread.terminate)
return false;
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
ngLib.setMesh(( Ng_Mesh*) ngMesh);
#else
ngLib.setMesh(( Ng_Mesh*) ngMesh.get());
@@ -3702,7 +3700,7 @@ void NETGENPlugin_ngMeshInfo::transferLocalH( netgen::Mesh* fromMesh,
{
if ( !fromMesh->LocalHFunctionGenerated() ) return;
if ( !toMesh->LocalHFunctionGenerated() )
#if NETGEN_VERSION < NETGEN_VERSION_STRING(5,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(5,0,0)
toMesh->CalcLocalH();
#else
toMesh->CalcLocalH(netgen::mparam.grading);
@@ -4099,7 +4097,7 @@ NETGENPlugin_NetgenLibWrapper::NETGENPlugin_NetgenLibWrapper()
std::cout.rdbuf( netgen::mycout->rdbuf() );
#endif
}
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
_ngMesh = Ng_NewMesh();
#else
_ngMesh = std::make_shared<Ng_Mesh>();
@@ -4114,7 +4112,7 @@ NETGENPlugin_NetgenLibWrapper::NETGENPlugin_NetgenLibWrapper()
NETGENPlugin_NetgenLibWrapper::~NETGENPlugin_NetgenLibWrapper()
{
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
Ng_DeleteMesh( _ngMesh );
#else
_ngMesh.reset();
@@ -4138,7 +4136,7 @@ NETGENPlugin_NetgenLibWrapper::~NETGENPlugin_NetgenLibWrapper()
void NETGENPlugin_NetgenLibWrapper::setMesh( Ng_Mesh* mesh )
{
if ( _ngMesh )
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
Ng_DeleteMesh( _ngMesh );
_ngMesh = mesh;
#else

View File

@@ -84,11 +84,8 @@ namespace nglib {
# pragma clang diagnostic pop
#endif
//#define NETGEN_VERSION_6_2_1909
namespace netgen {
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2)
#ifdef NETGEN_VERSION_6_2_1909
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2,2004)
// https://github.com/NGSolve/netgen/commit/bee097b153b43d9346819789534536cd1b773428
int OCCGenerateMesh(OCCGeometry& geo, shared_ptr<Mesh>& mesh, MeshingParameters& mparams)
{
@@ -101,18 +98,17 @@ namespace netgen {
mparams.perfstepsend = perfstepsend;
return result;
}
#else
DLL_HEADER extern int OCCGenerateMesh (OCCGeometry&, shared_ptr<Mesh>&, MeshingParameters&);
#endif
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(6,0)
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2,0)
DLL_HEADER extern int OCCGenerateMesh(OCCGeometry&, shared_ptr<Mesh>&, MeshingParameters&);
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(6,0,0)
DLL_HEADER extern int OCCGenerateMesh (OCCGeometry&, shared_ptr<Mesh>&, MeshingParameters&, int, int);
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0)
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0,0)
DLL_HEADER extern int OCCGenerateMesh (OCCGeometry&, Mesh*&, MeshingParameters&, int, int);
#else
DLL_HEADER extern int OCCGenerateMesh (OCCGeometry&, Mesh*&, int, int, char*);
#endif
DLL_HEADER extern MeshingParameters mparam;
#ifndef NETGEN_VERSION_6_2_1909
#if NETGEN_VERSION <= NETGEN_VERSION_STRING(6,2,1808)
DLL_HEADER extern void OCCSetLocalMeshSize(OCCGeometry & geom, Mesh & mesh);
#endif
}
@@ -285,7 +281,7 @@ bool NETGENPlugin_NETGEN_2D_ONLY::Compute(SMESH_Mesh& aMesh,
ngLib._isComputeOk = false;
netgen::Mesh ngMeshNoLocSize;
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
netgen::Mesh * ngMeshes[2] = { (netgen::Mesh*) ngLib._ngMesh, & ngMeshNoLocSize };
#else
netgen::Mesh * ngMeshes[2] = { (netgen::Mesh*) ngLib._ngMesh.get(), & ngMeshNoLocSize };
@@ -333,7 +329,7 @@ bool NETGENPlugin_NETGEN_2D_ONLY::Compute(SMESH_Mesh& aMesh,
netgen::mparam.minh = aMesher.GetDefaultMinSize( aShape, netgen::mparam.maxh );
}
// set local size depending on curvature and NOT closeness of EDGEs
#ifdef NETGEN_VERSION_6_2_1909
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2,2004)
// https://github.com/NGSolve/netgen/commit/073e215bb6bc97d8712990cba9cc6e9e1e4d8b2a
netgen::mparam.closeedgefac = std::nullopt;
#else
@@ -341,7 +337,7 @@ bool NETGENPlugin_NETGEN_2D_ONLY::Compute(SMESH_Mesh& aMesh,
#endif
//netgen::occparam.resthcloseedgefac = 1.0 + netgen::mparam.grading;
occgeoComm.face_maxh = netgen::mparam.maxh;
#ifdef NETGEN_VERSION_6_2_1909
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2,2004)
// https://github.com/NGSolve/netgen/commit/bee097b153b43d9346819789534536cd1b773428
occgeoComm.Analyse(*ngMeshes[0], netgen::mparam);
#else
@@ -351,7 +347,7 @@ bool NETGENPlugin_NETGEN_2D_ONLY::Compute(SMESH_Mesh& aMesh,
occgeoComm.vmap.Clear();
// set local size according to size of existing segments
#ifdef NETGEN_VERSION_6_2_1909
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2,2004)
const double factor = netgen::mparam.closeedgefac.value();
#else
const double factor = netgen::occparam.resthcloseedgefac;
@@ -526,7 +522,7 @@ bool NETGENPlugin_NETGEN_2D_ONLY::Compute(SMESH_Mesh& aMesh,
// -------------------------
// Generate surface mesh
// -------------------------
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,2)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,2,0)
const int startWith = MESHCONST_MESHSURFACE;
const int endWith = toOptimize ? MESHCONST_OPTSURFACE : MESHCONST_MESHSURFACE;
#else
@@ -536,14 +532,14 @@ bool NETGENPlugin_NETGEN_2D_ONLY::Compute(SMESH_Mesh& aMesh,
SMESH_Comment str;
try {
OCC_CATCH_SIGNALS;
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,0,0)
std::shared_ptr<netgen::Mesh> mesh_ptr(ngMesh, [](netgen::Mesh*){});
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2)
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2,0)
err = netgen::OCCGenerateMesh(occgeom, mesh_ptr, netgen::mparam);
#else
err = netgen::OCCGenerateMesh(occgeom, mesh_ptr, netgen::mparam, startWith, endWith);
#endif
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0)
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0,0)
err = netgen::OCCGenerateMesh(occgeom, ngMesh, netgen::mparam, startWith, endWith);
#else
char *optstr = 0;

View File

@@ -95,11 +95,11 @@ namespace nglib {
#include <nglib.h>
}
namespace netgen {
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2)
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2,0)
DLL_HEADER extern int OCCGenerateMesh (OCCGeometry&, shared_ptr<Mesh>&, MeshingParameters&);
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(6,0)
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(6,0,0)
DLL_HEADER extern int OCCGenerateMesh (OCCGeometry&, shared_ptr<Mesh>&, MeshingParameters&, int, int);
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0)
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0,0)
DLL_HEADER extern int OCCGenerateMesh (OCCGeometry&, Mesh*&, MeshingParameters&, int, int);
#else
DLL_HEADER extern int OCCGenerateMesh (OCCGeometry&, Mesh*&, int, int, char*);
@@ -232,7 +232,7 @@ bool NETGENPlugin_NETGEN_3D::Compute(SMESH_Mesh& aMesh,
int Netgen_triangle[3];
NETGENPlugin_NetgenLibWrapper ngLib;
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
Ng_Mesh * Netgen_mesh = ngLib._ngMesh;
#else
Ng_Mesh * Netgen_mesh = ngLib._ngMesh.get();
@@ -456,11 +456,11 @@ bool NETGENPlugin_NETGEN_3D::compute(SMESH_Mesh& aMesh,
netgen::Mesh* ngMesh = (netgen::Mesh*)Netgen_mesh;
int Netgen_NbOfNodes = Ng_GetNP(Netgen_mesh);
#if NETGEN_VERSION < NETGEN_VERSION_STRING(5,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(5,0,0)
char *optstr = 0;
#endif
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,2)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,2,0)
int startWith = netgen::MESHCONST_MESHVOLUME;
int endWith = netgen::MESHCONST_OPTVOLUME;
#else
@@ -476,7 +476,7 @@ bool NETGENPlugin_NETGEN_3D::compute(SMESH_Mesh& aMesh,
{
aMesher.SetParameters( _hypParameters );
if ( !_hypParameters->GetOptimize() )
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,2)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,2,0)
endWith = netgen::MESHCONST_MESHVOLUME;
#else
netgen::mparam.perfstepsend = netgen::MESHCONST_MESHVOLUME;
@@ -507,14 +507,14 @@ bool NETGENPlugin_NETGEN_3D::compute(SMESH_Mesh& aMesh,
try
{
OCC_CATCH_SIGNALS;
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,0,0)
std::shared_ptr<netgen::Mesh> mesh_ptr(ngMesh, [](netgen::Mesh*){});
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2)
#if NETGEN_VERSION >= NETGEN_VERSION_STRING(6,2,0)
err = netgen::OCCGenerateMesh(occgeo, mesh_ptr, netgen::mparam);
#else
err = netgen::OCCGenerateMesh(occgeo, mesh_ptr, netgen::mparam, startWith, endWith);
#endif
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0)
#elif NETGEN_VERSION >= NETGEN_VERSION_STRING(5,0,0)
ngMesh->CalcLocalH(netgen::mparam.grading);
err = netgen::OCCGenerateMesh(occgeo, ngMesh, netgen::mparam, startWith, endWith);
#else
@@ -639,7 +639,7 @@ bool NETGENPlugin_NETGEN_3D::Compute(SMESH_Mesh& aMesh,
int Netgen_tetrahedron[4];
NETGENPlugin_NetgenLibWrapper ngLib;
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0)
#if NETGEN_VERSION < NETGEN_VERSION_STRING(6,0,0)
Ng_Mesh * Netgen_mesh = ngLib._ngMesh;
#else
Ng_Mesh * Netgen_mesh = ngLib._ngMesh.get();