"""Create mesh for Jon Hinwoods wave flume
"""


from anuga.pmesh.mesh import *
from anuga.coordinate_transforms.geo_reference import Geo_reference

def generate(mesh_filename, slope, width,
             maximum_triangle_area=0.01):
    """
    Generate mesh for Monash University wave generation flume.
    
    Origin of x coordinate is the toe of the beach, x measured
    positive shorewards.
    
    """
    
    xleft = slope['xleft'][0]
    xtoe = slope['xtoe'][0]
    xbeach = slope['xbeach'][0]
    xright = slope['xright'][0]
    ytop    = width/2.0
    ybottom = -ytop

    #Outline 
    point_sw = [xleft, ybottom]
    point_se = [xright, ybottom]
    point_nw = [xleft, ytop]    
    point_ne = [xright, ytop]


    # 1st slope seperation (middle)
    point_toe_top = [xtoe, ytop]
    point_toe_bottom = [xtoe, ybottom]    

    # 2nd slope seperation (middle)
    point_beach_top = [xbeach, ytop]
    point_beach_bottom = [xbeach, ybottom]
    
    m = Mesh()

    #Boundary
    points = [point_sw,   #se
              point_nw,
              point_toe_top, # 2
              point_beach_top, # 3
              point_ne, 
              point_se,
              point_beach_bottom, # 6
              point_toe_bottom # 7
              ]
    
    segments = [
        [0,1],
        [1,2],
        [2,3],
        [3,4],
        [4,5],
        [5,6],
        [6,7],
        [7,0],  #The outer border
        [2,7],       # toe separator
        [3,6]       # _beach separator
        ]    
    
    segment_tags = {'wall':[1,2,3,4,5,6,7],
                    'wave':[0]} # '':[6]
        
    m.add_points_and_segments(points, segments, segment_tags)
    
    m.generate_mesh(maximum_triangle_area=maximum_triangle_area)

    m.export_mesh_file(mesh_filename)
    print "mesh created"

#-------------------------------------------------------------
if __name__ == "__main__":
    generate("aa.tsh")
