Ignore:
Timestamp:
Dec 27, 2007, 6:35:08 PM (16 years ago)
Author:
steve
Message:

Working on limiters

File:
1 edited

Legend:

Unmodified
Added
Removed
  • anuga_core/source/anuga/abstract_2d_finite_volumes/test_quantity.py

    r4886 r4897  
    14451445
    14461446
    1447     def test_vertex_limiter(self):
     1447    def test_limit_vertices_by_all_neighbours(self):
    14481448        quantity = Conserved_quantity(self.mesh4)
    14491449
     
    14531453
    14541454        #Limit
    1455         quantity.limit_by_vertex()
     1455        quantity.limit_vertices_by_all_neighbours()
    14561456
    14571457        #Assert that central triangle is limited by neighbours
     
    14751475
    14761476
    1477     def test_edge_limiter(self):
     1477    def test_limit_edges_by_all_neighbours(self):
    14781478        quantity = Conserved_quantity(self.mesh4)
    14791479
     
    14831483
    14841484        #Limit
    1485         quantity.limit_by_edge()
     1485        quantity.limit_edges_by_all_neighbours()
    14861486
    14871487        #Assert that central triangle is limited by neighbours
     
    14931493
    14941494        assert quantity.edge_values[1,2] <= quantity.centroid_values[2]
    1495         assert quantity.edge_values[1,2] <= quantity.centroid_values[0]
     1495        assert quantity.edge_values[1,2] >= quantity.centroid_values[0]
    14961496
    14971497
     
    15031503                             sum(quantity.vertex_values[k,:])/3)
    15041504
     1505
     1506    def test_limit_edges_by_neighbour(self):
     1507        quantity = Conserved_quantity(self.mesh4)
     1508
     1509        #Create a deliberate overshoot (e.g. from gradient computation)
     1510        quantity.set_values([[3,0,3], [2,2,6], [5,3,8], [8,3,5]])
     1511
     1512
     1513        #Limit
     1514        quantity.limit_edges_by_neighbour()
     1515
     1516        #Assert that central triangle is limited by neighbours
     1517        assert quantity.edge_values[1,0] <= quantity.centroid_values[3]
     1518        assert quantity.edge_values[1,0] >= quantity.centroid_values[1]
     1519
     1520        assert quantity.edge_values[1,1] <= quantity.centroid_values[2]
     1521        assert quantity.edge_values[1,1] >= quantity.centroid_values[1]
     1522
     1523        assert quantity.edge_values[1,2] <= quantity.centroid_values[1]
     1524        assert quantity.edge_values[1,2] >= quantity.centroid_values[0]
     1525
     1526
     1527
     1528        #Assert that quantities are conserved
     1529        from Numeric import sum
     1530        for k in range(quantity.centroid_values.shape[0]):
     1531            assert allclose (quantity.centroid_values[k],
     1532                             sum(quantity.vertex_values[k,:])/3)
    15051533
    15061534    def test_limiter2(self):
     
    22072235        assert allclose(subset, answer)
    22082236
     2237    def test_smooth_vertex_values(self):
     2238        """
     2239        get values based on triangle lists.
     2240        """
     2241        from mesh_factory import rectangular
     2242        from shallow_water import Domain
     2243        from Numeric import zeros, Float
     2244
     2245        #Create basic mesh
     2246        points, vertices, boundary = rectangular(2, 2)
     2247
     2248        #print "points",points
     2249        #print "vertices",vertices
     2250        #print "boundary",boundary
     2251
     2252        #Create shallow water domain
     2253        domain = Domain(points, vertices, boundary)
     2254        #print "domain.number_of_elements ",domain.number_of_elements
     2255        quantity = Quantity(domain,[[0,0,0],[1,1,1],[2,2,2],[3,3,3],
     2256                                    [4,4,4],[5,5,5],[6,6,6],[7,7,7]])
     2257
     2258        #print "quantity.get_values(location = 'unique vertices')", \
     2259        #      quantity.get_values(location = 'unique vertices')
     2260
     2261        #print "quantity.get_values(location = 'unique vertices')", \
     2262        #      quantity.get_values(indices=[0,1,2,3,4,5,6,7], \
     2263        #                          location = 'unique vertices')
     2264
     2265        #print quantity.get_values(location = 'unique vertices')
     2266        #print quantity.domain.number_of_triangles_per_node
     2267        #print quantity.vertex_values
     2268       
     2269        #answer = [0.5, 2, 3, 3, 3.5, 4, 4, 5, 6.5]
     2270        #assert allclose(answer,
     2271        #                quantity.get_values(location = 'unique vertices'))
     2272
     2273        quantity.smooth_vertex_values()
     2274
     2275        #print quantity.vertex_values
     2276
     2277
     2278        answer_vertex_values = [[3,3.5,0.5],[2,0.5,3.5],[3.5,4,2],[3,2,4],
     2279                                [4,5,3],[3.5,3,5],[5,6.5,3.5],[4,3.5,6.5]]
     2280       
     2281        assert allclose(answer_vertex_values,
     2282                        quantity.vertex_values)
     2283        #print "quantity.centroid_values",quantity.centroid_values
     2284        #print "quantity.get_values(location = 'centroids') ",\
     2285        #      quantity.get_values(location = 'centroids')
    22092286
    22102287
Note: See TracChangeset for help on using the changeset viewer.