source: anuga_validation/automated_validation_tests/okushiri_tank_validation/run_okushiri.py @ 4783

Last change on this file since 4783 was 4783, checked in by duncan, 16 years ago

modified to aid in debugging

File size: 3.3 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
31def main(elevation_in_mesh=False):
32    #-------------------------
33    # Create Domain from mesh
34    #-------------------------
35    domain = Domain(project.mesh_filename, use_cache=False, verbose=True)
36    print domain.statistics()
37
38
39    #-------------------------
40    # Initial Conditions
41    #-------------------------
42    domain.set_quantity('friction', 0.0)
43    domain.set_quantity('stage', 0.0)
44    if elevation_in_mesh is False:
45        domain.set_quantity('elevation',
46                            filename=project.bathymetry_filename,
47                            alpha=0.02,                   
48                            verbose=True,
49                            use_cache=False)
50
51
52    #-------------------------
53    # Set simulation parameters
54    #-------------------------
55    domain.set_name(project.output_filename)  # Name of output sww file
56    domain.set_default_order(2)               # Apply second order scheme
57    domain.set_all_limiters(0.9)              # Max second order scheme
58                                              # (old lim)
59    domain.set_minimum_storable_height(0.001) # Don't store w < 0.001m
60    domain.set_maximum_allowed_speed(0.0)     # No runoff (though 0.1 is OK)
61    domain.set_quantities_to_be_monitored('stage')
62
63    # New slope limiter and first order h-limiter
64    # (this in planned to be the default!)
65    domain.beta_h = 0.0
66    domain.tight_slope_limiters = 1 # Run time invariant in this case
67
68    #-------------------------
69    # Boundary Conditions
70    #-------------------------
71
72    # Create boundary function from timeseries provided in file
73    function = file_function(project.boundary_filename,
74                             domain, verbose=True)
75
76    # Create and assign boundary objects
77    Bts = Transmissive_Momentum_Set_Stage_boundary(domain, function)
78    Br = Reflective_boundary(domain)
79    domain.set_boundary({'wave': Bts, 'wall': Br})
80
81
82    #-------------------------
83    # Evolve through time
84    #-------------------------
85    import time
86    t0 = time.time()
87
88    for t in domain.evolve(yieldstep = 0.05, finaltime = 22.5):
89        domain.write_time()
90        print domain.quantity_statistics(precision='%.12f')
91
92    print 'That took %.2f seconds' %(time.time()-t0)
93
94#-------------------------------------------------------------
95if __name__ == "__main__":
96    main()
Note: See TracBrowser for help on using the repository browser.