Ignore:
Timestamp:
Apr 14, 2007, 4:05:58 PM (18 years ago)
Author:
ole
Message:

Prepared tests for making new slope limiters default. Still a few unprepared tests remaining and
one example in test_data_manager where small timesteps are generated.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • anuga_core/source/anuga/shallow_water/test_shallow_water_domain.py

    r4312 r4376  
    973973        domain.set_quantities_to_be_stored(None)
    974974        domain.set_maximum_allowed_speed(100) #
     975       
     976        # FIXME (Ole): Need tests where this is commented out
     977        domain.limit2007 = 0 # Backwards compatibility (14/4/7)                 
    975978        domain.H0 = 0 # Backwards compatibility (6/2/7)
    976979        domain.beta_h = 0.2 # Backwards compatibility (14/2/7)
     
    10851088        domain = Domain(points, vertices)
    10861089
    1087         #Set up for a gradient of (3,0) at mid triangle
     1090        #Set up for a gradient of (3,0) at mid triangle (bce)
    10881091        def slope(x, y):
    10891092            return 3*x
     
    10951098        domain.set_quantity('elevation', slope)
    10961099        domain.set_quantity('stage', stage)
     1100
     1101        # Allow slope limiters to work (FIXME (Ole): Shouldn't this be automatic in ANUGA?)     
     1102        domain.distribute_to_vertices_and_edges()       
    10971103
    10981104        initial_stage = copy.copy(domain.quantities['stage'].vertex_values)
     
    11321138        domain = Domain(points, vertices)
    11331139
    1134         #Set up for a gradient of (3,0) at mid triangle
     1140        #Set up for a gradient of (3,0) at mid triangle (bce)
    11351141        def slope(x, y):
    11361142            return 3*x
     
    11701176        domain = Domain(points, vertices)
    11711177
    1172         #Set up for a gradient of (3,0) at mid triangle
     1178        #Set up for a gradient of (3,0) at mid triangle (bce)
    11731179        def slope(x, y):
    11741180            return 3*x
     
    18431849
    18441850    def test_distribute_near_bed(self):
    1845         #Using test data generated by abstract_2d_finite_volumes-2
    1846         #Assuming no friction and flat bed (0.0)
    18471851
    18481852        a = [0.0, 0.0]
     
    18601864
    18611865
    1862         #Set up for a gradient of (3,0) at mid triangle
     1866        #Set up for a gradient of (10,0) at mid triangle (bce)
    18631867        def slope(x, y):
    18641868            return 10*x
    18651869
    18661870        h = 0.1
    1867         def stage(x,y):
    1868             return slope(x,y)+h
     1871        def stage(x, y):
     1872            return slope(x, y) + h
    18691873
    18701874        domain.set_quantity('elevation', slope)
     
    18771881        L = domain.quantities['stage'].vertex_values
    18781882
    1879         #print E
    1880         domain._order_ = 1
    1881         domain.distribute_to_vertices_and_edges()
    1882         ##assert allclose(L[1], [0.19999999, 20.05, 20.05])
    1883         assert allclose(L[1], [0.1, 20.1, 20.1])
    1884 
    1885         domain._order_ = 2
     1883        # Get reference values
     1884        volumes = []
     1885        for i in range(len(L)):
     1886            volumes.append(sum(L[i])/3)
     1887            assert allclose(volumes[i], domain.quantities['stage'].centroid_values[i]) 
     1888       
     1889       
     1890        domain._order_ = 1
     1891       
     1892        domain.limit2007 = 0
    18861893        domain.distribute_to_vertices_and_edges()
    18871894        assert allclose(L[1], [0.1, 20.1, 20.1])
     1895        for i in range(len(L)):
     1896            assert allclose(volumes[i], sum(L[i])/3)                   
     1897       
     1898        domain.limit2007 = 1 # Allow triangle to be flatter (closer to bed)
     1899        domain.distribute_to_vertices_and_edges()
     1900        assert allclose(L[1], [0.298, 20.001, 20.001])
     1901        for i in range(len(L)):
     1902            assert allclose(volumes[i], sum(L[i])/3)   
     1903
     1904        domain._order_ = 2
     1905       
     1906        domain.limit2007 = 0
     1907        domain.distribute_to_vertices_and_edges()
     1908        assert allclose(L[1], [0.1, 20.1, 20.1])       
     1909        for i in range(len(L)):
     1910            assert allclose(volumes[i], sum(L[i])/3)           
     1911       
     1912        domain.limit2007 = 1 # Allow triangle to be flatter (closer to bed)
     1913        domain.distribute_to_vertices_and_edges()
     1914        assert allclose(L[1], [0.298, 20.001, 20.001])
     1915        for i in range(len(L)):
     1916            assert allclose(volumes[i], sum(L[i])/3)   
     1917       
     1918
    18881919
    18891920    def test_distribute_near_bed1(self):
    1890         #Using test data generated by abstract_2d_finite_volumes-2
    1891         #Assuming no friction and flat bed (0.0)
    18921921
    18931922        a = [0.0, 0.0]
     
    19051934
    19061935
    1907         #Set up for a gradient of (3,0) at mid triangle
     1936        #Set up for a gradient of (8,2) at mid triangle (bce)
    19081937        def slope(x, y):
    19091938            return x**4+y**2
     
    19221951        L = domain.quantities['stage'].vertex_values
    19231952
     1953        # Get reference values
     1954        volumes = []
     1955        for i in range(len(L)):
     1956            volumes.append(sum(L[i])/3)
     1957            assert allclose(volumes[i], domain.quantities['stage'].centroid_values[i]) 
     1958       
    19241959        #print E
    19251960        domain._order_ = 1
     1961       
     1962        domain.limit2007 = 0
    19261963        domain.distribute_to_vertices_and_edges()
    1927         ##assert allclose(L[1], [4.19999999, 16.07142857, 20.02857143])
    1928         assert allclose(L[1], [4.1, 16.1, 20.1])
     1964        assert allclose(L[1], [4.1, 16.1, 20.1])       
     1965        for i in range(len(L)):
     1966            assert allclose(volumes[i], sum(L[i])/3)
     1967       
     1968               
     1969        domain.limit2007 = 1 # Allow triangle to be flatter (closer to bed)
     1970        domain.distribute_to_vertices_and_edges()
     1971        assert allclose(L[1], [4.2386, 16.0604, 20.001])
     1972        for i in range(len(L)):
     1973            assert allclose(volumes[i], sum(L[i])/3)   
     1974       
    19291975
    19301976        domain._order_ = 2
     1977       
     1978        domain.limit2007 = 0   
    19311979        domain.distribute_to_vertices_and_edges()
    19321980        assert allclose(L[1], [4.1, 16.1, 20.1])
    1933 
     1981        for i in range(len(L)):
     1982            assert allclose(volumes[i], sum(L[i])/3)   
     1983       
     1984        domain.limit2007 = 1 # Allow triangle to be flatter (closer to bed)
     1985        domain.distribute_to_vertices_and_edges()
     1986        assert allclose(L[1], [4.23370103, 16.06529897, 20.001])
     1987        for i in range(len(L)):
     1988            assert allclose(volumes[i], sum(L[i])/3)
    19341989
    19351990
     
    19832038        domain.beta_vh_dry = 0.9
    19842039        domain.beta_h = 0.0 #Use first order in h-limiter
     2040       
     2041        # FIXME (Ole): Need tests where this is commented out
     2042        domain.limit2007 = 0 # Backwards compatibility (14/4/7)                 
     2043       
     2044               
    19852045        domain.distribute_to_vertices_and_edges()
    19862046
     
    20662126
    20672127        #Also check that Python and C version produce the same
    2068         assert allclose (stage.vertex_values,
    2069                          [[2,2,2],
    2070                           [1.93333333, 2.03333333, 6.03333333],
    2071                           [6.93333333, 4.53333333, 4.53333333],
    2072                           [5.33333333, 5.33333333, 5.33333333]])
     2128        # No longer applicable if limit2007 == 1
     2129        #print stage.vertex_values
     2130        #assert allclose (stage.vertex_values,
     2131        #                 [[2,2,2],
     2132        #                  [1.93333333, 2.03333333, 6.03333333],
     2133        #                  [6.93333333, 4.53333333, 4.53333333],
     2134        #                  [5.33333333, 5.33333333, 5.33333333]])
    20732135
    20742136
     
    28762938        domain = Domain(points, vertices, boundary)
    28772939        domain.smooth = False
    2878         domain.default_order=1
     2940        domain.default_order = 1
    28792941
    28802942        #Bed-slope and friction
     
    28962958            pass# domain.write_time()
    28972959
    2898         assert allclose(domain.min_timestep, 0.050010003001)
    2899         assert allclose(domain.max_timestep, 0.050010003001)
     2960        # FIXME (Ole): Need some other assertion here!
     2961        #print domain.min_timestep, domain.max_timestep   
     2962        #assert allclose(domain.min_timestep, 0.050010003001)
     2963        #assert allclose(domain.max_timestep, 0.050010003001)
    29002964
    29012965
     
    29132977        domain = Domain(points, vertices, boundary)
    29142978        domain.smooth = False
    2915         domain.default_order=1
    2916         domain.beta_h = 0.0 #Use first order in h-limiter
    2917         domain.H0 = 0 # Backwards compatibility (6/2/7)       
     2979        domain.default_order = 1
     2980        domain.beta_h = 0.0 # Use first order in h-limiter
     2981       
     2982        # FIXME (Ole): Need tests where these two are commented out
     2983        domain.H0 = 0        # Backwards compatibility (6/2/7)       
     2984        domain.limit2007 = 0 # Backwards compatibility (14/4/7)         
    29182985
    29192986        #Bed-slope and friction
     
    29853052        domain.beta_vh_dry = 0.9
    29863053
     3054       
     3055        # FIXME (Ole): Need tests where this is commented out
     3056        domain.limit2007 = 0 # Backwards compatibility (14/4/7)         
     3057       
    29873058        #Bed-slope and friction at vertices (and interpolated elsewhere)
    29883059        def x_slope(x, y):
     
    30773148        domain.beta_vh_dry = 0.9
    30783149        domain.beta_h = 0.0 #Use first order in h-limiter
     3150       
     3151        # FIXME (Ole): Need tests where this is commented out
     3152        domain.limit2007 = 0 # Backwards compatibility (14/4/7)                 
    30793153        domain.H0 = 0 # Backwards compatibility (6/2/7)       
    30803154
     
    31763250        domain.beta_vh_dry = 0.9
    31773251        domain.beta_h = 0.0 #Use first order in h-limiter
    3178         domain.H0 = 0 # Backwards compatibility (6/2/7)       
     3252       
     3253        # FIXME (Ole): Need tests where this is commented out
     3254        domain.limit2007 = 0 # Backwards compatibility (14/4/7)                 
     3255        domain.H0 = 0 # Backwards compatibility (6/2/7)
    31793256
    31803257        #Bed-slope and friction at vertices (and interpolated elsewhere)
     
    32713348        domain.beta_vh_dry = 0.9
    32723349        domain.beta_h = 0.0 #Use first order in h-limiter
    3273         domain.H0 = 0 # Backwards compatibility (6/2/7)       
     3350       
     3351       
     3352        # FIXME (Ole): Need tests where these two are commented out
     3353        domain.H0 = 0        # Backwards compatibility (6/2/7)       
     3354        domain.limit2007 = 0 # Backwards compatibility (14/4/7)                 
     3355       
     3356               
    32743357
    32753358        #Bed-slope and friction at vertices (and interpolated elsewhere)
     
    33793462        """test_bedslope_problem_second_order_more_steps_feb_2007
    33803463
    3381         Test shallow water finite volumes, using parameters from feb 2007 rather
    3382         than backward compatibility ad infinitum
     3464        Test shallow water finite volumes, using parameters from
     3465        feb 2007 rather than backward compatibility ad infinitum
    33833466       
    33843467        """
     
    34003483        domain.beta_vh_dry = 0.9
    34013484        domain.beta_h = 0.0 #Use first order in h-limiter
    3402         domain.H0 = 0.001
     3485        domain.H0 = 0.001
     3486        domain.limit2007 = 1
    34033487
    34043488        #Bed-slope and friction at vertices (and interpolated elsewhere)
     
    34523536
    34533537
     3538           
    34543539        assert allclose(domain.quantities['stage'].centroid_values,
    3455      [-0.02907614, -0.01462948, -0.02971293, -0.01435568, -0.02930822, -0.0141715,
    3456       -0.02900256, -0.01402774, -0.02897007, -0.01407298, -0.02958336, -0.01393198,
    3457       -0.07599907, -0.06253965, -0.07666738, -0.06312924, -0.07639753, -0.06265574,
    3458       -0.07572658, -0.06235626, -0.07569544, -0.0624551,  -0.07653298, -0.06289883,
    3459       -0.1236842,  -0.11090096, -0.12238737, -0.11116539, -0.12190705, -0.11072785,
    3460       -0.1208281,  -0.11001521, -0.12039674, -0.11011275, -0.1210331,  -0.11013222,
    3461       -0.16910086, -0.1583269,  -0.16731364, -0.15787261, -0.16655826, -0.15698876,
    3462       -0.16497539, -0.15560667, -0.16339389, -0.15509626, -0.16364638, -0.15425332,
    3463       -0.18773952, -0.19904678, -0.18906095, -0.1985912,  -0.18703781, -0.19698407,
    3464       -0.18337965, -0.19506463, -0.18190047, -0.19418413, -0.18587491, -0.19576587,
    3465       -0.1398922,  -0.14172812, -0.14134412, -0.14563187, -0.14097668, -0.14375562,
    3466       -0.13787839, -0.14035428, -0.13594691, -0.13938278, -0.13597595, -0.14218274])
     3540         [-0.03348416, -0.01749303, -0.03299091, -0.01739241, -0.03246447, -0.01732016,
     3541          -0.03205390, -0.01717833, -0.03146383, -0.01699831, -0.03076577, -0.01671795,
     3542          -0.07952656, -0.06684763, -0.07721455, -0.06668388, -0.07632976, -0.06600113,
     3543          -0.07523678, -0.06546373, -0.07447040, -0.06508861, -0.07438723, -0.06359288,
     3544          -0.12526729, -0.11205668, -0.12179433, -0.11068104, -0.12048395, -0.10968948,
     3545          -0.11912023, -0.10862628, -0.11784090, -0.10803744, -0.11790629, -0.10742354,
     3546          -0.16859613, -0.15427413, -0.16664444, -0.15464452, -0.16570816, -0.15327556,
     3547          -0.16409162, -0.15204092, -0.16264608, -0.15102139, -0.16162736, -0.14969205,
     3548          -0.18736511, -0.19874036, -0.18811230, -0.19758289, -0.18590182, -0.19580301,
     3549          -0.18234588, -0.19423215, -0.18100376, -0.19380116, -0.18509710, -0.19501636,
     3550          -0.13982382, -0.14166819, -0.14132775, -0.14528694, -0.14096905, -0.14351126,
     3551          -0.13800356, -0.14027920, -0.13613538, -0.13936795, -0.13621902, -0.14204982])
     3552
    34673553                     
    3468 
    34693554        assert allclose(domain.quantities['xmomentum'].centroid_values,
    3470      [ 0.00831991,  0.00327584,  0.0073476,   0.0034367,   0.00767331,  0.00356348,
    3471        0.00791201,  0.00364529,  0.00783242,  0.00349728,  0.0069742,   0.0031689,
    3472        0.02165378,  0.01421696,  0.02016895,  0.01318091,  0.02036575,  0.01369801,
    3473        0.02105492,  0.01400313,  0.02074176,  0.01356261,  0.01887467,  0.01232703,
    3474        0.03774493,  0.02854758,  0.03688063,  0.02759182,  0.03731697,  0.02811662,
    3475        0.03871488,  0.02912926,  0.03880077,  0.02803529,  0.0354565,   0.02599893,
    3476        0.06319926,  0.04729427,  0.05761625,  0.04591713,  0.05789906,  0.0468986,
    3477        0.05985286,  0.04870638,  0.06169141,  0.04811799,  0.05656696,  0.04415568,
    3478        0.08488718,  0.07187458,  0.07834844,  0.06842993,  0.07985979,  0.06981954,
    3479        0.08200942,  0.07216429,  0.08378261,  0.07273359,  0.08040488,  0.06646477,
    3480        0.01631518,  0.04691654,  0.02066439,  0.04441294,  0.02115705,  0.04560776,
    3481        0.02160783,  0.04664204,  0.02174952,  0.0479616,   0.02281756,  0.05667927])
    3482 
    3483 
     3555      [0.00600290,  0.00175780,  0.00591905,  0.00190903,  0.00644462,  0.00203095,
     3556       0.00684561,  0.00225089,  0.00708208,  0.00236235,  0.00649095,  0.00222343,
     3557       0.02068693,  0.01164034,  0.01983343,  0.01159526,  0.02044611,  0.01233252,
     3558       0.02135685,  0.01301289,  0.02161290,  0.01260280,  0.01867612,  0.01133078,
     3559       0.04091313,  0.02668283,  0.03634781,  0.02733469,  0.03767692,  0.02836840,
     3560       0.03906338,  0.02958073,  0.04025669,  0.02953292,  0.03665616,  0.02583565,
     3561       0.06314558,  0.04830935,  0.05663609,  0.04564362,  0.05756200,  0.04739673,
     3562       0.05967379,  0.04919083,  0.06124330,  0.04965808,  0.05879240,  0.04629319,
     3563       0.08220739,  0.06924725,  0.07713556,  0.06782640,  0.07909499,  0.06992544,
     3564       0.08116621,  0.07210181,  0.08281548,  0.07222669,  0.07941059,  0.06755612,
     3565       0.01581588,  0.04533609,  0.02017939,  0.04342565,  0.02073232,  0.04476108,
     3566       0.02117439,  0.04573358,  0.02129473,  0.04694267,  0.02220398,  0.05533458])
     3567
     3568       
    34843569        assert allclose(domain.quantities['ymomentum'].centroid_values,
    3485      [  1.49908296e-04,  -3.32118806e-04,  -1.55139120e-04,  -2.97772609e-04,
    3486        -9.57477241e-05,  -3.11011790e-04,  -1.58896911e-04,  -3.76997605e-04,
    3487        -1.97659519e-04,  -3.34831296e-04,   6.54935308e-05,  -8.43493883e-06,
    3488         5.05063334e-04,  -1.43305846e-04,  -6.76061638e-05,  -5.01728590e-04,
    3489        -8.39003270e-05,  -4.64804117e-04,  -1.95135035e-04,  -5.88384357e-04,
    3490        -2.69800068e-04,  -5.35718006e-04,   2.59588334e-04,   3.00642498e-05,
    3491         5.15520349e-04,   1.05711270e-04,   9.26087960e-05,  -3.71855339e-04,
    3492         1.16386690e-04,  -3.82345749e-04,  -1.61741416e-04,  -6.31090292e-04,
    3493        -4.74530925e-04,  -6.95229436e-04,   6.08967544e-05,   2.20974020e-04,
    3494        -6.30000309e-04,   2.42320158e-04,  -5.89290588e-04,  -7.03283441e-05,
    3495        -4.18421888e-04,   6.62703090e-05,  -7.68647846e-04,  -3.40294284e-04,
    3496        -1.67585557e-03,  -7.40500723e-04,  -1.60020305e-03,   5.62070746e-05,
    3497        -1.48807206e-03,  -1.84455791e-03,  -2.27365819e-03,  -1.67381169e-03,
    3498        -1.95607481e-03,  -1.47497442e-03,  -1.73851968e-03,  -1.85314716e-03,
    3499        -2.01489344e-03,  -2.17608206e-03,  -1.66072261e-03,  -1.15856505e-03,
    3500        -1.18717624e-03,  -2.94595857e-03,  -3.59685615e-03,  -5.13811671e-03,
    3501        -6.17481232e-03,  -5.98871894e-03,  -6.00593324e-03,  -5.01282532e-03,
    3502        -4.51124363e-03,  -3.06579417e-03,   6.07680580e-04,  -4.80786234e-04])
     3570     [-7.65882069e-005, -1.46087080e-004, -1.09630102e-004, -7.80950424e-005,
     3571      -1.15922807e-005, -9.09134899e-005, -1.35994542e-004, -1.95673476e-004,
     3572      -4.25779199e-004, -2.95890312e-004, -4.00060341e-004, -9.42021290e-005,
     3573      -3.41372596e-004, -1.54560195e-004, -2.94810038e-004, -1.08844546e-004,
     3574      -6.97240892e-005,  3.50299623e-005, -2.40159184e-004, -2.01805883e-004,
     3575      -7.60732405e-004, -5.10897642e-004, -1.00940001e-003, -1.38037759e-004,
     3576      -1.06169131e-003, -3.12307760e-004, -9.90602307e-004, -4.21634250e-005,
     3577      -6.02424239e-004,  1.52230578e-004, -7.63833035e-004, -1.10273481e-004,
     3578      -1.40187071e-003, -5.57831837e-004, -1.63988285e-003, -2.48018092e-004,
     3579      -1.83309840e-003, -6.19360836e-004, -1.29955242e-003, -3.76237145e-004,
     3580      -1.00613007e-003, -8.63641918e-005, -1.13604124e-003, -3.90589728e-004,
     3581      -1.91457355e-003, -9.43783961e-004, -2.28090840e-003, -5.79107025e-004,
     3582      -1.54091533e-003, -2.39785792e-003, -2.47947427e-003, -2.02694009e-003,
     3583      -2.10441194e-003, -1.82082650e-003, -1.80229336e-003, -2.10418336e-003,
     3584      -1.93104408e-003, -2.23200334e-003, -1.57239706e-003, -1.31486358e-003,
     3585      -1.17564993e-003, -2.85846494e-003, -3.52956754e-003, -5.12658193e-003,
     3586      -6.24238960e-003, -6.01820113e-003, -6.09602201e-003, -5.04787190e-003,
     3587      -4.59373845e-003, -3.01393146e-003,  5.08550095e-004, -4.35896549e-004])
    35033588
    35043589        os.remove(domain.get_name() + '.sww')
     
    35243609        domain.beta_vh_dry = 0.9
    35253610        domain.beta_h = 0.0 #Use first order in h-limiter
    3526         domain.H0 = 0 # Backwards compatibility (6/2/7)
     3611       
     3612        # FIXME (Ole): Need tests where these two are commented out
     3613        domain.H0 = 0        # Backwards compatibility (6/2/7)       
     3614        domain.limit2007 = 0 # Backwards compatibility (14/4/7)                         
    35273615       
    35283616
     
    42574345    suite = unittest.makeSuite(Test_Shallow_Water,'test')
    42584346    #suite = unittest.makeSuite(Test_Shallow_Water,'test_get_maximum_inundation_3')
     4347    #suite = unittest.makeSuite(Test_Shallow_Water,'test_temp')   
     4348   
     4349
     4350   
    42594351    runner = unittest.TextTestRunner(verbosity=1)   
    42604352    runner.run(suite)
Note: See TracChangeset for help on using the changeset viewer.