anuga 1.3.5__zip

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (870) hide show
  1. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/__config__.py +21 -0
  2. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/__config__.pyc +0 -0
  3. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/__init__.py +363 -0
  4. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/__init__.pyc +0 -0
  5. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/__metadata__.py +6 -0
  6. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/__metadata__.pyc +0 -0
  7. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/__init__.py +17 -0
  8. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/__init__.pyc +0 -0
  9. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/ermapper_grids.py +251 -0
  10. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/ermapper_grids.pyc +0 -0
  11. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/file_function.py +483 -0
  12. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/file_function.pyc +0 -0
  13. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/gauge.py +1080 -0
  14. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/gauge.pyc +0 -0
  15. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/general_mesh.py +865 -0
  16. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/general_mesh.pyc +0 -0
  17. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/generic_boundary_conditions.py +862 -0
  18. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/generic_boundary_conditions.pyc +0 -0
  19. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/generic_domain.py +2274 -0
  20. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/generic_domain.pyc +0 -0
  21. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/mesh_factory.py +1011 -0
  22. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/mesh_factory.pyc +0 -0
  23. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/mesh_factory_ext.pyd +0 -0
  24. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/neighbour_mesh.py +1488 -0
  25. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/neighbour_mesh.pyc +0 -0
  26. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/neighbour_mesh_ext.pyd +0 -0
  27. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/neighbour_table_ext.pyd +0 -0
  28. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/pmesh2domain.py +299 -0
  29. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/pmesh2domain.pyc +0 -0
  30. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/pmesh2domain_ext.pyd +0 -0
  31. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/quantity.py +2162 -0
  32. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/quantity.pyc +0 -0
  33. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/quantity_ext.pyd +0 -0
  34. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/region.py +321 -0
  35. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/region.pyc +0 -0
  36. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/setup.py +48 -0
  37. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/setup.pyc +0 -0
  38. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tag_region.py +167 -0
  39. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tag_region.pyc +0 -0
  40. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/__init__.py +8 -0
  41. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/show_balanced_limiters.py +87 -0
  42. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_ermapper.py +189 -0
  43. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_gauge.py +539 -0
  44. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_general_mesh.py +517 -0
  45. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_generic_boundary_conditions.py +439 -0
  46. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_generic_domain.py +907 -0
  47. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_ghost.py +52 -0
  48. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_neighbour_mesh.py +1854 -0
  49. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_pmesh2domain.py +219 -0
  50. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_quantity.py +2859 -0
  51. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_region.py +99 -0
  52. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_tag_region.py +258 -0
  53. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_util.py +1632 -0
  54. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/util.py +928 -0
  55. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/util.pyc +0 -0
  56. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/__init__.py +12 -0
  57. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/__init__.pyc +0 -0
  58. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/advection.py +298 -0
  59. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/advection.pyc +0 -0
  60. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/advection_ext.pyd +0 -0
  61. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/setup.py +27 -0
  62. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/setup.pyc +0 -0
  63. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/tests/__init__.py +8 -0
  64. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/tests/test_advection.py +183 -0
  65. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/__init__.py +4 -0
  66. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/__init__.pyc +0 -0
  67. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/alpha_shape.py +654 -0
  68. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/alpha_shape.pyc +0 -0
  69. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/setup.py +21 -0
  70. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/setup.pyc +0 -0
  71. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/tests/__init__.py +8 -0
  72. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/tests/test_alpha_shape.py +402 -0
  73. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/anuga_exceptions.py +46 -0
  74. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/anuga_exceptions.pyc +0 -0
  75. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/__init__.py +18 -0
  76. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/__init__.pyc +0 -0
  77. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/caching.py +2531 -0
  78. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/caching.pyc +0 -0
  79. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/dummy_classes_for_testing.py +20 -0
  80. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/dummy_classes_for_testing.pyc +0 -0
  81. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/setup.py +21 -0
  82. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/setup.pyc +0 -0
  83. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/tests/__init__.py +8 -0
  84. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/tests/test_caching.py +895 -0
  85. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/compile_all.py +82 -0
  86. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/compile_all.pyc +0 -0
  87. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/config.py +273 -0
  88. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/config.pyc +0 -0
  89. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/__init__.py +6 -0
  90. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/__init__.pyc +0 -0
  91. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/geo_reference.py +478 -0
  92. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/geo_reference.pyc +0 -0
  93. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/lat_long_UTM_conversion.py +250 -0
  94. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/lat_long_UTM_conversion.pyc +0 -0
  95. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/point.py +128 -0
  96. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/point.pyc +0 -0
  97. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/redfearn.py +233 -0
  98. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/redfearn.pyc +0 -0
  99. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/setup.py +21 -0
  100. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/setup.pyc +0 -0
  101. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/__init__.py +8 -0
  102. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/projection_test_points.csv +11 -0
  103. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/projection_test_points.lic +17 -0
  104. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/projection_test_points_z53.csv +11 -0
  105. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/projection_test_points_z53.lic +17 -0
  106. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/projection_test_points_z54.csv +11 -0
  107. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/projection_test_points_z54.lic +17 -0
  108. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/redfearn.lic +17 -0
  109. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/redfearn.xls +0 -0
  110. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/test_geo_reference.py +716 -0
  111. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/test_lat_long_UTM_conversion.py +126 -0
  112. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/test_point.py +125 -0
  113. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/test_redfearn.py +508 -0
  114. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/__init__.py +9 -0
  115. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/__init__.pyc +0 -0
  116. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/culvert_class.py +1627 -0
  117. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/culvert_class.pyc +0 -0
  118. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/culvert_polygons.py +114 -0
  119. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/culvert_polygons.pyc +0 -0
  120. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/culvert_routines.py +362 -0
  121. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/culvert_routines.pyc +0 -0
  122. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/new_culvert_class.py +1630 -0
  123. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/new_culvert_class.pyc +0 -0
  124. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/setup.py +21 -0
  125. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/setup.pyc +0 -0
  126. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/__init__.py +8 -0
  127. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/culvert_polygons_example.py +38 -0
  128. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/data/example_rating_curve.csv +20 -0
  129. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/data/example_rating_curve.lic +17 -0
  130. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/data/example_rating_curve2.csv +20 -0
  131. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/data/example_rating_curve2.lic +17 -0
  132. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/data/unittests.lic +17 -0
  133. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/data/unittests.xls +0 -0
  134. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/run_culvert_flat_water_lev.py +173 -0
  135. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_culvert_class.py +812 -0
  136. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_culvert_polygons.py +84 -0
  137. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_culvert_routines.py +586 -0
  138. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_culvert_routines_box_10pct.py +342 -0
  139. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_culvert_routines_box_1pct.py +342 -0
  140. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_culvert_routines_pipe_10pct.py +338 -0
  141. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_culvert_routines_pipe_1pct.py +338 -0
  142. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_new_culvert_class.py +810 -0
  143. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/__init__.py +9 -0
  144. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/__init__.pyc +0 -0
  145. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/exposure.py +223 -0
  146. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/exposure.pyc +0 -0
  147. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/inundation_damage.py +467 -0
  148. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/inundation_damage.pyc +0 -0
  149. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/setup.py +21 -0
  150. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/setup.pyc +0 -0
  151. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/tests/__init__.py +8 -0
  152. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/tests/test_exposure.py +325 -0
  153. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/tests/test_inundation_damage.py +610 -0
  154. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/error_api.py +130 -0
  155. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/error_api.pyc +0 -0
  156. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/extras.py +193 -0
  157. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/extras.pyc +0 -0
  158. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/__init__.py +54 -0
  159. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/__init__.pyc +0 -0
  160. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/csv_file.py +399 -0
  161. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/csv_file.pyc +0 -0
  162. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/mux.py +120 -0
  163. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/mux.pyc +0 -0
  164. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/netcdf.py +266 -0
  165. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/netcdf.pyc +0 -0
  166. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/pts.py +29 -0
  167. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/pts.pyc +0 -0
  168. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/setup.py +27 -0
  169. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/setup.pyc +0 -0
  170. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/sts.py +293 -0
  171. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/sts.pyc +0 -0
  172. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/sww.py +1552 -0
  173. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/sww.pyc +0 -0
  174. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/tests/__init__.py +8 -0
  175. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/tests/test_csv.py +413 -0
  176. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/tests/test_mux.py +1539 -0
  177. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/tests/test_read_sww.py +350 -0
  178. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/tests/test_sww.py +560 -0
  179. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/tests/test_ungenerate.py +283 -0
  180. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/tests/test_urs.py +217 -0
  181. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/ungenerate.py +92 -0
  182. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/ungenerate.pyc +0 -0
  183. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/urs.py +323 -0
  184. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/urs.pyc +0 -0
  185. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/urs_ext.pyd +0 -0
  186. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/__init__.py +20 -0
  187. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/__init__.pyc +0 -0
  188. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/asc2dem.py +213 -0
  189. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/asc2dem.pyc +0 -0
  190. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/calc_grid_values_ext.pyd +0 -0
  191. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/csv2sts.py +165 -0
  192. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/csv2sts.pyc +0 -0
  193. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/dem2array.py +90 -0
  194. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/dem2array.pyc +0 -0
  195. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/dem2dem.py +145 -0
  196. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/dem2dem.pyc +0 -0
  197. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/dem2pts.py +357 -0
  198. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/dem2pts.pyc +0 -0
  199. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/esri2sww.py +327 -0
  200. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/esri2sww.pyc +0 -0
  201. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/ferret2sww.py +436 -0
  202. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/ferret2sww.pyc +0 -0
  203. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/file_conversion.py +367 -0
  204. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/file_conversion.pyc +0 -0
  205. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/grd2array.py +122 -0
  206. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/grd2array.pyc +0 -0
  207. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sdf2pts.py +181 -0
  208. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sdf2pts.pyc +0 -0
  209. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/setup.py +29 -0
  210. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/setup.pyc +0 -0
  211. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sts2sww_mesh.py +141 -0
  212. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sts2sww_mesh.pyc +0 -0
  213. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2array.py +321 -0
  214. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2array.pyc +0 -0
  215. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2dem.py +550 -0
  216. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2dem.pyc +0 -0
  217. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2dem_new.py +547 -0
  218. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2dem_new.pyc +0 -0
  219. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2pts.py +175 -0
  220. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2pts.pyc +0 -0
  221. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/__init__.py +8 -0
  222. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_2pts.py +249 -0
  223. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_csv2sts.py +118 -0
  224. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_dem2array.py +121 -0
  225. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_dem2dem.py +220 -0
  226. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_dem2pts.py +411 -0
  227. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_file_conversion.py +953 -0
  228. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_grd2array.py +270 -0
  229. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_sww2dem.py +1882 -0
  230. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_urs2sts.py +2127 -0
  231. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_urs2sww.py +628 -0
  232. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2nc.py +202 -0
  233. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2nc.pyc +0 -0
  234. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2sts.py +316 -0
  235. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2sts.pyc +0 -0
  236. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2sww.py +306 -0
  237. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2sww.pyc +0 -0
  238. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2txt.py +71 -0
  239. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2txt.pyc +0 -0
  240. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/xya2pts.py +39 -0
  241. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/xya2pts.pyc +0 -0
  242. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/__init__.py +12 -0
  243. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/__init__.pyc +0 -0
  244. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/benchmark_least_squares.py +367 -0
  245. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/benchmark_least_squares.pyc +0 -0
  246. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/fit.py +611 -0
  247. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/fit.pyc +0 -0
  248. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/fitsmooth.pyd +0 -0
  249. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/general_fit_interpolate.py +127 -0
  250. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/general_fit_interpolate.pyc +0 -0
  251. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/interpolate.py +1144 -0
  252. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/interpolate.pyc +0 -0
  253. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/interpolate2d.py +305 -0
  254. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/interpolate2d.pyc +0 -0
  255. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/profile_long_benchmark.py +79 -0
  256. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/profile_long_benchmark.pyc +0 -0
  257. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/run_long_benchmark.py +131 -0
  258. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/run_long_benchmark.pyc +0 -0
  259. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/setup.py +37 -0
  260. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/setup.pyc +0 -0
  261. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/tests/test_fit.py +1150 -0
  262. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/tests/test_interpolate.py +1952 -0
  263. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/tests/test_interpolate2d.py +469 -0
  264. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/tests/test_search_functions.py +236 -0
  265. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/ticket178_benchmark.py +66 -0
  266. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/ticket178_benchmark.pyc +0 -0
  267. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/__init__.py +11 -0
  268. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/__init__.pyc +0 -0
  269. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/aabb.py +133 -0
  270. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/aabb.pyc +0 -0
  271. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/polygon.py +1138 -0
  272. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/polygon.pyc +0 -0
  273. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/polygon_ext.pyd +0 -0
  274. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/polygon_function.py +133 -0
  275. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/polygon_function.pyc +0 -0
  276. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/quad.py +190 -0
  277. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/quad.pyc +0 -0
  278. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/setup.py +27 -0
  279. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/setup.pyc +0 -0
  280. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/tests/__init__.py +8 -0
  281. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/tests/test_geometry.py +110 -0
  282. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/tests/test_polygon.py +1994 -0
  283. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geospatial_data/__init__.py +9 -0
  284. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geospatial_data/__init__.pyc +0 -0
  285. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geospatial_data/geospatial_data.py +1698 -0
  286. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geospatial_data/geospatial_data.pyc +0 -0
  287. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geospatial_data/setup.py +21 -0
  288. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geospatial_data/setup.pyc +0 -0
  289. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geospatial_data/tests/test_geospatial_data.py +1853 -0
  290. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/__init__.py +11 -0
  291. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/__init__.pyc +0 -0
  292. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/add_csv_header.py +136 -0
  293. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/add_csv_header.pyc +0 -0
  294. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/file_length.py +14 -0
  295. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/file_length.pyc +0 -0
  296. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/maxasc.py +96 -0
  297. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/maxasc.pyc +0 -0
  298. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/order_boundary.py +109 -0
  299. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/order_boundary.pyc +0 -0
  300. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/setup.py +22 -0
  301. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/setup.pyc +0 -0
  302. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/__init__.py +8 -0
  303. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/perthAll_stage_250m.lic +17 -0
  304. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/perthAll_stage_250m_all.lic +17 -0
  305. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/perthAll_stage_original.lic +17 -0
  306. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1.asc +17 -0
  307. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1.lic +17 -0
  308. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1_bad_num_lines.asc +16 -0
  309. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1_bad_num_lines.lic +17 -0
  310. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1_header_differs.asc +17 -0
  311. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1_header_differs.lic +17 -0
  312. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1_wrong_num_columns.asc +17 -0
  313. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1_wrong_num_columns.lic +17 -0
  314. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test2.asc +17 -0
  315. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test2.expected.asc +17 -0
  316. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test2.expected.lic +17 -0
  317. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test2.lic +17 -0
  318. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test3.asc +17 -0
  319. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test3.expected.asc +17 -0
  320. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test3.expected.lic +17 -0
  321. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test3.lic +17 -0
  322. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test_maxasc.py +150 -0
  323. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test_order_boundary.py +397 -0
  324. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/load_mesh/__init__.py +4 -0
  325. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/load_mesh/__init__.pyc +0 -0
  326. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/load_mesh/loadASCII.py +1073 -0
  327. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/load_mesh/loadASCII.pyc +0 -0
  328. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/load_mesh/setup.py +21 -0
  329. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/load_mesh/setup.pyc +0 -0
  330. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/load_mesh/tests/test_loadASCII.py +544 -0
  331. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/__init__.py +4 -0
  332. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/__init__.pyc +0 -0
  333. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/compile.py +9 -0
  334. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/compile.pyc +0 -0
  335. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/mesh_engine.py +221 -0
  336. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/mesh_engine.pyc +0 -0
  337. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/mesh_engine_c_layer.pyd +0 -0
  338. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/setup.py +29 -0
  339. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/setup.pyc +0 -0
  340. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/tests/test_generate_mesh.py +470 -0
  341. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/__init__.py +11 -0
  342. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/__init__.pyc +0 -0
  343. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/base_operator.py +125 -0
  344. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/base_operator.pyc +0 -0
  345. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/boundary_flux_integral_operator.py +79 -0
  346. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/boundary_flux_integral_operator.pyc +0 -0
  347. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/change_friction_operator.py +240 -0
  348. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/change_friction_operator.pyc +0 -0
  349. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/collect_max_quantities_operator.py +142 -0
  350. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/collect_max_quantities_operator.pyc +0 -0
  351. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/collect_max_stage_operator.py +85 -0
  352. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/collect_max_stage_operator.pyc +0 -0
  353. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/compile_all.py +16 -0
  354. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/compile_all.pyc +0 -0
  355. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/elliptic_operator.py +495 -0
  356. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/elliptic_operator.pyc +0 -0
  357. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/erosion_operators.py +859 -0
  358. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/erosion_operators.pyc +0 -0
  359. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/kinematic_viscosity_operator.py +563 -0
  360. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/kinematic_viscosity_operator.pyc +0 -0
  361. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/kinematic_viscosity_operator_ext.pyd +0 -0
  362. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/mannings_operator.py +87 -0
  363. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/mannings_operator.pyc +0 -0
  364. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/mannings_operator_ext.pyd +0 -0
  365. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/rate_operators.py +431 -0
  366. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/rate_operators.pyc +0 -0
  367. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_elevation.py +290 -0
  368. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_elevation.pyc +0 -0
  369. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_elevation_operator.py +148 -0
  370. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_elevation_operator.pyc +0 -0
  371. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_friction_operators.py +159 -0
  372. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_friction_operators.pyc +0 -0
  373. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_quantity.py +172 -0
  374. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_quantity.pyc +0 -0
  375. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_quantity_operator.py +158 -0
  376. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_quantity_operator.pyc +0 -0
  377. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_stage.py +131 -0
  378. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_stage.pyc +0 -0
  379. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_stage_operator.py +135 -0
  380. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_stage_operator.pyc +0 -0
  381. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_w_uh_vh_operator.py +170 -0
  382. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_w_uh_vh_operator.pyc +0 -0
  383. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/setup.py +33 -0
  384. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/setup.pyc +0 -0
  385. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_base_operator.py +51 -0
  386. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_boundary_flux_integral_operator.py +98 -0
  387. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_erosion_operators.py +344 -0
  388. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_kinematic_viscosity_operator.py +1366 -0
  389. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_rate_operators.py +888 -0
  390. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_set_elevation_operator.py +1034 -0
  391. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_set_quantity.py +511 -0
  392. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_set_stage_operator.py +491 -0
  393. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_set_w_uh_vh_operators.py +211 -0
  394. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/__init__.py +31 -0
  395. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/__init__.pyc +0 -0
  396. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/config.py +14 -0
  397. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/config.pyc +0 -0
  398. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/distribute_mesh.py +1682 -0
  399. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/distribute_mesh.pyc +0 -0
  400. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_advection.py +205 -0
  401. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_advection.pyc +0 -0
  402. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_api.py +467 -0
  403. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_api.pyc +0 -0
  404. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_boyd_box_operator.py +332 -0
  405. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_boyd_box_operator.pyc +0 -0
  406. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_boyd_pipe_operator.py +283 -0
  407. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_boyd_pipe_operator.pyc +0 -0
  408. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_generic_communications.py +207 -0
  409. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_generic_communications.pyc +0 -0
  410. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_inlet.py +605 -0
  411. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_inlet.pyc +0 -0
  412. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_inlet_enquiry.py +228 -0
  413. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_inlet_enquiry.pyc +0 -0
  414. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_inlet_operator.py +281 -0
  415. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_inlet_operator.pyc +0 -0
  416. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_internal_boundary_operator.py +230 -0
  417. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_internal_boundary_operator.pyc +0 -0
  418. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_meshes.py +445 -0
  419. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_meshes.pyc +0 -0
  420. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_operator_factory.py +959 -0
  421. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_operator_factory.pyc +0 -0
  422. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_shallow_water.py +282 -0
  423. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_shallow_water.pyc +0 -0
  424. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_structure_operator.py +1241 -0
  425. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_structure_operator.pyc +0 -0
  426. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_weir_orifice_trapezoid_operator.py +281 -0
  427. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_weir_orifice_trapezoid_operator.pyc +0 -0
  428. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/print_stats.py +205 -0
  429. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/print_stats.pyc +0 -0
  430. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/pypar_ext.py +528 -0
  431. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/pypar_ext.pyc +0 -0
  432. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/sequential_distribute.py +309 -0
  433. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/sequential_distribute.pyc +0 -0
  434. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/setup.py +100 -0
  435. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/setup.pyc +0 -0
  436. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/AppShell.py +345 -0
  437. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/AppShell.pyc +0 -0
  438. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/Pmw.py +9253 -0
  439. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/Pmw.pyc +0 -0
  440. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/PmwBlt.py +671 -0
  441. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/PmwBlt.pyc +0 -0
  442. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/PmwColor.py +389 -0
  443. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/PmwColor.pyc +0 -0
  444. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/ProgressBar.py +80 -0
  445. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/ProgressBar.pyc +0 -0
  446. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/__init__.py +4 -0
  447. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/__init__.pyc +0 -0
  448. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/compile.py +24 -0
  449. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/compile.pyc +0 -0
  450. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/cursornames.py +8 -0
  451. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/cursornames.pyc +0 -0
  452. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/exesetup.py +24 -0
  453. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/exesetup.pyc +0 -0
  454. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/graphical_mesh_generator.py +1519 -0
  455. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/graphical_mesh_generator.pyc +0 -0
  456. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/addVertex.gif +0 -0
  457. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/addVertex.lic +16 -0
  458. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/autoSegGiveAlpha.gif +0 -0
  459. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/autoSegGiveAlpha.lic +16 -0
  460. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/default.gif +0 -0
  461. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/default.lic +16 -0
  462. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/edit.gif +0 -0
  463. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/edit.lic +16 -0
  464. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/hole.gif +0 -0
  465. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/hole.lic +16 -0
  466. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/joinVer.gif +0 -0
  467. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/joinVer.lic +16 -0
  468. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/meshGen.gif +0 -0
  469. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/meshGen.lic +16 -0
  470. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/no_see.gif +0 -0
  471. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/no_see.lic +16 -0
  472. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/pointer.gif +0 -0
  473. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/pointer.lic +16 -0
  474. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/region.gif +0 -0
  475. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/region.lic +16 -0
  476. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/see.gif +0 -0
  477. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/see.lic +16 -0
  478. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/segment.gif +0 -0
  479. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/segment.lic +16 -0
  480. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/sep.gif +0 -0
  481. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/sep.lic +16 -0
  482. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/vertex.gif +0 -0
  483. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/vertex.lic +16 -0
  484. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/zoom0.5.gif +0 -0
  485. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/zoom0.5.lic +16 -0
  486. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/zoom2.gif +0 -0
  487. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/zoom2.lic +16 -0
  488. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/zoomToMesh.gif +0 -0
  489. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/zoomToMesh.lic +16 -0
  490. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/mesh.py +2416 -0
  491. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/mesh.pyc +0 -0
  492. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/mesh_interface.py +373 -0
  493. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/mesh_interface.pyc +0 -0
  494. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/mesh_quadtree.py +130 -0
  495. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/mesh_quadtree.pyc +0 -0
  496. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/run_setup.py +43 -0
  497. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/run_setup.pyc +0 -0
  498. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/setup.py +22 -0
  499. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/setup.pyc +0 -0
  500. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/tests/test_mesh.py +2129 -0
  501. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/tests/test_mesh_interface.py +988 -0
  502. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/tests/test_meshquad.py +189 -0
  503. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/timing.py +150 -0
  504. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/timing.pyc +0 -0
  505. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/toolbarbutton.py +80 -0
  506. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/toolbarbutton.pyc +0 -0
  507. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/ungen_example.py +69 -0
  508. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/ungen_example.pyc +0 -0
  509. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/view_tsh.py +47 -0
  510. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/view_tsh.pyc +0 -0
  511. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/visualmesh.py +302 -0
  512. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/visualmesh.pyc +0 -0
  513. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pymetis/__init__.py +6 -0
  514. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pymetis/__init__.pyc +0 -0
  515. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pymetis/metis_ext.pyd +0 -0
  516. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pymetis/setup.py +54 -0
  517. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pymetis/setup.pyc +0 -0
  518. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pymetis/tests/__init__.py +8 -0
  519. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pymetis/tests/test_metis.py +141 -0
  520. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/setup.py +49 -0
  521. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/setup.pyc +0 -0
  522. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/__init__.py +12 -0
  523. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/__init__.pyc +0 -0
  524. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/boundaries.py +1028 -0
  525. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/boundaries.pyc +0 -0
  526. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/checkpoint.py +118 -0
  527. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/checkpoint.pyc +0 -0
  528. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/forcing.py +1339 -0
  529. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/forcing.pyc +0 -0
  530. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/most2nc.py +101 -0
  531. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/most2nc.pyc +0 -0
  532. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/setup.py +37 -0
  533. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/setup.pyc +0 -0
  534. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/shallow_water_domain.py +3114 -0
  535. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/shallow_water_domain.pyc +0 -0
  536. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/shallow_water_ext.pyd +0 -0
  537. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/swDE1_domain_ext.pyd +0 -0
  538. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/swb2_domain.py +576 -0
  539. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/swb2_domain.pyc +0 -0
  540. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/swb2_domain_ext.pyd +0 -0
  541. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/sww_interrogate.py +652 -0
  542. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/sww_interrogate.pyc +0 -0
  543. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/__init__.py +8 -0
  544. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/data/polygon_values_example.csv +46 -0
  545. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/data/polygon_values_example.lic +17 -0
  546. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/data/test_points_large.csv +7855 -0
  547. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/data/test_points_large.lic +17 -0
  548. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/data/test_points_small.csv +17 -0
  549. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/data/test_points_small.lic +17 -0
  550. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_DE1_domain.py +111 -0
  551. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_data_manager.py +879 -0
  552. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_forcing.py +2271 -0
  553. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_loadsave.py +212 -0
  554. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_local_extrapolation_and_flux_updating.py +114 -0
  555. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_most2nc.py +52 -0
  556. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_shallow_water_domain.py +8670 -0
  557. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_swb2_domain.py +106 -0
  558. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_sww_interrogate.py +888 -0
  559. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_system.py +193 -0
  560. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/1-z.grd-e-mux2 +0 -0
  561. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/1-z.grd-n-mux2 +0 -0
  562. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/1-z.grd-z-mux2 +0 -0
  563. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/1-z.lic +55 -0
  564. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/2-z.grd-e-mux2 +0 -0
  565. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/2-z.grd-n-mux2 +0 -0
  566. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/2-z.grd-z-mux2 +0 -0
  567. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/2-z.lic +55 -0
  568. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/3-z.grd-e-mux2 +0 -0
  569. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/3-z.grd-n-mux2 +0 -0
  570. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/3-z.grd-z-mux2 +0 -0
  571. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/3-z.lic +55 -0
  572. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_0.csv +252 -0
  573. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_0.lic +25 -0
  574. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_1.csv +252 -0
  575. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_1.lic +25 -0
  576. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_2.csv +252 -0
  577. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_2.lic +25 -0
  578. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_3.csv +252 -0
  579. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_3.lic +25 -0
  580. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_4.csv +252 -0
  581. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_4.lic +25 -0
  582. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_0.csv +252 -0
  583. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_0.lic +25 -0
  584. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_1.csv +252 -0
  585. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_1.lic +25 -0
  586. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_2.csv +252 -0
  587. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_2.lic +25 -0
  588. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_3.csv +252 -0
  589. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_3.lic +25 -0
  590. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_4.csv +252 -0
  591. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_4.lic +25 -0
  592. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_0.csv +252 -0
  593. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_0.lic +25 -0
  594. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_1.csv +252 -0
  595. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_1.lic +25 -0
  596. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_2.csv +252 -0
  597. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_2.lic +25 -0
  598. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_3.csv +252 -0
  599. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_3.lic +25 -0
  600. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_4.csv +252 -0
  601. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_4.lic +25 -0
  602. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_0.csv +252 -0
  603. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_0.lic +25 -0
  604. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_1.csv +252 -0
  605. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_1.lic +25 -0
  606. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_2.csv +252 -0
  607. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_2.lic +25 -0
  608. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_3.csv +252 -0
  609. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_3.lic +25 -0
  610. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_4.csv +252 -0
  611. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_4.lic +25 -0
  612. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_0.csv +252 -0
  613. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_0.lic +25 -0
  614. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_1.csv +252 -0
  615. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_1.lic +25 -0
  616. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_2.csv +252 -0
  617. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_2.lic +25 -0
  618. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_3.csv +252 -0
  619. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_3.lic +25 -0
  620. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_4.csv +252 -0
  621. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_4.lic +25 -0
  622. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_0.csv +252 -0
  623. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_0.lic +25 -0
  624. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_1.csv +252 -0
  625. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_1.lic +25 -0
  626. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_2.csv +252 -0
  627. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_2.lic +25 -0
  628. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_3.csv +252 -0
  629. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_3.lic +25 -0
  630. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_4.csv +252 -0
  631. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_4.lic +25 -0
  632. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_0.csv +252 -0
  633. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_0.lic +25 -0
  634. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_1.csv +252 -0
  635. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_1.lic +25 -0
  636. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_2.csv +252 -0
  637. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_2.lic +25 -0
  638. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_3.csv +252 -0
  639. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_3.lic +25 -0
  640. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_4.csv +252 -0
  641. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_4.lic +25 -0
  642. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_0.csv +252 -0
  643. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_0.lic +25 -0
  644. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_1.csv +252 -0
  645. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_1.lic +25 -0
  646. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_2.csv +252 -0
  647. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_2.lic +25 -0
  648. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_3.csv +252 -0
  649. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_3.lic +25 -0
  650. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_4.csv +252 -0
  651. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_4.lic +25 -0
  652. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/thinned_bound_order_test.lic +18 -0
  653. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/thinned_bound_order_test.txt +6 -0
  654. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_0.csv +252 -0
  655. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_0.lic +25 -0
  656. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_1.csv +252 -0
  657. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_1.lic +25 -0
  658. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_2.csv +252 -0
  659. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_2.lic +25 -0
  660. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_3.csv +252 -0
  661. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_3.lic +25 -0
  662. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_4.csv +252 -0
  663. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_4.lic +25 -0
  664. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_0.csv +252 -0
  665. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_0.lic +25 -0
  666. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_1.csv +252 -0
  667. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_1.lic +25 -0
  668. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_2.csv +252 -0
  669. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_2.lic +25 -0
  670. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_3.csv +252 -0
  671. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_3.lic +25 -0
  672. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_4.csv +252 -0
  673. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_4.lic +25 -0
  674. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_0.csv +252 -0
  675. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_0.lic +25 -0
  676. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_1.csv +252 -0
  677. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_1.lic +25 -0
  678. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_2.csv +252 -0
  679. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_2.lic +25 -0
  680. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_3.csv +252 -0
  681. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_3.lic +25 -0
  682. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_4.csv +252 -0
  683. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_4.lic +25 -0
  684. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_0.csv +252 -0
  685. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_0.lic +25 -0
  686. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_1.csv +252 -0
  687. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_1.lic +25 -0
  688. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_2.csv +252 -0
  689. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_2.lic +25 -0
  690. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_3.csv +252 -0
  691. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_3.lic +25 -0
  692. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_4.csv +252 -0
  693. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_4.lic +25 -0
  694. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tsh2sww.py +65 -0
  695. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tsh2sww.pyc +0 -0
  696. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/__init__.py +5 -0
  697. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/__init__.pyc +0 -0
  698. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/boyd_box_operator.py +380 -0
  699. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/boyd_box_operator.pyc +0 -0
  700. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/boyd_box_operator_Amended3.py +245 -0
  701. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/boyd_box_operator_Amended3.pyc +0 -0
  702. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/boyd_pipe_operator.py +305 -0
  703. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/boyd_pipe_operator.pyc +0 -0
  704. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/inlet.py +289 -0
  705. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/inlet.pyc +0 -0
  706. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/inlet_enquiry.py +146 -0
  707. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/inlet_enquiry.pyc +0 -0
  708. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/inlet_operator.py +229 -0
  709. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/inlet_operator.pyc +0 -0
  710. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/internal_boundary_functions.py +431 -0
  711. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/internal_boundary_functions.pyc +0 -0
  712. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/internal_boundary_operator.py +169 -0
  713. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/internal_boundary_operator.pyc +0 -0
  714. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/riverwall.py +738 -0
  715. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/riverwall.pyc +0 -0
  716. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/setup.py +24 -0
  717. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/setup.pyc +0 -0
  718. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/structure_operator.py +757 -0
  719. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/structure_operator.pyc +0 -0
  720. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/data/hecras_bridge_table.csv +105 -0
  721. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/data/inlet_operator_test1.lic +17 -0
  722. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/data/inlet_operator_test1.tms +0 -0
  723. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/data/inlet_operator_test2.lic +17 -0
  724. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/data/inlet_operator_test2.tms +0 -0
  725. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/data/test_hydrograph.tms +0 -0
  726. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/test_boyd_box_operator.py +2623 -0
  727. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/test_boyd_pipe_operator.py +482 -0
  728. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/test_inlet_operator.py +311 -0
  729. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/test_internal_boundary_functions.py +96 -0
  730. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/test_riverwall_structure.py +619 -0
  731. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/test_weir_orifice_trapezoid_operator.py +650 -0
  732. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/weir_orifice_trapezoid_operator.py +387 -0
  733. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/weir_orifice_trapezoid_operator.pyc +0 -0
  734. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/test_all.py +282 -0
  735. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/test_all.pyc +0 -0
  736. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/__init__.py +13 -0
  737. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/__init__.pyc +0 -0
  738. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/eqf.py +147 -0
  739. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/eqf.pyc +0 -0
  740. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/eqf_v2.py +559 -0
  741. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/eqf_v2.pyc +0 -0
  742. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/okada_tsunami.py +347 -0
  743. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/okada_tsunami.pyc +0 -0
  744. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/setup.py +27 -0
  745. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/setup.pyc +0 -0
  746. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/smf.py +467 -0
  747. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/smf.pyc +0 -0
  748. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/data/fullokada_MS.lic +23 -0
  749. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/data/fullokada_MS.txt +36 -0
  750. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/data/fullokada_SP.lic +23 -0
  751. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/data/fullokada_SP.txt +36 -0
  752. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/data/fullokada_SS.lic +23 -0
  753. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/data/fullokada_SS.txt +36 -0
  754. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/okada_tsunami_octave_95.txt +101 -0
  755. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/test_eq.py +67 -0
  756. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/test_okada_tsunami.py +439 -0
  757. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/test_smf.py +143 -0
  758. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/test_tsunami_okada.py +303 -0
  759. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tsunami_okada.py +1885 -0
  760. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tsunami_okada.pyc +0 -0
  761. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/__init__.py +11 -0
  762. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/__init__.pyc +0 -0
  763. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/argparsing.py +76 -0
  764. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/argparsing.pyc +0 -0
  765. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/cg_ext.pyd +0 -0
  766. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/cg_solve.py +327 -0
  767. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/cg_solve.pyc +0 -0
  768. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/compile.py +497 -0
  769. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/compile.pyc +0 -0
  770. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/csv_tools.py +121 -0
  771. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/csv_tools.pyc +0 -0
  772. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/data_audit.py +404 -0
  773. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/data_audit.pyc +0 -0
  774. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/data_audit_wrapper.py +52 -0
  775. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/data_audit_wrapper.pyc +0 -0
  776. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/file_utils.py +308 -0
  777. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/file_utils.pyc +0 -0
  778. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/function_utils.py +117 -0
  779. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/function_utils.pyc +0 -0
  780. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/interp.py +318 -0
  781. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/interp.pyc +0 -0
  782. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/log.py +414 -0
  783. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/log.pyc +0 -0
  784. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/log_analyser.py +77 -0
  785. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/log_analyser.pyc +0 -0
  786. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/mem_time_equation.py +106 -0
  787. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/mem_time_equation.pyc +0 -0
  788. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/model_tools.py +457 -0
  789. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/model_tools.pyc +0 -0
  790. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/norms.py +16 -0
  791. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/norms.pyc +0 -0
  792. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/numerical_tools.py +397 -0
  793. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/numerical_tools.pyc +0 -0
  794. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/parallel_abstraction.py +67 -0
  795. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/parallel_abstraction.pyc +0 -0
  796. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/parse.py +26 -0
  797. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/parse.pyc +0 -0
  798. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/plot_utils.py +1237 -0
  799. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/plot_utils.pyc +0 -0
  800. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/quad_tree_ext.pyd +0 -0
  801. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/quantity_setting_functions.py +612 -0
  802. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/quantity_setting_functions.pyc +0 -0
  803. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/quickPlots.py +164 -0
  804. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/quickPlots.pyc +0 -0
  805. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/run_anuga_script.py +70 -0
  806. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/run_anuga_script.pyc +0 -0
  807. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/setup.py +39 -0
  808. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/setup.pyc +0 -0
  809. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/sparse.py +398 -0
  810. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/sparse.pyc +0 -0
  811. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/sparse_ext.pyd +0 -0
  812. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/sparse_matrix_ext.pyd +0 -0
  813. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/spatialInputUtil.py +1394 -0
  814. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/spatialInputUtil.pyc +0 -0
  815. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/sww_merge.py +820 -0
  816. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/sww_merge.pyc +0 -0
  817. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/system_tools.py +646 -0
  818. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/system_tools.pyc +0 -0
  819. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/terminal_width.py +60 -0
  820. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/terminal_width.pyc +0 -0
  821. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/complex_polygon.csv +4 -0
  822. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/complex_polygon.lic +17 -0
  823. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/crc_test_file.lic +17 -0
  824. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/crc_test_file.png +0 -0
  825. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/mainland_only.csv +669 -0
  826. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/mainland_only.lic +33 -0
  827. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/non_complex_polygon.csv +5 -0
  828. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/non_complex_polygon.lic +17 -0
  829. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_cg_solve.py +569 -0
  830. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_csv_tools.py +435 -0
  831. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_data_audit.py +393 -0
  832. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_file_utils.py +157 -0
  833. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_function_utils.py +65 -0
  834. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_log_analyser.py +89 -0
  835. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_mem_time_equation.py +47 -0
  836. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_numerical_tools.py +616 -0
  837. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_plot_utils.py +455 -0
  838. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_quantity_setting_functions.py +369 -0
  839. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_sparse.py +215 -0
  840. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_spatialInputUtil.py +418 -0
  841. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_system_tools.py +483 -0
  842. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_xml_tools.py +316 -0
  843. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/util_ext.pyd +0 -0
  844. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/where_close.py +219 -0
  845. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/where_close.pyc +0 -0
  846. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/xml_tools.py +326 -0
  847. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/xml_tools.pyc +0 -0
  848. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/__init__.py +15 -0
  849. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/__init__.pyc +0 -0
  850. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/fabricate.py +1429 -0
  851. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/fabricate.pyc +0 -0
  852. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/parameters.py +24 -0
  853. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/parameters.pyc +0 -0
  854. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/produce_report.py +38 -0
  855. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/produce_report.pyc +0 -0
  856. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/run_validation.py +51 -0
  857. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/run_validation.pyc +0 -0
  858. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/save_parameters_tex.py +17 -0
  859. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/save_parameters_tex.pyc +0 -0
  860. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/setup.py +22 -0
  861. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/setup.pyc +0 -0
  862. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/typeset_report.py +55 -0
  863. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/typeset_report.pyc +0 -0
  864. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/version.py +11 -0
  865. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/version.pyc +0 -0
  866. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga-1.3.5-py2.7.egg-info/PKG-INFO +117 -0
  867. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga-1.3.5-py2.7.egg-info/SOURCES.txt +1329 -0
  868. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga-1.3.5-py2.7.egg-info/dependency_links.txt +1 -0
  869. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga-1.3.5-py2.7.egg-info/not-zip-safe +1 -0
  870. Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga-1.3.5-py2.7.egg-info/top_level.txt +1 -0
