Adding support of number of thread for the mesher
This commit is contained in:
parent
9c3bd8e9d1
commit
a71af09b16
@ -222,7 +222,7 @@ void NETGENPlugin_NETGEN_3D::FillParameters(const NETGENPlugin_Hypothesis* hyp,
|
||||
aParams.meshsizefilename = hyp->GetMeshSizeFile();
|
||||
#else
|
||||
// const char*
|
||||
aParams.meshsizefilename = hyp->GetMeshSizeFile().empty() ? 0 : hyp->GetMeshSizeFile().c_str();
|
||||
aParams.meshsizefilename = hyp->GetMeshSizeFile();
|
||||
#endif
|
||||
#ifdef NETGEN_V6
|
||||
aParams.closeedgefac = 2;
|
||||
@ -353,6 +353,7 @@ int NETGENPlugin_NETGEN_3D::RemoteCompute(SMESH_Mesh& aMesh,
|
||||
+ shape_file.string() + " "
|
||||
+ param_file.string() + " "
|
||||
+ element_orientation_file.string() + " "
|
||||
+ std::to_string(aMesh.GetMesherNbThreads()) + " "
|
||||
+ new_element_file.string() + " "
|
||||
+ std::to_string(0) + " "
|
||||
+ output_mesh_file.string() +
|
||||
|
@ -129,8 +129,8 @@ void set_netgen_parameters(netgen_params& aParams)
|
||||
#ifdef NETGEN_V6
|
||||
|
||||
//netgen::mparam.nthreads = std::thread::hardware_concurrency();
|
||||
netgen::mparam.nthreads = 2;
|
||||
//netgen::mparam.parallel_meshing = false;
|
||||
netgen::mparam.nthreads = aParams.nbThreads;
|
||||
netgen::mparam.parallel_meshing = aParams.nbThreads > 1;
|
||||
|
||||
|
||||
if ( getenv( "SALOME_NETGEN_DISABLE_MULTITHREADING" ))
|
||||
@ -165,7 +165,7 @@ void set_netgen_parameters(netgen_params& aParams)
|
||||
|
||||
#else
|
||||
// const char*
|
||||
netgen::mparam.meshsizefilename= aParams.meshsizefilename ? 0 : aParams.meshsizefilename.c_str();
|
||||
netgen::mparam.meshsizefilename= aParams.meshsizefilename.empty() ? 0 : aParams.meshsizefilename.c_str();
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -187,7 +187,8 @@ int netgen3d(const std::string input_mesh_file,
|
||||
const std::string element_orientation_file,
|
||||
const std::string new_element_file,
|
||||
bool output_mesh,
|
||||
const std::string output_mesh_file)
|
||||
const std::string output_mesh_file,
|
||||
int nbThreads)
|
||||
{
|
||||
auto time0 = std::chrono::high_resolution_clock::now();
|
||||
// Importing mesh
|
||||
@ -216,6 +217,8 @@ int netgen3d(const std::string input_mesh_file,
|
||||
auto time3 = std::chrono::high_resolution_clock::now();
|
||||
elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(time3-time2);
|
||||
std::cout << "Time for import_netgen_param: " << elapsed.count() * 1e-9 << std::endl;
|
||||
// Setting number of threads for netgen
|
||||
myParams.nbThreads = nbThreads;
|
||||
|
||||
std::cout << "Meshing with netgen3d" << std::endl;
|
||||
int ret = netgen3d_internal(myShape, *myMesh, myParams,
|
||||
|
@ -62,7 +62,8 @@ int netgen3d(const std::string input_mesh_file,
|
||||
const std::string element_orienation_file,
|
||||
const std::string new_element_file,
|
||||
bool output_mesh,
|
||||
const std::string output_mesh_file);
|
||||
const std::string output_mesh_file,
|
||||
int nbThreads);
|
||||
|
||||
//TODO: Tmp function replace by real error handling
|
||||
int error(int error_type, std::string msg);
|
||||
|
@ -81,6 +81,9 @@ struct netgen_params{
|
||||
|
||||
// Params from NETGEN2D
|
||||
bool has_LengthFromEdges_hyp=false;
|
||||
|
||||
// Number of threads for the mesher
|
||||
int nbThreads;
|
||||
};
|
||||
|
||||
void print_netgen_params(netgen_params& aParams);
|
||||
|
@ -163,7 +163,8 @@ void test_netgen3d(){
|
||||
"element_orient.dat",
|
||||
"new_element.dat",
|
||||
true,
|
||||
"box_with3D.med");
|
||||
"box_with3D.med",
|
||||
1);
|
||||
|
||||
// TODO: Check result
|
||||
}
|
||||
@ -178,11 +179,12 @@ void test_netgen3d(){
|
||||
*/
|
||||
int main(int argc, char *argv[]){
|
||||
|
||||
if(argc!=9||(argc==2 && (argv[1] == "-h" || argv[1]=="--help"))){
|
||||
if(argc!=10||(argc==2 && (strcmp(argv[1], "-h") == 0 || strcmp(argv[1], "--help")==0))){
|
||||
std::cout << "Error in number of argument"<<std::endl;
|
||||
std::cout << "Syntax:"<<std::endl;
|
||||
std::cout << "run_mesher MESHER INPUT_MESH_FILE SHAPE_FILE HYPO_FILE" << std::endl;
|
||||
std::cout << " ELEM_ORIENT_FILE NEW_ELEMENT_FILE OUTPUT_MESH_FILE" << std::endl;
|
||||
std::cout << " ELEM_ORIENT_FILE NB_THREADS" << std::endl;
|
||||
std::cout << " NEW_ELEMENT_FILE OUTPUT_MESH_FILE" << std::endl;
|
||||
std::cout << std::endl;
|
||||
std::cout << "Args:" << std::endl;
|
||||
std::cout << " MESHER: mesher to use from (NETGEN3D, NETGEN2D)" << std::endl;
|
||||
@ -190,6 +192,7 @@ int main(int argc, char *argv[]){
|
||||
std::cout << " SHAPE_FILE: STEP file containing the shape to mesh" << std::endl;
|
||||
std::cout << " HYPO_FILE: Ascii file containint the list of parameters" << std::endl;
|
||||
std::cout << " ELEM_ORIENT_FILE: binary file containing the list of element from INPUT_MESH_FILE associated to the shape and their orientation" << std::endl;
|
||||
std::cout << " NB_THREADS: Number of thread to use for the mesher" << std::endl;
|
||||
std::cout << " NEW_ELEMENT_FILE: (out) contains elements and nodes added by the meshing" << std::endl;
|
||||
std::cout << " OUTPUT_MESH: If !=0 will export mesh into OUTPUT_MESH_FILE " << std::endl;
|
||||
std::cout << " OUTPUT_MESH_FILE: MED File containing the mesh after the run of the mesher" << std::endl;
|
||||
@ -200,9 +203,10 @@ int main(int argc, char *argv[]){
|
||||
std::string shape_file=argv[3];
|
||||
std::string hypo_file=argv[4];
|
||||
std::string element_orientation_file=argv[5];
|
||||
std::string new_element_file=argv[6];
|
||||
bool output_mesh = std::stoi(argv[7]) != 0;
|
||||
std::string output_mesh_file=argv[8];
|
||||
int nbThreads=std::stoi(argv[6]);
|
||||
std::string new_element_file=argv[7];
|
||||
bool output_mesh = std::stoi(argv[8]) != 0;
|
||||
std::string output_mesh_file=argv[9];
|
||||
|
||||
if (mesher=="test"){
|
||||
std::cout << "Running tests" << std::endl;
|
||||
@ -218,7 +222,8 @@ int main(int argc, char *argv[]){
|
||||
element_orientation_file,
|
||||
new_element_file,
|
||||
output_mesh,
|
||||
output_mesh_file);
|
||||
output_mesh_file,
|
||||
nbThreads);
|
||||
auto end = std::chrono::high_resolution_clock::now();
|
||||
auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin);
|
||||
std::cout << "Time elapsed: " << elapsed.count()*1e-9 << std::endl;
|
||||
|
Loading…
Reference in New Issue
Block a user