Changeset 205 for inundation/ga/storm_surge/pyvolution/test_quantity.py
- Timestamp:
- Aug 23, 2004, 2:45:42 PM (21 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
inundation/ga/storm_surge/pyvolution/test_quantity.py
r198 r205 148 148 quantity = Quantity(self.mesh4) 149 149 150 #Set up for a gradient of ( 1,0)151 quantity.set_values([2.0 /3, 4.0/3, 8.0/3, 2.0/3],150 #Set up for a gradient of (3,0) at mid triangle 151 quantity.set_values([2.0, 4.0, 8.0, 2.0], 152 152 location = 'centroids') 153 153 154 154 #Gradients 155 quantity.compute_gradients() 156 157 #FIXME: 158 159 #HERTIL 160 161 #Gradient of fitted pwl surface 162 #a, b = compute_gradient(v2.id) 163 164 #assert a == 1.0 165 #assert b == 0.0 166 167 168 #And now for the second order stuff 169 # - the full second order extrapolation 170 #domain.order = 2 171 #domain.limiter = dummy_limiter 172 #distribute_to_vertices_and_edges(domain) 173 174 #assert v2.conserved_quantities_vertex0 == 0.0 175 #assert v2.conserved_quantities_vertex1 == 2.0 176 #assert v2.conserved_quantities_vertex2 == 2.0 155 a, b = quantity.compute_gradients() 156 157 158 #gradient bewteen t0 and t1 is undefined as det==0 159 assert a[0] == 0.0 160 assert b[0] == 0.0 161 #The others are OK 162 for i in range(1,4): 163 assert a[i] == 3.0 164 assert b[i] == 0.0 165 166 167 quantity.second_order_extrapolator() 168 169 assert allclose(quantity.vertex_values, [[2., 2., 2.], 170 [0., 6., 6.], 171 [6., 6., 12.], 172 [0., 0., 6.]]) 177 173 178 174 … … 355 351 356 352 357 def test_first_order_ limiter(self):353 def test_first_order_extrapolator(self): 358 354 quantity = Quantity(self.mesh4) 359 355 … … 363 359 364 360 #Extrapolate 365 quantity.first_order_ limiter()361 quantity.first_order_extrapolator() 366 362 367 363 #Check vertices but not edge values … … 370 366 371 367 372 def test_second_order_limiter(self): 373 quantity = Quantity(self.mesh4) 374 375 #Create a deliberate overshoot (e.g. from gradient computation) 376 quantity.set_values([[0,3,3], [6,2,2], [3,8,5], [3,5,8]]) 377 378 #Limit and extrapolate 379 quantity.second_order_limiter() 368 def test_second_order_extrapolator(self): 369 quantity = Quantity(self.mesh4) 370 371 #Set up for a gradient of (3,0) at mid triangle 372 quantity.set_values([2.0, 4.0, 8.0, 2.0], 373 location = 'centroids') 374 375 376 377 quantity.second_order_extrapolator() 378 quantity.limiter() 380 379 381 380 382 381 #Assert that central triangle is limited by neighbours 383 assert quantity.vertex_values[1,0] <= quantity.vertex_values[2,2]384 assert quantity.vertex_values[1,0] <= quantity.vertex_values[3,1]385 386 assert quantity.vertex_values[1,1] <= quantity.vertex_values[ 3,0]382 assert quantity.vertex_values[1,0] >= quantity.vertex_values[0,0] 383 assert quantity.vertex_values[1,0] >= quantity.vertex_values[3,1] 384 385 assert quantity.vertex_values[1,1] <= quantity.vertex_values[2,1] 387 386 assert quantity.vertex_values[1,1] >= quantity.vertex_values[0,2] 388 387 389 388 assert quantity.vertex_values[1,2] <= quantity.vertex_values[2,0] 390 assert quantity.vertex_values[1,2] >= quantity.vertex_values[ 0,1]389 assert quantity.vertex_values[1,2] >= quantity.vertex_values[3,1] 391 390 392 391 … … 398 397 399 398 400 #Check vertices but not edge values 401 #assert allclose(quantity.vertex_values, 402 # [[1,1,1], [2,2,2], [3,3,3], [4, 4, 4]]) 399 400 401 402 def test_limiter(self): 403 quantity = Quantity(self.mesh4) 404 405 #Create a deliberate overshoot (e.g. from gradient computation) 406 quantity.set_values([[3,0,3], [2,2,6], [5,3,8], [8,3,5]]) 407 408 409 #Limit 410 quantity.limiter() 411 412 #Assert that central triangle is limited by neighbours 413 assert quantity.vertex_values[1,0] >= quantity.vertex_values[0,0] 414 assert quantity.vertex_values[1,0] <= quantity.vertex_values[3,1] 415 416 assert quantity.vertex_values[1,1] <= quantity.vertex_values[2,1] 417 assert quantity.vertex_values[1,1] >= quantity.vertex_values[0,2] 418 419 assert quantity.vertex_values[1,2] <= quantity.vertex_values[2,0] 420 assert quantity.vertex_values[1,2] <= quantity.vertex_values[3,1] 421 422 423 424 #Assert that quantities are conserved 425 from Numeric import sum 426 for k in range(quantity.centroid_values.shape[0]): 427 assert allclose (quantity.centroid_values[k], 428 sum(quantity.vertex_values[k,:])/3) 429 403 430 404 431 … … 412 439 413 440 #Extrapolate 414 quantity.distribute_to_vertices_and_edges(order=1) 441 quantity.first_order_extrapolator() 442 443 #Interpolate 444 quantity.interpolate_from_vertices_to_edges() 415 445 416 446 assert allclose(quantity.vertex_values,
Note: See TracChangeset
for help on using the changeset viewer.