@@ -0,0 +1,2127 @@
1
+ import numpy as num
2
+ import unittest
3
+ import tempfile
4
+ import os
5
+ import sys
6
+ from anuga.file.netcdf import NetCDFFile
7
+
8
+ from anuga.utilities.system_tools import get_pathname_from_package
9
+ from anuga.coordinate_transforms.geo_reference import Geo_reference
10
+ from anuga.coordinate_transforms.redfearn import redfearn
11
+ from anuga.utilities.numerical_tools import ensure_numeric
12
+ from anuga.config import netcdf_mode_r, netcdf_mode_w, netcdf_mode_a
13
+ from anuga.file.sts import create_sts_boundary
14
+ from anuga.file.csv_file import load_csv_as_dict, load_csv_as_array
15
+
16
+ from anuga.shallow_water.shallow_water_domain import Domain
17
+
18
+ # boundary functions
19
+ from anuga.shallow_water.boundaries import Reflective_boundary, \
20
+ Field_boundary, Transmissive_momentum_set_stage_boundary, \
21
+ Transmissive_stage_zero_momentum_boundary
22
+ from anuga.abstract_2d_finite_volumes.generic_boundary_conditions\
23
+ import Transmissive_boundary, Dirichlet_boundary, \
24
+ Time_boundary, File_boundary, AWI_boundary
25
+
26
+ from anuga.pmesh.mesh_interface import create_mesh_from_regions
27
+
28
+ from anuga.file_conversion.urs2sts import urs2sts
29
+
30
+ # Allow us to use helper methods from this test.
31
+ from anuga.file.tests.test_mux import Test_Mux
32
+
33
+ class Test_Urs2Sts(Test_Mux):
34
+ """ A suite of tests to test urs2sts file conversion functions.
35
+ These tests are quite coarse-grained: converting a file
36
+ and checking that its headers and some of its contents
37
+ are correct.
38
+ """
39
+
40
+
41
+ def tearDown(self):
42
+ for file in ['domain.sww', 'urs_test_mesh.tsh' ]:
43
+ try:
44
+ os.remove(file)
45
+ except:
46
+ pass
47
+
48
+ def test_urs2sts0(self):
49
+ """
50
+ Test single source
51
+ """
52
+ tide=0
53
+ time_step_count = 3
54
+ time_step = 2
55
+ lat_long_points =[(-21.5,114.5),(-21,114.5),(-21.5,115), (-21.,115.)]
56
+ n=len(lat_long_points)
57
+ first_tstep=num.ones(n,num.int)
58
+ first_tstep[0]+=1
59
+ first_tstep[2]+=1
60
+ last_tstep=(time_step_count)*num.ones(n,num.int)
61
+ last_tstep[0]-=1
62
+
63
+ gauge_depth=20*num.ones(n,num.float)
64
+ ha=2*num.ones((n,time_step_count),num.float)
65
+ ha[0]=num.arange(0,time_step_count)
66
+ ha[1]=num.arange(time_step_count,2*time_step_count)
67
+ ha[2]=num.arange(2*time_step_count,3*time_step_count)
68
+ ha[3]=num.arange(3*time_step_count,4*time_step_count)
69
+ ua=5*num.ones((n,time_step_count),num.float)
70
+ va=-10*num.ones((n,time_step_count),num.float)
71
+
72
+ base_name, files = self.write_mux2(lat_long_points,
73
+ time_step_count, time_step,
74
+ first_tstep, last_tstep,
75
+ depth=gauge_depth,
76
+ ha=ha,
77
+ ua=ua,
78
+ va=va)
79
+
80
+ sts_file = base_name + '.sts'
81
+
82
+ urs2sts(base_name,
83
+ basename_out=sts_file,
84
+ mean_stage=tide,verbose=False)
85
+
86
+
87
+ #Let's interigate the sww file
88
+ # Note, the sww info is not gridded. It is point data.
89
+ fid = NetCDFFile(sts_file)
90
+
91
+ # Make x and y absolute
92
+ x = fid.variables['x'][:]
93
+ y = fid.variables['y'][:]
94
+
95
+ geo_reference = Geo_reference(NetCDFObject=fid)
96
+ points = geo_reference.get_absolute(map(None, x, y))
97
+ points = ensure_numeric(points)
98
+
99
+ x = points[:,0]
100
+ y = points[:,1]
101
+
102
+ #Check that first coordinate is correctly represented
103
+ #Work out the UTM coordinates for first point
104
+ for i in range(4):
105
+ zone, e, n = redfearn(lat_long_points[i][0], lat_long_points[i][1])
106
+ assert num.allclose([x[i],y[i]], [e,n])
107
+
108
+ #Check the time vector
109
+ times = fid.variables['time'][:]
110
+
111
+ times_actual = []
112
+ for i in range(time_step_count):
113
+ times_actual.append(time_step * i)
114
+
115
+ assert num.allclose(ensure_numeric(times),
116
+ ensure_numeric(times_actual))
117
+
118
+ #Check first value
119
+ stage = fid.variables['stage'][:]
120
+ xmomentum = fid.variables['xmomentum'][:]
121
+ ymomentum = fid.variables['ymomentum'][:]
122
+ elevation = fid.variables['elevation'][:]
123
+
124
+ # Set original data used to write mux file to be zero when gauges are
125
+ #not recdoring
126
+ ha[0][0]=0.0
127
+ ha[0][time_step_count-1]=0.0;
128
+ ha[2][0]=0.0;
129
+ ua[0][0]=0.0
130
+ ua[0][time_step_count-1]=0.0;
131
+ ua[2][0]=0.0;
132
+ va[0][0]=0.0
133
+ va[0][time_step_count-1]=0.0;
134
+ va[2][0]=0.0;
135
+
136
+ assert num.allclose(num.transpose(ha),stage) #Meters
137
+
138
+ #Check the momentums - ua
139
+ #momentum = velocity*(stage-elevation)
140
+ # elevation = - depth
141
+ #momentum = velocity_ua *(stage+depth)
142
+
143
+ depth=num.zeros((len(lat_long_points),time_step_count),num.float)
144
+ for i in range(len(lat_long_points)):
145
+ depth[i]=gauge_depth[i]+tide+ha[i]
146
+ assert num.allclose(num.transpose(ua*depth),xmomentum)
147
+
148
+ #Check the momentums - va
149
+ #momentum = velocity*(stage-elevation)
150
+ # elevation = - depth
151
+ #momentum = velocity_va *(stage+depth)
152
+
153
+ assert num.allclose(num.transpose(va*depth),ymomentum)
154
+
155
+ # check the elevation values.
156
+ # -ve since urs measures depth, sww meshers height,
157
+ assert num.allclose(-elevation, gauge_depth) #Meters
158
+
159
+ fid.close()
160
+ self.delete_mux(files)
161
+ os.remove(sts_file)
162
+
163
+ def test_urs2sts_nonstandard_meridian(self):
164
+ """
165
+ Test single source using the meridian from zone 50 as a nonstandard meridian
166
+ """
167
+ tide=0
168
+ time_step_count = 3
169
+ time_step = 2
170
+ lat_long_points =[(-21.,114.5),(-21.,113.5),(-21.,114.), (-21.,115.)]
171
+ n=len(lat_long_points)
172
+ first_tstep=num.ones(n,num.int)
173
+ first_tstep[0]+=1
174
+ first_tstep[2]+=1
175
+ last_tstep=(time_step_count)*num.ones(n,num.int)
176
+ last_tstep[0]-=1
177
+
178
+ gauge_depth=20*num.ones(n,num.float)
179
+ ha=2*num.ones((n,time_step_count),num.float)
180
+ ha[0]=num.arange(0,time_step_count)
181
+ ha[1]=num.arange(time_step_count,2*time_step_count)
182
+ ha[2]=num.arange(2*time_step_count,3*time_step_count)
183
+ ha[3]=num.arange(3*time_step_count,4*time_step_count)
184
+ ua=5*num.ones((n,time_step_count),num.float)
185
+ va=-10*num.ones((n,time_step_count),num.float)
186
+
187
+ base_name, files = self.write_mux2(lat_long_points,
188
+ time_step_count, time_step,
189
+ first_tstep, last_tstep,
190
+ depth=gauge_depth,
191
+ ha=ha,
192
+ ua=ua,
193
+ va=va)
194
+
195
+ sts_file = base_name + '.sts'
196
+
197
+ urs2sts(base_name,
198
+ basename_out=sts_file,
199
+ central_meridian=123,
200
+ mean_stage=tide,
201
+ verbose=False)
202
+
203
+ #Let's interigate the sww file
204
+ # Note, the sww info is not gridded. It is point data.
205
+ fid = NetCDFFile(sts_file)
206
+
207
+ # Make x and y absolute
208
+ x = fid.variables['x'][:]
209
+ y = fid.variables['y'][:]
210
+
211
+ geo_reference = Geo_reference(NetCDFObject=fid)
212
+ points = geo_reference.get_absolute(map(None, x, y))
213
+ points = ensure_numeric(points)
214
+
215
+ x = points[:,0]
216
+ y = points[:,1]
217
+
218
+ # Check that all coordinate are correctly represented
219
+ # Using the non standard projection (50)
220
+ for i in range(4):
221
+ zone, e, n = redfearn(lat_long_points[i][0],
222
+ lat_long_points[i][1],
223
+ central_meridian=123)
224
+ assert num.allclose([x[i],y[i]], [e,n])
225
+ assert zone==-1
226
+ self.delete_mux(files)
227
+
228
+
229
+
230
+ def test_urs2sts_individual_sources(self):
231
+ """Test that individual sources compare to actual urs output
232
+ Test that the first recording time is the smallest
233
+ over waveheight, easting and northing velocity
234
+ """
235
+
236
+ # Get path where this test is run
237
+ path = get_pathname_from_package('anuga.shallow_water')
238
+
239
+ testdir = os.path.join(path, 'tests', 'urs_test_data')
240
+ ordering_filename=os.path.join(testdir, 'thinned_bound_order_test.txt')
241
+
242
+ sources = ['1-z.grd','2-z.grd','3-z.grd']
243
+
244
+ # Start times by source and station taken manually from urs header files
245
+ time_start_z = num.array([[10.0,11.5,13,14.5,17.7],
246
+ [9.8,11.2,12.7,14.2,17.4],
247
+ [9.5,10.9,12.4,13.9,17.1]])
248
+
249
+ time_start_e = time_start_n = time_start_z
250
+
251
+ # time step in urs output
252
+ delta_t = 0.1
253
+
254
+ # Make sts file for each source
255
+ for k, source_filename in enumerate(sources):
256
+ source_number = k + 1 # Source numbering starts at 1
257
+
258
+ urs_filenames = os.path.join(testdir, source_filename)
259
+ weights = [1.]
260
+ sts_name_out = 'test'
261
+
262
+ urs2sts(urs_filenames,
263
+ basename_out=sts_name_out,
264
+ ordering_filename=ordering_filename,
265
+ weights=weights,
266
+ mean_stage=0.0,
267
+ verbose=False)
268
+
269
+ # Read in sts file for this source file
270
+ fid = NetCDFFile(sts_name_out+'.sts', netcdf_mode_r) # Open existing file for read
271
+ x = fid.variables['x'][:]+fid.xllcorner # x-coordinates of vertices
272
+ y = fid.variables['y'][:]+fid.yllcorner # y-coordinates of vertices
273
+ elevation = fid.variables['elevation'][:]
274
+ time=fid.variables['time'][:]+fid.starttime
275
+
276
+ # Get quantity data from sts file
277
+ quantity_names=['stage','xmomentum','ymomentum']
278
+ quantities = {}
279
+ for i, name in enumerate(quantity_names):
280
+ quantities[name] = fid.variables[name][:]
281
+
282
+ # Make sure start time from sts file is the minimum starttime
283
+ # across all stations (for this source)
284
+ #print k, time_start_z[k,:]
285
+ starttime = min(time_start_z[k, :])
286
+ sts_starttime = fid.starttime
287
+ msg = 'sts starttime for source %d was %f. Should have been %f'\
288
+ %(source_number, sts_starttime, starttime)
289
+ assert num.allclose(sts_starttime, starttime), msg
290
+
291
+ # For each station, compare urs2sts output to known urs output
292
+ for j in range(len(x)):
293
+ index_start_urs = 0
294
+ index_end_urs = 0
295
+ index_start = 0
296
+ index_end = 0
297
+ count = 0
298
+
299
+ # read in urs test data for stage, e and n velocity
300
+ urs_file_name_z = 'z_'+str(source_number)+'_'+str(j)+'.csv'
301
+ dict = load_csv_as_array(os.path.join(testdir, urs_file_name_z))
302
+ urs_stage = dict['urs_stage']
303
+ urs_file_name_e = 'e_'+str(source_number)+'_'+str(j)+'.csv'
304
+ dict = load_csv_as_array(os.path.join(testdir, urs_file_name_e))
305
+ urs_e = dict['urs_e']
306
+ urs_file_name_n = 'n_'+str(source_number)+'_'+str(j)+'.csv'
307
+ dict = load_csv_as_array(os.path.join(testdir, urs_file_name_n))
308
+ urs_n = dict['urs_n']
309
+
310
+ # find start and end time for stage
311
+ for i in range(len(urs_stage)):
312
+ if urs_stage[i] == 0.0:
313
+ index_start_urs_z = i+1
314
+ if int(urs_stage[i]) == 99 and count <> 1:
315
+ count +=1
316
+ index_end_urs_z = i
317
+
318
+ if count == 0: index_end_urs_z = len(urs_stage)
319
+
320
+ start_times_z = time_start_z[source_number-1]
321
+
322
+ # start times for easting velocities should be the same as stage
323
+ start_times_e = time_start_e[source_number-1]
324
+ index_start_urs_e = index_start_urs_z
325
+ index_end_urs_e = index_end_urs_z
326
+
327
+ # start times for northing velocities should be the same as stage
328
+ start_times_n = time_start_n[source_number-1]
329
+ index_start_urs_n = index_start_urs_z
330
+ index_end_urs_n = index_end_urs_z
331
+
332
+ # Check that actual start time matches header information for stage
333
+ msg = 'stage start time from urs file is not the same as the '
334
+ msg += 'header file for source %i and station %i' %(source_number,j)
335
+ assert num.allclose(index_start_urs_z,start_times_z[j]/delta_t), msg
336
+
337
+ msg = 'e velocity start time from urs file is not the same as the '
338
+ msg += 'header file for source %i and station %i' %(source_number,j)
339
+ assert num.allclose(index_start_urs_e,start_times_e[j]/delta_t), msg
340
+
341
+ msg = 'n velocity start time from urs file is not the same as the '
342
+ msg += 'header file for source %i and station %i' %(source_number,j)
343
+ assert num.allclose(index_start_urs_n,start_times_n[j]/delta_t), msg
344
+
345
+ # get index for start and end time for sts quantities
346
+ index_start_stage = 0
347
+ index_end_stage = 0
348
+ count = 0
349
+ sts_stage = quantities['stage'][:,j]
350
+ for i in range(len(sts_stage)):
351
+ if sts_stage[i] <> 0.0 and count <> 1:
352
+ count += 1
353
+ index_start_stage = i
354
+ if int(sts_stage[i]) == 99 and count <> 1:
355
+ count += 1
356
+ index_end_stage = i
357
+
358
+ index_end_stage = index_start_stage + len(urs_stage[index_start_urs_z:index_end_urs_z])
359
+
360
+ sts_xmom = quantities['xmomentum'][:,j]
361
+ index_start_x = index_start_stage
362
+ index_end_x = index_start_x + len(urs_e[index_start_urs_e:index_end_urs_e])
363
+
364
+ sts_ymom = quantities['ymomentum'][:,j]
365
+ index_start_y = index_start_stage
366
+ index_end_y = index_start_y + len(urs_n[index_start_urs_n:index_end_urs_n])
367
+
368
+ # check that urs stage and sts stage are the same
369
+ msg = 'urs stage is not equal to sts stage for for source %i and station %i' %(source_number,j)
370
+ assert num.allclose(urs_stage[index_start_urs_z:index_end_urs_z],
371
+ sts_stage[index_start_stage:index_end_stage],
372
+ rtol=1.0e-6, atol=1.0e-5 ), msg
373
+
374
+ # check that urs e velocity and sts xmomentum are the same
375
+ msg = 'urs e velocity is not equivalent to sts x momentum for for source %i and station %i' %(source_number,j)
376
+ assert num.allclose(urs_e[index_start_urs_e:index_end_urs_e]*(urs_stage[index_start_urs_e:index_end_urs_e]-elevation[j]),
377
+ sts_xmom[index_start_x:index_end_x],
378
+ rtol=1.0e-5, atol=1.0e-4 ), msg
379
+
380
+ # check that urs n velocity and sts ymomentum are the same
381
+ #print 'urs n velocity', urs_n[index_start_urs_n:index_end_urs_n]*(urs_stage[index_start_urs_n:index_end_urs_n]-elevation[j])
382
+ #print 'sts momentum', sts_ymom[index_start_y:index_end_y]
383
+ msg = 'urs n velocity is not equivalent to sts y momentum for source %i and station %i' %(source_number,j)
384
+ assert num.allclose(urs_n[index_start_urs_n:index_end_urs_n]*(urs_stage[index_start_urs_n:index_end_urs_n]-elevation[j]),
385
+ -sts_ymom[index_start_y:index_end_y],
386
+ rtol=1.0e-5, atol=1.0e-4 ), msg
387
+
388
+
389
+ fid.close()
390
+
391
+ os.remove(sts_name_out+'.sts')
392
+
393
+ def test_urs2sts_combined_sources(self):
394
+ """Test that combined sources compare to actual urs output
395
+ Test that the first recording time is the smallest
396
+ over waveheight, easting and northing velocity
397
+ """
398
+
399
+ # combined
400
+ time_start_z = num.array([9.5,10.9,12.4,13.9,17.1])
401
+ time_start_e = time_start_n = time_start_z
402
+
403
+ # make sts file for combined sources
404
+ weights = [1., 2., 3.]
405
+
406
+ path = get_pathname_from_package('anuga.shallow_water')
407
+
408
+ testdir = os.path.join(path, 'tests', 'urs_test_data')
409
+ ordering_filename=os.path.join(testdir, 'thinned_bound_order_test.txt')
410
+
411
+ urs_filenames = [os.path.join(testdir,'1-z.grd'),
412
+ os.path.join(testdir,'2-z.grd'),
413
+ os.path.join(testdir,'3-z.grd')]
414
+ sts_name_out = 'test'
415
+
416
+ urs2sts(urs_filenames,
417
+ basename_out=sts_name_out,
418
+ ordering_filename=ordering_filename,
419
+ weights=weights,
420
+ mean_stage=0.0,
421
+ verbose=False)
422
+
423
+ # read in sts file for combined source
424
+ fid = NetCDFFile(sts_name_out+'.sts', netcdf_mode_r) # Open existing file for read
425
+ x = fid.variables['x'][:]+fid.xllcorner # x-coordinates of vertices
426
+ y = fid.variables['y'][:]+fid.yllcorner # y-coordinates of vertices
427
+ elevation = fid.variables['elevation'][:]
428
+ time=fid.variables['time'][:]+fid.starttime
429
+
430
+
431
+ # Check that stored permutation is as per default
432
+ permutation = range(len(x))
433
+ stored_permutation = fid.variables['permutation'][:]
434
+ msg = 'Permutation was not stored correctly. I got '
435
+ msg += str(stored_permutation)
436
+ assert num.allclose(stored_permutation, permutation), msg
437
+
438
+ # Get quantity data from sts file
439
+ quantity_names=['stage','xmomentum','ymomentum']
440
+ quantities = {}
441
+ for i, name in enumerate(quantity_names):
442
+ quantities[name] = fid.variables[name][:]
443
+
444
+ # For each station, compare urs2sts output to known urs output
445
+ delta_t = 0.1
446
+
447
+ # Make sure start time from sts file is the minimum starttime
448
+ # across all stations (for this source)
449
+ starttime = min(time_start_z[:])
450
+ sts_starttime = fid.starttime
451
+ msg = 'sts starttime was %f. Should have been %f'\
452
+ %(sts_starttime, starttime)
453
+ assert num.allclose(sts_starttime, starttime), msg
454
+
455
+ #stations = [1,2,3]
456
+ #for j in stations:
457
+ for j in range(len(x)):
458
+ index_start_urs_z = 0
459
+ index_end_urs_z = 0
460
+ index_start_urs_e = 0
461
+ index_end_urs_e = 0
462
+ index_start_urs_n = 0
463
+ index_end_urs_n = 0
464
+ count = 0
465
+
466
+ # read in urs test data for stage, e and n velocity
467
+ urs_file_name_z = 'z_combined_'+str(j)+'.csv'
468
+ dict = load_csv_as_array(os.path.join(testdir, urs_file_name_z))
469
+ urs_stage = dict['urs_stage']
470
+ urs_file_name_e = 'e_combined_'+str(j)+'.csv'
471
+ dict = load_csv_as_array(os.path.join(testdir, urs_file_name_e))
472
+ urs_e = dict['urs_e']
473
+ urs_file_name_n = 'n_combined_'+str(j)+'.csv'
474
+ dict = load_csv_as_array(os.path.join(testdir, urs_file_name_n))
475
+ urs_n = dict['urs_n']
476
+
477
+ # find start and end time for stage
478
+ for i in range(len(urs_stage)):
479
+ if urs_stage[i] == 0.0:
480
+ index_start_urs_z = i+1
481
+ if int(urs_stage[i]) == 99 and count <> 1:
482
+ count +=1
483
+ index_end_urs_z = i
484
+
485
+ if count == 0: index_end_urs_z = len(urs_stage)
486
+
487
+ start_times_z = time_start_z[j]
488
+
489
+ start_times_e = time_start_e[j]
490
+ index_start_urs_e = index_start_urs_z
491
+
492
+ start_times_n = time_start_n[j]
493
+ index_start_urs_n = index_start_urs_z
494
+
495
+ # Check that actual start time matches header information for stage
496
+ msg = 'stage start time from urs file is not the same as the '
497
+ msg += 'header file at station %i' %(j)
498
+ assert num.allclose(index_start_urs_z,start_times_z/delta_t), msg
499
+
500
+ msg = 'e velocity start time from urs file is not the same as the '
501
+ msg += 'header file at station %i' %(j)
502
+ assert num.allclose(index_start_urs_e,start_times_e/delta_t), msg
503
+
504
+ msg = 'n velocity start time from urs file is not the same as the '
505
+ msg += 'header file at station %i' %(j)
506
+ assert num.allclose(index_start_urs_n,start_times_n/delta_t), msg
507
+
508
+ # get index for start and end time for sts quantities
509
+ index_start_stage = 0
510
+ index_end_stage = 0
511
+ index_start_x = 0
512
+ index_end_x = 0
513
+ index_start_y = 0
514
+ index_end_y = 0
515
+ count = 0
516
+ count1 = 0
517
+ sts_stage = quantities['stage'][:,j]
518
+ for i in range(len(sts_stage)):
519
+ if sts_stage[i] <> 0.0 and count <> 1:
520
+ count += 1
521
+ index_start_stage = i
522
+ if int(urs_stage[i]) == 99 and count <> 1:
523
+ count +=1
524
+ index_end_stage = i
525
+
526
+ index_end_stage = index_start_stage + len(urs_stage[index_start_urs_z:index_end_urs_z])
527
+
528
+ index_start_x = index_start_stage
529
+ index_end_x = index_start_x + len(urs_stage[index_start_urs_e:index_end_urs_e])
530
+ sts_xmom = quantities['ymomentum'][:,j]
531
+
532
+ index_start_y = index_start_stage
533
+ index_end_y = index_start_y + len(urs_stage[index_start_urs_n:index_end_urs_n])
534
+ sts_ymom = quantities['ymomentum'][:,j]
535
+
536
+ # check that urs stage and sts stage are the same
537
+ msg = 'urs stage is not equal to sts stage for station %i' %j
538
+ #print 'urs stage', urs_stage[index_start_urs_z:index_end_urs_z]
539
+ #print 'sts stage', sts_stage[index_start_stage:index_end_stage]
540
+ #print 'diff', max(urs_stage[index_start_urs_z:index_end_urs_z]-sts_stage[index_start_stage:index_end_stage])
541
+ #print 'index', index_start_stage, index_end_stage, len(sts_stage)
542
+ assert num.allclose(urs_stage[index_start_urs_z:index_end_urs_z],
543
+ sts_stage[index_start_stage:index_end_stage],
544
+ rtol=1.0e-5, atol=1.0e-4 ), msg
545
+
546
+ # check that urs e velocity and sts xmomentum are the same
547
+ msg = 'urs e velocity is not equivalent to sts xmomentum for station %i' %j
548
+ assert num.allclose(urs_e[index_start_urs_e:index_end_urs_e]*(urs_stage[index_start_urs_e:index_end_urs_e]-elevation[j]),
549
+ sts_xmom[index_start_x:index_end_x],
550
+ rtol=1.0e-5, atol=1.0e-4 ), msg
551
+
552
+ # check that urs n velocity and sts ymomentum are the same
553
+ msg = 'urs n velocity is not equivalent to sts ymomentum for station %i' %j
554
+ assert num.allclose(urs_n[index_start_urs_n:index_end_urs_n]*(urs_stage[index_start_urs_n:index_end_urs_n]-elevation[j]),
555
+ sts_ymom[index_start_y:index_end_y],
556
+ rtol=1.0e-5, atol=1.0e-4 ), msg
557
+
558
+ fid.close()
559
+
560
+ os.remove(sts_name_out+'.sts')
561
+
562
+
563
+
564
+ def test_urs2sts_ordering(self):
565
+ """Test multiple sources with ordering file
566
+ """
567
+
568
+ tide = 0.35
569
+ time_step_count = 6 # I made this a little longer (Ole)
570
+ time_step = 2
571
+ lat_long_points =[(-21.5,114.5),(-21,114.5),(-21.5,115), (-21.,115.)]
572
+ n=len(lat_long_points)
573
+ first_tstep=num.ones(n,num.int)
574
+ first_tstep[0]+=1
575
+ first_tstep[2]+=1
576
+ last_tstep=(time_step_count)*num.ones(n,num.int)
577
+ last_tstep[0]-=1
578
+
579
+ gauge_depth=20*num.ones(n,num.float)
580
+ ha=2*num.ones((n,time_step_count),num.float)
581
+ ha[0]=num.arange(0,time_step_count)
582
+ ha[1]=num.arange(time_step_count,2*time_step_count)
583
+ ha[2]=num.arange(2*time_step_count,3*time_step_count)
584
+ ha[3]=num.arange(3*time_step_count,4*time_step_count)
585
+ ua=5*num.ones((n,time_step_count),num.float)
586
+ va=-10*num.ones((n,time_step_count),num.float)
587
+
588
+ # Create two identical mux files to be combined by urs2sts
589
+ base_nameI, filesI = self.write_mux2(lat_long_points,
590
+ time_step_count, time_step,
591
+ first_tstep, last_tstep,
592
+ depth=gauge_depth,
593
+ ha=ha,
594
+ ua=ua,
595
+ va=va)
596
+
597
+ base_nameII, filesII = self.write_mux2(lat_long_points,
598
+ time_step_count, time_step,
599
+ first_tstep, last_tstep,
600
+ depth=gauge_depth,
601
+ ha=ha,
602
+ ua=ua,
603
+ va=va)
604
+
605
+
606
+ # Create ordering file
607
+ permutation = [3,0,2]
608
+
609
+ _, ordering_filename = tempfile.mkstemp('')
610
+ order_fid = open(ordering_filename, 'w')
611
+ order_fid.write('index, longitude, latitude\n')
612
+ for index in permutation:
613
+ order_fid.write('%d, %f, %f\n' %(index,
614
+ lat_long_points[index][1],
615
+ lat_long_points[index][0]))
616
+ order_fid.close()
617
+
618
+
619
+
620
+
621
+ # Call urs2sts with multiple mux files
622
+ urs2sts([base_nameI, base_nameII],
623
+ basename_out=base_nameI,
624
+ ordering_filename=ordering_filename,
625
+ weights=[1.0, 1.0],
626
+ mean_stage=tide,
627
+ verbose=False)
628
+
629
+ # now I want to check the sts file ...
630
+ sts_file = base_nameI + '.sts'
631
+
632
+ #Let's interrogate the sts file
633
+ # Note, the sts info is not gridded. It is point data.
634
+ fid = NetCDFFile(sts_file)
635
+
636
+ # Check that original indices have been stored
637
+ stored_permutation = fid.variables['permutation'][:]
638
+ msg = 'Permutation was not stored correctly. I got '
639
+ msg += str(stored_permutation)
640
+ assert num.allclose(stored_permutation, permutation), msg
641
+
642
+
643
+ # Make x and y absolute
644
+ x = fid.variables['x'][:]
645
+ y = fid.variables['y'][:]
646
+
647
+ geo_reference = Geo_reference(NetCDFObject=fid)
648
+ points = geo_reference.get_absolute(map(None, x, y))
649
+ points = ensure_numeric(points)
650
+
651
+ x = points[:,0]
652
+ y = points[:,1]
653
+
654
+ #print
655
+ #print x
656
+ #print y
657
+ for i, index in enumerate(permutation):
658
+ # Check that STS points are stored in the correct order
659
+
660
+ # Work out the UTM coordinates sts point i
661
+ zone, e, n = redfearn(lat_long_points[index][0],
662
+ lat_long_points[index][1])
663
+
664
+ #print i, [x[i],y[i]], [e,n]
665
+ assert num.allclose([x[i],y[i]], [e,n])
666
+
667
+
668
+ # Check the time vector
669
+ times = fid.variables['time'][:]
670
+
671
+ times_actual = []
672
+ for i in range(time_step_count):
673
+ times_actual.append(time_step * i)
674
+
675
+ assert num.allclose(ensure_numeric(times),
676
+ ensure_numeric(times_actual))
677
+
678
+
679
+ # Check sts values
680
+ stage = fid.variables['stage'][:]
681
+ xmomentum = fid.variables['xmomentum'][:]
682
+ ymomentum = fid.variables['ymomentum'][:]
683
+ elevation = fid.variables['elevation'][:]
684
+
685
+ # Set original data used to write mux file to be zero when gauges are
686
+ # not recdoring
687
+
688
+ ha[0][0]=0.0
689
+ ha[0][time_step_count-1]=0.0
690
+ ha[2][0]=0.0
691
+ ua[0][0]=0.0
692
+ ua[0][time_step_count-1]=0.0
693
+ ua[2][0]=0.0
694
+ va[0][0]=0.0
695
+ va[0][time_step_count-1]=0.0
696
+ va[2][0]=0.0;
697
+
698
+
699
+ # The stage stored in the .sts file should be the sum of the stage
700
+ # in the two mux2 files because both have weights = 1. In this case
701
+ # the mux2 files are the same so stage == 2.0 * ha
702
+ #print 2.0*num.transpose(ha) - stage
703
+
704
+ ha_permutation = num.take(ha, permutation, axis=0)
705
+ ua_permutation = num.take(ua, permutation, axis=0)
706
+ va_permutation = num.take(va, permutation, axis=0)
707
+ gauge_depth_permutation = num.take(gauge_depth, permutation, axis=0)
708
+
709
+
710
+ assert num.allclose(2.0*num.transpose(ha_permutation)+tide, stage) # Meters
711
+
712
+ #Check the momentums - ua
713
+ #momentum = velocity*(stage-elevation)
714
+ # elevation = - depth
715
+ #momentum = velocity_ua *(stage+depth)
716
+
717
+ depth=num.zeros((len(lat_long_points),time_step_count),num.float)
718
+ for i in range(len(lat_long_points)):
719
+ depth[i]=gauge_depth[i]+tide+2.0*ha[i]
720
+ #2.0*ha necessary because using two files with weights=1 are used
721
+
722
+ depth_permutation = num.take(depth, permutation, axis=0)
723
+
724
+
725
+ # The xmomentum stored in the .sts file should be the sum of the ua
726
+ # in the two mux2 files multiplied by the depth.
727
+ assert num.allclose(2.0*num.transpose(ua_permutation*depth_permutation), xmomentum)
728
+
729
+ #Check the momentums - va
730
+ #momentum = velocity*(stage-elevation)
731
+ # elevation = - depth
732
+ #momentum = velocity_va *(stage+depth)
733
+
734
+ # The ymomentum stored in the .sts file should be the sum of the va
735
+ # in the two mux2 files multiplied by the depth.
736
+ assert num.allclose(2.0*num.transpose(va_permutation*depth_permutation), ymomentum)
737
+
738
+ # check the elevation values.
739
+ # -ve since urs measures depth, sww meshers height,
740
+ assert num.allclose(-gauge_depth_permutation, elevation) #Meters
741
+
742
+ fid.close()
743
+ self.delete_mux(filesI)
744
+ self.delete_mux(filesII)
745
+ os.remove(sts_file)
746
+
747
+
748
+
749
+
750
+
751
+ def Xtest_urs2sts_ordering_exception(self):
752
+ """Test that inconsistent lats and lons in ordering file are caught.
753
+ """
754
+
755
+ tide=0
756
+ time_step_count = 3
757
+ time_step = 2
758
+ lat_long_points =[(-21.5,114.5),(-21,114.5),(-21.5,115), (-21.,115.)]
759
+ n=len(lat_long_points)
760
+ first_tstep=num.ones(n,num.int)
761
+ first_tstep[0]+=1
762
+ first_tstep[2]+=1
763
+ last_tstep=(time_step_count)*num.ones(n,num.int)
764
+ last_tstep[0]-=1
765
+
766
+ gauge_depth=20*num.ones(n,num.float)
767
+ ha=2*num.ones((n,time_step_count),num.float)
768
+ ha[0]=num.arange(0,time_step_count)
769
+ ha[1]=num.arange(time_step_count,2*time_step_count)
770
+ ha[2]=num.arange(2*time_step_count,3*time_step_count)
771
+ ha[3]=num.arange(3*time_step_count,4*time_step_count)
772
+ ua=5*num.ones((n,time_step_count),num.float)
773
+ va=-10*num.ones((n,time_step_count),num.float)
774
+
775
+ # Create two identical mux files to be combined by urs2sts
776
+ base_nameI, filesI = self.write_mux2(lat_long_points,
777
+ time_step_count, time_step,
778
+ first_tstep, last_tstep,
779
+ depth=gauge_depth,
780
+ ha=ha,
781
+ ua=ua,
782
+ va=va)
783
+
784
+ base_nameII, filesII = self.write_mux2(lat_long_points,
785
+ time_step_count, time_step,
786
+ first_tstep, last_tstep,
787
+ depth=gauge_depth,
788
+ ha=ha,
789
+ ua=ua,
790
+ va=va)
791
+
792
+
793
+ # Create ordering file
794
+ permutation = [3,0,2]
795
+
796
+ # Do it wrongly and check that exception is being raised
797
+ _, ordering_filename = tempfile.mkstemp('')
798
+ order_fid = open(ordering_filename, 'w')
799
+ order_fid.write('index, longitude, latitude\n')
800
+ for index in permutation:
801
+ order_fid.write('%d, %f, %f\n' %(index,
802
+ lat_long_points[index][0],
803
+ lat_long_points[index][1]))
804
+ order_fid.close()
805
+
806
+ try:
807
+ urs2sts([base_nameI, base_nameII],
808
+ basename_out=base_nameI,
809
+ ordering_filename=ordering_filename,
810
+ weights=[1.0, 1.0],
811
+ mean_stage=tide,
812
+ verbose=False)
813
+ os.remove(ordering_filename)
814
+ except:
815
+ pass
816
+ else:
817
+ msg = 'Should have caught wrong lat longs'
818
+ raise Exception, msg
819
+
820
+
821
+ self.delete_mux(filesI)
822
+ self.delete_mux(filesII)
823
+
824
+
825
+
826
+
827
+ def test_urs2sts_ordering_different_sources(self):
828
+ """Test multiple sources with ordering file, different source files and weights.
829
+ This test also has more variable values than the previous ones
830
+ """
831
+
832
+ tide = 1.5
833
+ time_step_count = 10
834
+ time_step = 0.2
835
+
836
+ times_ref = num.arange(0, time_step_count*time_step, time_step)
837
+ #print 'time vector', times_ref
838
+
839
+ lat_long_points = [(-21.5,114.5), (-21,114.5), (-21.5,115), (-21.,115.), (-22., 117.)]
840
+ n = len(lat_long_points)
841
+
842
+ # Create non-trivial weights
843
+ #weights = [0.8, 1.5] # OK
844
+ #weights = [0.8, 10.5] # Fail (up to allclose tolerance)
845
+ #weights = [10.5, 10.5] # OK
846
+ #weights = [0.0, 10.5] # OK
847
+ #weights = [0.8, 0.] # OK
848
+ #weights = [8, 0.1] # OK
849
+ #weights = [0.8, 10.0] # OK
850
+ #weights = [0.8, 10.6] # OK
851
+ weights = [3.8, 7.6] # OK
852
+ #weights = [0.5, 0.5] # OK
853
+ #weights = [2., 2.] # OK
854
+ #weights = [0.0, 0.5] # OK
855
+ #weights = [1.0, 1.0] # OK
856
+
857
+
858
+ # Create different timeseries starting and ending at different times
859
+ first_tstep=num.ones(n,num.int)
860
+ first_tstep[0]+=2 # Point 0 starts at 2
861
+ first_tstep[1]+=4 # Point 1 starts at 4
862
+ first_tstep[2]+=3 # Point 2 starts at 3
863
+
864
+ last_tstep=(time_step_count)*num.ones(n,num.int)
865
+ last_tstep[0]-=1 # Point 0 ends 1 step early
866
+ last_tstep[1]-=2 # Point 1 ends 2 steps early
867
+ last_tstep[4]-=3 # Point 4 ends 3 steps early
868
+
869
+ #print
870
+ #print 'time_step_count', time_step_count
871
+ #print 'time_step', time_step
872
+ #print 'first_tstep', first_tstep
873
+ #print 'last_tstep', last_tstep
874
+
875
+
876
+ # Create varying elevation data (positive values for seafloor)
877
+ gauge_depth=20*num.ones(n,num.float)
878
+ for i in range(n):
879
+ gauge_depth[i] += i**2
880
+
881
+ #print 'gauge_depth', gauge_depth
882
+
883
+ # Create data to be written to first mux file
884
+ ha0=2*num.ones((n,time_step_count),num.float)
885
+ ha0[0]=num.arange(0,time_step_count)
886
+ ha0[1]=num.arange(time_step_count,2*time_step_count)
887
+ ha0[2]=num.arange(2*time_step_count,3*time_step_count)
888
+ ha0[3]=num.arange(3*time_step_count,4*time_step_count)
889
+ ua0=5*num.ones((n,time_step_count),num.float)
890
+ va0=-10*num.ones((n,time_step_count),num.float)
891
+
892
+ # Ensure data used to write mux file to be zero when gauges are
893
+ # not recording
894
+ for i in range(n):
895
+ # For each point
896
+
897
+ for j in range(0, first_tstep[i]-1) + range(last_tstep[i], time_step_count):
898
+ # For timesteps before and after recording range
899
+ ha0[i][j] = ua0[i][j] = va0[i][j] = 0.0
900
+
901
+
902
+
903
+ #print
904
+ #print 'using varying start and end time'
905
+ #print 'ha0', ha0[4]
906
+ #print 'ua0', ua0
907
+ #print 'va0', va0
908
+
909
+ # Write first mux file to be combined by urs2sts
910
+ base_nameI, filesI = self.write_mux2(lat_long_points,
911
+ time_step_count, time_step,
912
+ first_tstep, last_tstep,
913
+ depth=gauge_depth,
914
+ ha=ha0,
915
+ ua=ua0,
916
+ va=va0)
917
+
918
+
919
+
920
+ # Create data to be written to second mux file
921
+ ha1=num.ones((n,time_step_count),num.float)
922
+ ha1[0]=num.sin(times_ref)
923
+ ha1[1]=2*num.sin(times_ref - 3)
924
+ ha1[2]=5*num.sin(4*times_ref)
925
+ ha1[3]=num.sin(times_ref)
926
+ ha1[4]=num.sin(2*times_ref-0.7)
927
+
928
+ ua1=num.zeros((n,time_step_count),num.float)
929
+ ua1[0]=3*num.cos(times_ref)
930
+ ua1[1]=2*num.sin(times_ref-0.7)
931
+ ua1[2]=num.arange(3*time_step_count,4*time_step_count)
932
+ ua1[4]=2*num.ones(time_step_count)
933
+
934
+ va1=num.zeros((n,time_step_count),num.float)
935
+ va1[0]=2*num.cos(times_ref-0.87)
936
+ va1[1]=3*num.ones(time_step_count, num.int) #array default#
937
+ va1[3]=2*num.sin(times_ref-0.71)
938
+
939
+
940
+ # Ensure data used to write mux file to be zero when gauges are
941
+ # not recording
942
+ for i in range(n):
943
+ # For each point
944
+
945
+ for j in range(0, first_tstep[i]-1) + range(last_tstep[i], time_step_count):
946
+ # For timesteps before and after recording range
947
+ ha1[i][j] = ua1[i][j] = va1[i][j] = 0.0
948
+
949
+
950
+ #print
951
+ #print 'using varying start and end time'
952
+ #print 'ha1', ha1[4]
953
+ #print 'ua1', ua1
954
+ #print 'va1', va1
955
+
956
+
957
+ # Write second mux file to be combined by urs2sts
958
+ base_nameII, filesII = self.write_mux2(lat_long_points,
959
+ time_step_count, time_step,
960
+ first_tstep, last_tstep,
961
+ depth=gauge_depth,
962
+ ha=ha1,
963
+ ua=ua1,
964
+ va=va1)
965
+
966
+
967
+ # Create ordering file
968
+ permutation = [4,0,2]
969
+
970
+ _, ordering_filename = tempfile.mkstemp('')
971
+ order_fid = open(ordering_filename, 'w')
972
+ order_fid.write('index, longitude, latitude\n')
973
+ for index in permutation:
974
+ order_fid.write('%d, %f, %f\n' %(index,
975
+ lat_long_points[index][1],
976
+ lat_long_points[index][0]))
977
+ order_fid.close()
978
+
979
+
980
+
981
+ #------------------------------------------------------------
982
+ # Now read the mux files one by one without weights and test
983
+
984
+ # Call urs2sts with mux file #0
985
+ urs2sts([base_nameI],
986
+ basename_out=base_nameI,
987
+ ordering_filename=ordering_filename,
988
+ mean_stage=tide,
989
+ verbose=False)
990
+
991
+ # Now read the sts file and check that values have been stored correctly.
992
+ sts_file = base_nameI + '.sts'
993
+ fid = NetCDFFile(sts_file)
994
+
995
+
996
+ # Check that original indices have been stored
997
+ stored_permutation = fid.variables['permutation'][:]
998
+ msg = 'Permutation was not stored correctly. I got '
999
+ msg += str(stored_permutation)
1000
+ assert num.allclose(stored_permutation, permutation), msg
1001
+
1002
+
1003
+
1004
+
1005
+ # Make x and y absolute
1006
+ x = fid.variables['x'][:]
1007
+ y = fid.variables['y'][:]
1008
+
1009
+ geo_reference = Geo_reference(NetCDFObject=fid)
1010
+ points = geo_reference.get_absolute(map(None, x, y))
1011
+ points = ensure_numeric(points)
1012
+
1013
+ x = points[:,0]
1014
+ y = points[:,1]
1015
+
1016
+ for i, index in enumerate(permutation):
1017
+ # Check that STS points are stored in the correct order
1018
+
1019
+ # Work out the UTM coordinates sts point i
1020
+ zone, e, n = redfearn(lat_long_points[index][0],
1021
+ lat_long_points[index][1])
1022
+
1023
+ #print i, [x[i],y[i]], [e,n]
1024
+ assert num.allclose([x[i],y[i]], [e,n])
1025
+
1026
+
1027
+ # Check the time vector
1028
+ times = fid.variables['time'][:]
1029
+ assert num.allclose(ensure_numeric(times),
1030
+ ensure_numeric(times_ref))
1031
+
1032
+
1033
+ # Check sts values for mux #0
1034
+ stage0 = fid.variables['stage'][:].copy()
1035
+ xmomentum0 = fid.variables['xmomentum'][:].copy()
1036
+ ymomentum0 = fid.variables['ymomentum'][:].copy()
1037
+ elevation0 = fid.variables['elevation'][:].copy()
1038
+
1039
+
1040
+ #print 'stage', stage0
1041
+ #print 'xmomentum', xmomentum0
1042
+ #print 'ymomentum', ymomentum0
1043
+ #print 'elevation', elevation0
1044
+
1045
+ # The quantities stored in the .sts file should be the weighted sum of the
1046
+ # quantities written to the mux2 files subject to the permutation vector.
1047
+
1048
+ ha_ref = num.take(ha0, permutation, axis=0)
1049
+ ua_ref = num.take(ua0, permutation, axis=0)
1050
+ va_ref = num.take(va0, permutation, axis=0)
1051
+
1052
+ gauge_depth_ref = num.take(gauge_depth, permutation, axis=0)
1053
+
1054
+ assert num.allclose(num.transpose(ha_ref)+tide, stage0) # Meters
1055
+
1056
+
1057
+
1058
+ #Check the momentums - ua
1059
+ #momentum = velocity*(stage-elevation)
1060
+ # elevation = - depth
1061
+ #momentum = velocity_ua *(stage+depth)
1062
+
1063
+ depth_ref = num.zeros((len(permutation), time_step_count), num.float)
1064
+ for i in range(len(permutation)):
1065
+ depth_ref[i]=gauge_depth_ref[i]+tide+ha_ref[i]
1066
+
1067
+
1068
+ # The xmomentum stored in the .sts file should be the sum of the ua
1069
+ # in the two mux2 files multiplied by the depth.
1070
+ assert num.allclose(num.transpose(ua_ref*depth_ref), xmomentum0)
1071
+
1072
+ #Check the momentums - va
1073
+ #momentum = velocity*(stage-elevation)
1074
+ # elevation = - depth
1075
+ #momentum = velocity_va *(stage+depth)
1076
+
1077
+ # The ymomentum stored in the .sts file should be the sum of the va
1078
+ # in the two mux2 files multiplied by the depth.
1079
+
1080
+
1081
+ #print transpose(va_ref*depth_ref)
1082
+ #print ymomentum
1083
+ assert num.allclose(num.transpose(va_ref*depth_ref), ymomentum0)
1084
+
1085
+ # check the elevation values.
1086
+ # -ve since urs measures depth, sww meshers height,
1087
+ assert num.allclose(-gauge_depth_ref, elevation0)
1088
+
1089
+ fid.close()
1090
+ os.remove(sts_file)
1091
+
1092
+
1093
+
1094
+
1095
+ # Call urs2sts with mux file #1
1096
+ urs2sts([base_nameII],
1097
+ basename_out=base_nameI,
1098
+ ordering_filename=ordering_filename,
1099
+ mean_stage=tide,
1100
+ verbose=False)
1101
+
1102
+ # Now read the sts file and check that values have been stored correctly.
1103
+ sts_file = base_nameI + '.sts'
1104
+ fid = NetCDFFile(sts_file)
1105
+
1106
+
1107
+ # Check that original indices have been stored
1108
+ stored_permutation = fid.variables['permutation'][:]
1109
+ msg = 'Permutation was not stored correctly. I got '
1110
+ msg += str(stored_permutation)
1111
+ assert num.allclose(stored_permutation, permutation), msg
1112
+
1113
+ # Make x and y absolute
1114
+ x = fid.variables['x'][:]
1115
+ y = fid.variables['y'][:]
1116
+
1117
+ geo_reference = Geo_reference(NetCDFObject=fid)
1118
+ points = geo_reference.get_absolute(map(None, x, y))
1119
+ points = ensure_numeric(points)
1120
+
1121
+ x = points[:,0]
1122
+ y = points[:,1]
1123
+
1124
+ for i, index in enumerate(permutation):
1125
+ # Check that STS points are stored in the correct order
1126
+
1127
+ # Work out the UTM coordinates sts point i
1128
+ zone, e, n = redfearn(lat_long_points[index][0],
1129
+ lat_long_points[index][1])
1130
+
1131
+ #print i, [x[i],y[i]], [e,n]
1132
+ assert num.allclose([x[i],y[i]], [e,n])
1133
+
1134
+
1135
+ # Check the time vector
1136
+ times = fid.variables['time'][:]
1137
+ assert num.allclose(ensure_numeric(times),
1138
+ ensure_numeric(times_ref))
1139
+
1140
+
1141
+ # Check sts values for mux #1
1142
+ stage1 = fid.variables['stage'][:].copy()
1143
+ xmomentum1 = fid.variables['xmomentum'][:].copy()
1144
+ ymomentum1 = fid.variables['ymomentum'][:].copy()
1145
+ elevation1 = fid.variables['elevation'][:].copy()
1146
+
1147
+
1148
+ #print 'stage', stage1
1149
+ #print 'xmomentum', xmomentum1
1150
+ #print 'ymomentum', ymomentum1
1151
+ #print 'elevation', elevation1
1152
+
1153
+ # The quantities stored in the .sts file should be the weighted sum of the
1154
+ # quantities written to the mux2 files subject to the permutation vector.
1155
+
1156
+ ha_ref = num.take(ha1, permutation, axis=0)
1157
+ ua_ref = num.take(ua1, permutation, axis=0)
1158
+ va_ref = num.take(va1, permutation, axis=0)
1159
+
1160
+ gauge_depth_ref = num.take(gauge_depth, permutation, axis=0)
1161
+
1162
+
1163
+ #print
1164
+ #print stage1
1165
+ #print transpose(ha_ref)+tide - stage1
1166
+
1167
+
1168
+ assert num.allclose(num.transpose(ha_ref)+tide, stage1) # Meters
1169
+ #import sys; sys.exit()
1170
+
1171
+ #Check the momentums - ua
1172
+ #momentum = velocity*(stage-elevation)
1173
+ # elevation = - depth
1174
+ #momentum = velocity_ua *(stage+depth)
1175
+
1176
+ depth_ref = num.zeros((len(permutation), time_step_count), num.float)
1177
+ for i in range(len(permutation)):
1178
+ depth_ref[i]=gauge_depth_ref[i]+tide+ha_ref[i]
1179
+
1180
+
1181
+ # The xmomentum stored in the .sts file should be the sum of the ua
1182
+ # in the two mux2 files multiplied by the depth.
1183
+ assert num.allclose(num.transpose(ua_ref*depth_ref), xmomentum1)
1184
+
1185
+ #Check the momentums - va
1186
+ #momentum = velocity*(stage-elevation)
1187
+ # elevation = - depth
1188
+ #momentum = velocity_va *(stage+depth)
1189
+
1190
+ # The ymomentum stored in the .sts file should be the sum of the va
1191
+ # in the two mux2 files multiplied by the depth.
1192
+
1193
+
1194
+ #print transpose(va_ref*depth_ref)
1195
+ #print ymomentum
1196
+ assert num.allclose(num.transpose(va_ref*depth_ref), ymomentum1)
1197
+
1198
+ # check the elevation values.
1199
+ # -ve since urs measures depth, sww meshers height,
1200
+ assert num.allclose(-gauge_depth_ref, elevation1)
1201
+
1202
+ fid.close()
1203
+ os.remove(sts_file)
1204
+
1205
+ #----------------------
1206
+ # Then read the mux files together and test
1207
+
1208
+
1209
+ # Call urs2sts with multiple mux files
1210
+ urs2sts([base_nameI, base_nameII],
1211
+ basename_out=base_nameI,
1212
+ ordering_filename=ordering_filename,
1213
+ weights=weights,
1214
+ mean_stage=tide,
1215
+ verbose=False)
1216
+
1217
+ # Now read the sts file and check that values have been stored correctly.
1218
+ sts_file = base_nameI + '.sts'
1219
+ fid = NetCDFFile(sts_file)
1220
+
1221
+ # Make x and y absolute
1222
+ x = fid.variables['x'][:]
1223
+ y = fid.variables['y'][:]
1224
+
1225
+ geo_reference = Geo_reference(NetCDFObject=fid)
1226
+ points = geo_reference.get_absolute(map(None, x, y))
1227
+ points = ensure_numeric(points)
1228
+
1229
+ x = points[:,0]
1230
+ y = points[:,1]
1231
+
1232
+ for i, index in enumerate(permutation):
1233
+ # Check that STS points are stored in the correct order
1234
+
1235
+ # Work out the UTM coordinates sts point i
1236
+ zone, e, n = redfearn(lat_long_points[index][0],
1237
+ lat_long_points[index][1])
1238
+
1239
+ #print i, [x[i],y[i]], [e,n]
1240
+ assert num.allclose([x[i],y[i]], [e,n])
1241
+
1242
+
1243
+ # Check the time vector
1244
+ times = fid.variables['time'][:]
1245
+ assert num.allclose(ensure_numeric(times),
1246
+ ensure_numeric(times_ref))
1247
+
1248
+
1249
+ # Check sts values
1250
+ stage = fid.variables['stage'][:].copy()
1251
+ xmomentum = fid.variables['xmomentum'][:].copy()
1252
+ ymomentum = fid.variables['ymomentum'][:].copy()
1253
+ elevation = fid.variables['elevation'][:].copy()
1254
+
1255
+
1256
+ #print 'stage', stage
1257
+ #print 'elevation', elevation
1258
+
1259
+ # The quantities stored in the .sts file should be the weighted sum of the
1260
+ # quantities written to the mux2 files subject to the permutation vector.
1261
+
1262
+ ha_ref = (weights[0]*num.take(ha0, permutation, axis=0)
1263
+ + weights[1]*num.take(ha1, permutation, axis=0))
1264
+ ua_ref = (weights[0]*num.take(ua0, permutation, axis=0)
1265
+ + weights[1]*num.take(ua1, permutation, axis=0))
1266
+ va_ref = (weights[0]*num.take(va0, permutation, axis=0)
1267
+ + weights[1]*num.take(va1, permutation, axis=0))
1268
+
1269
+ gauge_depth_ref = num.take(gauge_depth, permutation, axis=0)
1270
+
1271
+
1272
+ #print
1273
+ #print stage
1274
+ #print transpose(ha_ref)+tide - stage
1275
+
1276
+ assert num.allclose(num.transpose(ha_ref)+tide, stage) # Meters
1277
+
1278
+ #Check the momentums - ua
1279
+ #momentum = velocity*(stage-elevation)
1280
+ # elevation = - depth
1281
+ #momentum = velocity_ua *(stage+depth)
1282
+
1283
+ depth_ref = num.zeros((len(permutation), time_step_count), num.float)
1284
+ for i in range(len(permutation)):
1285
+ depth_ref[i]=gauge_depth_ref[i]+tide+ha_ref[i]
1286
+
1287
+
1288
+
1289
+
1290
+ # The xmomentum stored in the .sts file should be the sum of the ua
1291
+ # in the two mux2 files multiplied by the depth.
1292
+ assert num.allclose(num.transpose(ua_ref*depth_ref), xmomentum)
1293
+
1294
+ #Check the momentums - va
1295
+ #momentum = velocity*(stage-elevation)
1296
+ # elevation = - depth
1297
+ #momentum = velocity_va *(stage+depth)
1298
+
1299
+ # The ymomentum stored in the .sts file should be the sum of the va
1300
+ # in the two mux2 files multiplied by the depth.
1301
+
1302
+
1303
+ #print transpose(va_ref*depth_ref)
1304
+ #print ymomentum
1305
+
1306
+ assert num.allclose(num.transpose(va_ref*depth_ref), ymomentum)
1307
+
1308
+ # check the elevation values.
1309
+ # -ve since urs measures depth, sww meshers height,
1310
+ assert num.allclose(-gauge_depth_ref, elevation) #Meters
1311
+
1312
+ fid.close()
1313
+ self.delete_mux(filesI)
1314
+ self.delete_mux(filesII)
1315
+ os.remove(sts_file)
1316
+
1317
+ #---------------
1318
+ # "Manually" add the timeseries up with weights and test
1319
+ # Tide is discounted from individual results and added back in
1320
+ #
1321
+
1322
+ stage_man = weights[0]*(stage0-tide) + weights[1]*(stage1-tide) + tide
1323
+ assert num.allclose(stage_man, stage)
1324
+
1325
+
1326
+ def test_file_boundary_stsI(self):
1327
+ """test_file_boundary_stsI(self):
1328
+ """
1329
+
1330
+ bounding_polygon=[[6.0,97.0],[6.01,97.0],[6.02,97.0],[6.02,97.02],[6.00,97.02]]
1331
+ tide = 0.37
1332
+ time_step_count = 5
1333
+ time_step = 2
1334
+ lat_long_points =bounding_polygon[0:3]
1335
+ n=len(lat_long_points)
1336
+ first_tstep=num.ones(n,num.int)
1337
+ last_tstep=(time_step_count)*num.ones(n,num.int)
1338
+
1339
+ h = 20
1340
+ w = 2
1341
+ u = 10
1342
+ v = -10
1343
+ gauge_depth=h*num.ones(n,num.float)
1344
+ ha=w*num.ones((n,time_step_count),num.float)
1345
+ ua=u*num.ones((n,time_step_count),num.float)
1346
+ va=v*num.ones((n,time_step_count),num.float)
1347
+ base_name, files = self.write_mux2(lat_long_points,
1348
+ time_step_count, time_step,
1349
+ first_tstep, last_tstep,
1350
+ depth=gauge_depth,
1351
+ ha=ha,
1352
+ ua=ua,
1353
+ va=va)
1354
+
1355
+ sts_file=base_name
1356
+ urs2sts(base_name,
1357
+ sts_file,
1358
+ mean_stage=tide,
1359
+ verbose=False)
1360
+ self.delete_mux(files)
1361
+
1362
+ #print 'start create mesh from regions'
1363
+ for i in range(len(bounding_polygon)):
1364
+ zone,bounding_polygon[i][0],bounding_polygon[i][1]=redfearn(bounding_polygon[i][0],bounding_polygon[i][1])
1365
+ extent_res=1000000
1366
+ meshname = 'urs_test_mesh' + '.tsh'
1367
+ interior_regions=None
1368
+ boundary_tags={'ocean': [0,1], 'otherocean': [2,3,4]}
1369
+ create_mesh_from_regions(bounding_polygon,
1370
+ boundary_tags=boundary_tags,
1371
+ maximum_triangle_area=extent_res,
1372
+ filename=meshname,
1373
+ interior_regions=interior_regions,
1374
+ verbose=False)
1375
+
1376
+ domain_fbound = Domain(meshname)
1377
+ domain_fbound.set_quantity('stage', tide)
1378
+ Bf = File_boundary(sts_file+'.sts',
1379
+ domain_fbound,
1380
+ boundary_polygon=bounding_polygon)
1381
+ Br = Reflective_boundary(domain_fbound)
1382
+ Bd = Dirichlet_boundary([w+tide, u*(w+h+tide), v*(w+h+tide)])
1383
+
1384
+ domain_fbound.set_boundary({'ocean': Bf,'otherocean': Br})
1385
+
1386
+ # Check boundary object evaluates as it should
1387
+ for i, ((vol_id, edge_id), B) in enumerate(domain_fbound.boundary_objects):
1388
+ if B is Bf:
1389
+
1390
+ qf = B.evaluate(vol_id, edge_id) # File boundary
1391
+ qd = Bd.evaluate(vol_id, edge_id) # Dirichlet boundary
1392
+
1393
+ assert num.allclose(qf, qd)
1394
+
1395
+
1396
+ # Evolve
1397
+ finaltime=time_step*(time_step_count-1)
1398
+ yieldstep=time_step
1399
+ temp_fbound=num.zeros(int(finaltime/yieldstep)+1,num.float)
1400
+
1401
+ for i, t in enumerate(domain_fbound.evolve(yieldstep=yieldstep,
1402
+ finaltime=finaltime,
1403
+ skip_initial_step=False)):
1404
+
1405
+ D = domain_fbound
1406
+ temp_fbound[i]=D.quantities['stage'].centroid_values[2]
1407
+
1408
+ # Check that file boundary object has populated
1409
+ # boundary array correctly
1410
+ # FIXME (Ole): Do this for the other tests too!
1411
+ for j, val in enumerate(D.get_quantity('stage').boundary_values):
1412
+
1413
+ (vol_id, edge_id), B = D.boundary_objects[j]
1414
+ if isinstance(B, File_boundary):
1415
+ #print j, val
1416
+ assert num.allclose(val, w + tide)
1417
+
1418
+
1419
+
1420
+ domain_drchlt = Domain(meshname)
1421
+ domain_drchlt.set_starttime(2.0)
1422
+ domain_drchlt.set_quantity('stage', tide)
1423
+ Br = Reflective_boundary(domain_drchlt)
1424
+
1425
+ domain_drchlt.set_boundary({'ocean': Bd,'otherocean': Br})
1426
+ temp_drchlt=num.zeros(int(finaltime/yieldstep)+1,num.float)
1427
+
1428
+ for i, t in enumerate(domain_drchlt.evolve(yieldstep=yieldstep,
1429
+ finaltime=finaltime,
1430
+ skip_initial_step=False)):
1431
+ temp_drchlt[i]=domain_drchlt.quantities['stage'].centroid_values[2]
1432
+
1433
+ #print domain_fbound.quantities['stage'].vertex_values
1434
+ #print domain_drchlt.quantities['stage'].vertex_values
1435
+
1436
+ assert num.allclose(temp_fbound,temp_drchlt)
1437
+
1438
+ assert num.allclose(domain_fbound.quantities['stage'].vertex_values,
1439
+ domain_drchlt.quantities['stage'].vertex_values)
1440
+
1441
+ assert num.allclose(domain_fbound.quantities['xmomentum'].vertex_values,
1442
+ domain_drchlt.quantities['xmomentum'].vertex_values)
1443
+
1444
+ assert num.allclose(domain_fbound.quantities['ymomentum'].vertex_values,
1445
+ domain_drchlt.quantities['ymomentum'].vertex_values)
1446
+
1447
+
1448
+ os.remove(sts_file+'.sts')
1449
+ os.remove(meshname)
1450
+
1451
+
1452
+ def test_file_boundary_stsI_beyond_model_time(self):
1453
+ """test_file_boundary_stsI(self):
1454
+
1455
+ Test that file_boundary can work when model time
1456
+ exceeds available data.
1457
+ This is optional and requires the user to specify a default
1458
+ boundary object.
1459
+ """
1460
+
1461
+ # Don't do warnings in unit test
1462
+ import warnings
1463
+ warnings.simplefilter('ignore')
1464
+
1465
+ bounding_polygon=[[6.0,97.0],[6.01,97.0],[6.02,97.0],
1466
+ [6.02,97.02],[6.00,97.02]]
1467
+ tide = 0.37
1468
+ time_step_count = 5
1469
+ time_step = 2
1470
+ lat_long_points = bounding_polygon[0:3]
1471
+ n=len(lat_long_points)
1472
+ first_tstep=num.ones(n,num.int)
1473
+ last_tstep=(time_step_count)*num.ones(n,num.int)
1474
+
1475
+ h = 20
1476
+ w = 2
1477
+ u = 10
1478
+ v = -10
1479
+ gauge_depth=h*num.ones(n,num.float)
1480
+ ha=w*num.ones((n,time_step_count),num.float)
1481
+ ua=u*num.ones((n,time_step_count),num.float)
1482
+ va=v*num.ones((n,time_step_count),num.float)
1483
+ base_name, files = self.write_mux2(lat_long_points,
1484
+ time_step_count, time_step,
1485
+ first_tstep, last_tstep,
1486
+ depth=gauge_depth,
1487
+ ha=ha,
1488
+ ua=ua,
1489
+ va=va)
1490
+
1491
+ sts_file=base_name
1492
+ urs2sts(base_name,
1493
+ sts_file,
1494
+ mean_stage=tide,
1495
+ verbose=False)
1496
+ self.delete_mux(files)
1497
+
1498
+ #print 'start create mesh from regions'
1499
+ for i in range(len(bounding_polygon)):
1500
+ zone,\
1501
+ bounding_polygon[i][0],\
1502
+ bounding_polygon[i][1]=redfearn(bounding_polygon[i][0],
1503
+ bounding_polygon[i][1])
1504
+
1505
+ extent_res=1000000
1506
+ meshname = 'urs_test_mesh' + '.tsh'
1507
+ interior_regions=None
1508
+ boundary_tags={'ocean': [0,1], 'otherocean': [2,3,4]}
1509
+ create_mesh_from_regions(bounding_polygon,
1510
+ boundary_tags=boundary_tags,
1511
+ maximum_triangle_area=extent_res,
1512
+ filename=meshname,
1513
+ interior_regions=interior_regions,
1514
+ verbose=False)
1515
+
1516
+ domain_fbound = Domain(meshname)
1517
+ domain_fbound.set_quantity('stage', tide)
1518
+
1519
+ Br = Reflective_boundary(domain_fbound)
1520
+ Bd = Dirichlet_boundary([w+tide, u*(w+h+tide), v*(w+h+tide)])
1521
+ Bf = File_boundary(sts_file+'.sts',
1522
+ domain_fbound,
1523
+ boundary_polygon=bounding_polygon,
1524
+ default_boundary=Bd) # Condition to be used
1525
+ # if model time exceeds
1526
+ # available data
1527
+
1528
+ domain_fbound.set_boundary({'ocean': Bf,'otherocean': Br})
1529
+
1530
+ # Check boundary object evaluates as it should
1531
+ for i, ((vol_id, edge_id), B) in enumerate(domain_fbound.boundary_objects):
1532
+ if B is Bf:
1533
+
1534
+ qf = B.evaluate(vol_id, edge_id) # File boundary
1535
+ qd = Bd.evaluate(vol_id, edge_id) # Dirichlet boundary
1536
+
1537
+ assert num.allclose(qf, qd)
1538
+
1539
+
1540
+ # Evolve
1541
+ data_finaltime = time_step*(time_step_count-1)
1542
+ finaltime = data_finaltime + 10 # Let model time exceed available data
1543
+ yieldstep = time_step
1544
+ temp_fbound=num.zeros(int(finaltime/yieldstep)+1, num.float)
1545
+
1546
+ for i, t in enumerate(domain_fbound.evolve(yieldstep=yieldstep,
1547
+ finaltime=finaltime,
1548
+ skip_initial_step=False)):
1549
+
1550
+ D = domain_fbound
1551
+ temp_fbound[i]=D.quantities['stage'].centroid_values[2]
1552
+
1553
+ # Check that file boundary object has populated
1554
+ # boundary array correctly
1555
+ # FIXME (Ole): Do this for the other tests too!
1556
+ for j, val in enumerate(D.get_quantity('stage').boundary_values):
1557
+
1558
+ (vol_id, edge_id), B = D.boundary_objects[j]
1559
+ if isinstance(B, File_boundary):
1560
+ #print j, val
1561
+ assert num.allclose(val, w + tide)
1562
+
1563
+
1564
+ domain_drchlt = Domain(meshname)
1565
+ domain_drchlt.set_starttime(2.0)
1566
+ domain_drchlt.set_quantity('stage', tide)
1567
+ Br = Reflective_boundary(domain_drchlt)
1568
+
1569
+ domain_drchlt.set_boundary({'ocean': Bd,'otherocean': Br})
1570
+ temp_drchlt=num.zeros(int(finaltime/yieldstep)+1,num.float)
1571
+
1572
+ for i, t in enumerate(domain_drchlt.evolve(yieldstep=yieldstep,
1573
+ finaltime=finaltime,
1574
+ skip_initial_step=False)):
1575
+ temp_drchlt[i]=domain_drchlt.quantities['stage'].centroid_values[2]
1576
+
1577
+ #print domain_fbound.quantities['stage'].vertex_values
1578
+ #print domain_drchlt.quantities['stage'].vertex_values
1579
+
1580
+ assert num.allclose(temp_fbound,temp_drchlt)
1581
+
1582
+ assert num.allclose(domain_fbound.quantities['stage'].vertex_values,
1583
+ domain_drchlt.quantities['stage'].vertex_values)
1584
+
1585
+ assert num.allclose(domain_fbound.quantities['xmomentum'].vertex_values,
1586
+ domain_drchlt.quantities['xmomentum'].vertex_values)
1587
+
1588
+ assert num.allclose(domain_fbound.quantities['ymomentum'].vertex_values,
1589
+ domain_drchlt.quantities['ymomentum'].vertex_values)
1590
+
1591
+ os.remove(sts_file+'.sts')
1592
+ os.remove(meshname)
1593
+
1594
+
1595
+ def test_field_boundary_stsI_beyond_model_time(self):
1596
+ """test_field_boundary(self):
1597
+
1598
+ Test that field_boundary can work when model time
1599
+ exceeds available data whilst adjusting mean_stage.
1600
+
1601
+ """
1602
+
1603
+ # Don't do warnings in unit test
1604
+ import warnings
1605
+ warnings.simplefilter('ignore')
1606
+
1607
+ bounding_polygon=[[6.0,97.0],[6.01,97.0],[6.02,97.0],
1608
+ [6.02,97.02],[6.00,97.02]]
1609
+ tide = 0.37
1610
+ time_step_count = 5
1611
+ time_step = 2
1612
+ lat_long_points = bounding_polygon[0:3]
1613
+ n=len(lat_long_points)
1614
+ first_tstep=num.ones(n,num.int)
1615
+ last_tstep=(time_step_count)*num.ones(n,num.int)
1616
+
1617
+ h = 20
1618
+ w = 2
1619
+ u = 10
1620
+ v = -10
1621
+ gauge_depth=h*num.ones(n,num.float)
1622
+ ha=w*num.ones((n,time_step_count),num.float)
1623
+ ua=u*num.ones((n,time_step_count),num.float)
1624
+ va=v*num.ones((n,time_step_count),num.float)
1625
+ base_name, files = self.write_mux2(lat_long_points,
1626
+ time_step_count, time_step,
1627
+ first_tstep, last_tstep,
1628
+ depth=gauge_depth,
1629
+ ha=ha,
1630
+ ua=ua,
1631
+ va=va)
1632
+
1633
+ sts_file=base_name
1634
+ urs2sts(base_name,
1635
+ sts_file,
1636
+ mean_stage=0.0, # Deliberately let Field_boundary do the adjustment
1637
+ verbose=False)
1638
+ self.delete_mux(files)
1639
+
1640
+ #print 'start create mesh from regions'
1641
+ for i in range(len(bounding_polygon)):
1642
+ zone,\
1643
+ bounding_polygon[i][0],\
1644
+ bounding_polygon[i][1]=redfearn(bounding_polygon[i][0],
1645
+ bounding_polygon[i][1])
1646
+
1647
+ extent_res=1000000
1648
+ meshname = 'urs_test_mesh' + '.tsh'
1649
+ interior_regions=None
1650
+ boundary_tags={'ocean': [0,1], 'otherocean': [2,3,4]}
1651
+ create_mesh_from_regions(bounding_polygon,
1652
+ boundary_tags=boundary_tags,
1653
+ maximum_triangle_area=extent_res,
1654
+ filename=meshname,
1655
+ interior_regions=interior_regions,
1656
+ verbose=False)
1657
+
1658
+ domain_fbound = Domain(meshname)
1659
+ domain_fbound.set_quantity('stage', tide)
1660
+
1661
+ Br = Reflective_boundary(domain_fbound)
1662
+ Bd = Dirichlet_boundary([w+tide, u*(w+h), v*(w+h)])
1663
+ Bdefault = Dirichlet_boundary([w, u*(w+h), v*(w+h)])
1664
+
1665
+ Bf = Field_boundary(sts_file+'.sts',
1666
+ domain_fbound,
1667
+ mean_stage=tide, # Field boundary to adjust for tide
1668
+ boundary_polygon=bounding_polygon,
1669
+ default_boundary=Bdefault) # Condition to be used
1670
+ # if model time exceeds
1671
+ # available data
1672
+
1673
+ domain_fbound.set_boundary({'ocean': Bf,'otherocean': Br})
1674
+
1675
+ # Check boundary object evaluates as it should
1676
+ for i, ((vol_id, edge_id), B) in enumerate(domain_fbound.boundary_objects):
1677
+ if B is Bf:
1678
+
1679
+ qf = B.evaluate(vol_id, edge_id) # Field boundary
1680
+ qd = Bd.evaluate(vol_id, edge_id) # Dirichlet boundary
1681
+
1682
+ msg = 'Got %s, should have been %s' %(qf, qd)
1683
+ assert num.allclose(qf, qd), msg
1684
+
1685
+ # Evolve
1686
+ data_finaltime = time_step*(time_step_count-1)
1687
+ finaltime = data_finaltime + 10 # Let model time exceed available data
1688
+ yieldstep = time_step
1689
+ temp_fbound=num.zeros(int(finaltime/yieldstep)+1, num.float)
1690
+
1691
+ for i, t in enumerate(domain_fbound.evolve(yieldstep=yieldstep,
1692
+ finaltime=finaltime,
1693
+ skip_initial_step=False)):
1694
+
1695
+ D = domain_fbound
1696
+ temp_fbound[i]=D.quantities['stage'].centroid_values[2]
1697
+
1698
+ # Check that file boundary object has populated
1699
+ # boundary array correctly
1700
+ # FIXME (Ole): Do this for the other tests too!
1701
+ for j, val in enumerate(D.get_quantity('stage').boundary_values):
1702
+
1703
+ (vol_id, edge_id), B = D.boundary_objects[j]
1704
+ if isinstance(B, Field_boundary):
1705
+ msg = 'Got %f should have been %f' %(val, w+tide)
1706
+ assert num.allclose(val, w + tide), msg
1707
+
1708
+
1709
+ def test_file_boundary_stsII(self):
1710
+ """test_file_boundary_stsII(self):
1711
+
1712
+ mux2 file has points not included in boundary
1713
+ mux2 gauges are not stored with the same order as they are
1714
+ found in bounding_polygon. This does not matter as long as bounding
1715
+ polygon passed to file_function contains the mux2 points needed (in
1716
+ the correct order).
1717
+ """
1718
+
1719
+ bounding_polygon=[[6.01,97.0],[6.02,97.0],[6.02,97.02],[6.00,97.02],[6.0,97.0]]
1720
+ tide = -2.20
1721
+ time_step_count = 20
1722
+ time_step = 2
1723
+ lat_long_points=bounding_polygon[0:2]
1724
+ lat_long_points.insert(0,bounding_polygon[len(bounding_polygon)-1])
1725
+ lat_long_points.insert(0,[6.0,97.01])
1726
+ n=len(lat_long_points)
1727
+ first_tstep=num.ones(n,num.int)
1728
+ last_tstep=(time_step_count)*num.ones(n,num.int)
1729
+ gauge_depth=20*num.ones(n,num.float)
1730
+ ha=2*num.ones((n,time_step_count),num.float)
1731
+ ua=10*num.ones((n,time_step_count),num.float)
1732
+ va=-10*num.ones((n,time_step_count),num.float)
1733
+ base_name, files = self.write_mux2(lat_long_points,
1734
+ time_step_count,
1735
+ time_step,
1736
+ first_tstep,
1737
+ last_tstep,
1738
+ depth=gauge_depth,
1739
+ ha=ha,
1740
+ ua=ua,
1741
+ va=va)
1742
+
1743
+ sts_file=base_name
1744
+ urs2sts(base_name,sts_file,mean_stage=tide,verbose=False)
1745
+ self.delete_mux(files)
1746
+
1747
+ #print 'start create mesh from regions'
1748
+ for i in range(len(bounding_polygon)):
1749
+ zone,\
1750
+ bounding_polygon[i][0],\
1751
+ bounding_polygon[i][1]=redfearn(bounding_polygon[i][0],
1752
+ bounding_polygon[i][1])
1753
+
1754
+ extent_res=1000000
1755
+ meshname = 'urs_test_mesh' + '.tsh'
1756
+ interior_regions=None
1757
+ boundary_tags={'ocean': [0,1], 'otherocean': [2,3,4]}
1758
+ # have to change boundary tags from last example because now bounding
1759
+ # polygon starts in different place.
1760
+ create_mesh_from_regions(bounding_polygon,boundary_tags=boundary_tags,
1761
+ maximum_triangle_area=extent_res,filename=meshname,
1762
+ interior_regions=interior_regions,verbose=False)
1763
+
1764
+ domain_fbound = Domain(meshname)
1765
+ domain_fbound.set_quantity('stage', tide)
1766
+ Bf = File_boundary(sts_file+'.sts',
1767
+ domain_fbound,
1768
+ boundary_polygon=bounding_polygon)
1769
+ Br = Reflective_boundary(domain_fbound)
1770
+
1771
+ domain_fbound.set_boundary({'ocean': Bf,'otherocean': Br})
1772
+ finaltime=time_step*(time_step_count-1)
1773
+ yieldstep=time_step
1774
+ temp_fbound=num.zeros(int(finaltime/yieldstep)+1,num.float)
1775
+
1776
+ for i, t in enumerate(domain_fbound.evolve(yieldstep=yieldstep,
1777
+ finaltime=finaltime,
1778
+ skip_initial_step = False)):
1779
+ temp_fbound[i]=domain_fbound.quantities['stage'].centroid_values[2]
1780
+
1781
+ domain_drchlt = Domain(meshname)
1782
+ domain_drchlt.set_quantity('stage', tide)
1783
+ Br = Reflective_boundary(domain_drchlt)
1784
+ Bd = Dirichlet_boundary([2.0+tide,220+10*tide,-220-10*tide])
1785
+ domain_drchlt.set_boundary({'ocean': Bd,'otherocean': Br})
1786
+ temp_drchlt=num.zeros(int(finaltime/yieldstep)+1,num.float)
1787
+
1788
+ for i, t in enumerate(domain_drchlt.evolve(yieldstep=yieldstep,
1789
+ finaltime=finaltime,
1790
+ skip_initial_step = False)):
1791
+ temp_drchlt[i]=domain_drchlt.quantities['stage'].centroid_values[2]
1792
+
1793
+
1794
+ assert num.allclose(temp_fbound,temp_drchlt)
1795
+
1796
+ #print domain_fbound.quantities['stage'].vertex_values
1797
+ #print domain_drchlt.quantities['stage'].vertex_values
1798
+
1799
+
1800
+ assert num.allclose(domain_fbound.quantities['stage'].vertex_values,
1801
+ domain_drchlt.quantities['stage'].vertex_values)
1802
+
1803
+ assert num.allclose(domain_fbound.quantities['xmomentum'].vertex_values,
1804
+ domain_drchlt.quantities['xmomentum'].vertex_values)
1805
+
1806
+ assert num.allclose(domain_fbound.quantities['ymomentum'].vertex_values,
1807
+ domain_drchlt.quantities['ymomentum'].vertex_values)
1808
+
1809
+
1810
+
1811
+ os.remove(sts_file+'.sts')
1812
+ os.remove(meshname)
1813
+
1814
+
1815
+
1816
+ def test_file_boundary_stsIII_ordering(self):
1817
+ """test_file_boundary_stsIII_ordering(self):
1818
+ Read correct points from ordering file and apply sts to boundary
1819
+ """
1820
+
1821
+ lat_long_points=[[6.01,97.0],[6.02,97.0],[6.05,96.9],[6.0,97.0]]
1822
+ bounding_polygon=[[6.0,97.0],[6.01,97.0],[6.02,97.0],
1823
+ [6.02,97.02],[6.00,97.02]]
1824
+ tide = 3.0
1825
+ time_step_count = 50
1826
+ time_step = 2
1827
+ n=len(lat_long_points)
1828
+ first_tstep=num.ones(n,num.int)
1829
+ last_tstep=(time_step_count)*num.ones(n,num.int)
1830
+ gauge_depth=20*num.ones(n,num.float)
1831
+ ha=2*num.ones((n,time_step_count),num.float)
1832
+ ua=10*num.ones((n,time_step_count),num.float)
1833
+ va=-10*num.ones((n,time_step_count),num.float)
1834
+ base_name, files = self.write_mux2(lat_long_points,
1835
+ time_step_count,
1836
+ time_step,
1837
+ first_tstep,
1838
+ last_tstep,
1839
+ depth=gauge_depth,
1840
+ ha=ha,
1841
+ ua=ua,
1842
+ va=va)
1843
+ # base name will not exist, but 3 other files are created
1844
+
1845
+ # Write order file
1846
+ file_handle, order_base_name = tempfile.mkstemp("")
1847
+ os.close(file_handle)
1848
+ os.remove(order_base_name)
1849
+ d=","
1850
+ order_file=order_base_name+'order.txt'
1851
+ fid=open(order_file,'w')
1852
+
1853
+ # Write Header
1854
+ header='index, longitude, latitude\n'
1855
+ fid.write(header)
1856
+ indices=[3,0,1]
1857
+ for i in indices:
1858
+ line=str(i)+d+str(lat_long_points[i][1])+d+\
1859
+ str(lat_long_points[i][0])+"\n"
1860
+ fid.write(line)
1861
+ fid.close()
1862
+
1863
+ sts_file=base_name
1864
+ urs2sts(base_name,
1865
+ basename_out=sts_file,
1866
+ ordering_filename=order_file,
1867
+ mean_stage=tide,
1868
+ verbose=False)
1869
+ self.delete_mux(files)
1870
+
1871
+ assert(os.access(sts_file+'.sts', os.F_OK))
1872
+
1873
+ boundary_polygon = create_sts_boundary(base_name)
1874
+
1875
+ os.remove(order_file)
1876
+
1877
+ # Append the remaining part of the boundary polygon to be defined by
1878
+ # the user
1879
+ bounding_polygon_utm=[]
1880
+ for point in bounding_polygon:
1881
+ zone,easting,northing=redfearn(point[0],point[1])
1882
+ bounding_polygon_utm.append([easting,northing])
1883
+
1884
+ boundary_polygon.append(bounding_polygon_utm[3])
1885
+ boundary_polygon.append(bounding_polygon_utm[4])
1886
+
1887
+ plot=False
1888
+ if plot:
1889
+ from pylab import plot,show,axis
1890
+ boundary_polygon=ensure_numeric(boundary_polygon)
1891
+ bounding_polygon_utm=ensure_numeric(bounding_polygon_utm)
1892
+ #lat_long_points=ensure_numeric(lat_long_points)
1893
+ #plot(lat_long_points[:,0],lat_long_points[:,1],'o')
1894
+ plot(boundary_polygon[:,0], boundary_polygon[:,1],'d')
1895
+ plot(bounding_polygon_utm[:,0],bounding_polygon_utm[:,1],'o')
1896
+ show()
1897
+
1898
+ assert num.allclose(bounding_polygon_utm,boundary_polygon)
1899
+
1900
+
1901
+ extent_res=1000000
1902
+ meshname = 'urs_test_mesh' + '.tsh'
1903
+ interior_regions=None
1904
+ boundary_tags={'ocean': [0,1], 'otherocean': [2,3,4]}
1905
+
1906
+ # have to change boundary tags from last example because now bounding
1907
+ # polygon starts in different place.
1908
+ create_mesh_from_regions(boundary_polygon,boundary_tags=boundary_tags,
1909
+ maximum_triangle_area=extent_res,filename=meshname,
1910
+ interior_regions=interior_regions,verbose=False)
1911
+
1912
+ domain_fbound = Domain(meshname)
1913
+ domain_fbound.set_quantity('stage', tide)
1914
+ Bf = File_boundary(sts_file+'.sts',
1915
+ domain_fbound,
1916
+ boundary_polygon=boundary_polygon)
1917
+ Br = Reflective_boundary(domain_fbound)
1918
+
1919
+ domain_fbound.set_boundary({'ocean': Bf,'otherocean': Br})
1920
+ finaltime=time_step*(time_step_count-1)
1921
+ yieldstep=time_step
1922
+ temp_fbound=num.zeros(int(finaltime/yieldstep)+1,num.float)
1923
+
1924
+ for i, t in enumerate(domain_fbound.evolve(yieldstep=yieldstep,
1925
+ finaltime=finaltime,
1926
+ skip_initial_step = False)):
1927
+ temp_fbound[i]=domain_fbound.quantities['stage'].centroid_values[2]
1928
+
1929
+
1930
+ domain_drchlt = Domain(meshname)
1931
+ domain_drchlt.set_starttime(2.0)
1932
+ domain_drchlt.set_quantity('stage', tide)
1933
+ Br = Reflective_boundary(domain_drchlt)
1934
+ Bd = Dirichlet_boundary([2.0+tide,220+10*tide,-220-10*tide])
1935
+ domain_drchlt.set_boundary({'ocean': Bd,'otherocean': Br})
1936
+ temp_drchlt=num.zeros(int(finaltime/yieldstep)+1,num.float)
1937
+
1938
+ for i, t in enumerate(domain_drchlt.evolve(yieldstep=yieldstep,
1939
+ finaltime=finaltime,
1940
+ skip_initial_step = False)):
1941
+ temp_drchlt[i]=domain_drchlt.quantities['stage'].centroid_values[2]
1942
+
1943
+
1944
+ #print domain_fbound.quantities['stage'].vertex_values
1945
+ #print domain_drchlt.quantities['stage'].vertex_values
1946
+
1947
+ assert num.allclose(temp_fbound,temp_drchlt)
1948
+
1949
+
1950
+ assert num.allclose(domain_fbound.quantities['stage'].vertex_values,
1951
+ domain_drchlt.quantities['stage'].vertex_values)
1952
+
1953
+ assert num.allclose(domain_fbound.quantities['xmomentum'].vertex_values,
1954
+ domain_drchlt.quantities['xmomentum'].vertex_values)
1955
+
1956
+ assert num.allclose(domain_fbound.quantities['ymomentum'].vertex_values,
1957
+ domain_drchlt.quantities['ymomentum'].vertex_values)
1958
+
1959
+ # Use known Dirichlet condition (if sufficient timesteps have been taken)
1960
+
1961
+ #FIXME: What do these assertions test? Also do they assume tide =0
1962
+ #print domain_fbound.quantities['stage'].vertex_values
1963
+ #assert allclose(domain_drchlt.quantities['stage'].vertex_values[6], 2)
1964
+ #assert allclose(domain_fbound.quantities['stage'].vertex_values[6], 2)
1965
+
1966
+ if not sys.platform == 'win32':
1967
+ os.remove(sts_file+'.sts')
1968
+
1969
+ os.remove(meshname)
1970
+
1971
+
1972
+
1973
+ def test_file_boundary_sts_time_limit(self):
1974
+ """test_file_boundary_stsIV_sinewave_ordering(self):
1975
+ Read correct points from ordering file and apply sts to boundary
1976
+ This one uses a sine wave and compares to time boundary
1977
+
1978
+ This one tests that times used can be limited by upper limit
1979
+ """
1980
+
1981
+ lat_long_points=[[6.01,97.0],[6.02,97.0],[6.05,96.9],[6.0,97.0]]
1982
+ bounding_polygon=[[6.0,97.0],[6.01,97.0],[6.02,97.0],[6.02,97.02],[6.00,97.02]]
1983
+ tide = 0.35
1984
+ time_step_count = 50
1985
+ time_step = 0.1
1986
+ times_ref = num.arange(0, time_step_count*time_step, time_step)
1987
+
1988
+ n=len(lat_long_points)
1989
+ first_tstep=num.ones(n,num.int)
1990
+ last_tstep=(time_step_count)*num.ones(n,num.int)
1991
+
1992
+ gauge_depth=20*num.ones(n,num.float)
1993
+
1994
+ ha1=num.ones((n,time_step_count),num.float)
1995
+ ua1=3.*num.ones((n,time_step_count),num.float)
1996
+ va1=2.*num.ones((n,time_step_count),num.float)
1997
+ for i in range(n):
1998
+ ha1[i]=num.sin(times_ref)
1999
+
2000
+
2001
+ base_name, files = self.write_mux2(lat_long_points,
2002
+ time_step_count, time_step,
2003
+ first_tstep, last_tstep,
2004
+ depth=gauge_depth,
2005
+ ha=ha1,
2006
+ ua=ua1,
2007
+ va=va1)
2008
+
2009
+ # Write order file
2010
+ file_handle, order_base_name = tempfile.mkstemp("")
2011
+ os.close(file_handle)
2012
+ os.remove(order_base_name)
2013
+ d=","
2014
+ order_file=order_base_name+'order.txt'
2015
+ fid=open(order_file,'w')
2016
+
2017
+ # Write Header
2018
+ header='index, longitude, latitude\n'
2019
+ fid.write(header)
2020
+ indices=[3,0,1]
2021
+ for i in indices:
2022
+ line=str(i)+d+str(lat_long_points[i][1])+d+\
2023
+ str(lat_long_points[i][0])+"\n"
2024
+ fid.write(line)
2025
+ fid.close()
2026
+
2027
+ sts_file=base_name
2028
+ urs2sts(base_name, basename_out=sts_file,
2029
+ ordering_filename=order_file,
2030
+ mean_stage=tide,
2031
+ verbose=False)
2032
+ self.delete_mux(files)
2033
+
2034
+
2035
+
2036
+ # Now read the sts file and check that values have been stored correctly.
2037
+ fid = NetCDFFile(sts_file + '.sts')
2038
+
2039
+ # Check the time vector
2040
+ times = fid.variables['time'][:]
2041
+ starttime = fid.starttime
2042
+ #print times
2043
+ #print starttime
2044
+
2045
+ # Check sts quantities
2046
+ stage = fid.variables['stage'][:]
2047
+ xmomentum = fid.variables['xmomentum'][:]
2048
+ ymomentum = fid.variables['ymomentum'][:]
2049
+ elevation = fid.variables['elevation'][:]
2050
+
2051
+
2052
+
2053
+ # Create beginnings of boundary polygon based on sts_boundary
2054
+ boundary_polygon = create_sts_boundary(base_name)
2055
+
2056
+ os.remove(order_file)
2057
+
2058
+ # Append the remaining part of the boundary polygon to be defined by
2059
+ # the user
2060
+ bounding_polygon_utm=[]
2061
+ for point in bounding_polygon:
2062
+ zone,easting,northing=redfearn(point[0],point[1])
2063
+ bounding_polygon_utm.append([easting,northing])
2064
+
2065
+ boundary_polygon.append(bounding_polygon_utm[3])
2066
+ boundary_polygon.append(bounding_polygon_utm[4])
2067
+
2068
+ #print 'boundary_polygon', boundary_polygon
2069
+
2070
+
2071
+ assert num.allclose(bounding_polygon_utm,boundary_polygon)
2072
+
2073
+
2074
+ extent_res=1000000
2075
+ meshname = 'urs_test_mesh' + '.tsh'
2076
+ interior_regions=None
2077
+ boundary_tags={'ocean': [0,1], 'otherocean': [2,3,4]}
2078
+
2079
+ # have to change boundary tags from last example because now bounding
2080
+ # polygon starts in different place.
2081
+ create_mesh_from_regions(boundary_polygon,
2082
+ boundary_tags=boundary_tags,
2083
+ maximum_triangle_area=extent_res,
2084
+ filename=meshname,
2085
+ interior_regions=interior_regions,
2086
+ verbose=False)
2087
+
2088
+ domain_fbound = Domain(meshname)
2089
+ domain_fbound.set_quantity('stage', tide)
2090
+
2091
+
2092
+ Bf = File_boundary(sts_file+'.sts',
2093
+ domain_fbound,
2094
+ boundary_polygon=boundary_polygon)
2095
+ time_vec = Bf.F.get_time()
2096
+ assert num.allclose(Bf.F.starttime, starttime)
2097
+ assert num.allclose(time_vec, times_ref)
2098
+
2099
+ for time_limit in [0.1, 0.2, 0.5, 1.0, 2.2, 3.0, 4.3, 6.0, 10.0]:
2100
+ Bf = File_boundary(sts_file+'.sts',
2101
+ domain_fbound,
2102
+ time_limit=time_limit+starttime,
2103
+ boundary_polygon=boundary_polygon)
2104
+
2105
+ time_vec = Bf.F.get_time()
2106
+ assert num.allclose(Bf.F.starttime, starttime)
2107
+ assert num.alltrue(time_vec < time_limit)
2108
+
2109
+
2110
+ try:
2111
+ Bf = File_boundary(sts_file+'.sts',
2112
+ domain_fbound,
2113
+ time_limit=-1+starttime,
2114
+ boundary_polygon=boundary_polygon)
2115
+ time_vec = Bf.F.get_time()
2116
+ print time_vec
2117
+ except AssertionError:
2118
+ pass
2119
+ else:
2120
+ raise Exception, 'Should have raised Exception here'
2121
+
2122
+ #-------------------------------------------------------------
2123
+
2124
+ if __name__ == "__main__":
2125
+ suite = unittest.makeSuite(Test_Urs2Sts,'test')
2126
+ runner = unittest.TextTestRunner()
2127
+ runner.run(suite)