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,1698 @@
1
+ """Class Geospatial_data
2
+
3
+ Manipulation of locations on the planet and associated attributes.
4
+ """
5
+
6
+ from sys import maxint
7
+ from os import access, F_OK, R_OK,remove
8
+ from types import DictType
9
+ from warnings import warn
10
+ from string import lower
11
+ from copy import deepcopy
12
+ import copy
13
+
14
+ from exceptions import Exception
15
+
16
+ from anuga.file.netcdf import NetCDFFile
17
+ import numpy as num
18
+ from numpy.random import randint, seed
19
+
20
+ from anuga.coordinate_transforms.lat_long_UTM_conversion import UTMtoLL
21
+ from anuga.utilities.numerical_tools import ensure_numeric
22
+ from anuga.coordinate_transforms.geo_reference import Geo_reference, \
23
+ TitleError, DEFAULT_ZONE, ensure_geo_reference, write_NetCDF_georeference
24
+ from anuga.coordinate_transforms.redfearn import convert_from_latlon_to_utm
25
+ from anuga.utilities.system_tools import clean_line
26
+ from anuga.anuga_exceptions import ANUGAError
27
+ from anuga.config import points_file_block_line_size as MAX_READ_LINES
28
+ from anuga.config import netcdf_mode_r, netcdf_mode_w, netcdf_mode_a
29
+ from anuga.config import netcdf_float
30
+ import anuga.utilities.log as log
31
+
32
+
33
+ DEFAULT_ATTRIBUTE = 'elevation'
34
+
35
+
36
+ class Geospatial_data:
37
+
38
+ def __init__(self,
39
+ data_points=None, # this can also be a points file name
40
+ attributes=None,
41
+ geo_reference=None,
42
+ default_attribute_name=None,
43
+ file_name=None,
44
+ latitudes=None,
45
+ longitudes=None,
46
+ points_are_lats_longs=False,
47
+ max_read_lines=None,
48
+ load_file_now=True,
49
+ verbose=False):
50
+ """Create instance from data points and associated attributes
51
+
52
+ data_points: x,y coordinates in meters. Type must be either a
53
+ sequence of 2-tuples or an Mx2 numeric array of floats. A file name
54
+ with extension .txt, .cvs or .pts can also be passed in here.
55
+
56
+ attributes: Associated values for each data point. The type
57
+ must be either a list or an array of length M or a dictionary
58
+ of lists (or arrays) of length M. In the latter case the keys
59
+ in the dictionary represent the attribute names, in the former
60
+ the attribute will get the default name "elevation".
61
+
62
+ geo_reference: Object representing the origin of the data
63
+ points. It contains UTM zone, easting and northing and data
64
+ points are assumed to be relative to this origin.
65
+ If geo_reference is None, the default geo ref object is used.
66
+
67
+ default_attribute_name: Name of default attribute to be used with
68
+ get_attribute_values. The idea is that the dataset can be
69
+ equipped with information about which attribute to return.
70
+ If None, the default is the "first"
71
+
72
+ latitudes, longitudes: Vectors of latitudes and longitudes,
73
+ used to specify location instead of points.
74
+
75
+ points_are_lats_longs: Set this as true if the points are actually
76
+ lats and longs, not UTM
77
+
78
+ max_read_lines: The number of rows read into memory when using
79
+ blocking to read a file.
80
+
81
+ load_file_now: If true the file is automatically loaded
82
+ into the geospatial instance. Used when blocking.
83
+
84
+ file_name: Name of input netCDF file or .txt file. netCDF file must
85
+ have dimensions "points" etc.
86
+ .txt file is a comma seperated file with x, y and attribute
87
+ data.
88
+
89
+ The first line has the titles of the columns. The first two
90
+ column titles are checked to see if they start with lat or
91
+ long (not case sensitive). If so the data is assumed to be
92
+ latitude and longitude, in decimal format and converted to
93
+ UTM. Otherwise the first two columns are assumed to be the x
94
+ and y, and the title names acually used are ignored.
95
+
96
+
97
+ The format for a .txt file is:
98
+ 1st line: [column names]
99
+ other lines: x y [attributes]
100
+
101
+ for example:
102
+ x, y, elevation, friction
103
+ 0.6, 0.7, 4.9, 0.3
104
+ 1.9, 2.8, 5, 0.3
105
+ 2.7, 2.4, 5.2, 0.3
106
+
107
+ The first two columns have to be x, y or lat, long
108
+ coordinates.
109
+
110
+
111
+ The format for a Points dictionary is:
112
+ ['pointlist'] a 2 column array describing points. 1st column x,
113
+ 2nd column y.
114
+ ['attributelist'], a dictionary of 1D arrays, representing
115
+ attribute values at the point. The dictionary key is the attribute
116
+ header.
117
+ ['geo_reference'] a Geo_refernece object. Use if the point
118
+ information is relative. This is optional.
119
+ eg
120
+ dic['pointlist'] = [[1.0,2.0],[3.0,5.0]]
121
+ dic['attributelist']['elevation'] = [[7.0,5.0]
122
+
123
+ verbose:
124
+ """
125
+
126
+ if isinstance(data_points, basestring):
127
+ # assume data_points is really a file name
128
+ file_name = data_points
129
+
130
+ self.set_verbose(verbose)
131
+ self.geo_reference = None
132
+ self.file_name = file_name
133
+
134
+ if max_read_lines is None:
135
+ self.max_read_lines = MAX_READ_LINES
136
+ else:
137
+ self.max_read_lines = max_read_lines
138
+
139
+ if file_name is None:
140
+ if (latitudes is not None or longitudes is not None
141
+ or points_are_lats_longs):
142
+ data_points, geo_reference = \
143
+ _set_using_lat_long(latitudes=latitudes,
144
+ longitudes=longitudes,
145
+ geo_reference=geo_reference,
146
+ data_points=data_points,
147
+ points_are_lats_longs=
148
+ points_are_lats_longs)
149
+ self.check_data_points(data_points)
150
+ self.set_attributes(attributes)
151
+ self.set_geo_reference(geo_reference)
152
+ self.set_default_attribute_name(default_attribute_name)
153
+ elif load_file_now is True:
154
+ # watch for case where file name and points,
155
+ # attributes etc are provided!!
156
+ # if file name then all provided info will be removed!
157
+
158
+ if verbose is True:
159
+ if file_name is not None:
160
+ log.critical('Geospatial_data: Loading Geospatial data from file: %s'
161
+ % file_name)
162
+
163
+ self.import_points_file(file_name, verbose=verbose)
164
+
165
+ self.check_data_points(self.data_points)
166
+ self.set_attributes(self.attributes)
167
+ self.set_geo_reference(self.geo_reference)
168
+ self.set_default_attribute_name(default_attribute_name)
169
+
170
+ if verbose is True:
171
+ if file_name is not None:
172
+ log.critical('Geospatial_data: Created from file: %s'
173
+ % file_name)
174
+ if load_file_now is False:
175
+ log.critical('Data will be loaded blockwise on demand')
176
+
177
+ if file_name.endswith('csv') or file_name.endswith('txt'):
178
+ pass
179
+ # This message was misleading.
180
+ # FIXME (Ole): Are we blocking here or not?
181
+ # print 'ASCII formats are not that great for '
182
+ # print 'blockwise reading. Consider storing this'
183
+ # print 'data as a pts NetCDF format'
184
+
185
+ def __len__(self):
186
+ return len(self.data_points)
187
+
188
+ def __repr__(self):
189
+ return str(self.get_data_points(absolute=True))
190
+
191
+ def check_data_points(self, data_points):
192
+ """Checks data points"""
193
+
194
+ if data_points is None:
195
+ self.data_points = None
196
+ msg = 'There is no data or file provided!'
197
+ raise ValueError(msg)
198
+ else:
199
+ self.data_points = ensure_numeric(data_points)
200
+ if not (0,) == self.data_points.shape:
201
+ assert len(self.data_points.shape) == 2
202
+ assert self.data_points.shape[1] == 2
203
+
204
+ def set_attributes(self, attributes):
205
+ """Check and assign attributes dictionary"""
206
+
207
+ if attributes is None:
208
+ self.attributes = None
209
+ return
210
+
211
+ if not isinstance(attributes, DictType):
212
+ # Convert single attribute into dictionary
213
+ attributes = {DEFAULT_ATTRIBUTE: attributes}
214
+
215
+ # Check input attributes
216
+ for key in attributes.keys():
217
+ try:
218
+ attributes[key] = ensure_numeric(attributes[key])
219
+ except:
220
+ msg = ("Attribute '%s' (%s) could not be converted to a"
221
+ "numeric vector" % (str(key), str(attributes[key])))
222
+ raise Exception(msg)
223
+
224
+ self.attributes = attributes
225
+
226
+ def set_geo_reference(self, geo_reference):
227
+ """Set the georeference of geospatial data.
228
+
229
+ It can also be used to change the georeference and will ensure that
230
+ the absolute coordinate values are unchanged.
231
+ """
232
+
233
+ if geo_reference is None:
234
+ # Use default - points are in absolute coordinates
235
+ geo_reference = Geo_reference()
236
+
237
+ # Allow for tuple (zone, xllcorner, yllcorner)
238
+ geo_reference = ensure_geo_reference(geo_reference)
239
+
240
+ if not isinstance(geo_reference, Geo_reference):
241
+ # FIXME (Ole): This exception will be raised even
242
+ # if geo_reference is None. Is that the intent Duncan?
243
+ msg = ('Argument geo_reference must be a valid Geo_reference '
244
+ 'object or None.')
245
+ raise (msg)
246
+
247
+ # If a geo_reference already exists, change the point data according to
248
+ # the new geo reference
249
+ if self.geo_reference is not None:
250
+ self.data_points = self.get_data_points(geo_reference=geo_reference)
251
+
252
+ self.geo_reference = geo_reference
253
+
254
+ def set_default_attribute_name(self, default_attribute_name):
255
+ self.default_attribute_name = default_attribute_name
256
+
257
+ def set_verbose(self, verbose=False):
258
+ if verbose in [False, True]:
259
+ self.verbose = verbose
260
+ else:
261
+ msg = 'Illegal value: %s' % str(verbose)
262
+ raise Exception(msg)
263
+
264
+ def clip(self, polygon, closed=True, verbose=False):
265
+ """Clip geospatial data by a polygon
266
+
267
+ Input
268
+ polygon - Either a list of points, an Nx2 array or
269
+ a Geospatial data object.
270
+ closed - (optional) determine whether points on boundary should be
271
+ regarded as belonging to the polygon (closed = True)
272
+ or not (closed = False). Default is True.
273
+
274
+ Output
275
+ New geospatial data object representing points inside
276
+ specified polygon.
277
+
278
+
279
+ Note - this method is non-destructive and leaves the data in 'self'
280
+ unchanged
281
+ """
282
+
283
+ from anuga.geometry.polygon import inside_polygon
284
+
285
+ if isinstance(polygon, Geospatial_data):
286
+ # Polygon is an object - extract points
287
+ polygon = polygon.get_data_points()
288
+
289
+ points = self.get_data_points()
290
+ inside_indices = inside_polygon(points, polygon, closed, verbose)
291
+
292
+ clipped_G = self.get_sample(inside_indices)
293
+
294
+ return clipped_G
295
+
296
+ def clip_outside(self, polygon, closed=True, verbose=False):
297
+ """Clip geospatial date by a polygon, keeping data OUTSIDE of polygon
298
+
299
+ Input
300
+ polygon - Either a list of points, an Nx2 array or
301
+ a Geospatial data object.
302
+ closed - (optional) determine whether points on boundary should be
303
+ regarded as belonging to the polygon (closed = True)
304
+ or not (closed = False). Default is True.
305
+
306
+ Output
307
+ Geospatial data object representing point OUTSIDE specified polygon
308
+ """
309
+
310
+ from anuga.geometry.polygon import outside_polygon
311
+
312
+ if isinstance(polygon, Geospatial_data):
313
+ # Polygon is an object - extract points
314
+ polygon = polygon.get_data_points()
315
+
316
+ points = self.get_data_points()
317
+ outside_indices = outside_polygon(points, polygon, closed,verbose)
318
+
319
+ clipped_G = self.get_sample(outside_indices)
320
+
321
+ return clipped_G
322
+
323
+ def get_geo_reference(self):
324
+ return self.geo_reference
325
+
326
+ def get_data_points(self,
327
+ absolute=True,
328
+ geo_reference=None,
329
+ as_lat_long=False,
330
+ isSouthHemisphere=True):
331
+ """Get coordinates for all data points as an Nx2 array
332
+
333
+ If absolute is False returned coordinates are relative to the
334
+ internal georeference's xll and yll corners, otherwise
335
+ absolute UTM coordinates are returned.
336
+
337
+ If a geo_reference is passed the points are returned relative
338
+ to that geo_reference.
339
+
340
+ isSH (isSouthHemisphere) is only used when getting data
341
+ points "as_lat_long" is True and if FALSE will return lats and
342
+ longs valid for the Northern Hemisphere.
343
+
344
+ Default: absolute is True.
345
+ """
346
+
347
+ if as_lat_long is True:
348
+ msg = "Points need a zone to be converted into lats and longs"
349
+ assert self.geo_reference is not None, msg
350
+ zone = self.geo_reference.get_zone()
351
+ assert self.geo_reference.get_zone() is not DEFAULT_ZONE, msg
352
+ lats_longs = []
353
+ for point in self.get_data_points(True):
354
+ # UTMtoLL(northing, easting, zone,
355
+ lat_calced, long_calced = UTMtoLL(point[1], point[0],
356
+ zone, isSouthHemisphere)
357
+ lats_longs.append((lat_calced, long_calced)) # to hash
358
+ return lats_longs
359
+
360
+ if absolute is True and geo_reference is None:
361
+ return self.geo_reference.get_absolute(self.data_points)
362
+ elif geo_reference is not None:
363
+ return geo_reference.change_points_geo_ref(self.data_points,
364
+ self.geo_reference)
365
+ else:
366
+ # If absolute is False
367
+ return self.data_points
368
+
369
+ def get_attributes(self, attribute_name=None):
370
+ """Return values for one named attribute.
371
+
372
+ If attribute_name is None, default_attribute_name is used
373
+ """
374
+
375
+ if attribute_name is None:
376
+ if self.default_attribute_name is not None:
377
+ attribute_name = self.default_attribute_name
378
+ else:
379
+ attribute_name = self.attributes.keys()[0]
380
+ # above line takes the first one from keys
381
+
382
+ if self.verbose is True:
383
+ log.critical('Geospatial_data: Using attribute %s' % attribute_name)
384
+ log.critical('Geospatial_data: Available attributes: %s' % (self.attributes.keys()))
385
+
386
+ msg = 'Attribute name %s does not exist in data set' % attribute_name
387
+ assert self.attributes.has_key(attribute_name), msg
388
+
389
+ return self.attributes[attribute_name]
390
+
391
+ def get_all_attributes(self):
392
+ """Return values for all attributes.
393
+ The return value is either None or a dictionary (possibly empty).
394
+ """
395
+
396
+ return self.attributes
397
+
398
+ def __add__(self, other):
399
+ """Returns the addition of 2 geospatial objects,
400
+ objects are concatencated to the end of each other
401
+
402
+ NOTE: doesn't add if objects contain different
403
+ attributes
404
+
405
+ Always return absolute points!
406
+ This also means, that if you add None to the object,
407
+ it will be turned into absolute coordinates
408
+
409
+ other can be None in which case nothing is added to self.
410
+ """
411
+
412
+ # find objects zone and checks if the same
413
+ geo_ref1 = self.get_geo_reference()
414
+ zone1 = geo_ref1.get_zone()
415
+
416
+ if other is not None:
417
+ geo_ref2 = other.get_geo_reference()
418
+ zone2 = geo_ref2.get_zone()
419
+ geo_ref1.reconcile_zones(geo_ref2)
420
+ new_points = num.concatenate((self.get_data_points(absolute=True),
421
+ other.get_data_points(absolute=True)),
422
+ axis = 0)
423
+
424
+ # Concatenate attributes if any
425
+ if self.attributes is None:
426
+ if other.attributes is not None:
427
+ msg = ('Geospatial data must have the same '
428
+ 'attributes to allow addition.')
429
+ raise Exception(msg)
430
+
431
+ new_attributes = None
432
+ else:
433
+ new_attributes = {}
434
+ for x in self.attributes.keys():
435
+ if other.attributes.has_key(x):
436
+ attrib1 = self.attributes[x]
437
+ attrib2 = other.attributes[x]
438
+ new_attributes[x] = num.concatenate((attrib1, attrib2),
439
+ axis=0) #??default#
440
+ else:
441
+ msg = ('Geospatial data must have the same '
442
+ 'attributes to allow addition.')
443
+ raise Exception(msg)
444
+ else:
445
+ # other is None:
446
+ new_points = self.get_data_points(absolute=True)
447
+ new_attributes = self.attributes
448
+
449
+ # Instantiate new data object and return absolute coordinates
450
+ new_geo_ref = Geo_reference(geo_ref1.get_zone(), 0.0, 0.0)
451
+ return Geospatial_data(new_points, new_attributes, new_geo_ref)
452
+
453
+ def __radd__(self, other):
454
+ """Handle cases like None + Geospatial_data(...)"""
455
+
456
+ return self + other
457
+
458
+ ################################################################################
459
+ # IMPORT/EXPORT POINTS FILES
460
+ ################################################################################
461
+
462
+ def import_points_file(self, file_name, delimiter=None, verbose=False):
463
+ """ load an .txt, .csv or .pts file
464
+
465
+ Note: will throw an IOError/SyntaxError if it can't load the file.
466
+ Catch these!
467
+
468
+ Post condition: self.attributes dictionary has been set
469
+ """
470
+
471
+ if access(file_name, F_OK) == 0 :
472
+ msg = 'File %s does not exist or is not accessible' % file_name
473
+ raise IOError(msg)
474
+
475
+ attributes = {}
476
+ if file_name[-4:] == ".pts":
477
+ try:
478
+ data_points, attributes, geo_reference = \
479
+ _read_pts_file(file_name, verbose)
480
+ except IOError, e:
481
+ msg = 'Could not open file %s ' % file_name
482
+ raise IOError(msg)
483
+ elif file_name[-4:] == ".txt" or file_name[-4:]== ".csv":
484
+ try:
485
+ data_points, attributes, geo_reference = \
486
+ _read_csv_file(file_name, verbose)
487
+ except IOError, e:
488
+ # This should only be if a file is not found
489
+ msg = ('Could not open file %s. Check the file location.'
490
+ % file_name)
491
+ raise IOError(msg)
492
+ except SyntaxError, e:
493
+ # This should only be if there is a format error
494
+ msg = ('Problem with format of file %s.\n%s'
495
+ % (file_name, Error_message['IOError']))
496
+ raise SyntaxError(msg)
497
+ else:
498
+ msg = 'Extension %s is unknown' % file_name[-4:]
499
+ raise IOError(msg)
500
+
501
+ self.data_points = data_points
502
+ self.attributes = attributes
503
+ self.geo_reference = geo_reference
504
+
505
+ def export_points_file(self, file_name, absolute=True,
506
+ as_lat_long=False, isSouthHemisphere=True):
507
+ """write a points file as a text (.csv) or binary (.pts) file
508
+
509
+ file_name is the file name, including the extension
510
+ The point_dict is defined at the top of this file.
511
+
512
+ If absolute is True data the xll and yll are added to the points value
513
+ and the xll and yll of the geo_reference are set to 0.
514
+
515
+ If absolute is False data points at returned as relative to the xll
516
+ and yll and geo_reference remains uneffected
517
+
518
+ isSouthHemisphere: is only used when getting data
519
+ points "as_lat_long" is True and if FALSE will return lats and
520
+ longs valid for the Northern Hemisphere.
521
+ """
522
+
523
+ if (file_name[-4:] == ".pts"):
524
+ if absolute is True:
525
+ geo_ref = deepcopy(self.geo_reference)
526
+ geo_ref.xllcorner = 0
527
+ geo_ref.yllcorner = 0
528
+ _write_pts_file(file_name,
529
+ self.get_data_points(absolute),
530
+ self.get_all_attributes(),
531
+ geo_ref)
532
+ else:
533
+ _write_pts_file(file_name,
534
+ self.get_data_points(absolute),
535
+ self.get_all_attributes(),
536
+ self.get_geo_reference())
537
+ elif file_name[-4:] == ".txt" or file_name[-4:] == ".csv":
538
+ msg = "ERROR: trying to write a .txt file with relative data."
539
+ assert absolute, msg
540
+ _write_csv_file(file_name,
541
+ self.get_data_points(absolute=True,
542
+ as_lat_long=as_lat_long,
543
+ isSouthHemisphere=isSouthHemisphere),
544
+ self.get_all_attributes(),
545
+ as_lat_long=as_lat_long)
546
+ elif file_name[-4:] == ".urs" :
547
+ msg = "ERROR: Can not write a .urs file as a relative file."
548
+ assert absolute, msg
549
+ _write_urs_file(file_name,
550
+ self.get_data_points(as_lat_long=True,
551
+ isSouthHemisphere=isSouthHemisphere))
552
+ else:
553
+ msg = 'Unknown file type %s ' %file_name
554
+ raise IOError(msg)
555
+
556
+ def get_sample(self, indices):
557
+ """ Returns a object which is a subset of the original
558
+ and the data points and attributes in this new object refer to
559
+ the indices provided
560
+
561
+ Input
562
+ indices- a list of integers that represent the new object
563
+ Output
564
+ New geospatial data object representing points specified by
565
+ the indices
566
+ """
567
+
568
+ # FIXME: add the geo_reference to this
569
+ points = self.get_data_points()
570
+ sampled_points = num.take(points, indices, axis=0)
571
+
572
+ attributes = self.get_all_attributes()
573
+
574
+ sampled_attributes = {}
575
+ if attributes is not None:
576
+ for key, att in attributes.items():
577
+ sampled_attributes[key] = num.take(att, indices, axis=0)
578
+
579
+ return Geospatial_data(sampled_points, sampled_attributes)
580
+
581
+ def split(self, factor=0.5, seed_num=None, verbose=False):
582
+ """Returns two geospatial_data object, first is the size of the 'factor'
583
+ smaller the original and the second is the remainder. The two
584
+ new objects are disjoint sets of each other.
585
+
586
+ Points of the two new object have selected RANDOMLY.
587
+
588
+ This method create two lists of indices which are passed into
589
+ get_sample. The lists are created using random numbers, and
590
+ they are unique sets eg. total_list(1,2,3,4,5,6,7,8,9)
591
+ random_list(1,3,6,7,9) and remainder_list(0,2,4,5,8)
592
+
593
+ Input - the factor which to split the object, if 0.1 then 10% of the
594
+ together object will be returned
595
+
596
+ Output - two geospatial_data objects that are disjoint sets of the
597
+ original
598
+ """
599
+
600
+ i = 0
601
+ self_size = len(self)
602
+ random_list = []
603
+ remainder_list = []
604
+ new_size = round(factor * self_size)
605
+
606
+ # Find unique random numbers
607
+ if verbose: log.critical("make unique random number list "
608
+ "and get indices")
609
+
610
+ total = num.array(range(self_size), num.int) #array default#
611
+ total_list = total.tolist()
612
+
613
+ if verbose: log.critical("total list len=%d" % len(total_list))
614
+
615
+ # There will be repeated random numbers however will not be a
616
+ # problem as they are being 'pop'ed out of array so if there
617
+ # are two numbers the same they will pop different indicies,
618
+ # still basically random
619
+ ## create list of non-unquie random numbers
620
+ if verbose: log.critical("create random numbers list %s long"
621
+ % str(new_size))
622
+
623
+ # Set seed if provided, mainly important for unit test!
624
+ # plus recalcule seed when no seed provided.
625
+ if seed_num is not None:
626
+ seed(seed_num)
627
+ else:
628
+ seed()
629
+
630
+ random_num = randint(0, self_size-1, (int(new_size),))
631
+ random_num = random_num.tolist()
632
+
633
+ # need to sort and reverse so the pop() works correctly
634
+ random_num.sort()
635
+ random_num.reverse()
636
+
637
+ if verbose: log.critical("make random number list and get indices")
638
+
639
+ j = 0
640
+ k = 1
641
+ remainder_list = total_list[:]
642
+
643
+ # pops array index (random_num) from remainder_list
644
+ # (which starts as the total_list and appends to random_list)
645
+ random_num_len = len(random_num)
646
+ for i in random_num:
647
+ random_list.append(remainder_list.pop(i))
648
+ j += 1
649
+ # prints progress
650
+ if verbose and round(random_num_len/10*k) == j:
651
+ log.critical('(%s/%s)' % (j, random_num_len))
652
+ k += 1
653
+
654
+ # FIXME: move to tests, it might take a long time
655
+ # then create an array of random length between 500 and 1000,
656
+ # and use a random factor between 0 and 1
657
+ # setup for assertion
658
+ test_total = random_list[:]
659
+ test_total.extend(remainder_list)
660
+ test_total.sort()
661
+ msg = ('The two random lists made from the original list when added '
662
+ 'together DO NOT equal the original list')
663
+ assert total_list == test_total, msg
664
+
665
+ # Get new samples
666
+ if verbose: log.critical("get values of indices for random list")
667
+ G1 = self.get_sample(random_list)
668
+ if verbose: log.critical("get values of indices for "
669
+ "opposite of random list")
670
+ G2 = self.get_sample(remainder_list)
671
+
672
+ return G1, G2
673
+
674
+ def __iter__(self):
675
+ """Read in the header, number_of_points and save the
676
+ file pointer position
677
+ """
678
+
679
+ # FIXME - what to do if the file isn't there
680
+
681
+ # FIXME (Ole): Shouldn't this go into the constructor?
682
+ # This method acts like the constructor when blocking.
683
+ # ... and shouldn't it be called block_size?
684
+ #
685
+ if self.max_read_lines is None:
686
+ self.max_read_lines = MAX_READ_LINES
687
+
688
+ if self.file_name[-4:] == ".pts":
689
+ # See if the file is there. Throw a QUIET IO error if it isn't
690
+ fd = open(self.file_name,'r')
691
+ fd.close()
692
+
693
+ # Throws prints to screen if file not present
694
+ self.fid = NetCDFFile(self.file_name, netcdf_mode_r)
695
+
696
+ (self.blocking_georef,
697
+ self.blocking_keys,
698
+ self.number_of_points) = _read_pts_file_header(self.fid,
699
+ self.verbose)
700
+ self.start_row = 0
701
+ self.last_row = self.number_of_points
702
+ self.show_verbose = 0
703
+ self.verbose_block_size = (self.last_row + 10)/10
704
+ self.block_number = 0
705
+ self.number_of_blocks = int(self.number_of_points/self.max_read_lines)
706
+ # This computes the number of full blocks. The last block may be
707
+ # smaller and won't be included in this estimate.
708
+
709
+ if self.verbose is True:
710
+ log.critical('Geospatial_data: Reading %d points (in %d block(s)) from file %s. '
711
+ % (self.number_of_points, self.number_of_blocks+1,
712
+ self.file_name))
713
+ log.critical('Geospatial_data: Each block consists of %d data points'
714
+ % self.max_read_lines)
715
+ else:
716
+ # Assume the file is a csv file
717
+ file_pointer = open(self.file_name)
718
+ self.header, self.file_pointer = _read_csv_file_header(file_pointer)
719
+ self.blocking_georef = None # Used for reconciling zones
720
+
721
+ return self
722
+
723
+ def next(self):
724
+ """read a block, instanciate a new geospatial and return it"""
725
+
726
+ if self.file_name[-4:] == ".pts":
727
+ if self.start_row == self.last_row:
728
+ # Read the end of the file last iteration
729
+ # Remove blocking attributes
730
+ self.fid.close()
731
+ del self.max_read_lines
732
+ del self.blocking_georef
733
+ del self.last_row
734
+ del self.start_row
735
+ del self.blocking_keys
736
+ del self.fid
737
+ raise StopIteration
738
+ fin_row = self.start_row + self.max_read_lines
739
+ if fin_row > self.last_row:
740
+ fin_row = self.last_row
741
+
742
+ if self.verbose is True:
743
+ if (self.show_verbose >= self.start_row
744
+ and self.show_verbose < fin_row):
745
+
746
+ log.critical('\nGeospatial_data: Reading block %d (points %d to %d) out of %d'
747
+ % (self.block_number, self.start_row,
748
+ fin_row, self.number_of_blocks))
749
+
750
+ self.show_verbose += max(self.max_read_lines,
751
+ self.verbose_block_size)
752
+
753
+ # Read next block
754
+ pointlist, att_dict, = _read_pts_file_blocking(self.fid,
755
+ self.start_row,
756
+ fin_row,
757
+ self.blocking_keys)
758
+
759
+ geo = Geospatial_data(pointlist, att_dict, self.blocking_georef)
760
+ self.start_row = fin_row
761
+
762
+ self.block_number += 1
763
+ else:
764
+ # Assume the file is a csv file
765
+ try:
766
+ (pointlist,
767
+ att_dict,
768
+ geo_ref,
769
+ self.file_pointer) = _read_csv_file_blocking(self.file_pointer,
770
+ self.header[:],
771
+ max_read_lines=
772
+ self.max_read_lines,
773
+ verbose=
774
+ self.verbose)
775
+
776
+ # Check that the zones haven't changed.
777
+ if geo_ref is not None:
778
+ geo_ref.reconcile_zones(self.blocking_georef)
779
+ self.blocking_georef = geo_ref
780
+ elif self.blocking_georef is not None:
781
+ msg = ('Geo reference given, then not given.'
782
+ ' This should not happen.')
783
+ raise ValueError(msg)
784
+ geo = Geospatial_data(pointlist, att_dict, geo_ref)
785
+ except StopIteration:
786
+ self.file_pointer.close()
787
+ del self.header
788
+ del self.file_pointer
789
+ raise StopIteration
790
+ except ANUGAError:
791
+ self.file_pointer.close()
792
+ del self.header
793
+ del self.file_pointer
794
+ raise
795
+ except SyntaxError:
796
+ self.file_pointer.close()
797
+ del self.header
798
+ del self.file_pointer
799
+ # This should only be if there is a format error
800
+ msg = ('Could not open file %s.\n%s'
801
+ % (self.file_name, Error_message['IOError']))
802
+ raise SyntaxError(msg)
803
+ return geo
804
+
805
+ ##################### Error messages ###########
806
+ Error_message = {}
807
+ Em = Error_message
808
+ Em['IOError'] = ('NOTE: The format for a comma separated .txt/.csv file is:\n'
809
+ ' 1st line: [column names]\n'
810
+ ' other lines: [x value], [y value], [attributes]\n'
811
+ '\n'
812
+ ' for example:\n'
813
+ ' x, y, elevation, friction\n'
814
+ ' 0.6, 0.7, 4.9, 0.3\n'
815
+ ' 1.9, 2.8, 5, 0.3\n'
816
+ ' 2.7, 2.4, 5.2, 0.3\n'
817
+ '\n'
818
+ 'The first two columns are assumed to be x, y coordinates.\n'
819
+ 'The attribute values must be numeric.\n')
820
+
821
+ def _set_using_lat_long(latitudes,
822
+ longitudes,
823
+ geo_reference,
824
+ data_points,
825
+ points_are_lats_longs):
826
+ """If the points has lat long info, assume it is in (lat, long) order."""
827
+
828
+ if geo_reference is not None:
829
+ msg = ('A georeference is specified yet latitude and longitude '
830
+ 'are also specified!')
831
+ raise ValueError(msg)
832
+
833
+ if data_points is not None and not points_are_lats_longs:
834
+ msg = ('Data points are specified yet latitude and longitude are '
835
+ 'also specified.')
836
+ raise ValueError(msg)
837
+
838
+ if points_are_lats_longs:
839
+ if data_points is None:
840
+ msg = "Data points are not specified."
841
+ raise ValueError(msg)
842
+ lats_longs = ensure_numeric(data_points)
843
+ latitudes = num.ravel(lats_longs[:,0:1])
844
+ longitudes = num.ravel(lats_longs[:,1:])
845
+
846
+ if latitudes is None and longitudes is None:
847
+ msg = "Latitudes and Longitudes are not specified."
848
+ raise ValueError(msg)
849
+
850
+ if latitudes is None:
851
+ msg = "Longitudes are specified yet latitudes aren't."
852
+ raise ValueError(msg)
853
+
854
+ if longitudes is None:
855
+ msg = "Latitudes are specified yet longitudes aren't."
856
+ raise ValueError(msg)
857
+
858
+ data_points, zone = convert_from_latlon_to_utm(latitudes=latitudes,
859
+ longitudes=longitudes)
860
+ return data_points, Geo_reference(zone=zone)
861
+
862
+
863
+ def _read_pts_file(file_name, verbose=False):
864
+ """Read .pts NetCDF file
865
+
866
+ Return a (dict_points, dict_attribute, geo_ref)
867
+ eg
868
+ dict['points'] = [[1.0,2.0],[3.0,5.0]]
869
+ dict['attributelist']['elevation'] = [[7.0,5.0]]
870
+ """
871
+
872
+ if verbose: log.critical('Geospatial_data: Reading %s' % file_name)
873
+
874
+ # See if the file is there. Throw a QUIET IO error if it isn't
875
+ fd = open(file_name,'r')
876
+ fd.close()
877
+
878
+ # Throws prints to screen if file not present
879
+ fid = NetCDFFile(file_name, netcdf_mode_r)
880
+
881
+ pointlist = fid.variables['points'][:]
882
+ keys = fid.variables.keys()
883
+
884
+ if verbose: log.critical('Geospatial_data: Got %d variables: %s' % (len(keys), keys))
885
+
886
+ try:
887
+ keys.remove('points')
888
+ except IOError, e:
889
+ fid.close()
890
+ msg = "Expected keyword 'points' but could not find it"
891
+ raise IOError(msg)
892
+
893
+ attributes = {}
894
+ for key in keys:
895
+ if verbose: log.critical("Geospatial_data: Reading attribute '%s'" % key)
896
+
897
+ if not (key == 'points'):
898
+ attributes[key] = fid.variables[key][:]
899
+
900
+ try:
901
+ geo_reference = Geo_reference(NetCDFObject=fid)
902
+ except AttributeError, e:
903
+ geo_reference = None
904
+
905
+ fid.close()
906
+
907
+ if verbose: log.critical("Geospatial_data: %g data points" % len(pointlist))
908
+
909
+ return pointlist, attributes, geo_reference
910
+
911
+
912
+ def _read_csv_file(file_name, verbose=False):
913
+ """Read .csv file
914
+
915
+ Return a dic of array of points, and dic of array of attribute
916
+ eg
917
+ dic['points'] = [[1.0,2.0],[3.0,5.0]]
918
+ dic['attributelist']['elevation'] = [[7.0,5.0]]
919
+ """
920
+
921
+ file_pointer = open(file_name)
922
+ header, file_pointer = _read_csv_file_header(file_pointer)
923
+ try:
924
+ (pointlist,
925
+ att_dict,
926
+ geo_ref,
927
+ file_pointer) = _read_csv_file_blocking(file_pointer,
928
+ header,
929
+ max_read_lines=1e30)
930
+ # If the file is bigger that this, block..
931
+ # FIXME (Ole) What's up here?
932
+ except ANUGAError:
933
+ file_pointer.close()
934
+ raise
935
+
936
+ file_pointer.close()
937
+
938
+ return pointlist, att_dict, geo_ref
939
+
940
+
941
+ CSV_DELIMITER = ','
942
+
943
+ def _read_csv_file_header(file_pointer,
944
+ delimiter=CSV_DELIMITER,
945
+ verbose=False):
946
+ """Read the header of a .csv file
947
+ Return a list of the header names
948
+ """
949
+
950
+ line = file_pointer.readline()
951
+ header = clean_line(line, delimiter)
952
+
953
+ return header, file_pointer
954
+
955
+ def _read_csv_file_blocking(file_pointer,
956
+ header,
957
+ delimiter=CSV_DELIMITER,
958
+ max_read_lines=MAX_READ_LINES,
959
+ verbose=False):
960
+ """Read the body of a .csv file.
961
+ header: The list header of the csv file, with the x and y labels.
962
+ """
963
+
964
+ points = []
965
+ pointattributes = []
966
+ att_dict = {}
967
+
968
+ # This is to remove the x and y headers.
969
+ header = header[:]
970
+ try:
971
+ x_header = header.pop(0)
972
+ y_header = header.pop(0)
973
+ except IndexError:
974
+ # if there are not two columns this will occur.
975
+ # eg if it is a space seperated file
976
+ raise SyntaxError
977
+
978
+ read_lines = 0
979
+ while read_lines < max_read_lines:
980
+ line = file_pointer.readline()
981
+ numbers = clean_line(line, delimiter)
982
+ if len(numbers) <= 1:
983
+ break
984
+ if line[0] == '#':
985
+ continue
986
+
987
+ read_lines += 1
988
+
989
+ try:
990
+ x = float(numbers[0])
991
+ y = float(numbers[1])
992
+ points.append([x,y])
993
+ numbers.pop(0)
994
+ numbers.pop(0)
995
+ if len(header) != len(numbers):
996
+ file_pointer.close()
997
+ msg = ('File load error. '
998
+ 'There might be a problem with the file header.')
999
+ raise SyntaxError(msg)
1000
+ for i,n in enumerate(numbers):
1001
+ n.strip()
1002
+ if n != '\n' and n != '':
1003
+ att_dict.setdefault(header[i],[]).append(float(n))
1004
+ except ValueError:
1005
+ raise SyntaxError
1006
+
1007
+ if points == []:
1008
+ raise StopIteration
1009
+
1010
+ pointlist = num.array(points, num.float)
1011
+ for key in att_dict.keys():
1012
+ att_dict[key] = num.array(att_dict[key], num.float)
1013
+
1014
+ # Do stuff here so the info is in lat's and longs
1015
+ geo_ref = None
1016
+ x_header = lower(x_header[:3])
1017
+ y_header = lower(y_header[:3])
1018
+ if (x_header == 'lon' or x_header == 'lat') \
1019
+ and (y_header == 'lon' or y_header == 'lat'):
1020
+ if x_header == 'lon':
1021
+ longitudes = num.ravel(pointlist[:,0:1])
1022
+ latitudes = num.ravel(pointlist[:,1:])
1023
+ else:
1024
+ latitudes = num.ravel(pointlist[:,0:1])
1025
+ longitudes = num.ravel(pointlist[:,1:])
1026
+
1027
+ pointlist, geo_ref = _set_using_lat_long(latitudes,
1028
+ longitudes,
1029
+ geo_reference=None,
1030
+ data_points=None,
1031
+ points_are_lats_longs=False)
1032
+
1033
+ return pointlist, att_dict, geo_ref, file_pointer
1034
+
1035
+
1036
+ def _read_pts_file_header(fid, verbose=False):
1037
+ '''Read the geo_reference and number_of_points from a .pts file'''
1038
+
1039
+ keys = fid.variables.keys()
1040
+ try:
1041
+ keys.remove('points')
1042
+ except IOError, e:
1043
+ fid.close()
1044
+ msg = "Expected keyword 'points' but could not find it."
1045
+ raise IOError(msg)
1046
+
1047
+ if verbose: log.critical('Got %d variables: %s' % (len(keys), keys))
1048
+
1049
+ try:
1050
+ geo_reference = Geo_reference(NetCDFObject=fid)
1051
+ except AttributeError, e:
1052
+ geo_reference = None
1053
+
1054
+ try: # netcdf4
1055
+ number_of_points = len(fid.dimensions['number_of_points'])
1056
+ except: #scientific python
1057
+ number_of_points = fid.dimensions['number_of_points']
1058
+
1059
+ return geo_reference, keys, number_of_points
1060
+
1061
+
1062
+ def _read_pts_file_blocking(fid, start_row, fin_row, keys):
1063
+ '''Read the body of a .pts file.'''
1064
+
1065
+ pointlist = num.array(fid.variables['points'][start_row:fin_row])
1066
+
1067
+ attributes = {}
1068
+ for key in keys:
1069
+ attributes[key] = num.array(fid.variables[key][start_row:fin_row])
1070
+
1071
+ return pointlist, attributes
1072
+
1073
+
1074
+ def _write_pts_file(file_name,
1075
+ write_data_points,
1076
+ write_attributes=None,
1077
+ write_geo_reference=None):
1078
+ """Write .pts NetCDF file
1079
+
1080
+ NOTE: Below might not be valid ask Duncan : NB 5/2006
1081
+
1082
+ WARNING: This function mangles the point_atts data structure
1083
+ # F??ME: (DSG)This format has issues.
1084
+ # There can't be an attribute called points
1085
+ # consider format change
1086
+ # method changed by NB not sure if above statement is correct
1087
+
1088
+ should create new test for this
1089
+ legal_keys = ['pointlist', 'attributelist', 'geo_reference']
1090
+ for key in point_atts.keys():
1091
+ msg = 'Key %s is illegal. Valid keys are %s' %(key, legal_keys)
1092
+ assert key in legal_keys, msg
1093
+ """
1094
+
1095
+ # NetCDF file definition
1096
+ outfile = NetCDFFile(file_name, netcdf_mode_w)
1097
+
1098
+ # Create new file
1099
+ outfile.institution = 'Geoscience Australia'
1100
+ outfile.description = ('NetCDF format for compact and portable storage '
1101
+ 'of spatial point data')
1102
+
1103
+ # Dimension definitions
1104
+ shape = write_data_points.shape[0]
1105
+ outfile.createDimension('number_of_points', shape)
1106
+ outfile.createDimension('number_of_dimensions', 2) # This is 2d data
1107
+
1108
+ # Variable definition
1109
+ outfile.createVariable('points', netcdf_float,
1110
+ ('number_of_points', 'number_of_dimensions'))
1111
+
1112
+ # create variables
1113
+ outfile.variables['points'][:] = write_data_points
1114
+
1115
+ if write_attributes is not None:
1116
+ for key in write_attributes.keys():
1117
+ outfile.createVariable(key, netcdf_float, ('number_of_points',))
1118
+ outfile.variables[key][:] = write_attributes[key]
1119
+
1120
+ if write_geo_reference is not None:
1121
+ write_NetCDF_georeference(write_geo_reference, outfile)
1122
+
1123
+ outfile.close()
1124
+
1125
+
1126
+ def _write_csv_file(file_name,
1127
+ write_data_points,
1128
+ write_attributes=None,
1129
+ as_lat_long=False,
1130
+ delimiter=','):
1131
+ """Write a .csv file."""
1132
+
1133
+ points = write_data_points
1134
+ pointattributes = write_attributes
1135
+
1136
+ fd = open(file_name, 'w')
1137
+
1138
+ if as_lat_long:
1139
+ titlelist = "latitude" + delimiter + "longitude" + delimiter
1140
+ else:
1141
+ titlelist = "x" + delimiter + "y" + delimiter
1142
+
1143
+ if pointattributes is not None:
1144
+ for title in pointattributes.keys():
1145
+ titlelist = titlelist + title + delimiter
1146
+ titlelist = titlelist[0:-len(delimiter)] # remove the last delimiter
1147
+
1148
+ fd.write(titlelist + "\n")
1149
+
1150
+ # <x/lat> <y/long> [attributes]
1151
+ for i, vert in enumerate( points):
1152
+ if pointattributes is not None:
1153
+ attlist = ","
1154
+ for att in pointattributes.keys():
1155
+ attlist = attlist + str(pointattributes[att][i]) + delimiter
1156
+ attlist = attlist[0:-len(delimiter)] # remove the last delimiter
1157
+ attlist.strip()
1158
+ else:
1159
+ attlist = ''
1160
+
1161
+ fd.write(str(vert[0]) + delimiter + str(vert[1]) + attlist + "\n")
1162
+
1163
+ fd.close()
1164
+
1165
+
1166
+ def _write_urs_file(file_name, points, delimiter=' '):
1167
+ """Write a URS format file.
1168
+ export a file, file_name, with the urs format
1169
+ the data points are in lats and longs
1170
+ """
1171
+
1172
+ fd = open(file_name, 'w')
1173
+
1174
+ # first line is # points
1175
+ fd.write(str(len(points)) + "\n")
1176
+
1177
+ # <lat> <long> <id#>
1178
+ for i, vert in enumerate( points):
1179
+ fd.write(str(round(vert[0],7)) + delimiter +
1180
+ str(round(vert[1],7)) + delimiter + str(i) + "\n")
1181
+
1182
+ fd.close()
1183
+
1184
+
1185
+ def _point_atts2array(point_atts):
1186
+ point_atts['pointlist'] = num.array(point_atts['pointlist'], num.float)
1187
+
1188
+ for key in point_atts['attributelist'].keys():
1189
+ point_atts['attributelist'][key] = \
1190
+ num.array(point_atts['attributelist'][key], num.float)
1191
+
1192
+ return point_atts
1193
+
1194
+
1195
+ def geospatial_data2points_dictionary(geospatial_data):
1196
+ """Convert geospatial data to points_dictionary"""
1197
+
1198
+ points_dictionary = {}
1199
+ points_dictionary['pointlist'] = geospatial_data.data_points
1200
+
1201
+ points_dictionary['attributelist'] = {}
1202
+
1203
+ for attribute_name in geospatial_data.attributes.keys():
1204
+ val = geospatial_data.attributes[attribute_name]
1205
+ points_dictionary['attributelist'][attribute_name] = val
1206
+
1207
+ points_dictionary['geo_reference'] = geospatial_data.geo_reference
1208
+
1209
+ return points_dictionary
1210
+
1211
+
1212
+ def points_dictionary2geospatial_data(points_dictionary):
1213
+ """Convert points_dictionary to geospatial data object"""
1214
+
1215
+ msg = "Points dictionary must have key 'pointlist'"
1216
+ assert points_dictionary.has_key('pointlist'), msg
1217
+
1218
+ msg = "Points dictionary must have key 'attributelist'"
1219
+ assert points_dictionary.has_key('attributelist'), msg
1220
+
1221
+ if points_dictionary.has_key('geo_reference'):
1222
+ geo = points_dictionary['geo_reference']
1223
+ else:
1224
+ geo = None
1225
+
1226
+ return Geospatial_data(points_dictionary['pointlist'],
1227
+ points_dictionary['attributelist'],
1228
+ geo_reference=geo)
1229
+
1230
+
1231
+ def ensure_absolute(points, geo_reference=None):
1232
+ """Ensure that points are in absolute coordinates.
1233
+
1234
+ This function inputs several formats and
1235
+ outputs one format. - a numeric array of absolute points.
1236
+
1237
+ Input formats are;
1238
+ points: List or numeric array of coordinate pairs [xi, eta] of
1239
+ points or geospatial object or points file name
1240
+
1241
+ mesh_origin: A geo_reference object or 3-tuples consisting of
1242
+ UTM zone, easting and northing.
1243
+ If specified vertex coordinates are assumed to be
1244
+ relative to their respective origins.
1245
+ """
1246
+
1247
+ # Input check
1248
+ if isinstance(points, basestring):
1249
+ # It's a string - assume it is a point file
1250
+ points = Geospatial_data(file_name=points)
1251
+
1252
+ if isinstance(points, Geospatial_data):
1253
+ points = points.get_data_points(absolute=True)
1254
+ msg = 'Use a Geospatial_data object or a mesh origin, not both.'
1255
+ assert geo_reference == None, msg
1256
+ else:
1257
+ points = ensure_numeric(copy.copy(points), num.float)
1258
+
1259
+ # Sort of geo_reference and convert points
1260
+ if geo_reference is None:
1261
+ geo = None # Geo_reference()
1262
+ else:
1263
+ if isinstance(geo_reference, Geo_reference):
1264
+ geo = geo_reference
1265
+ else:
1266
+ geo = Geo_reference(geo_reference[0],
1267
+ geo_reference[1],
1268
+ geo_reference[2])
1269
+ points = geo.get_absolute(points)
1270
+
1271
+ return points
1272
+
1273
+
1274
+ def ensure_geospatial(points, geo_reference=None):
1275
+ """Convert various data formats to a geospatial_data instance.
1276
+
1277
+ Inputed formats are;
1278
+ points: List or numeric array of coordinate pairs [xi, eta] of
1279
+ points or geospatial object
1280
+
1281
+ mesh_origin: A geo_reference object or 3-tuples consisting of
1282
+ UTM zone, easting and northing.
1283
+ If specified vertex coordinates are assumed to be
1284
+ relative to their respective origins.
1285
+ """
1286
+
1287
+ # Input check
1288
+ if isinstance(points, Geospatial_data):
1289
+ msg = "Use a Geospatial_data object or a mesh origin, not both."
1290
+ assert geo_reference is None, msg
1291
+ return points
1292
+ else:
1293
+ # List or numeric array of absolute points
1294
+ points = ensure_numeric(points, num.float)
1295
+
1296
+ # Sort out geo reference
1297
+ if geo_reference is None:
1298
+ geo = None
1299
+ else:
1300
+ if isinstance(geo_reference, Geo_reference):
1301
+ geo = geo_reference
1302
+ else:
1303
+ geo = Geo_reference(geo_reference[0],
1304
+ geo_reference[1],
1305
+ geo_reference[2])
1306
+
1307
+ # Create Geospatial_data object with appropriate geo reference and return
1308
+ points = Geospatial_data(data_points=points, geo_reference=geo)
1309
+
1310
+ return points
1311
+
1312
+
1313
+ def find_optimal_smoothing_parameter(data_file,
1314
+ alpha_list=None,
1315
+ mesh_file=None,
1316
+ boundary_poly=None,
1317
+ mesh_resolution=100000,
1318
+ north_boundary=None,
1319
+ south_boundary=None,
1320
+ east_boundary=None,
1321
+ west_boundary=None,
1322
+ plot_name='all_alphas',
1323
+ split_factor=0.1,
1324
+ seed_num=None,
1325
+ cache=False,
1326
+ verbose=False):
1327
+ """Removes a small random sample of points from 'data_file'.
1328
+ Then creates models with different alpha values from 'alpha_list' and
1329
+ cross validates the predicted value to the previously removed point data.
1330
+ Returns the alpha value which has the smallest covariance.
1331
+
1332
+ data_file: must not contain points outside the boundaries defined
1333
+ and it must be either a pts, txt or csv file.
1334
+
1335
+ alpha_list: the alpha values to test in a single list
1336
+
1337
+ mesh_file: name of the created mesh file or if passed in will read it.
1338
+ NOTE, if there is a mesh file mesh_resolution,
1339
+ north_boundary, south... etc will be ignored.
1340
+
1341
+ mesh_resolution: the maximum area size for a triangle
1342
+
1343
+ north_boundary... west_boundary: the value of the boundary
1344
+
1345
+ plot_name: the name for the plot contain the results
1346
+
1347
+ seed_num: the seed to the random number generator
1348
+
1349
+ USAGE:
1350
+ value, alpha = find_optimal_smoothing_parameter(data_file=fileName,
1351
+ alpha_list=[0.0001, 0.01, 1],
1352
+ mesh_file=None,
1353
+ mesh_resolution=3,
1354
+ north_boundary=5,
1355
+ south_boundary=-5,
1356
+ east_boundary=5,
1357
+ west_boundary=-5,
1358
+ plot_name='all_alphas',
1359
+ seed_num=100000,
1360
+ verbose=False)
1361
+
1362
+ OUTPUT: returns the minumum normalised covalance calculate AND the
1363
+ alpha that created it. PLUS writes a plot of the results
1364
+
1365
+ NOTE: code will not work if the data_file extent is greater than the
1366
+ boundary_polygon or any of the boundaries, eg north_boundary...west_boundary
1367
+ """
1368
+
1369
+ from anuga.shallow_water.shallow_water_domain import Domain
1370
+ from anuga.geospatial_data.geospatial_data import Geospatial_data
1371
+ from anuga.pmesh.mesh_interface import create_mesh_from_regions
1372
+ from anuga.utilities.numerical_tools import cov
1373
+ from anuga.geometry.polygon import is_inside_polygon
1374
+ from anuga.fit_interpolate.benchmark_least_squares import mem_usage
1375
+
1376
+ attribute_smoothed = 'elevation'
1377
+
1378
+ if mesh_file is None:
1379
+ if verbose: log.critical("building mesh")
1380
+ mesh_file = 'temp.msh'
1381
+
1382
+ if (north_boundary is None or south_boundary is None
1383
+ or east_boundary is None or west_boundary is None):
1384
+ no_boundary = True
1385
+ else:
1386
+ no_boundary = False
1387
+
1388
+ if no_boundary is True:
1389
+ msg = 'All boundaries must be defined'
1390
+ raise Exception(msg)
1391
+
1392
+ poly_topo = [[east_boundary, south_boundary],
1393
+ [east_boundary, north_boundary],
1394
+ [west_boundary, north_boundary],
1395
+ [west_boundary, south_boundary]]
1396
+
1397
+ create_mesh_from_regions(poly_topo,
1398
+ boundary_tags={'back': [2],
1399
+ 'side': [1,3],
1400
+ 'ocean': [0]},
1401
+ maximum_triangle_area=mesh_resolution,
1402
+ filename=mesh_file,
1403
+ use_cache=cache,
1404
+ verbose=verbose)
1405
+
1406
+ else: # if mesh file provided
1407
+ # test mesh file exists?
1408
+ if verbose: "reading from file: %s" % mesh_file
1409
+ if access(mesh_file,F_OK) == 0:
1410
+ msg = "file %s doesn't exist!" % mesh_file
1411
+ raise IOError(msg)
1412
+
1413
+ # split topo data
1414
+ if verbose: log.critical('Reading elevation file: %s' % data_file)
1415
+ G = Geospatial_data(file_name = data_file)
1416
+ if verbose: log.critical('Start split')
1417
+ G_small, G_other = G.split(split_factor, seed_num, verbose=verbose)
1418
+ if verbose: log.critical('Finish split')
1419
+ points = G_small.get_data_points()
1420
+
1421
+ if verbose: log.critical("Number of points in sample to compare: %d"
1422
+ % len(points))
1423
+
1424
+ if alpha_list == None:
1425
+ alphas = [0.001,0.01,100]
1426
+ #alphas = [0.000001, 0.00001, 0.0001, 0.001, 0.01,
1427
+ # 0.1, 1.0, 10.0, 100.0,1000.0,10000.0]
1428
+ else:
1429
+ alphas = alpha_list
1430
+
1431
+ # creates array with columns 1 and 2 are x, y. column 3 is elevation
1432
+ # 4 onwards is the elevation_predicted using the alpha, which will
1433
+ # be compared later against the real removed data
1434
+ data = num.array([], dtype=num.float)
1435
+
1436
+ data = num.resize(data, (len(points), 3+len(alphas)))
1437
+
1438
+ # gets relative point from sample
1439
+ data[:,0] = points[:,0]
1440
+ data[:,1] = points[:,1]
1441
+ elevation_sample = G_small.get_attributes(attribute_name=attribute_smoothed)
1442
+ data[:,2] = elevation_sample
1443
+
1444
+ normal_cov = num.array(num.zeros([len(alphas), 2]), dtype=num.float)
1445
+
1446
+ if verbose: log.critical('Setup computational domains with '
1447
+ 'different alphas')
1448
+
1449
+ for i, alpha in enumerate(alphas):
1450
+ # add G_other data to domains with different alphas
1451
+ if verbose:
1452
+ log.critical('Calculating domain and mesh for Alpha=%s'
1453
+ % str(alpha))
1454
+ domain = Domain(mesh_file, use_cache=cache, verbose=verbose)
1455
+ if verbose: log.critical(domain.statistics())
1456
+ domain.set_quantity(attribute_smoothed,
1457
+ geospatial_data=G_other,
1458
+ use_cache=cache,
1459
+ verbose=verbose,
1460
+ alpha=alpha)
1461
+
1462
+ # Convert points to geospatial data for use with get_values below
1463
+ points_geo = Geospatial_data(points, domain.geo_reference)
1464
+
1465
+ # returns the predicted elevation of the points that were "split" out
1466
+ # of the original data set for one particular alpha
1467
+ if verbose: log.critical('Get predicted elevation for location '
1468
+ 'to be compared')
1469
+ elevation_predicted = \
1470
+ domain.quantities[attribute_smoothed].\
1471
+ get_values(interpolation_points=points_geo)
1472
+
1473
+ # add predicted elevation to array that starts with x, y, z...
1474
+ data[:,i+3] = elevation_predicted
1475
+
1476
+ sample_cov = cov(elevation_sample)
1477
+ ele_cov = cov(elevation_sample - elevation_predicted)
1478
+ normal_cov[i,:] = [alpha, ele_cov / sample_cov]
1479
+
1480
+ if verbose:
1481
+ log.critical('Covariance for alpha %s=%s'
1482
+ % (normal_cov[i][0], normal_cov[i][1]))
1483
+ log.critical('--------------------------------------------')
1484
+
1485
+ normal_cov0 = normal_cov[:,0]
1486
+ normal_cov_new = num.take(normal_cov, num.argsort(normal_cov0), axis=0)
1487
+
1488
+ if plot_name is not None:
1489
+ from pylab import savefig, semilogx, loglog
1490
+
1491
+ semilogx(normal_cov_new[:,0], normal_cov_new[:,1])
1492
+ loglog(normal_cov_new[:,0], normal_cov_new[:,1])
1493
+ savefig(plot_name, dpi=300)
1494
+
1495
+ if mesh_file == 'temp.msh':
1496
+ remove(mesh_file)
1497
+
1498
+ if verbose:
1499
+ log.critical('Final results:')
1500
+ for i, alpha in enumerate(alphas):
1501
+ log.critical('covariance for alpha %s = %s '
1502
+ % (normal_cov[i][0], normal_cov[i][1]))
1503
+ log.critical('Optimal alpha is: %s '
1504
+ % normal_cov_new[(num.argmin(normal_cov_new, axis=0))[1], 0])
1505
+
1506
+ # covariance and optimal alpha
1507
+ return (min(normal_cov_new[:,1]),
1508
+ normal_cov_new[(num.argmin(normal_cov_new,axis=0))[1],0])
1509
+
1510
+
1511
+ def old_find_optimal_smoothing_parameter(data_file,
1512
+ alpha_list=None,
1513
+ mesh_file=None,
1514
+ boundary_poly=None,
1515
+ mesh_resolution=100000,
1516
+ north_boundary=None,
1517
+ south_boundary=None,
1518
+ east_boundary=None,
1519
+ west_boundary=None,
1520
+ plot_name='all_alphas',
1521
+ split_factor=0.1,
1522
+ seed_num=None,
1523
+ cache=False,
1524
+ verbose=False):
1525
+ """
1526
+ data_file: must not contain points outside the boundaries defined
1527
+ and it either a pts, txt or csv file.
1528
+
1529
+ alpha_list: the alpha values to test in a single list
1530
+
1531
+ mesh_file: name of the created mesh file or if passed in will read it.
1532
+ NOTE, if there is a mesh file mesh_resolution,
1533
+ north_boundary, south... etc will be ignored.
1534
+
1535
+ mesh_resolution: the maximum area size for a triangle
1536
+
1537
+ north_boundary... west_boundary: the value of the boundary
1538
+
1539
+ plot_name: the name for the plot contain the results
1540
+
1541
+ seed_num: the seed to the random number generator
1542
+
1543
+ USAGE:
1544
+ value, alpha = find_optimal_smoothing_parameter(data_file=fileName,
1545
+ alpha_list=[0.0001, 0.01, 1],
1546
+ mesh_file=None,
1547
+ mesh_resolution=3,
1548
+ north_boundary=5,
1549
+ south_boundary=-5,
1550
+ east_boundary=5,
1551
+ west_boundary=-5,
1552
+ plot_name='all_alphas',
1553
+ seed_num=100000,
1554
+ verbose=False)
1555
+
1556
+ OUTPUT: returns the minumum normalised covalance calculate AND the
1557
+ alpha that created it. PLUS writes a plot of the results
1558
+
1559
+ NOTE: code will not work if the data_file extend is greater than the
1560
+ boundary_polygon or the north_boundary...west_boundary
1561
+ """
1562
+
1563
+ from anuga.shallow_water.shallow_water_domain import Domain
1564
+ from anuga.geospatial_data.geospatial_data import Geospatial_data
1565
+ from anuga.pmesh.mesh_interface import create_mesh_from_regions
1566
+ from anuga.utilities.numerical_tools import cov
1567
+ from anuga.geometry.polygon import is_inside_polygon
1568
+ from anuga.fit_interpolate.benchmark_least_squares import mem_usage
1569
+
1570
+ attribute_smoothed = 'elevation'
1571
+
1572
+ if mesh_file is None:
1573
+ mesh_file = 'temp.msh'
1574
+
1575
+ if (north_boundary is None or south_boundary is None
1576
+ or east_boundary is None or west_boundary is None):
1577
+ no_boundary = True
1578
+ else:
1579
+ no_boundary = False
1580
+
1581
+ if no_boundary is True:
1582
+ msg = 'All boundaries must be defined'
1583
+ raise Exception(msg)
1584
+
1585
+ poly_topo = [[east_boundary, south_boundary],
1586
+ [east_boundary, north_boundary],
1587
+ [west_boundary, north_boundary],
1588
+ [west_boundary, south_boundary]]
1589
+
1590
+ create_mesh_from_regions(poly_topo,
1591
+ boundary_tags={'back': [2],
1592
+ 'side': [1,3],
1593
+ 'ocean': [0]},
1594
+ maximum_triangle_area=mesh_resolution,
1595
+ filename=mesh_file,
1596
+ use_cache=cache,
1597
+ verbose=verbose)
1598
+
1599
+ else: # if mesh file provided
1600
+ # test mesh file exists?
1601
+ if access(mesh_file,F_OK) == 0:
1602
+ msg = "file %s doesn't exist!" % mesh_file
1603
+ raise IOError(msg)
1604
+
1605
+ # split topo data
1606
+ G = Geospatial_data(file_name=data_file)
1607
+ if verbose: log.critical('start split')
1608
+ G_small, G_other = G.split(split_factor, seed_num, verbose=verbose)
1609
+ if verbose: log.critical('finish split')
1610
+ points = G_small.get_data_points()
1611
+
1612
+ if verbose: log.critical("Number of points in sample to compare: %d"
1613
+ % len(points))
1614
+
1615
+ if alpha_list == None:
1616
+ alphas = [0.001,0.01,100]
1617
+ #alphas = [0.000001, 0.00001, 0.0001, 0.001, 0.01,
1618
+ # 0.1, 1.0, 10.0, 100.0,1000.0,10000.0]
1619
+ else:
1620
+ alphas = alpha_list
1621
+
1622
+ domains = {}
1623
+
1624
+ if verbose: log.critical('Setup computational domains with '
1625
+ 'different alphas')
1626
+
1627
+ for alpha in alphas:
1628
+ # add G_other data to domains with different alphas
1629
+ if verbose:
1630
+ log.critical('Calculating domain and mesh for Alpha = %s' %
1631
+ str(alpha))
1632
+ domain = Domain(mesh_file, use_cache=cache, verbose=verbose)
1633
+ if verbose: log.critical(domain.statistics())
1634
+ domain.set_quantity(attribute_smoothed,
1635
+ geospatial_data=G_other,
1636
+ use_cache=cache,
1637
+ verbose=verbose,
1638
+ alpha=alpha)
1639
+ domains[alpha] = domain
1640
+
1641
+ # creates array with columns 1 and 2 are x, y. column 3 is elevation
1642
+ # 4 onwards is the elevation_predicted using the alpha, which will
1643
+ # be compared later against the real removed data
1644
+ data = num.array([], dtype=num.float)
1645
+
1646
+ data = num.resize(data, (len(points), 3+len(alphas)))
1647
+
1648
+ # gets relative point from sample
1649
+ data[:,0] = points[:,0]
1650
+ data[:,1] = points[:,1]
1651
+ elevation_sample = G_small.get_attributes(attribute_name=attribute_smoothed)
1652
+ data[:,2] = elevation_sample
1653
+
1654
+ normal_cov = num.array(num.zeros([len(alphas), 2]), dtype=num.float)
1655
+
1656
+ if verbose:
1657
+ log.critical('Determine difference between predicted results '
1658
+ 'and actual data')
1659
+
1660
+ for i, alpha in enumerate(domains):
1661
+ if verbose: print'Alpha =', alpha
1662
+
1663
+ points_geo = domains[alpha].geo_reference.change_points_geo_ref(points)
1664
+ # returns the predicted elevation of the points that were "split" out
1665
+ # of the original data set for one particular alpha
1666
+ elevation_predicted = \
1667
+ domains[alpha].quantities[attribute_smoothed].\
1668
+ get_values(interpolation_points=points_geo)
1669
+
1670
+ # add predicted elevation to array that starts with x, y, z...
1671
+ data[:,i+3] = elevation_predicted
1672
+
1673
+ sample_cov = cov(elevation_sample)
1674
+ ele_cov = cov(elevation_sample - elevation_predicted)
1675
+ normal_cov[i,:] = [alpha,ele_cov / sample_cov]
1676
+ log.critical('memory usage during compare: %s' % str(mem_usage()))
1677
+ if verbose: log.critical('cov %s = %s'
1678
+ % (normal_cov[i][0], normal_cov[i][1]))
1679
+
1680
+ normal_cov0 = normal_cov[:,0]
1681
+ normal_cov_new = num.take(normal_cov, num.argsort(normal_cov0), axis=0)
1682
+
1683
+ if plot_name is not None:
1684
+ from pylab import savefig,semilogx,loglog
1685
+
1686
+ semilogx(normal_cov_new[:,0], normal_cov_new[:,1])
1687
+ loglog(normal_cov_new[:,0], normal_cov_new[:,1])
1688
+ savefig(plot_name, dpi=300)
1689
+ if mesh_file == 'temp.msh':
1690
+ remove(mesh_file)
1691
+
1692
+ return (min(normal_cov_new[:,1]),
1693
+ normal_cov_new[(num.argmin(normal_cov_new, axis=0))[1],0])
1694
+
1695
+
1696
+ if __name__ == "__main__":
1697
+ pass
1698
+