Index: /anuga_validation/performance_tests/okushiri/project.py
===================================================================
--- /anuga_validation/performance_tests/okushiri/project.py	(revision 4507)
+++ /anuga_validation/performance_tests/okushiri/project.py	(revision 4507)
@@ -0,0 +1,22 @@
+"""Common filenames for Okushiri Island validation
+Formats are given as ANUGA native netCDF where applicable.
+
+"""
+
+# Given boundary wave
+boundary_filename = 'Benchmark_2_input.tms'
+
+# Observed timeseries
+validation_filename = 'output_ch5-7-9.txt'
+
+# Digital Elevation Model
+bathymetry_filename = 'Benchmark_2_Bathymetry.pts'
+
+# Triangular mesh
+mesh_filename = 'Benchmark_2.msh'
+
+# Model output
+output_filename = 'okushiri_auto_validation.sww'
+
+
+
Index: /anuga_validation/performance_tests/okushiri/run_okushiri_profile.py
===================================================================
--- /anuga_validation/performance_tests/okushiri/run_okushiri_profile.py	(revision 4507)
+++ /anuga_validation/performance_tests/okushiri/run_okushiri_profile.py	(revision 4507)
@@ -0,0 +1,101 @@
+"""Validation of the AnuGA implementation of the shallow water wave equation.
+
+This script sets up Okushiri Island benchmark as published at the
+
+THE THIRD INTERNATIONAL WORKSHOP ON LONG-WAVE RUNUP MODELS
+June 17-18 2004
+Wrigley Marine Science Center
+Catalina Island, California
+http://www.cee.cornell.edu/longwave/
+
+
+The validation data was downloaded and made available in this directory
+for convenience but the original data is available at
+http://www.cee.cornell.edu/longwave/index.cfm?page=benchmark&problem=2
+where a detailed description of the problem is also available.
+
+
+Run create_okushiri.py to process the boundary condition and build a the
+mesh before running this script.
+
+"""
+
+# Module imports
+from anuga.shallow_water import Domain
+from anuga.shallow_water import Reflective_boundary
+from anuga.shallow_water import Transmissive_Momentum_Set_Stage_boundary
+from anuga.abstract_2d_finite_volumes.util import file_function
+
+import project
+
+
+#-------------------------
+# Create Domain from mesh
+#-------------------------
+domain = Domain(project.mesh_filename, use_cache=True, verbose=True)
+print domain.statistics()
+
+
+#-------------------------
+# Initial Conditions
+#-------------------------
+domain.set_quantity('friction', 0.0)
+domain.set_quantity('stage', 0.0)
+domain.set_quantity('elevation',
+                    filename=project.bathymetry_filename,
+                    alpha=0.02,                    
+                    verbose=True,
+                    use_cache=True)
+
+
+#-------------------------
+# Set simulation parameters
+#-------------------------
+domain.set_name(project.output_filename)  # Name of output sww file
+domain.set_default_order(2)               # Apply second order scheme 
+domain.set_all_limiters(0.9)              # Max second order scheme (old lim)
+domain.set_minimum_storable_height(0.001) # Don't store w < 0.001m
+domain.set_maximum_allowed_speed(0.1)     # Allow a little runoff (0.1 is OK)
+domain.set_store_vertices_uniquely(False)
+#domain.set_quantities_to_be_stored(None)
+
+# New slope limiter and first order h-limiter
+# (this in planned to be the default!)
+domain.beta_h = 0.0
+domain.limit2007 = 1 # Run time invariant in this case
+
+#-------------------------
+# Boundary Conditions
+#-------------------------
+
+# Create boundary function from timeseries provided in file
+function = file_function(project.boundary_filename,
+                         domain, verbose=True)
+
+# Create and assign boundary objects
+Bts = Transmissive_Momentum_Set_Stage_boundary(domain, function)
+Br = Reflective_boundary(domain)
+domain.set_boundary({'wave': Bts, 'wall': Br})
+
+
+#-------------------------
+# Evolve through time
+#-------------------------
+import time
+t0 = time.time()
+
+s = 'for t in domain.evolve(yieldstep = 0.05, finaltime = 2): domain.write_time()'
+
+import profile, pstats
+FN = 'profile.dat'
+
+profile.run(s, FN)
+
+print 'That took %.2f seconds' %(time.time()-t0)
+
+S = pstats.Stats(FN)
+#S.sort_stats('time').print_stats(20)
+s = S.sort_stats('cumulative').print_stats(30)
+
+print s
+
