Porting netgen

This commit is contained in:
asozinov 2022-10-28 10:36:04 +03:00
parent 1aecb09c15
commit ca86285740
2 changed files with 21 additions and 1 deletions

View File

@ -31,6 +31,7 @@
#include "NETGENPlugin_Hypothesis_2D.hxx"
#include "NETGENPlugin_SimpleHypothesis_3D.hxx"
#include <BRepBndLib.hxx>
#include <SMDS_FaceOfNodes.hxx>
#include <SMDS_LinearEdge.hxx>
#include <SMDS_MeshElement.hxx>
@ -2900,7 +2901,7 @@ bool NETGENPlugin_Mesher::Compute()
// Generate the mesh
// -------------------------
_ngMesh = NULL;
//_ngMesh = NULL;
NETGENPlugin_ngMeshInfo initState; // it remembers size of ng mesh equal to size of Smesh
SMESH_Comment comment;
@ -4506,10 +4507,19 @@ int NETGENPlugin_NetgenLibWrapper::GenerateMesh( netgen::OCCGeometry& occgeo,
ngMesh->SetGeometry( shared_ptr<netgen::NetgenGeometry>( &occgeo, &NOOP_Deleter ));
ofstream MyFile("D:/plug.txt");
MyFile << "Before";
occgeo.BuildFMap();
MyFile << "\nAfter";
netgen::mparam.perfstepsstart = startWith;
netgen::mparam.perfstepsend = endWith;
std::shared_ptr<netgen::Mesh> meshPtr( ngMesh, &NOOP_Deleter );
MyFile << "\nGenMeshStart";
err = occgeo.GenerateMesh( meshPtr, netgen::mparam );
MyFile << "\nGenMeshEnd";
MyFile << err;
#else
#ifdef NETGEN_V5

View File

@ -26,6 +26,8 @@
#include "NETGENPlugin_Mesher.hxx"
#include "NETGENPlugin_Hypothesis_2D.hxx"
#include <BRepBndLib.hxx>
#include <TopExp.hxx>
#include <SMDS_MeshElement.hxx>
#include <SMDS_MeshNode.hxx>
#include <SMESHDS_Mesh.hxx>
@ -226,6 +228,9 @@ bool NETGENPlugin_NETGEN_2D_ONLY::CheckHypothesis (SMESH_Mesh& aMesh,
bool NETGENPlugin_NETGEN_2D_ONLY::Compute(SMESH_Mesh& aMesh,
const TopoDS_Shape& aShape)
{
ofstream File("D:/2D_ONLY.txt");
File << "Compute Start\t";
netgen::multithread.terminate = 0;
//netgen::multithread.task = "Surface meshing";
@ -240,6 +245,7 @@ bool NETGENPlugin_NETGEN_2D_ONLY::Compute(SMESH_Mesh& aMesh,
netgen::Mesh * ngMeshes[2] = { (netgen::Mesh*) ngLib._ngMesh, & ngMeshNoLocSize };
netgen::OCCGeometry occgeoComm;
File << "1";
// min / max sizes are set as follows:
// if ( _hypParameters )
// min and max are defined by the user
@ -290,6 +296,8 @@ bool NETGENPlugin_NETGEN_2D_ONLY::Compute(SMESH_Mesh& aMesh,
#endif
occgeoComm.face_maxh = netgen::mparam.maxh;
#ifdef NETGEN_V6
occgeoComm.BuildFMap();
netgen::OCCParameters occparam;
netgen::OCCSetLocalMeshSize( occgeoComm, *ngMeshes[0], netgen::mparam, occparam );
#else
@ -335,6 +343,7 @@ bool NETGENPlugin_NETGEN_2D_ONLY::Compute(SMESH_Mesh& aMesh,
// Loop on all FACEs
// ==================
File << "2";
vector< const SMDS_MeshNode* > nodeVec;
TopExp_Explorer fExp( aShape, TopAbs_FACE );
@ -597,6 +606,7 @@ bool NETGENPlugin_NETGEN_2D_ONLY::Compute(SMESH_Mesh& aMesh,
} // two attempts
} // loop on FACEs
File << "\tCompute End\n";
return true;
}