source: anuga_validation/okushiri_2005/run_okushiri.py @ 3854

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

Added new mesh interface into original okushiri island validation
and did more comparisons.

File size: 2.6 KB
Line 
1"""Validation of the AnuGA implementation of the shallow water wave equation.
2
3This script sets up Okushiri Island benchmark as published at the
4
5THE THIRD INTERNATIONAL WORKSHOP ON LONG-WAVE RUNUP MODELS
6June 17-18 2004
7Wrigley Marine Science Center
8Catalina Island, California
9http://www.cee.cornell.edu/longwave/
10
11
12The validation data was downloaded and made available in this directory
13for convenience but the original data is available at
14http://www.cee.cornell.edu/longwave/index.cfm?page=benchmark&problem=2
15where a detailed description of the problem is also available.
16
17
18Run create_okushiri.py to process the boundary condition and build a the
19mesh before running this script.
20
21"""
22
23# Module imports
24from anuga.shallow_water import Domain
25from anuga.shallow_water import Reflective_boundary
26from anuga.shallow_water import Transmissive_Momentum_Set_Stage_boundary
27from anuga.abstract_2d_finite_volumes.util import file_function
28
29import project
30
31
32#-------------------------
33# Create Domain from mesh
34#-------------------------
35domain = Domain(project.mesh_filename, use_cache=True, verbose=True)
36
37
38#-------------------------
39# Initial Conditions
40#-------------------------
41domain.set_quantity('friction', 0.0)
42domain.set_quantity('stage', 0.0)
43domain.set_quantity('elevation',
44                    filename=project.bathymetry_filename,
45                    alpha=0.02,                   
46                    verbose=True,
47                    use_cache=True)
48
49
50#-------------------------
51# Domain parameters
52#-------------------------
53domain.set_name(project.output_filename)  # Name of output sww file
54domain.set_default_order(2)               # Apply second order scheme
55#domain.set_all_limiters(0.9)              # Maximal second order scheme (old lim)
56domain.set_minimum_storable_height(0.001) # Don't store w < 0.001m
57domain.set_maximum_allowed_speed(0.1)     # Allow a little runoff (0.1 is OK)
58
59
60#-------------------------
61# Boundary Conditions
62#-------------------------
63
64# Create boundary function from timeseries provided in file
65function = file_function(project.boundary_filename,
66                         domain, verbose=True)
67
68# Create and assign boundary objects
69Bts = Transmissive_Momentum_Set_Stage_boundary(domain, function)
70Br = Reflective_boundary(domain)
71domain.set_boundary({'wave': Bts, 'wall': Br})
72
73
74#-------------------------
75# Evolve through time
76#-------------------------
77import time
78t0 = time.time()
79
80for t in domain.evolve(yieldstep = 0.05, finaltime = 22.5):
81    domain.write_time()
82
83print 'That took %.2f seconds' %(time.time()-t0)
Note: See TracBrowser for help on using the repository browser.