source: inundation/pmesh/test_mesh_interface.py @ 2376

Last change on this file since 2376 was 2301, checked in by duncan, 19 years ago

adding functionality to pmesh.mesh for momentum sink.

File size: 4.4 KB
Line 
1#!/usr/bin/env python
2#
3import tempfile
4import unittest
5from mesh_interface import *
6from load_mesh.loadASCII import *
7from coordinate_transforms.geo_reference import Geo_reference
8from utilities.polygon import inside_polygon
9
10class TestCase(unittest.TestCase):
11    def setUp(self):
12        pass
13   
14    def tearDown(self):
15        pass
16
17    def test_create_mesh_from_regions(self):
18        x=-500
19        y=-1000
20        mesh_geo = geo_reference=Geo_reference(56,x,y)
21
22        # These are the absolute values
23        polygon_absolute = [[0,0],[100,0],[100,100],[0,100]]
24       
25        x_p = -10
26        y_p = -40
27        geo_ref_poly = Geo_reference(56, x_p, y_p)
28        polygon = geo_ref_poly.change_points_geo_ref(polygon_absolute)
29
30        boundary_tags = {'walls':[0,1],'bom':[2]}
31       
32        inner1_polygon_absolute = [[10,10],[20,10],[20,20],[10,20]]
33        inner1_polygon = geo_ref_poly. \
34                         change_points_geo_ref(inner1_polygon_absolute)
35
36        inner2_polygon_absolute = [[30,30],[40,30],[40,40],[30,40]]
37        inner2_polygon = geo_ref_poly. \
38                         change_points_geo_ref(inner2_polygon_absolute)
39       
40        interior_regions = [(inner1_polygon, 5),(inner2_polygon, 0.2)]
41        m = create_mesh_from_regions(polygon,
42                                     boundary_tags,
43                                     10000000,
44                                     interior_regions=interior_regions,
45                                     poly_geo_reference=geo_ref_poly,
46                                     mesh_geo_reference=mesh_geo)
47
48        # Test the mesh instance
49        self.failUnless(len(m.regions)==3,
50                        'FAILED!')
51        segs = m.getUserSegments()
52        self.failUnless(len(segs)==12,
53                        'FAILED!')
54        self.failUnless(len(m.userVertices)==12,
55                        'FAILED!') 
56        self.failUnless(segs[0].tag=='walls',
57                        'FAILED!') 
58        self.failUnless(segs[1].tag=='walls',
59                        'FAILED!') 
60         
61        self.failUnless(segs[2].tag=='bom',
62                        'FAILED!') 
63        self.failUnless(segs[3].tag=='',
64                        'FAILED!')
65
66        # Assuming the order of the region points is known.
67        # (This isn't true, if you consider create_mesh_from_regions
68        # a black box)
69        poly_point = m.getRegions()[0]
70       
71        #print "poly_point", poly_point
72        #print "polygon_absolute",polygon_absolute
73         
74        # poly_point values are relative to the mesh geo-ref
75        # make them absolute
76        self.failUnless(inside_polygon([poly_point.x+x,poly_point.y+y],
77                                       polygon_absolute, closed = False),
78                        'FAILED!')
79       
80        # Assuming the order of the region points is known.
81        # (This isn't true, if you consider create_mesh_from_regions
82        # a black box)
83        poly_point = m.getRegions()[1]
84       
85        #print "poly_point", poly_point
86        #print "polygon_absolute",polygon_absolute
87         
88        # poly_point values are relative to the mesh geo-ref
89        # make them absolute
90        self.failUnless(inside_polygon([poly_point.x+x,poly_point.y+y],
91                                       inner1_polygon_absolute,
92                                       closed = False),
93                        'FAILED!')
94       
95        # Assuming the order of the region points is known.
96        # (This isn't true, if you consider create_mesh_from_regions
97        # a black box)
98        poly_point = m.getRegions()[2]
99       
100        #print "poly_point", poly_point
101        #print "polygon_absolute",polygon_absolute
102         
103        # poly_point values are relative to the mesh geo-ref
104        # make them absolute
105        self.failUnless(inside_polygon([poly_point.x+x,poly_point.y+y],
106                                       inner2_polygon_absolute,
107                                       closed = False),
108                        'FAILED!')
109#-------------------------------------------------------------
110if __name__ == "__main__":
111    suite = unittest.makeSuite(TestCase,'test')
112    #suite = unittest.makeSuite(meshTestCase,'test_asciiFile')
113    runner = unittest.TextTestRunner() #verbosity=2)
114    runner.run(suite)
115   
Note: See TracBrowser for help on using the repository browser.