X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=doc%2Fsalome%2Fexamples%2Fh010_normalCaseManualMesh.py;h=db0e6ff5897960a510d9fcf5597515cdd0578c78;hb=58bb6b7459bebeeb089c9ed486c4683a8bae7288;hp=66fa95a93d3a15d6987018430426c4ad6c0bdf87;hpb=dd7e17a45ab6e95dfdd44798c716c0797606a670;p=modules%2Fhydro.git diff --git a/doc/salome/examples/h010_normalCaseManualMesh.py b/doc/salome/examples/h010_normalCaseManualMesh.py index 66fa95a9..db0e6ff5 100644 --- a/doc/salome/examples/h010_normalCaseManualMesh.py +++ b/doc/salome/examples/h010_normalCaseManualMesh.py @@ -9,64 +9,8 @@ import salome salome.salome_init() theStudy = salome.myStudy -# ------------------------------------- - -def controlGeomProps(geomShape, refLength, refArea): - props = geompy.BasicProperties(geomShape) - print " Wires length: ", props[0] - print " Surface area: ", props[1] - print " Volume : ", props[2] - deltaLength = 2.0*abs((props[0] - refLength)/(props[0] + refLength)) - deltaArea = 2.0*abs((props[1] - refArea)/(props[1] + refArea)) - if deltaLength > 1e-7 or deltaArea > 1e-7 or props[2] != 0: - print "While must be:" - print " Wires length: ", refLength - print " Surface area: ", refArea - print " Volume : ", 0. - raise ValueError("Bad length or area") - -# ------------------------------------- - -def controlMeshStats(aMesh, nbNodes, nbEdges, nbTriangles): - """ - Only for a mesh, not for a subMesh - """ - tolerance = 0.05 - references = {} - references['Entity_Node'] = nbNodes - references['Entity_Edge'] = nbEdges - references['Entity_Triangle'] = nbTriangles - - mesures = aMesh.GetMeshInfo() - #print mesures - d= {} - for key, value in mesures.iteritems(): - d[str(key)] = value - #print d - for key in ('Entity_Triangle', 'Entity_Edge', 'Entity_Node'): - if (d[key] < (1.0 - tolerance)*references[key]) \ - or (d[key] > (1.0 + tolerance)*references[key]): - print aMesh.GetName() - print key, ": value: ", d[key], " reference: ", references[key] - raise ValueError("Bad number of nodes or elements") - -# ------------------------------------- - -def controlSubMeshStats(aSubMesh, nbItems): - """ - Only for a mesh, not for a subMesh - """ - tolerance = 0.05 - mesures = aSubMesh.GetMeshInfo() - nbRef = sum(mesures) - if (nbItems < (1.0 - tolerance)*nbRef) \ - or (nbItems > (1.0 + tolerance)*nbRef): - print aSubMesh.GetName() - print "value: ", nbItems, " reference: ", nbRef - raise ValueError("Bad number of nodes or elements") - #---------------------- -# --- HYDRO +# --- HYDRO #---------------------- from HYDROPy import * @@ -83,7 +27,8 @@ garonne_ign_01.SetName( "garonne_ign_01" ) garonne_ign_01.SetZLevel( 0 ) -garonne_ign_01.LoadImage(os.path.join(HYDRO_SAMPLES, "garonne_ign_01.png" )) +if not(garonne_ign_01.LoadImage(os.path.join(HYDRO_SAMPLES, "garonne_ign_01.png" ))): + raise ValueError('problem while loading image') garonne_ign_01.SetLocalPoints( QPoint( 40, 817 ), QPoint( 1325, 85 ) ) @@ -100,7 +45,8 @@ garonne_ign_02.SetName( "garonne_ign_02" ) garonne_ign_02.SetZLevel( 1 ) -garonne_ign_02.LoadImage( os.path.join(HYDRO_SAMPLES, "garonne_ign_02.png" )) +if not(garonne_ign_02.LoadImage( os.path.join(HYDRO_SAMPLES, "garonne_ign_02.png" ))): + raise ValueError('problem while loading image') garonne_ign_02.SetLocalPoints( QPoint( 1389, 447 ), QPoint( 784, 481 ) ) @@ -253,7 +199,8 @@ Cloud_02 = hydro_doc.CreateObject( KIND_BATHYMETRY ) Cloud_02.SetName( "Cloud_02" ) Cloud_02.SetAltitudesInverted( 0 ) -Cloud_02.ImportFromFile( os.path.join(HYDRO_SAMPLES, "Cloud_02.xyz" )) +if not(Cloud_02.ImportFromFile( os.path.join(HYDRO_SAMPLES, "Cloud_02.xyz" ))): + raise ValueError('problem while loading bathymetry') Cloud_02.Update() @@ -262,7 +209,8 @@ garonne_point_L93 = hydro_doc.CreateObject( KIND_BATHYMETRY ) garonne_point_L93.SetName( "garonne_point_L93" ) garonne_point_L93.SetAltitudesInverted( 0 ) -garonne_point_L93.ImportFromFile( os.path.join(HYDRO_SAMPLES, "garonne_point_L93.xyz" )) +if not(garonne_point_L93.ImportFromFile( os.path.join(HYDRO_SAMPLES, "garonne_point_L93.xyz" ))): + raise ValueError('problem while loading bathymetry') garonne_point_L93.Update() @@ -309,7 +257,6 @@ garonne_1 = hydro_doc.CreateObject( KIND_CALCULATION ) garonne_1.SetName( "garonne_1" ) garonne_1.SetAssignmentMode( HYDROData_CalculationCase.MANUAL ) -garonne_1.SetAssignmentLandCoverMode( HYDROData_CalculationCase.AUTOMATIC ) garonne_1.AddGeometryObject( litMineur ) garonne_1.AddGeometryObject( domaineEtendu ) garonne_1.AddGeometryObject( litMajeur ) @@ -347,7 +294,7 @@ garonne_1_riveGauche.SetName("garonne_1_riveGauche") garonne_1_entry = garonne_1.Export( theStudy._get_StudyId() ) #---------------------- -# --- Geometry +# --- Geometry #---------------------- # Get geometry shape and print debug information @@ -355,6 +302,7 @@ import GEOM from salome.geom import geomBuilder import math import SALOMEDS +from salome.hydrotools.controls import controlGeomProps geompy = geomBuilder.New(theStudy) @@ -363,7 +311,7 @@ HYDRO_garonne_1 = salome.IDToObject( str( garonne_1_entry ) ) print "Geom shape:", HYDRO_garonne_1 print "Geom shape name:", HYDRO_garonne_1.GetName() -# --- manual definition: geometrical faces +# --- manual definition: geometrical faces [riveGauche,litMineur,riveDroite] = geompy.ExtractShapes(HYDRO_garonne_1, geompy.ShapeType["FACE"], True) # --- manual definition: useful groups of edges @@ -394,16 +342,26 @@ geompy.addToStudyInFather( HYDRO_garonne_1, bordGaucheDomaine, 'bordGaucheDomain geompy.addToStudyInFather( HYDRO_garonne_1, bordDroiteDomaine, 'bordDroiteDomaine' ) # --- basic properties control: edges length, surfaces -controlGeomProps(riveGauche, 29149.36918, 35992556.454929) -controlGeomProps(litMineur, 30337.548492, 3646827.749809) -controlGeomProps(riveDroite, 32012.343241, 26177085.460092) - +controlGeomProps(geompy, riveGauche, 29149.36918, 35948828.352061) +#controlGeomProps(geompy, litMineur, 30337.5484919, 3263628.55399) +#controlGeomProps(geompy, riveDroite, 32012.3432411, 26177085.4601) +controlGeomProps(geompy, litMineur, 30337.548492, 3488480.304388) +controlGeomProps(geompy, riveDroite, 32012.343241, 25998769.23615) #---------------------- -# --- Meshing +# --- Meshing #---------------------- +med_file = r'/tmp/garonne_1.med' + +try: + os.remove(med_file) +except OSError: + pass + + import SMESH, SALOMEDS from salome.smesh import smeshBuilder +from salome.hydrotools.controls import controlMeshStats, controlSubMeshStats smesh = smeshBuilder.New(theStudy) @@ -438,6 +396,7 @@ isDone = garonne_1.SetMeshOrder( [ [ subMesh_SectionsGaronne, subMesh_litMineur # --- compute mesh isDone = garonne_1.Compute() isDone = garonne_1.SplitQuadObject( garonne_1, 1 ) +isDone = garonne_1.ReorientObject( garonne_1 ) # --- geometrical groups of edges garonne_1_litMineur_Outer_1 = garonne_1.GroupOnGeom(garonne_1_litMineur_Outer,'garonne_1_litMineur_Outer',SMESH.EDGE) @@ -466,8 +425,12 @@ bordDroiteDomaine_2 = garonne_1.GroupOnGeom(bordDroiteDomaine,'bordDroiteDomaine SectionsGaronne_3 = garonne_1.GroupOnGeom(SectionsGaronne,'SectionsGaronne',SMESH.NODE) garonne_1.SetAutoColor( 1 ) -garonne_1.ExportMED( r'/tmp/garonne_1.med', 0, SMESH.MED_V2_2, 1, None ,1) +garonne_1.ExportMED( med_file, 0, SMESH.MED_V2_2, 1, None ,1) +#controlMeshStats(garonne_1, 1763, 180, 3360) +#controlSubMeshStats(litMineur_2, 48) +#controlSubMeshStats(riveDroite_1, 1360) +#controlSubMeshStats(riveGauche_1, 1952) controlMeshStats(garonne_1, 3888, 475, 7597) controlSubMeshStats(litMineur_2, 2384) controlSubMeshStats(riveDroite_1, 2342)