Ignore:
Timestamp:
Oct 10, 2006, 10:48:31 AM (18 years ago)
Author:
steve
Message:

Adding holes to create_mesh_from_regions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • anuga_core/source/anuga/pmesh/mesh_interface.py

    r3715 r3719  
    2525                             filename=None,
    2626                             interior_regions=None,
     27                             interior_holes=None,
    2728                             poly_geo_reference=None,
    2829                             mesh_geo_reference=None,
     
    4344    Interior_regions is a list of tuples consisting of (polygon, resolution)
    4445    for each region to be separately refined.
     46   
     47    Interior_holes is a list of ploygons for each hole.
    4548
    4649    This function does not allow segments to share points - use underlying
     
    7174              'filename': filename,
    7275              'interior_regions': interior_regions,
     76              'interior_holes': interior_holes,
    7377              'poly_geo_reference': poly_geo_reference,
    7478              'mesh_geo_reference': mesh_geo_reference,
     
    106110                              filename=None,
    107111                              interior_regions=None,
     112                              interior_holes=None,
    108113                              poly_geo_reference=None,
    109114                              mesh_geo_reference=None,
     
    146151                raise PolygonError, msg
    147152
    148 
     153    if interior_holes is not None:       
     154        # Test that all the interior polygons are inside the bounding_poly
     155        for interior_polygon, res in interior_holes:
     156            indices = inside_polygon(interior_polygon, bounding_polygon,
     157                                     closed = True, verbose = False)
     158   
     159            if len(indices) <> len(interior_polygon):
     160                msg = 'Interior polygon %s is outside bounding polygon: %s'\
     161                      %(str(interior_polygon), str(bounding_polygon))
     162                raise PolygonError, msg
    149163
    150164    # Resolve geo referencing       
     
    192206
    193207    # Do interior regions
     208#    if interior_regions is not None:   
     209#        for polygon, res in interior_regions:
     210#            m.add_region_from_polygon(polygon,
     211#                                      geo_reference=poly_geo_reference)
     212#            # convert bounding poly to absolute values
     213#            if poly_geo_reference is not None:
     214#                polygon_absolute = \
     215#                    poly_geo_reference.get_absolute(polygon)
     216#            else:
     217#                polygon_absolute = polygon
     218#            inner_point = point_in_polygon(polygon_absolute)
     219#            region = m.add_region(inner_point[0], inner_point[1])
     220#            region.setMaxArea(res)
     221           
     222           
    194223    if interior_regions is not None:   
    195224        for polygon, res in interior_regions:
    196225            m.add_region_from_polygon(polygon,
     226                                      max_triangle_area = res,
    197227                                      geo_reference=poly_geo_reference)
    198             # convert bounding poly to absolute values
    199             if poly_geo_reference is not None:
    200                 polygon_absolute = \
    201                     poly_geo_reference.get_absolute(polygon)
    202             else:
    203                 polygon_absolute = polygon
    204             inner_point = point_in_polygon(polygon_absolute)
    205             region = m.add_region(inner_point[0], inner_point[1])
    206             region.setMaxArea(res)
     228   
     229           
     230   # Do interior holes
     231    if interior_holes is not None:   
     232        for polygon, res in interior_holes:
     233            m.add_hole_from_polygon(polygon,
     234                                      geo_reference=poly_geo_reference)
     235       
    207236           
    208237
Note: See TracChangeset for help on using the changeset viewer.