source: anuga_validation/performance_tests/okushiri/run_okushiri_profile.py @ 4768

Last change on this file since 4768 was 4768, checked in by ole, 15 years ago

Backlog of comments and errormessages

File size: 3.0 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)
36print domain.statistics()
37
38
39#-------------------------
40# Initial Conditions
41#-------------------------
42domain.set_quantity('friction', 0.0)
43domain.set_quantity('stage', 0.0)
44domain.set_quantity('elevation',
45                    filename=project.bathymetry_filename,
46                    alpha=0.02,                   
47                    verbose=True,
48                    use_cache=True)
49
50
51#-------------------------
52# Set simulation parameters
53#-------------------------
54domain.set_name(project.output_filename)  # Name of output sww file
55domain.set_default_order(2)               # Apply second order scheme
56domain.set_all_limiters(0.9)              # Max second order scheme (old lim)
57domain.set_minimum_storable_height(0.001) # Don't store w < 0.001m
58domain.set_maximum_allowed_speed(0.0)     # No runoff (0.1 is OK)
59domain.set_store_vertices_uniquely(False)
60#domain.set_quantities_to_be_stored(None)
61
62# New slope limiter and first order h-limiter
63# (this in planned to be the default!)
64domain.beta_h = 0.0
65domain.tight_slope_limiters = 1 # Run time invariant in this case
66
67#-------------------------
68# Boundary Conditions
69#-------------------------
70
71# Create boundary function from timeseries provided in file
72function = file_function(project.boundary_filename,
73                         domain, verbose=True)
74
75# Create and assign boundary objects
76Bts = Transmissive_Momentum_Set_Stage_boundary(domain, function)
77Br = Reflective_boundary(domain)
78domain.set_boundary({'wave': Bts, 'wall': Br})
79
80# Select optimisation
81domain.optimise_dry_cells = True
82
83#-------------------------
84# Evolve through time
85#-------------------------
86import time
87t0 = time.time()
88
89s = 'for t in domain.evolve(yieldstep = 0.05, finaltime = 2): domain.write_time()'
90
91import profile, pstats
92FN = 'profile.dat'
93
94profile.run(s, FN)
95
96print 'That took %.2f seconds' %(time.time()-t0)
97
98S = pstats.Stats(FN)
99s = S.sort_stats('time').print_stats(50)
100#s = S.sort_stats('cumulative').print_stats(30)
101
102s.print_callers()
103print s
104
Note: See TracBrowser for help on using the repository browser.