I have been trying to convert my existing meshing script to a parallel one using the documentation, but it always gives me some errors.
I am attaching the code, please suggest changes to make it run in parallel. I am skipping a few lines and surfaces to make the code simpler.
————————————
import SMESH, SALOMEDS
from salome.smesh import smeshBuilder
smesh = smeshBuilder.New()
#smesh.SetEnablePublish( False ) # Set to False to avoid publish in study if not needed or in some particular situations:
multiples meshes built in parallel, complex and numerous mesh edition (performance)
NETGEN_1D_2D = smesh.CreateHypothesis(‘NETGEN_2D’, ‘libNETGENEngine.so’)
NETGEN_2D_Parameters_1 = smesh.CreateHypothesis(‘NETGEN_Parameters_2D’, ‘libNETGENEngine.so’)
NETGEN_2D_Parameters_1.SetMinSize( 0.01 )
NETGEN_2D_Parameters_1.SetSecondOrder( 0 )
NETGEN_2D_Parameters_1.SetOptimize( 1 )
NETGEN_2D_Parameters_1.SetFineness( 5 )
NETGEN_2D_Parameters_1.SetNbSegPerEdge( 1 )
NETGEN_2D_Parameters_1.SetNbSegPerRadius( 2 )
NETGEN_2D_Parameters_1.SetChordalError( -1 )
NETGEN_2D_Parameters_1.SetChordalErrorEnabled( 0 )
NETGEN_2D_Parameters_1.SetUseSurfaceCurvature( 1 )
NETGEN_2D_Parameters_1.SetLocalSizeOnShape(WING, 0.5)
NETGEN_2D_Parameters_1.SetLocalSizeOnShape(FUSELAGE, 0.05)
NETGEN_2D_Parameters_1.SetGrowthRate( 1.2 )
NETGEN_2D_Parameters_1.SetMaxSize( 20 )
NETGEN_2D_Parameters_1.SetWorstElemMeasure( 159 )
#PARALLEL
par_mesh = smesh.ParallelMesh(FLUID,‘Mesh_1’)
SYMM_1 = par_mesh.GroupOnGeom(SYMM,‘SYMM’,SMESH.FACE)
FARFIELD_1 = par_mesh.GroupOnGeom(FARFIELD,‘FARFIELD’,SMESH.FACE)
WING_1 = par_mesh.GroupOnGeom(WING,‘WING’,SMESH.FACE)
FUSELAGE_1 = par_mesh.GroupOnGeom(FUSELAGE,‘FUSELAGE’,SMESH.FACE)
[ SYMM_1, FARFIELD_1, WING_1, FUSELAGE_1 ] = par_mesh.GetGroups()
#PARALLEL
print(“Setting parallelism method”)
par_mesh.SetParallelismMethod(smeshBuilder.MULTITHREAD)
print(“Setting parallelism options”)
param = par_mesh.GetParallelismSettings()
param.SetNbThreads(10)
status = par_mesh.AddHypothesis(NETGEN_1D_2D,WING)
status = par_mesh.AddHypothesis(NETGEN_2D_Parameters_1,WING)
status = par_mesh.AddHypothesis(NETGEN_1D_2D,FUSELAGE)
status = par_mesh.AddHypothesis(NETGEN_2D_Parameters_1,FUSELAGE)
[ SYMM_1, FARFIELD_1, WING_1, FUSELAGE_1 ] = par_mesh.GetGroups()
#NETGEN_1D_2D_3D = Mesh_1.Tetrahedron(algo=smeshBuilder.NETGEN_1D2D3D)
[ SYMM_1, FARFIELD_1, WING_1, FUSELAGE_1] = par_mesh.GetGroups()
NETGEN_3D_Parameters_1 = NETGEN_3D.Parameters()
NETGEN_3D_Parameters_1.SetMaxSize( 100 )
NETGEN_3D_Parameters_1.SetMinSize( 0.01 )
NETGEN_3D_Parameters_1.SetOptimize( 1 )
NETGEN_3D_Parameters_1.SetFineness( 5 )
NETGEN_3D_Parameters_1.SetGrowthRate( 1.25 )
NETGEN_3D_Parameters_1.SetCheckOverlapping( 0 )
NETGEN_3D_Parameters_1.SetElemSizeWeight( 9.05066e-312 )
NETGEN_3D_Parameters_1.SetCheckChartBoundary( 232 )
par_mesh.AddGlobalHypothesis(NETGEN_3D_Parameters_1)
NETGEN_3D = par_mesh.Tetrahedron()
status = par_mesh.AddHypothesis(NETGEN_1D_2D,SYMM)
status = par_mesh.AddHypothesis(NETGEN_2D_Parameters_1,SYMM)
status = par_mesh.AddHypothesis(NETGEN_1D_2D,FARFIELD)
status = par_mesh.AddHypothesis(NETGEN_2D_Parameters_1,FARFIELD)
isDone = par_mesh.Compute()
par_mesh.CheckCompute()
[ SYMM_1, FARFIELD_1, WING_1, FUSELAGE_1] = Mesh_1.GetGroups()
WING_2 = par_mesh.GetSubMesh( WING, ‘Sub-mesh_4’ )
FUSELAGE_2 = par_mesh.GetSubMesh( FUSELAGE, ‘Sub-mesh_6’ )
SYMM_2 = par_mesh.GetSubMesh( SYMM, ‘Sub-mesh_7’ )
FARFIELD_2 = par_mesh.GetSubMesh( FARFIELD, ‘Sub-mesh_8’ )
smesh.SetName(FUSELAGE_1, ‘FUSELAGE’)
smesh.SetName(NETGEN_2D_Parameters_1, ‘NETGEN 2D Parameters_1’)
smesh.SetName(FUSELAGE_2, ‘FUSELAGE’)
smesh.SetName(Mesh_1.GetMesh(), ‘Mesh_1’)
smesh.SetName(FARFIELD_2, ‘FARFIELD’)
smesh.SetName(FARFIELD_1, ‘FARFIELD’)
smesh.SetName(WING_1, ‘WING’)
smesh.SetName(SYMM_1, ‘SYMM’)
smesh.SetName(NETGEN_3D.GetAlgorithm(), ‘NETGEN 3D’)
smesh.SetName(NETGEN_3D_Parameters_1, ‘NETGEN 3D Parameters_1’)
smesh.SetName(NETGEN_1D_2D, ‘NETGEN 1D-2D’)
smesh.SetName(SYMM_2, ‘SYMM’)
smesh.SetName(WING_2, ‘WING’)