source: anuga_validation/automated_validation_tests/okushiri_tank_validation/validate_okushiri.py @ 3718

Last change on this file since 3718 was 3718, checked in by ole, 17 years ago

Renaming

File size: 3.0 KB
RevLine 
[2229]1"""Validation of the AnuGA implementation of the shallow water wave equation.
2
3This script sets up LWRU2 benchmark with initial condition stated
4
5See also
6
7http://www.cee.cornell.edu/longwave/index.cfm?page=benchmark&problem=2
8
9Depth at western boundary is d = 13.5 cm
10"""
11
[3647]12# Module imports
13from Numeric import array, zeros, Float, allclose
[2229]14
[3647]15from anuga.shallow_water import Domain
16from anuga.shallow_water import Reflective_boundary
17from anuga.shallow_water import Transmissive_Momentum_Set_Stage_boundary
18from anuga.abstract_2d_finite_volumes.util import file_function
[2229]19
20import project
21
22
[3647]23#-------------------------
24# Create Domain
25#-------------------------
[2229]26
[3647]27use_variable_mesh = True #Use large variable mesh generated by create_mesh.py
28#use_variable_mesh = False #Use small structured mesh for speed
[2229]29
30if use_variable_mesh is True:
31    print 'Creating domain from', project.mesh_filename
32
[2866]33    domain = Domain(project.mesh_filename, use_cache=True, verbose=True)
[2229]34else:
[3705]35    print 'Creating regular from regular mesh'
[2229]36    N = 150
37    points, vertices, boundary = rectangular_cross(N, N/5*3,
38                                                   len1=5.448, len2=3.402)
[3705]39    domain = Domain(points, vertices, boundary)
[2229]40
[3647]41domain.set_name('lwru2')
42domain.set_default_order(2)
[3657]43domain.set_minimum_storable_height(0.001)
[3705]44domain.check_integrity()
[2535]45print domain.statistics()
[2229]46
47
[3647]48#-------------------------
[2229]49# Initial Conditions
[3647]50#-------------------------
51domain.set_quantity('friction', 0.0)
52domain.set_quantity('stage', 0.0)
[2229]53domain.set_quantity('elevation',
[3705]54                    filename=project.bathymetry_filename[:-4] + '.pts',
55                    alpha=0.02,                   
56                    verbose=True,
57                    use_cache=True)
[2229]58
[3647]59#-------------------------
[2229]60# Boundary Conditions
[3647]61#-------------------------
[2229]62Br = Reflective_boundary(domain)
63
64function = file_function(project.boundary_filename[:-4] + '.tms',
65                         domain,
[3705]66                         verbose=True)
[3647]67
[2229]68Bts = Transmissive_Momentum_Set_Stage_boundary(domain, function)
69
70if use_variable_mesh is True:
71    domain.set_boundary({'wave': Bts, 'wall': Br})
72else:
73    domain.set_boundary({'left': Bts, 'right': Br, 'bottom': Br, 'top': Br})
74
75
[3647]76#-------------------------
77# Evolve through time
78#-------------------------
[2229]79import time
80t0 = time.time()
81
[3705]82w_max = 0
[2229]83for t in domain.evolve(yieldstep = 0.05, finaltime = 22.5):
84    domain.write_time()
85
[3705]86    w = domain.get_maximum_inundation_elevation()
87    x, y = domain.get_maximum_inundation_location()
88    print '  Coastline elevation = %.2f at (x,y)=(%.2f, %.2f)' %(w, x, y)
89    print
90   
91    if w > w_max:
92        w_max = w
93        x_max = x
94        y_max = y
95
96
97print '**********************************************'
98print 'Max coastline elevation = %.2f at (%.2f, %.2f)' %(w_max, x_max, y_max)
99print '**********************************************'
100   
101   
102
[2229]103print 'That took %.2f seconds' %(time.time()-t0)
Note: See TracBrowser for help on using the repository browser.