Adding comments + removing SMESH_Gen argument

This commit is contained in:
Yoann Audouin 2022-10-04 14:32:49 +02:00
parent fbfd90a1f8
commit 75f2fd83a4
4 changed files with 158 additions and 31 deletions

View File

@ -198,11 +198,20 @@ bool NETGENPlugin_NETGEN_3D::CheckHypothesis (SMESH_Mesh& aMesh,
*/ */
//============================================================================= //=============================================================================
/**
* @brief Get an iterator on the Surface element with their orientation
*
*/
/**
* @brief Compute the list of already meshed Surface elements and info
* on their orientation and if they are internal
*
* @param aMesh Global Mesh
* @param aShape Shape associated to the mesh
* @param proxyMesh pointer to mesh used fo find the elements
* @param internals information on internal sub shapes
* @param helper helper associated to the mesh
* @param listElements map of surface element associated with
* their orientation and internal status
* @return true if their was some error
*/
bool NETGENPlugin_NETGEN_3D::getSurfaceElements( bool NETGENPlugin_NETGEN_3D::getSurfaceElements(
SMESH_Mesh& aMesh, SMESH_Mesh& aMesh,
const TopoDS_Shape& aShape, const TopoDS_Shape& aShape,
@ -257,6 +266,18 @@ bool NETGENPlugin_NETGEN_3D::getSurfaceElements(
return false; return false;
} }
/**
* @brief Part of Compute: adding already meshed elements
* into netgen structure
*
* @param aMesh Global mesh
* @param aShape Shape associated with the mesh
* @param nodeVec Mapping between nodes mesh id and netgen structure id
* @param ngLib Wrapper on netgen lib
* @param helper helper assocaited to the mesh
* @param Netgen_NbOfNodes Number of nodes in netge structure
* @return true if there was some error
*/
bool NETGENPlugin_NETGEN_3D::computeFillNgMesh( bool NETGENPlugin_NETGEN_3D::computeFillNgMesh(
SMESH_Mesh& aMesh, SMESH_Mesh& aMesh,
@ -388,6 +409,16 @@ bool NETGENPlugin_NETGEN_3D::computeFillNgMesh(
return false; return false;
} }
/**
* @brief Part of Compute: Setting the netgen parameters from the Hypothesis
*
* @param aMesh Global mesh
* @param ngLib Wrapper on netgen lib
* @param occgeo Mapping between nodes mesh id and netgen structure id
* @param helper helper assocaited to the mesh
* @param endWith end step of netgen
* @return true if there was some error
*/
bool NETGENPlugin_NETGEN_3D::computePrepareParam( bool NETGENPlugin_NETGEN_3D::computePrepareParam(
SMESH_Mesh& aMesh, SMESH_Mesh& aMesh,
NETGENPlugin_NetgenLibWrapper &ngLib, NETGENPlugin_NetgenLibWrapper &ngLib,
@ -451,6 +482,17 @@ bool NETGENPlugin_NETGEN_3D::computePrepareParam(
return false; return false;
} }
/**
* @brief Part of Compute: call to the netgen mesher
*
* @param occgeo netgen geometry structure
* @param nodeVec Mapping between nodes mesh id and netgen structure id
* @param ngMesh netgen mesh structure
* @param ngLib Wrapper on netgen lib
* @param startWith starting step of netgen
* @param endWith end step of netgen
* @return true if there was some error
*/
bool NETGENPlugin_NETGEN_3D::computeRunMesher( bool NETGENPlugin_NETGEN_3D::computeRunMesher(
netgen::OCCGeometry &occgeo, netgen::OCCGeometry &occgeo,
vector< const SMDS_MeshNode* > &nodeVec, vector< const SMDS_MeshNode* > &nodeVec,
@ -509,6 +551,15 @@ bool NETGENPlugin_NETGEN_3D::computeRunMesher(
return false; return false;
} }
/**
* @brief Part of Compute: Adding new element created by mesher to SMESH_Mesh
*
* @param nodeVec Mapping between nodes mesh id and netgen structure id
* @param ngLib Wrapper on netgen lib
* @param helper tool associated to the mesh to add element
* @param Netgen_NbOfNodes Number of nodes in netgen structure
* @return true if there was some error
*/
bool NETGENPlugin_NETGEN_3D::computeFillMesh( bool NETGENPlugin_NETGEN_3D::computeFillMesh(
vector< const SMDS_MeshNode* > &nodeVec, vector< const SMDS_MeshNode* > &nodeVec,
NETGENPlugin_NetgenLibWrapper &ngLib, NETGENPlugin_NetgenLibWrapper &ngLib,
@ -555,6 +606,14 @@ bool NETGENPlugin_NETGEN_3D::computeFillMesh(
return false; return false;
} }
/**
* @brief Compute mesh associate to shape
*
* @param aMesh The mesh
* @param aShape The shape
* @return true fi there are some error
*/
bool NETGENPlugin_NETGEN_3D::Compute( bool NETGENPlugin_NETGEN_3D::Compute(
SMESH_Mesh& aMesh, SMESH_Mesh& aMesh,
const TopoDS_Shape& aShape) const TopoDS_Shape& aShape)

View File

@ -82,7 +82,7 @@ using namespace nglib;
//============================================================================= //=============================================================================
/*! /*!
* * Constructor
*/ */
//============================================================================= //=============================================================================
@ -94,7 +94,7 @@ NETGENPlugin_NETGEN_3D_Remote::NETGENPlugin_NETGEN_3D_Remote(int hypId, SMESH_Ge
//============================================================================= //=============================================================================
/*! /*!
* * Destructor
*/ */
//============================================================================= //=============================================================================
@ -102,7 +102,12 @@ NETGENPlugin_NETGEN_3D_Remote::~NETGENPlugin_NETGEN_3D_Remote()
{ {
} }
/**
* @brief Fill the structure netgen_param with the information from the hypothesis
*
* @param hyp the hypothesis
* @param aParams the netgen_param structure
*/
void NETGENPlugin_NETGEN_3D_Remote::fillParameters(const NETGENPlugin_Hypothesis* hyp, netgen_params &aParams) void NETGENPlugin_NETGEN_3D_Remote::fillParameters(const NETGENPlugin_Hypothesis* hyp, netgen_params &aParams)
{ {
aParams.maxh = hyp->GetMaxSize(); aParams.maxh = hyp->GetMaxSize();
@ -136,7 +141,15 @@ void NETGENPlugin_NETGEN_3D_Remote::fillParameters(const NETGENPlugin_Hypothesis
#endif #endif
} }
// write in a binary file the orientation for each 2D element of the mesh //
/**
* @brief write in a binary file the orientation for each surface element of the mesh
*
* @param aMesh The mesh
* @param aShape the shape associated to the mesh
* @param output_file name of the binary file
*/
void NETGENPlugin_NETGEN_3D_Remote::exportElementOrientation(SMESH_Mesh& aMesh, void NETGENPlugin_NETGEN_3D_Remote::exportElementOrientation(SMESH_Mesh& aMesh,
const TopoDS_Shape& aShape, const TopoDS_Shape& aShape,
const std::string output_file) const std::string output_file)
@ -195,7 +208,13 @@ void NETGENPlugin_NETGEN_3D_Remote::exportElementOrientation(SMESH_Mesh& aMesh,
} }
} }
/**
* @brief Compute mesh associate to shape
*
* @param aMesh The mesh
* @param aShape The shape
* @return true fi there are some error
*/
bool NETGENPlugin_NETGEN_3D_Remote::Compute(SMESH_Mesh& aMesh, bool NETGENPlugin_NETGEN_3D_Remote::Compute(SMESH_Mesh& aMesh,
const TopoDS_Shape& aShape) const TopoDS_Shape& aShape)
{ {
@ -351,7 +370,11 @@ bool NETGENPlugin_NETGEN_3D_Remote::Compute(SMESH_Mesh& aMesh,
return true; return true;
} }
/**
* @brief Assign submeshes to compute
*
* @param aSubMesh submesh to add
*/
void NETGENPlugin_NETGEN_3D_Remote::setSubMeshesToCompute(SMESH_subMesh * aSubMesh) void NETGENPlugin_NETGEN_3D_Remote::setSubMeshesToCompute(SMESH_subMesh * aSubMesh)
{ {
SMESH_MeshLocker myLocker(aSubMesh->GetFather()); SMESH_MeshLocker myLocker(aSubMesh->GetFather());

View File

@ -76,19 +76,19 @@ using namespace nglib;
//============================================================================= //=============================================================================
/*! /*!
* * Constructor
*/ */
//============================================================================= //=============================================================================
NETGENPlugin_NETGEN_3D_SA::NETGENPlugin_NETGEN_3D_SA() NETGENPlugin_NETGEN_3D_SA::NETGENPlugin_NETGEN_3D_SA()
: NETGENPlugin_NETGEN_3D(0, _gen=new SMESH_Gen()) : NETGENPlugin_NETGEN_3D(0, new SMESH_Gen())
{ {
_name = "NETGEN_3D_SA"; _name = "NETGEN_3D_SA";
} }
//============================================================================= //=============================================================================
/*! /*!
* * Destructor
*/ */
//============================================================================= //=============================================================================
@ -98,15 +98,18 @@ NETGENPlugin_NETGEN_3D_SA::~NETGENPlugin_NETGEN_3D_SA()
delete _gen; delete _gen;
} }
/**
/* * @brief fill plugin hypothesis from the netgen_params structure
* *
* @param aParams the structure
* @param gen SMESH_Gen associate with the SA
*/ */
void NETGENPlugin_NETGEN_3D_SA::fillHyp(netgen_params aParams)
void NETGENPlugin_NETGEN_3D_SA::fillHyp(netgen_params aParams, SMESH_Gen* gen)
{ {
if(_gen)
std::cout << "_gen is set" << std::endl;
if(aParams.has_netgen_param){ if(aParams.has_netgen_param){
NETGENPlugin_Hypothesis * hypParameters = new NETGENPlugin_Hypothesis(0, gen); NETGENPlugin_Hypothesis * hypParameters = new NETGENPlugin_Hypothesis(0, GetGen());
hypParameters->SetMaxSize(aParams.maxh); hypParameters->SetMaxSize(aParams.maxh);
hypParameters->SetMinSize(aParams.minh); hypParameters->SetMinSize(aParams.minh);
@ -134,12 +137,22 @@ void NETGENPlugin_NETGEN_3D_SA::fillHyp(netgen_params aParams, SMESH_Gen* gen)
_hypParameters = dynamic_cast< const NETGENPlugin_Hypothesis *> (hypParameters); _hypParameters = dynamic_cast< const NETGENPlugin_Hypothesis *> (hypParameters);
} }
if(aParams.has_maxelementvolume_hyp){ if(aParams.has_maxelementvolume_hyp){
_hypMaxElementVolume = new StdMeshers_MaxElementVolume(1, gen); _hypMaxElementVolume = new StdMeshers_MaxElementVolume(1, GetGen());
_maxElementVolume = aParams.maxElementVolume; _maxElementVolume = aParams.maxElementVolume;
} }
// TODO: Handle viscous layer // TODO: Handle viscous layer
} }
/**
* @brief Write a binary file containing information on the elements/nodes
* created by the mesher
*
* @param nodeVec mapping between the mesh id and the netgen structure id
* @param ngLib Wrapper on netgen library
* @param new_element_file Name of the output file
* @param Netgen_NbOfNodes Number of nodes in the netgen structure
* @return true if there are some error
*/
bool NETGENPlugin_NETGEN_3D_SA::computeFillNewElementFile( bool NETGENPlugin_NETGEN_3D_SA::computeFillNewElementFile(
std::vector< const SMDS_MeshNode* > &nodeVec, std::vector< const SMDS_MeshNode* > &nodeVec,
NETGENPlugin_NetgenLibWrapper &ngLib, NETGENPlugin_NetgenLibWrapper &ngLib,
@ -190,9 +203,22 @@ bool NETGENPlugin_NETGEN_3D_SA::computeFillNewElementFile(
return false; return false;
} }
/**
bool NETGENPlugin_NETGEN_3D_SA::Compute(TopoDS_Shape &aShape, SMESH_Mesh& aMesh, netgen_params& aParams, * @brief Compute mesh associated to shape
std::string new_element_file, bool output_mesh) *
* @param aShape the shape
* @param aMesh the mesh
* @param aParams netgen_params structure
* @param new_element_file Name of the file containing new element
* @param output_mesh Name of the output mesh (if empty it will not be written)
* @return true if there are some error
*/
bool NETGENPlugin_NETGEN_3D_SA::Compute(
TopoDS_Shape &aShape,
SMESH_Mesh& aMesh,
netgen_params& aParams,
std::string new_element_file,
bool output_mesh)
{ {
// vector of nodes in which node index == netgen ID // vector of nodes in which node index == netgen ID
vector< const SMDS_MeshNode* > nodeVec; vector< const SMDS_MeshNode* > nodeVec;
@ -222,6 +248,18 @@ bool NETGENPlugin_NETGEN_3D_SA::Compute(TopoDS_Shape &aShape, SMESH_Mesh& aMesh,
return false; return false;
} }
/**
* @brief Running the mesher on the given files
*
* @param input_mesh_file Mesh file (containing 2D elements)
* @param shape_file Shape file (BREP or STEP format)
* @param hypo_file Ascii file containing the netgen parameters
* @param element_orientation_file Binary file containing the orientation of surface elemnts
* @param new_element_file output file containing info the elements created by the mesher
* @param output_mesh_file output mesh file (if empty it will not be created)
* @return int
*/
int NETGENPlugin_NETGEN_3D_SA::run(const std::string input_mesh_file, int NETGENPlugin_NETGEN_3D_SA::run(const std::string input_mesh_file,
const std::string shape_file, const std::string shape_file,
const std::string hypo_file, const std::string hypo_file,
@ -231,10 +269,8 @@ int NETGENPlugin_NETGEN_3D_SA::run(const std::string input_mesh_file,
{ {
_element_orientation_file = element_orientation_file; _element_orientation_file = element_orientation_file;
// Importing mesh
SMESH_Gen gen;
std::unique_ptr<SMESH_Mesh> myMesh(gen.CreateMesh(false)); std::unique_ptr<SMESH_Mesh> myMesh(_gen->CreateMesh(false));
importMesh(input_mesh_file, *myMesh); importMesh(input_mesh_file, *myMesh);
@ -246,7 +282,7 @@ int NETGENPlugin_NETGEN_3D_SA::run(const std::string input_mesh_file,
netgen_params myParams; netgen_params myParams;
importNetgenParams(hypo_file, myParams); importNetgenParams(hypo_file, myParams);
fillHyp(myParams, &gen); fillHyp(myParams);
MESSAGE("Meshing with netgen3d"); MESSAGE("Meshing with netgen3d");
int ret = Compute(myShape, *myMesh, myParams, int ret = Compute(myShape, *myMesh, myParams,
@ -267,7 +303,19 @@ int NETGENPlugin_NETGEN_3D_SA::run(const std::string input_mesh_file,
return ret; return ret;
} }
/**
* @brief Compute the list of already meshed Surface elements and info
* on their orientation and if they are internal
*
* @param aMesh Global Mesh
* @param aShape Shape associated to the mesh
* @param proxyMesh pointer to mesh used fo find the elements
* @param internals information on internal sub shapes
* @param helper helper associated to the mesh
* @param listElements map of surface element associated with
* their orientation and internal status
* @return true if their was some error
*/
bool NETGENPlugin_NETGEN_3D_SA::getSurfaceElements( bool NETGENPlugin_NETGEN_3D_SA::getSurfaceElements(
SMESH_Mesh& aMesh, SMESH_Mesh& aMesh,
const TopoDS_Shape& aShape, const TopoDS_Shape& aShape,

View File

@ -38,7 +38,6 @@
class NETGENPlugin_NetgenLibWrapper; class NETGENPlugin_NetgenLibWrapper;
class netgen_params; class netgen_params;
class SMDS_MeshNode; class SMDS_MeshNode;
class SMESH_Gen;
using namespace std; using namespace std;
@ -48,7 +47,7 @@ class NETGENPLUGIN_EXPORT NETGENPlugin_NETGEN_3D_SA: public NETGENPlugin_NETGEN_
NETGENPlugin_NETGEN_3D_SA(); NETGENPlugin_NETGEN_3D_SA();
virtual ~NETGENPlugin_NETGEN_3D_SA(); virtual ~NETGENPlugin_NETGEN_3D_SA();
void fillHyp(netgen_params aParams, SMESH_Gen* gen); void fillHyp(netgen_params aParams);
bool Compute(TopoDS_Shape &aShape, SMESH_Mesh& aMesh, netgen_params& aParams, bool Compute(TopoDS_Shape &aShape, SMESH_Mesh& aMesh, netgen_params& aParams,
std::string new_element_file, bool output_mesh); std::string new_element_file, bool output_mesh);
@ -77,8 +76,6 @@ class NETGENPLUGIN_EXPORT NETGENPlugin_NETGEN_3D_SA: public NETGENPlugin_NETGEN_
) override; ) override;
std::string _element_orientation_file=""; std::string _element_orientation_file="";
SMESH_Gen *_gen=nullptr;
}; };
#endif #endif