source: anuga_validation/okushiri_2005/run_okushiri.py @ 3811

Last change on this file since 3811 was 3811, checked in by ole, 19 years ago

Okushiri validation with a tiny run-off. This one is OK.

File size: 3.3 KB
Line 
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
12# Module imports
13from Numeric import array, zeros, Float, allclose
14
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
19
20import project
21
22
23#-------------------------
24# Create Domain
25#-------------------------
26
27use_variable_mesh = True #Use large variable mesh generated by create_mesh.py
28#use_variable_mesh = False #Use small structured mesh for speed
29
30if use_variable_mesh is True:
31    print 'Creating domain from', project.mesh_filename
32
33    domain = Domain(project.mesh_filename, use_cache=True, verbose=True)
34else:
35    print 'Creating regular from regular mesh'
36    N = 150
37    points, vertices, boundary = rectangular_cross(N, N/5*3,
38                                                   len1=5.448, len2=3.402)
39    domain = Domain(points, vertices, boundary)
40
41domain.set_name('okushiri_as2005_with_mxspd=0.1')
42domain.set_default_order(2)
43domain.set_minimum_storable_height(0.001)
44#domain.set_maximum_allowed_speed(0) # The default in August 2005
45domain.set_maximum_allowed_speed(0.1) # Allow a little runoff (0.1 is OK)
46
47
48# Set old (pre Sep 2006) defaults for limiters
49domain.beta_w      = 0.9
50domain.beta_w_dry  = 0.9
51domain.beta_uh     = 0.9
52domain.beta_uh_dry = 0.9
53domain.beta_vh     = 0.9
54domain.beta_vh_dry = 0.9
55
56domain.check_integrity()
57print domain.statistics()
58
59
60#-------------------------
61# Initial Conditions
62#-------------------------
63domain.set_quantity('friction', 0.0)
64domain.set_quantity('stage', 0.0)
65domain.set_quantity('elevation',
66                    filename=project.bathymetry_filename[:-4] + '.pts',
67                    alpha=0.02, 
68                    verbose=True,
69                    use_cache=True)
70
71#-------------------------
72# Boundary Conditions
73#-------------------------
74Br = Reflective_boundary(domain)
75
76function = file_function(project.boundary_filename[:-4] + '.tms',
77                         domain,
78                         verbose=True)
79
80Bts = Transmissive_Momentum_Set_Stage_boundary(domain, function)
81
82if use_variable_mesh is True:
83    domain.set_boundary({'wave': Bts, 'wall': Br})
84else:
85    domain.set_boundary({'left': Bts, 'right': Br, 'bottom': Br, 'top': Br})
86
87
88#-------------------------
89# Evolve through time
90#-------------------------
91import time
92t0 = time.time()
93
94w_max = 0
95for t in domain.evolve(yieldstep = 0.05, finaltime = 22.5):
96    domain.write_time()
97
98    w = domain.get_maximum_inundation_elevation()
99    x, y = domain.get_maximum_inundation_location()
100    print '  Coastline elevation = %.2f at (x,y)=(%.2f, %.2f)' %(w, x, y)
101    print
102   
103    if w > w_max:
104        w_max = w
105        x_max = x
106        y_max = y
107
108
109print '**********************************************'
110print 'Max coastline elevation = %.2f at (%.2f, %.2f)' %(w_max, x_max, y_max)
111print '**********************************************'
112   
113   
114
115print 'That took %.2f seconds' %(time.time()-t0)
Note: See TracBrowser for help on using the repository browser.