-print "Entry:", garonne_2_entry
-HYDRO_garonne_2 = salome.IDToObject( str( garonne_2_entry ) )
-print "Geom shape:", HYDRO_garonne_2
-print "Geom shape name:", HYDRO_garonne_2.GetName()
-
-[riveGauche,digue,litMineur,riveDroite] = geompy.ExtractShapes(HYDRO_garonne_2, geompy.ShapeType["FACE"], True)
-geompy.addToStudyInFather( HYDRO_garonne_2, riveGauche, 'riveGauche' )
-geompy.addToStudyInFather( HYDRO_garonne_2, digue, 'digue' )
-geompy.addToStudyInFather( HYDRO_garonne_2, litMineur, 'litMineur' )
-geompy.addToStudyInFather( HYDRO_garonne_2, riveDroite, 'riveDroite' )
-
-SectionsGaronne = geompy.CreateGroup(HYDRO_garonne_2, geompy.ShapeType["EDGE"])
-geompy.UnionIDs(SectionsGaronne, [4, 11])
-geompy.addToStudyInFather( HYDRO_garonne_2, SectionsGaronne, 'SectionsGaronne' )
-
-SectionsDigue = geompy.CreateGroup(HYDRO_garonne_2, geompy.ShapeType["EDGE"])
-geompy.UnionIDs(SectionsDigue, [46, 50])
-geompy.addToStudyInFather( HYDRO_garonne_2, SectionsDigue, 'SectionsDigue' )
-
-# --- recreate subshapes already exported from HYDRO to get access from Python
-#garonne_2_domaineEtendu_Outer = geompy.CreateGroup(HYDRO_garonne_2, geompy.ShapeType["EDGE"])
-#geompy.UnionIDs(garonne_2_domaineEtendu_Outer, [4, 11, 17, 24, 26, 28, 14, 19, 20, 22, 31, 39, 41, 33, 35, 37])
-#garonne_2_digue_Left_Bank = geompy.CreateGroup(HYDRO_garonne_2, geompy.ShapeType["EDGE"])
-#geompy.UnionIDs(garonne_2_digue_Left_Bank, [43])
-#garonne_2_digue_Outlet = geompy.CreateGroup(HYDRO_garonne_2, geompy.ShapeType["EDGE"])
-#geompy.UnionIDs(garonne_2_digue_Outlet, [46])
-#garonne_2_digue_Inlet = geompy.CreateGroup(HYDRO_garonne_2, geompy.ShapeType["EDGE"])
-#geompy.UnionIDs(garonne_2_digue_Inlet, [50])
-#garonne_2_litMineur_Outer = geompy.CreateGroup(HYDRO_garonne_2, geompy.ShapeType["EDGE"])
-#geompy.UnionIDs(garonne_2_litMineur_Outer, [7, 9])
-#garonne_2_digue_Right_Bank = geompy.CreateGroup(HYDRO_garonne_2, geompy.ShapeType["EDGE"])
-#geompy.UnionIDs(garonne_2_digue_Right_Bank, [48])
-
-#controlGeomProps(geompy, riveGauche, 39489.5116033, 35889668.8348)
-#controlGeomProps(geompy, digue, 10340.1424233, 102887.6201)
-#controlGeomProps(geompy, litMineur, 30337.5484919, 3646827.74981)
-#controlGeomProps(geompy, riveDroite, 32012.3432411, 26177085.4601)
-controlGeomProps(geompy, riveGauche, 39493.270283, 35845790.613557)
-controlGeomProps(geompy, digue, 10340.1424233, 102887.6201)
-controlGeomProps(geompy, litMineur, 30337.548492, 3488480.304388)
-controlGeomProps(geompy, riveDroite, 32012.343241, 25998769.23615)
+print "Entry:", garonne_1_entry
+HYDRO_garonne_1 = salome.IDToObject( str( garonne_1_entry ) )
+print "Geom shape:", HYDRO_garonne_1
+print "Geom shape name:", HYDRO_garonne_1.GetName()
+
+
+[garonne_riveGauche,garonne_digue,garonne_litMineur,garonne_riveDroite] = geompy.ExtractShapes(HYDRO_garonne_1, geompy.ShapeType["FACE"], True)
+
+controlGeomProps(geompy, garonne_riveGauche, 39490.835288, 35845737.590926)
+controlGeomProps(geompy, garonne_digue, 10341.466108, 103090.760662)
+controlGeomProps(geompy, garonne_litMineur, 30337.548492, 3488480.304388)
+controlGeomProps(geompy, garonne_riveDroite, 32012.343241, 25998769.23615)
+
+# --- manual identification of all useful edge groups (boundary conditions)
+
+allEdgesIds = geompy.SubShapeAllIDs(HYDRO_garonne_1, geompy.ShapeType["EDGE"])
+print "allEdgesIds", allEdgesIds
+
+(isDone, ClosedFreeBoundary, OpenFreeBoundary) = geompy.GetFreeBoundary(HYDRO_garonne_1)
+geompy.addToStudyInFather(HYDRO_garonne_1, ClosedFreeBoundary[0], "ClosedFreeBoundary")
+
+freeBoundary = geompy.ExtractShapes(ClosedFreeBoundary[0], geompy.ShapeType["EDGE"], True)
+freeBoundaryIds = [ geompy.GetSubShapeID(HYDRO_garonne_1, freeBoundary[i]) for i in range(len(freeBoundary)) ]
+print "freeBoundaryIds", freeBoundaryIds
+
+[litMineur_droite] = geompy.GetSharedShapesMulti([garonne_riveDroite, garonne_litMineur], geompy.ShapeType["EDGE"], True)
+[litMineur_gauche] = geompy.GetSharedShapesMulti([garonne_riveGauche, garonne_litMineur], geompy.ShapeType["EDGE"], True)
+geompy.addToStudyInFather(HYDRO_garonne_1, litMineur_droite, "litMineur_droite")
+geompy.addToStudyInFather(HYDRO_garonne_1, litMineur_gauche, "litMineur_gauche")
+rives = [litMineur_droite, litMineur_gauche]
+rivesIds = [ geompy.GetSubShapeID(HYDRO_garonne_1, rives[i]) for i in range(len(rives)) ]
+print "rivesIds", rivesIds
+
+edges_litMineur = geompy.GetSharedShapesMulti([HYDRO_garonne_1, garonne_litMineur], geompy.ShapeType["EDGE"], True)
+edges_riveGauche = geompy.GetSharedShapesMulti([HYDRO_garonne_1, garonne_riveGauche], geompy.ShapeType["EDGE"], True)
+edges_riveDroite = geompy.GetSharedShapesMulti([HYDRO_garonne_1, garonne_riveDroite], geompy.ShapeType["EDGE"], True)
+edges_litMineurIds = [ geompy.GetSubShapeID(HYDRO_garonne_1, edges_litMineur[i]) for i in range(len(edges_litMineur)) ]
+edges_riveGaucheIds = [ geompy.GetSubShapeID(HYDRO_garonne_1, edges_riveGauche[i]) for i in range(len(edges_riveGauche)) ]
+edges_riveDroiteIds = [ geompy.GetSubShapeID(HYDRO_garonne_1, edges_riveDroite[i]) for i in range(len(edges_riveDroite)) ]
+
+print "edges_litMineurIds", edges_litMineurIds
+print "edges_riveGaucheIds", edges_riveGaucheIds
+print "edges_riveDroiteIds", edges_riveDroiteIds
+
+sectionsIds = [Id for Id in edges_litMineurIds if Id not in rivesIds]
+print "sectionsIds", sectionsIds
+SectionsGaronne = geompy.CreateGroup(HYDRO_garonne_1, geompy.ShapeType["EDGE"])
+geompy.UnionIDs(SectionsGaronne, sectionsIds)
+geompy.addToStudyInFather(HYDRO_garonne_1, SectionsGaronne, "SectionsGaronne")
+
+bordGaucheDomaineIds = [Id for Id in freeBoundaryIds if Id in edges_riveGaucheIds]
+bordDroiteDomaineIds = [Id for Id in freeBoundaryIds if Id in edges_riveDroiteIds]
+print "bordGaucheDomaineIds", bordGaucheDomaineIds
+print "bordDroiteDomaineIds", bordDroiteDomaineIds
+bordGaucheDomaine = geompy.CreateGroup(HYDRO_garonne_1, geompy.ShapeType["EDGE"])
+geompy.UnionIDs(bordGaucheDomaine, bordGaucheDomaineIds)
+geompy.addToStudyInFather(HYDRO_garonne_1, bordGaucheDomaine, "bordGaucheDomaine")
+bordDroiteDomaine = geompy.CreateGroup(HYDRO_garonne_1, geompy.ShapeType["EDGE"])
+geompy.UnionIDs(bordDroiteDomaine, bordDroiteDomaineIds)
+geompy.addToStudyInFather(HYDRO_garonne_1, bordDroiteDomaine, "bordDroiteDomaine")
+
+amont = geompy.GetEdgeNearPoint(HYDRO_garonne_1, geompy.MakeVertex(46757.861314, 25833.234752, 0))
+aval = geompy.GetEdgeNearPoint(HYDRO_garonne_1, geompy.MakeVertex(39078.979127, 32588.627279, 0))
+geompy.addToStudyInFather(HYDRO_garonne_1, amont, "amont")
+geompy.addToStudyInFather(HYDRO_garonne_1, aval, "aval")
+
+amontDigue = geompy.GetEdgeNearPoint(HYDRO_garonne_1, geompy.MakeVertex(44736.43, 29847.52, 0))
+avalDigue = geompy.GetEdgeNearPoint(HYDRO_garonne_1, geompy.MakeVertex(40961.39, 31800.95, 0))
+geompy.addToStudyInFather(HYDRO_garonne_1, amontDigue, "amontDigue")
+geompy.addToStudyInFather(HYDRO_garonne_1, avalDigue, "avalDigue")
+
+SectionsDigue = geompy.CreateGroup(HYDRO_garonne_1, geompy.ShapeType["EDGE"])
+geompy.UnionIDs(SectionsDigue, [geompy.GetSubShapeID(HYDRO_garonne_1, amontDigue), geompy.GetSubShapeID(HYDRO_garonne_1, avalDigue)])
+geompy.addToStudyInFather( HYDRO_garonne_1, SectionsDigue, 'SectionsDigue' )