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,1394 @@
1
+ """
2
+
3
+ Routines to ease the import of spatial data to ANUGA
4
+
5
+ Key routines:
6
+ readShp_1PolyGeo, readShp_1LineGeo -- read SIMPLE shapefile geometries into ANUGA as a list of points.
7
+ The supported geometries are quite restricted, see help
8
+ read_polygon -- Reads either a polygon or line shapefile or a csv as a polygon
9
+ readShpPointsAndAttributes -- read a multi-point shapefile with its attributes into ANUGA
10
+
11
+ ListPts2Wkb -- (Probably for internal use) Convert a list of points to a
12
+ Wkb geometry, allowing us to use GDALs geometry tools
13
+ Wbk2ListPts -- reverse of ListPts2Wkb
14
+
15
+ addIntersectionPtsToLines -- (Probably for internal use, see add_intersections_to_domain_features)
16
+ Given 2 intersecting lines, add their intersection points to them, or
17
+ move existing points if they are within a given distance of the intersection.
18
+
19
+ add_intersections_to_domain_features -- Add intersections to bounding_polygon, breaklines, riverwalls
20
+ This sets them up for being passed to the mesh generator.
21
+ Points within a given distance of an intersection can be replaced
22
+ with the intersection point if desired
23
+
24
+ rasterValuesAtPoints -- (Probably for internal use, see quantityRasterFun in quantity_setting_functions)
25
+ Quite efficiently get raster cell values at points in any gdal-compatible raster
26
+ [gridPointsInPolygon could in future be linked with this to get raster values in a region,
27
+ if we develop a version of ANUGA with sub-grid topography]
28
+
29
+ readRegionPtAreas -- read a shapefile containing regionPtAreas -- xy coordinates + 1 attribute, which is
30
+ the mesh triangle side length (or area) limit. Can be passed as regionPtAreas in
31
+ the mesh generation stage.
32
+
33
+ readListOfBreakLines -- takes a list of shapefile names, each containing a single line geometry, and reads
34
+ it in as a dictionary of breaklines.
35
+
36
+ readListOfRiverWalls -- takes a list of csv names, each containing a xyz polylines defining riverwalls, with
37
+ an optional first line defining the non-default riverwall par, and returns a dictionary
38
+ of the riverwalls and the riverwall_Par
39
+
40
+ polygon_from_matching_breaklines -- given a pattern (string) matching exactly 2 breaklines in a directory,
41
+ convert them to a single polygon. This is useful to e.g. make
42
+ a polygon defining the extent of a channel that is defined from 2 breaklines
43
+
44
+
45
+ """
46
+ import sys
47
+ import os
48
+ import os.path
49
+ import copy
50
+ import struct
51
+ import numpy
52
+ #from matplotlib import path
53
+ import anuga
54
+ from anuga.geometry.polygon import inside_polygon
55
+
56
+ try:
57
+ import gdal
58
+ import ogr
59
+ gdal_available = True
60
+ #import osr # Not needed here but important in general
61
+ except ImportError, err:
62
+ gdal_available = False
63
+
64
+
65
+ #####################################
66
+ if gdal_available:
67
+
68
+
69
+ def readShp_1PolyGeo(shapefile, dropLast=True):
70
+ """
71
+ Read a "single polygon" shapefile into an ANUGA_polygon object
72
+ (a list of lists, each containing a polygon coordinate)
73
+
74
+ The attribute table is ignored, and there can only be a single geometry in the shapefile
75
+
76
+ INPUTS: shapefile -- full path to shapefile name
77
+ dropLast -- Logical. If so, cut the last point (which closes
78
+ the polygon). ANUGA uses this by default for e.g.
79
+ bounding polygons
80
+ """
81
+
82
+ # Get the data
83
+ driver=ogr.GetDriverByName("ESRI Shapefile")
84
+ dataSrc=driver.Open(shapefile, 0)
85
+ #dataSrc=ogr.Open(shapefile)
86
+ layer=dataSrc.GetLayer()
87
+
88
+ # Check it is a polygon
89
+ layerType=ogr.GeometryTypeToName(layer.GetGeomType())
90
+ if not layerType=='Polygon':
91
+ msg= shapefile +' is not a polygon shapefile'
92
+ raise Exception, msg
93
+
94
+ # Need a single polygon
95
+ try:
96
+ assert(len(layer)==1)
97
+ except:
98
+ print shapefile
99
+
100
+ boundary_poly=[]
101
+ for feature in layer:
102
+ #geom=feature.GetGeometryReg()
103
+ boundary=feature.GetGeometryRef().Boundary().GetPoints()
104
+ boundary=[list(pts) for pts in boundary]
105
+ boundary_poly.extend(boundary)
106
+
107
+ if(dropLast):
108
+ # Return a list of points, without last point [= first point]
109
+ return boundary_poly[:-1]
110
+ else:
111
+ return boundary_poly
112
+
113
+ ####################
114
+
115
+ def readShp_1LineGeo(shapefile):
116
+ """
117
+ Read a "single-line" shapefile into a list of lists (each containing a point),
118
+ resembling an ANUGA polygon object
119
+
120
+ The attribute table is ignored, and there can only be a single geometry in the shapefile
121
+
122
+ INPUTS: shapefile -- full path to shapefile name
123
+ """
124
+
125
+ driver=ogr.GetDriverByName("ESRI Shapefile")
126
+ dataSrc=driver.Open(shapefile, 0)
127
+ #dataSrc=ogr.Open(shapefile)
128
+ layer=dataSrc.GetLayer()
129
+
130
+ # Check it is a line
131
+ layerType=ogr.GeometryTypeToName(layer.GetGeomType())
132
+ if not layerType=='Line String':
133
+ msg= shapefile +' is not a line shapefile'
134
+ raise Exception, msg
135
+
136
+ # Need a single line
137
+ try:
138
+ assert len(layer)==1
139
+ except:
140
+ print shapefile
141
+
142
+ line_all=[]
143
+ for feature in layer:
144
+ line=feature.GetGeometryRef().GetPoints()
145
+ line=[list(pts) for pts in line]
146
+ line_all.extend(line)
147
+
148
+ return line_all
149
+
150
+ ###########################################################################
151
+ def read_csv_optional_header(filename):
152
+ """Read a csv file of numbers, which optionally has a single header
153
+ row containing alphabetical characters (which is ignored if it
154
+ exists)
155
+
156
+ INPUT:
157
+ @param filename -- name of appropriate file with ',' delimiter
158
+
159
+ OUTPUT:
160
+ A numpy array with the numeric data
161
+ """
162
+
163
+ f=open(filename)
164
+ firstLine=f.readline()
165
+ f.close()
166
+ hasLetters=any(c.isalpha() for c in firstLine)
167
+ outPol = numpy.genfromtxt(
168
+ filename, delimiter=',',skip_header=int(hasLetters))
169
+
170
+ return outPol
171
+
172
+ ###########################################################################
173
+ def read_polygon(filename, close_polygon_shapefiles=False):
174
+ """
175
+
176
+ Read a shapefile (polygon or line) or a csv file as an anuga polygon
177
+
178
+ In the case of a csv file, we permit either 1 or 0 header rows, and
179
+ the file can have > 2 columns [but only the first 2 are used]
180
+
181
+ Try to automatically do the correct thing based on the filename
182
+
183
+ """
184
+ # Check the file exists
185
+ msg= 'Could not read '+ filename
186
+ assert os.path.isfile(filename), msg
187
+
188
+ # Get the file extension type
189
+ fileNameNoExtension , fileExtension = os.path.splitext(filename)
190
+
191
+ if fileExtension == '.shp':
192
+ # Read as either a polygon or line shapefile
193
+ try:
194
+ outPol=readShp_1PolyGeo(filename, dropLast = (not close_polygon_shapefiles))
195
+ assert len(outPol)>1
196
+ except:
197
+ try:
198
+ outPol= readShp_1LineGeo(filename)
199
+ assert len(outPol)>1
200
+ except:
201
+ msg= 'Could not read '+ filename +\
202
+ ' as either polygon or line shapefile'
203
+ raise Exception(msg)
204
+ else:
205
+ try:
206
+ outPol = read_csv_optional_header(filename)
207
+ # Only take the first 2 columns
208
+ outPol = outPol[:,0:2].tolist()
209
+ except:
210
+ msg = 'Failed reading polygon '+ filename +\
211
+ ' with anuga.utilities.spatialInputUtils.read_polygon'
212
+ raise Exception(msg)
213
+
214
+ return outPol
215
+
216
+ ####################
217
+
218
+ def readShpPtsAndAttributes(shapefile):
219
+ """
220
+ Read a point shapefile with an attribute table into a list
221
+
222
+ INPUT: shapefile -- name of shapefile to read
223
+
224
+ OUTPUT: List with
225
+ [ list_of_points, list_of_attributes, names_of_attributes]
226
+ """
227
+
228
+ driver=ogr.GetDriverByName("ESRI Shapefile")
229
+ dataSrc=driver.Open(shapefile, 0)
230
+ #dataSrc=ogr.Open(shapefile)
231
+ layer=dataSrc.GetLayer()
232
+
233
+ pts=[]
234
+ attribute=[]
235
+ for i, feature in enumerate(layer):
236
+ if(i==0):
237
+ attributeNames=feature.keys()
238
+ pt=feature.GetGeometryRef().GetPoints()
239
+ pt=[list(p) for p in pt]
240
+ pts.extend(pt)
241
+ att=[feature[i] for i in attributeNames]
242
+ attribute.extend(att)
243
+
244
+ return [pts, attribute, attributeNames]
245
+
246
+ ########################################
247
+ def readShpPts(shapefile):
248
+ """
249
+ Wrapper around readShpPtsAndAttributes
250
+ Only get the points
251
+ """
252
+
253
+ out=readShpPtsAndAttributes(shapefile)[0]
254
+ return out
255
+
256
+ ########################################
257
+ def read_points(filename):
258
+ """
259
+ Reads x,y geometries from a point shapefile or csv file (anuga polygon type format),
260
+ and returns as a list of lists
261
+ """
262
+ # Check the file exists
263
+ msg= 'Could not read '+ filename
264
+ assert os.path.isfile(filename), msg
265
+
266
+ # Get the file extension type
267
+ fileNameNoExtension , fileExtension = os.path.splitext(filename)
268
+
269
+ if fileExtension=='.shp':
270
+ try:
271
+ points = readShpPts(filename)
272
+ except:
273
+ msg = 'Could not read points from ' + filename
274
+ raise Exception, msg
275
+ else:
276
+ # Assume txt format
277
+ try:
278
+ #points=numpy.genfromtxt(filename,delimiter=',',skip_header=1)
279
+ #points=points[:,0:2].tolist()
280
+ points=anuga.read_polygon(filename)
281
+ except:
282
+ msg = 'Could not read points from ' + filename +\
283
+ '. Make sure it has a single header row, ' +\
284
+ 'with comma separator, and the first 2 columns are x,y'
285
+ raise Exception, msg
286
+ return points
287
+
288
+ ########################################
289
+ def ListPts2Wkb( ptsIn, geometry_type='line', appendFirstOnEnd=None):
290
+ """
291
+ Convert list of points to a GDAl Wkb format
292
+ Can be either points, lines, or polygon
293
+
294
+ Purpose is that once data in in Wkb format, we can use GDAL's geometric operations
295
+ (e.g. to test for intersections, etc)
296
+
297
+ INPUT: ptsIn -- list of points in the format [[x0,y0], [x1, y1], ..., [xn, yn]]
298
+ Actually it is also ok if [x0,y0], .. is a tuple instead
299
+ geometry_type -- 'point' or 'line' or 'polygon'
300
+
301
+ appendFirstOnEnd -- logical. If true, add the first point to the
302
+ end. Probably wanted for polygons when they are unclosed in ANUGA
303
+
304
+ OUTPUT:
305
+ The points as a Wkb Geometry.
306
+ geometry_type='point' produces a MULTIPOINT Geometry
307
+ ='line' produces a LINESTRING Geometry
308
+ ='polygon' produces a POLYGON Geometry
309
+
310
+ FIXME: This might not sensibly-use the gdal geometry types (although it
311
+ passes our tests) -- consider revising
312
+ """
313
+ # Avoid modifying ptsIn
314
+ pts=copy.copy(ptsIn)
315
+
316
+ if appendFirstOnEnd is None:
317
+ if(geometry_type=='polygon'):
318
+ appendFirstOnEnd=True
319
+ else:
320
+ appendFirstOnEnd=False
321
+
322
+ if appendFirstOnEnd:
323
+ pts.append(pts[0])
324
+
325
+ if(geometry_type=='point'):
326
+ data=ogr.Geometry(ogr.wkbMultiPoint)
327
+ elif(geometry_type=='line'):
328
+ data=ogr.Geometry(ogr.wkbLineString)
329
+ elif(geometry_type=='polygon'):
330
+ data=ogr.Geometry(ogr.wkbLinearRing)
331
+ else:
332
+ raise Exception, "Type must be either 'point' or 'line' or 'polygon'"
333
+
334
+ for i in range(len(pts)):
335
+ if(len(pts[i])==2):
336
+ if(geometry_type=='point'):
337
+ newPt=ogr.Geometry(ogr.wkbPoint)
338
+ newPt.AddPoint(pts[i][0], pts[i][1])
339
+ data.AddGeometryDirectly(newPt)
340
+ else:
341
+ data.AddPoint(pts[i][0], pts[i][1])
342
+ elif(len(pts[i])==3):
343
+ if(geometry_type=='point'):
344
+ newPt=ogr.Geometry(ogr.wkbPoint)
345
+ newPt.AddPoint(pts[i][0], pts[i][1], pts[i][2])
346
+ data.AddGeometryDirectly(newPt)
347
+ else:
348
+ data.AddPoint(pts[i][0], pts[i][1], pts[i][2])
349
+ else:
350
+ raise Exception, 'Points must be either 2 or 3 dimensional'
351
+
352
+ if(geometry_type=='polygon'):
353
+ poly = ogr.Geometry(ogr.wkbPolygon)
354
+ poly.AddGeometry(data)
355
+ data=poly
356
+
357
+ return(data)
358
+
359
+ ############################################################################
360
+ def Wkb2ListPts(wkb_geo, removeLast=False, drop_third_dimension=False):
361
+ """
362
+ Reverse of ListPts2Wkb
363
+ """
364
+ if(wkb_geo.GetGeometryName()=='POLYGON'):
365
+ X=wkb_geo.GetBoundary()
366
+ new=[ list(X.GetPoints()[i]) for i in range(len(X.GetPoints())) ]
367
+ elif(wkb_geo.GetGeometryName()=='MULTIPOINT'):
368
+ new=[ [feature.GetX(), feature.GetY(),feature.GetZ()] for feature in wkb_geo]
369
+ elif(wkb_geo.GetGeometryName()=='LINESTRING'):
370
+ new=[ list(wkb_geo.GetPoints()[i]) for i in range(len(wkb_geo.GetPoints())) ]
371
+ else:
372
+ raise Exception, 'Geometry type not supported'
373
+
374
+ if(removeLast):
375
+ new=new[:-1]
376
+ if(drop_third_dimension):
377
+ new = [new[i][0:2] for i in range(len(new))]
378
+ return new
379
+
380
+ ############################################################################
381
+ def compute_squared_distance_to_segment(pt, line):
382
+ """
383
+ Compute the squared distance between a point and a [finite] line segment
384
+
385
+ INPUT: pt -- [x,y]
386
+ line -- [[x0,y0],[x1,y1]] -- 2 points defining a line segment
387
+
388
+ OUTPUT: The distance^2 of pt to the line segment
389
+
390
+ """
391
+ p0 = line[0]
392
+ p1 = line[1]
393
+ #
394
+ # Get unit vector along segment
395
+ seg_unitVec_x = float(p1[0]-p0[0])
396
+ seg_unitVec_y = float(p1[1]-p0[1])
397
+ segLen = (seg_unitVec_x**2+seg_unitVec_y**2)**0.5
398
+ if(segLen == 0.):
399
+ raise Exception, 'Line has repeated points: Line %s Pt %s' % (str(line),str(pt))
400
+
401
+ seg_unitVec_x = seg_unitVec_x/segLen
402
+ seg_unitVec_y = seg_unitVec_y/segLen
403
+
404
+ # Get vector from pt to p0
405
+ pt_p0_vec_x = float(pt[0]-p0[0])
406
+ pt_p0_vec_y = float(pt[1]-p0[1])
407
+ pt_p0_vec_len_squared = (pt_p0_vec_x**2 + pt_p0_vec_y**2)
408
+
409
+ # Get dot product of above vector with unit vector
410
+ pt_dot_segUnitVec = (pt_p0_vec_x)*seg_unitVec_x + (pt_p0_vec_y)*seg_unitVec_y
411
+
412
+ if( (pt_dot_segUnitVec < segLen) and (pt_dot_segUnitVec > 0.)):
413
+ # The nearest point on the line is actually between p0 and p1, so we have a 'real' candidate
414
+ # Get distance^2
415
+ output = pt_p0_vec_len_squared - pt_dot_segUnitVec**2.
416
+ else:
417
+ # Distance is the min distance from p0 and p1.
418
+ output = min( pt_p0_vec_len_squared, (float(pt[0]-p1[0])**2+float(pt[1]-p1[1])**2))
419
+
420
+ if(output < -1.0e-06):
421
+ print 'Diagnostic numbers follow: '
422
+ print output
423
+ print pt_p0_vec_len_squared
424
+ print pt_dot_segUnitVec
425
+ print pt
426
+ print p1
427
+ print p0
428
+ raise Exception, 'round-off in compute_squared_distance_to_segment'
429
+ if(output < 0.):
430
+ output=0.
431
+ return output
432
+
433
+ ############################################################################
434
+
435
+ def find_nearest_segment(pt, segments):
436
+ """
437
+ Given a point and a line, find the line segment nearest to the line
438
+
439
+ NOTE: The answer can be ambiguous if one of the segment endpoints is
440
+ the nearest point. In that case, the behaviour is determined by the behaviour
441
+ of numpy.argmin. Won't be a problem for this application
442
+
443
+ INPUT: pt -- [x,y]
444
+ segments -- [[x0,y0], [x1,y1], ...]
445
+ A list of points, consecutive points are interpreted
446
+ as joined and so defining line segments
447
+
448
+ OUTPUT: The squared distance, and the index i of the segment
449
+ [x_i,y_i],[x_i+1,y_i+1] in segments which is closest to pt
450
+ """
451
+ ll=len(segments)
452
+ if(ll<=1):
453
+ raise Exception, 'Segments must have length > 1 in find_nearest_segment'
454
+
455
+ ptDist_sq=numpy.zeros(ll-1) # Hold the squared distance from the point to the line segment
456
+ for i in range(len(segments)-1):
457
+ # Compute distance from segment
458
+ ptDist_sq[i]=compute_squared_distance_to_segment(pt, [segments[i],segments[i+1]])
459
+
460
+ return [ptDist_sq.min(), ptDist_sq.argmin()]
461
+
462
+ ######################################################
463
+
464
+ def shift_point_on_line(pt, lineIn, nearest_segment_index):
465
+ """
466
+ Support pt is a point, which is near to the 'nearest_segment_index'
467
+ segment of the line 'lineIn'
468
+
469
+ This routine moves the nearest end point of that segment on line to pt.
470
+
471
+ INPUTS: pt -- [x,y] point
472
+ lineIn -- [ [x0, y0], [x1, y1], ..., [xN,yN]]
473
+ nearest_segment_index = index where the distance of pt to
474
+ the line from [x_i,y_i] to [x_i+1,y_i+1] is minimum
475
+
476
+ OUTPUT: The new line
477
+ """
478
+ # Avoid Changing line
479
+ line=copy.copy(lineIn)
480
+
481
+ # Replace the nearest point on L1 with the intersection point
482
+ p0 = line[nearest_segment_index]
483
+ p1 = line[nearest_segment_index+1]
484
+ d_p0 = ( (pt[0]-p0[0])**2 + (pt[1]-p0[1])**2)
485
+ d_p1 = ( (pt[0]-p1[0])**2 + (pt[1]-p1[1])**2)
486
+ changeP1=(d_p1<d_p0)
487
+ line[nearest_segment_index+changeP1][0] = pt[0]
488
+ line[nearest_segment_index+changeP1][1] = pt[1]
489
+
490
+ return line
491
+
492
+ #################################################################################
493
+ def insert_intersection_point(intersectionPt, line_pts, point_movement_threshold, verbose=False):
494
+ """
495
+ Add intersectionPt to line_pts, either by inserting it, or if a point on line_pts is
496
+ closer than point_movement_threshold, then by moving that point to the intersection point
497
+
498
+ INPUTS:
499
+ intersectionPt -- the intersection point [known to lie on line_pts]
500
+ line_pts -- ordered list of [x,y] points making a line.
501
+ point_movement_threshold -- used to decide to move or add intersectionPt
502
+
503
+ OUTPUT:
504
+ new version of lint_pts with the point added
505
+ """
506
+ # Avoid pointer/copy issues
507
+ L1_pts = copy.copy(line_pts)
508
+ iP=copy.copy(intersectionPt)
509
+
510
+ # Adjust L1
511
+ tmp = find_nearest_segment(intersectionPt, L1_pts)
512
+ # Compute the distance from the end points of the segment to the
513
+ # intersection point. Based on this we decide to add or move the point
514
+ p0 = L1_pts[tmp[1]]
515
+ p1 = L1_pts[tmp[1]+1]
516
+ endPt_Dist_Sq=min( ( (p0[0]-iP[0])**2 + (p0[1]-iP[1])**2),
517
+ ( (p1[0]-iP[0])**2 + (p1[1]-iP[1])**2))
518
+ #
519
+ if(endPt_Dist_Sq>point_movement_threshold**2):
520
+ # Insert the intersection point. We do this in a tricky way to
521
+ # account for the possibility of L1_pts having > 2 coordinates
522
+ # (riverWalls)
523
+ if verbose:
524
+ print ' Inserting new point'
525
+ dummyPt=copy.copy(L1_pts[tmp[1]])
526
+ L1_pts.insert(tmp[1]+1,dummyPt)
527
+ L1_pts[tmp[1]+1][0]=iP[0]
528
+ L1_pts[tmp[1]+1][1]=iP[1]
529
+ if(len(L1_pts[tmp[1]+1])==3):
530
+ # Treat 3rd coordinate
531
+ # Find distance of inserted point from neighbours, and
532
+ # Set 3rd coordinate as distance-weighted average of the others
533
+ d0=((L1_pts[tmp[1]][0]-L1_pts[tmp[1]+1][0])**2.+\
534
+ (L1_pts[tmp[1]][1]-L1_pts[tmp[1]+1][1])**2.)**0.5
535
+ d1=((L1_pts[tmp[1]+2][0]-L1_pts[tmp[1]+1][0])**2.+\
536
+ (L1_pts[tmp[1]+2][1]-L1_pts[tmp[1]+1][1])**2.)**0.5
537
+ L1_pts[tmp[1]+1][2] = (d0*L1_pts[tmp[1]+2][2] + d1*L1_pts[tmp[1]][2])/(d0+d1)
538
+
539
+ else:
540
+ if verbose:
541
+ print ' Shifting existing point'
542
+ # Move a point already on L1
543
+ L1_pts=shift_point_on_line(iP, L1_pts, tmp[1])
544
+
545
+ return L1_pts
546
+
547
+ #######################################################################################################
548
+ def check_polygon_is_small(intersection, buf, tol2=100.):
549
+ """
550
+
551
+ Elsewhere in the code, we check whether lines intersect by buffering them
552
+ to polygons with a small buffer = buf, then getting the intersection.
553
+ [since intersection with polygons is supported by gdal, but apparently
554
+ not directly with lines].
555
+
556
+ The logic of our code only works with point intersections,
557
+ and it will fails if 2 lines overlap in a line.
558
+
559
+ We crudely check for this situation here, by ensuring that the intersection polygon is 'small'
560
+
561
+ WARNING: The gdal geometry routines may be a bit rough (?)
562
+ Intersections not very precise, etc (?)
563
+
564
+ INPUT: intersection -- intersection of the 2 lines [gdal geometry]
565
+ buf -- a length scale giving the size of the intersection extent that we expect for a point
566
+ tol2 -- Throw an error if the x or y extent is greater than buf*tol2. Seems this needs to be
567
+ large sometimes -- this might reflect the stated weaknesses of GDALs geometry routines?
568
+ OUTPUT: True/False
569
+ False should suggest that the intersection is not describing a point
570
+ """
571
+
572
+ extent=intersection.GetEnvelope()
573
+ assert(len(extent)==4) # Make sure this assumption is valid
574
+ if( (abs(extent[0]-extent[1])>buf*tol2) or (abs(extent[2]-extent[3]) > buf*tol2)):
575
+ return False
576
+ else:
577
+ return True
578
+
579
+ #######################################################################################################
580
+
581
+ def addIntersectionPtsToLines(L1,L2, point_movement_threshold=0.0, buf=1.0e-05, tol2 = 100,
582
+ verbose=True, nameFlag=''):
583
+ """
584
+ Add intersection points to lines L1 and L2 if they intersect each other
585
+
586
+ This is useful e.g. so that intersections can be exact (important for
587
+ mesh generation in ANUGA)
588
+
589
+ It currently only supports point intersection of 2 lines.
590
+ Line intersections should fail gracefully
591
+
592
+ INPUTS: L1, L2 = Wkb LineString geometries
593
+
594
+ point_movement_threshold -- if the distance from the nearest
595
+ point on L1 or L2 to the intersection is < point_movement_threshold, then the
596
+ nearest point has its coordinates replaced with the intersection point. This is
597
+ to prevent points being too close to each other
598
+
599
+ buf = tolerence that is used to buffer lines to find
600
+ intersections. Probably doesn't need modification
601
+
602
+ tol2 = [see check_polygon_is_small] Probably doesn't need to change
603
+
604
+ nameFlag = This will be printed if intersection occurs.
605
+ Convenient way to display intersecting filenames
606
+
607
+ OUTPUTS: L1,L2 with intersection points added in the right places
608
+ """
609
+
610
+ if(L1.Intersects(L2)):
611
+ # Get points on the lines
612
+ L1_pts=Wkb2ListPts(L1)
613
+ L2_pts=Wkb2ListPts(L2)
614
+
615
+ # Buffer lines by a small amount
616
+ L1_buf=L1.Buffer(buf)
617
+ L2_buf=L2.Buffer(buf)
618
+
619
+ # Get intersection point[s]
620
+ L1_L2_intersect=L1_buf.Intersection(L2_buf)
621
+ if(L1_L2_intersect.GetGeometryCount()==1):
622
+ if(not check_polygon_is_small(L1_L2_intersect, buf, tol2)):
623
+ msg = 'line intersection is not allowed. ' + \
624
+ 'Envelope %s '% str(L1_L2_intersect.GetEnvelope())
625
+ raise Exception(msg)
626
+ # Seems to need special treatment with only 1 intersection point
627
+ intersectionPts=[L1_L2_intersect.Centroid().GetPoint()]
628
+ else:
629
+ intersectionPts=[]
630
+ for feature in L1_L2_intersect:
631
+ if(not check_polygon_is_small(feature, buf, tol2)):
632
+ print feature.GetEnvelope()
633
+ raise Exception, 'line intersection is not allowed'
634
+ intersectionPts.append(feature.Centroid().GetPoint())
635
+
636
+ if(verbose):
637
+ print nameFlag
638
+ print ' Treating intersections in ', len(intersectionPts) , ' locations'
639
+ print intersectionPts
640
+
641
+ # Insert the points into the line segments
642
+ for i in range(len(intersectionPts)):
643
+ L1_pts = insert_intersection_point(intersectionPts[i], L1_pts,
644
+ point_movement_threshold, verbose=verbose)
645
+ L2_pts = insert_intersection_point(intersectionPts[i], L2_pts,
646
+ point_movement_threshold, verbose=verbose)
647
+
648
+ # Convert to the input format
649
+ L1_pts=ListPts2Wkb(L1_pts,geometry_type='line')
650
+ L2_pts=ListPts2Wkb(L2_pts,geometry_type='line')
651
+
652
+ return [L1_pts, L2_pts]
653
+ else:
654
+ return [L1, L2]
655
+
656
+ ###########################################################
657
+ def getRasterExtent(rasterFile, asPolygon=False):
658
+ """
659
+ Sometimes we need to know the extent of a raster
660
+ i.e. the minimum x, maximum x, minimum y, and maximum y values
661
+
662
+ INPUT:
663
+ rasterFile -- a gdal compatible rasterfile
664
+ asPolygon -- if False, return [xmin,xmax,ymin,ymax].
665
+ If True, return [ [xmin,ymin],[xmax,ymin],[xmax,ymax],[xmin,ymax]]
666
+ OUTPUT
667
+ The extent as defined above
668
+
669
+ """
670
+ raster = gdal.Open(rasterFile)
671
+ transform=raster.GetGeoTransform()
672
+ xOrigin = transform[0]
673
+ yOrigin = transform[3]
674
+ xPixels=raster.RasterXSize
675
+ yPixels=raster.RasterYSize
676
+
677
+ # Compute the other extreme corner
678
+ x2=xOrigin + xPixels*transform[1]+yPixels*transform[2]
679
+ y2=yOrigin + xPixels*transform[4]+yPixels*transform[5]
680
+
681
+ xmin=min(xOrigin,x2)
682
+ xmax=max(xOrigin,x2)
683
+
684
+ ymin=min(yOrigin,y2)
685
+ ymax=max(yOrigin,y2)
686
+
687
+ if(asPolygon):
688
+ return [ [xmin,ymin], [xmax,ymin], [xmax,ymax], [xmin,ymax]]
689
+ else:
690
+ return [xmin,xmax,ymin,ymax]
691
+
692
+
693
+ ###########################################################
694
+ def rasterValuesAtPoints(
695
+ xy,
696
+ rasterFile,
697
+ band=1,
698
+ nodata_rel_tol = 1.0e-08,
699
+ interpolation = 'pixel'):
700
+ """
701
+ Get raster values at point locations.
702
+ Can be used to e.g. set quantity values
703
+
704
+ INPUT:
705
+ @param xy = numpy array with point locations
706
+
707
+ @param rasterFile = Filename of the gdal-compatible raster
708
+
709
+ @param band = band of the raster to get
710
+
711
+ @param nodata_rel_tol = Values are treated as nodata if
712
+ ( abs(elev - nodataval) < nodata_rel_tol*abs(nodataval) )
713
+ This allows for truncation errors in nodata values which seem
714
+ to be introduced by some file-type conversions
715
+
716
+ @param interpolation 'pixel' or 'bilinear' determines how the
717
+ raster cell values are used to set the point value
718
+
719
+ OUTPUT:
720
+ 1d numpy array with raster values at xy
721
+
722
+ """
723
+ # Raster info
724
+ raster = gdal.Open(rasterFile)
725
+ rasterBand=raster.GetRasterBand(band)
726
+ rasterBandType=gdal.GetDataTypeName(rasterBand.DataType)
727
+ nodataval = rasterBand.GetNoDataValue()
728
+
729
+ # Projection info
730
+ transform=raster.GetGeoTransform()
731
+ xOrigin = transform[0]
732
+ yOrigin = transform[3]
733
+ pixelWidth = transform[1]
734
+ pixelHeight = transform[5] # Negative
735
+
736
+ # Get coordinates in pixel values
737
+ px = (xy[:,0] - xOrigin) / pixelWidth
738
+ py = (xy[:,1] - yOrigin) / pixelHeight
739
+
740
+ # Hold elevation
741
+ elev = px*0.
742
+
743
+ # Get the right character for struct.unpack
744
+ if (rasterBandType == 'Int16'):
745
+ CtypeName='h'
746
+ elif (rasterBandType == 'Float32'):
747
+ CtypeName='f'
748
+ elif (rasterBandType == 'Float64'):
749
+ CtypeName='d'
750
+ elif (rasterBandType == 'Byte'):
751
+ CtypeName='B'
752
+ elif (rasterBandType == 'Int32'):
753
+ CtypeName='i'
754
+ else:
755
+ print 'unrecognized DataType:', rasterBandType
756
+ print 'You might need to edit this code to read the data type'
757
+ raise Exception, 'Stopping'
758
+
759
+ # Upper bounds for pixel values, so we can fail gracefully
760
+ xMax = raster.RasterXSize
761
+ yMax = raster.RasterYSize
762
+ if(px.max()<xMax and px.min()>=0 and py.max()<yMax and py.min()>=0):
763
+ pass
764
+ else:
765
+ msg = 'Trying to extract point values that exceed the raster extent'
766
+ raise Exception, msg
767
+
768
+ # Get values -- seems we have to loop, but it is efficient enough
769
+ for i in range(len(px)):
770
+
771
+ if(interpolation=='pixel'):
772
+ # Pixel coordinates
773
+ xC=int(numpy.floor(px[i]))
774
+ yC=int(numpy.floor(py[i]))
775
+
776
+ structval = rasterBand.ReadRaster(xC,yC,1,1,
777
+ buf_type=rasterBand.DataType)
778
+ elev[i] = struct.unpack(CtypeName, structval)[0]
779
+
780
+ elif(interpolation=='bilinear'):
781
+ # Pixel coordinates
782
+ xl = int(numpy.floor(px[i]))
783
+ yl = int(numpy.floor(py[i]))
784
+
785
+ # Find neighbours required for bilinear interpolation
786
+ # l = lower, u = upper
787
+ if(px[i] - xl > 0.5):
788
+ xu = min(xl + 1, xMax - 1)
789
+ else:
790
+ # Swap xl for xu
791
+ xu = xl + 0
792
+ xl = max(xu - 1, 0)
793
+
794
+ if(py[i] - yl > 0.5):
795
+ yu = min(yl + 1, yMax - 1)
796
+ else:
797
+ yu = yl + 0
798
+ yl = max(yu - 1, 0)
799
+
800
+ # Map x,y to unit square
801
+ if(xu > xl):
802
+ x = px[i] - (xl + 0.5)
803
+ else:
804
+ x = 0.
805
+
806
+ if(yu > yl):
807
+ y = py[i] - (yl + 0.5)
808
+ else:
809
+ y = 0.
810
+
811
+ if not ( (x>=0.) & (x<=1.)):
812
+ print 'x-values error: ', x, xl, xu, px[i], xMax
813
+ raise Exception('x out of bounds')
814
+
815
+ if not ( (y>=0.) & (y<=1.)):
816
+ print 'y-values error: ', y, yl, yu, py[i]
817
+ raise Exception('y out of bounds')
818
+
819
+ # Lower-left
820
+ structval = rasterBand.ReadRaster(xl,yl,1,1,
821
+ buf_type=rasterBand.DataType)
822
+ r00 = struct.unpack(CtypeName, structval)[0]
823
+ # Upper left
824
+ structval = rasterBand.ReadRaster(xl,yu,1,1,
825
+ buf_type=rasterBand.DataType)
826
+ r01 = struct.unpack(CtypeName, structval)[0]
827
+ # Lower-right
828
+ structval = rasterBand.ReadRaster(xu,yl,1,1,
829
+ buf_type=rasterBand.DataType)
830
+ r10 = struct.unpack(CtypeName, structval)[0]
831
+ # Upper right
832
+ structval = rasterBand.ReadRaster(xu,yu,1,1,
833
+ buf_type=rasterBand.DataType)
834
+ r11 = struct.unpack(CtypeName, structval)[0]
835
+
836
+ # Bilinear interpolation
837
+ elev[i] = r00*(1.-x)*(1.-y) + r01*(1.-x)*y +\
838
+ r10*x*(1.-y) + r11*x*y
839
+
840
+ # Deal with nodata. This needs to be in the loop
841
+ # Just check if any of the pixels are nodata
842
+ if nodataval is not None:
843
+ if numpy.isfinite(nodataval):
844
+ rij = numpy.array([r00, r01, r10, r11])
845
+ rel_tol = ( abs(rij - nodataval) < nodata_rel_tol*abs(nodataval) )
846
+ missing = (rel_tol).nonzero()[0]
847
+ if len(missing) > 0:
848
+ elev[i] = numpy.nan
849
+ else:
850
+ raise Exception('Unknown value of "interpolation"')
851
+
852
+ # Deal with nodata for pixel based interpolation [efficient treatment
853
+ # outside of loop]
854
+ if (interpolation == 'pixel'):
855
+ if nodataval is not None:
856
+ if numpy.isfinite(nodataval):
857
+ rel_tol = ( abs(elev - nodataval) < nodata_rel_tol*abs(nodataval) )
858
+ missing = (rel_tol).nonzero()[0]
859
+ if len(missing) > 0:
860
+ elev[missing] = numpy.nan
861
+
862
+ return elev
863
+
864
+
865
+ def gridPointsInPolygon(polygon, approx_grid_spacing=[1.,1.], eps=1.0e-06):
866
+ """
867
+ Get a 'grid' of points inside a polygon. Could be used with rasterValuesAtPoints to
868
+ get a range of raster values inside a polygon
869
+
870
+ Approach: A 'trial-grid' of points is created which is 'almost'
871
+ covering the range of the polygon (xmin-xmax,ymin-ymax).
872
+
873
+ (Actually it is just inside this region, to avoid polygon-boundary issues, see below)
874
+
875
+ Then we find those points which are actually inside the polygon.
876
+
877
+ The x/y point spacing on the trial-grid will be close to
878
+ approx_grid_spacing, but we ensure there are at least 4x4 points on the trial grid.
879
+ Also, we reduce the spacing so that the min_x+R and max_x-R
880
+ are both similarly close to the polygon extents [see definition of R below]
881
+
882
+ INPUTS:
883
+ polygon -- the polygon in ANUGA format (list of lists of ordered xy points)
884
+
885
+ approx_grid_spacing -- the approximate x,y grid spacing
886
+
887
+ eps -- 'trial-grid' of points has x range from min_polygon_x+R to
888
+ max_polygon_x - R, where R = (max_polygon_x-min_polygon_x)*eps
889
+ ( and similarly for y).
890
+
891
+ This makes it more likely that points are inside the
892
+ polygon, not on the boundaries. Points on the boundaries can confuse the
893
+ point-in-polygon routine
894
+
895
+ OUTPUTS: A n x 2 numpy array of points in the polygon
896
+ """
897
+
898
+ # Get polygon extent
899
+ polygonArr=numpy.array(polygon)
900
+ poly_xmin=polygonArr[:,0].min()
901
+ poly_xmax=polygonArr[:,0].max()
902
+ poly_ymin=polygonArr[:,1].min()
903
+ poly_ymax=polygonArr[:,1].max()
904
+
905
+ # Make a 'grid' of points which covers the polygon
906
+ xGridCount=max( numpy.ceil( (poly_xmax-poly_xmin)/approx_grid_spacing[0]+1. ).astype(int), 4)
907
+ R=(poly_xmax-poly_xmin)*eps
908
+ Xvals=numpy.linspace(poly_xmin+R,poly_xmax-R, xGridCount)
909
+ yGridCount=max( numpy.ceil( (poly_ymax-poly_ymin)/approx_grid_spacing[1]+1. ).astype(int), 4)
910
+ R=(poly_ymax-poly_ymin)*eps
911
+ Yvals=numpy.linspace(poly_ymin+R,poly_ymax-R, yGridCount)
912
+
913
+ xGrid,yGrid=numpy.meshgrid(Xvals,Yvals)
914
+ Grid=numpy.vstack([xGrid.flatten(),yGrid.flatten()]).transpose()
915
+
916
+ keepers = inside_polygon(Grid, polygon)
917
+ if(len(keepers)==0):
918
+ raise Exception('No points extracted from polygon')
919
+ xyInside=Grid[keepers,:]
920
+
921
+ return(xyInside)
922
+
923
+ #########################################################################
924
+ # Function to search for pattern matches in a string (turns out to be useful)
925
+ def matchInds(pattern, stringList):
926
+ """
927
+ Find indices in stringList which match pattern
928
+ """
929
+ #matches=[ (pattern in stringList[i]) for i in range(len(stringList))]
930
+ matches=[]
931
+ for i in range(len(stringList)):
932
+ if pattern in stringList[i]:
933
+ matches.append(i)
934
+ return matches
935
+
936
+
937
+ ###########################################################################
938
+ #
939
+ # Less generic utilities below
940
+ #
941
+ # These are more 'anuga-specific' than above, aiming to make nice interfaces
942
+ # in ANUGA scripts
943
+ #
944
+ ############################################################################
945
+
946
+
947
+ def add_intersections_to_domain_features(
948
+ bounding_polygonIn,
949
+ breakLinesIn={ },
950
+ riverWallsIn={ },
951
+ point_movement_threshold=0.,
952
+ verbose=True):
953
+ """
954
+ If bounding polygon / breaklines /riverwalls intersect with each
955
+ other, then add intersection points.
956
+
957
+ INPUTS:
958
+ bounding_polygonIn -- the bounding polygon in ANUGA format
959
+ breakLinesIn -- the breaklines dictionary
960
+ riverWallsIn -- the riverWalls dictionary
961
+ point_movement_threshold -- if points on lines
962
+ are < this distance from intersection points, then they are
963
+ replaced with the intersection point. This can prevent
964
+ overly close points from breaking the mesh generation
965
+
966
+ OUTPUT:
967
+ List with bounding_polygon,breakLines,riverwalls
968
+ """
969
+
970
+ bounding_polygon = copy.copy(bounding_polygonIn)
971
+ breakLines = copy.copy(breakLinesIn)
972
+ riverWalls = copy.copy(riverWallsIn)
973
+
974
+ # Quick exit
975
+ if (breakLines == {}) and (riverWalls == {}):
976
+ return [bounding_polygon, breakLines, riverWalls]
977
+
978
+ # Clean intersections of breakLines with itself
979
+ if(verbose):
980
+ print 'Cleaning breakline intersections'
981
+ if(len(breakLines)>0):
982
+ kbl = breakLines.keys()
983
+ for i in range(len(kbl)):
984
+ n1 = kbl[i]
985
+ for j in range(len(kbl)):
986
+ if(i >= j):
987
+ continue
988
+ n2 = kbl[j]
989
+ # Convert breaklines to wkb format
990
+ bl1 = ListPts2Wkb(breakLines[n1],geometry_type='line')
991
+ bl2 = ListPts2Wkb(breakLines[n2],geometry_type='line')
992
+ # Add intersection points
993
+ bl1, bl2 = addIntersectionPtsToLines(
994
+ bl1, bl2,
995
+ point_movement_threshold=point_movement_threshold,
996
+ verbose=verbose, nameFlag=n1+' intersects '+ n2)
997
+ breakLines[n1] = Wkb2ListPts(bl1)
998
+ breakLines[n2] = Wkb2ListPts(bl2)
999
+
1000
+
1001
+ # Clean intersections of riverWalls with itself
1002
+ if(verbose):
1003
+ print 'Cleaning riverWall intersections'
1004
+ if(len(riverWalls)>0):
1005
+ krw=riverWalls.keys()
1006
+ for i in range(len(krw)):
1007
+ n1=krw[i]
1008
+ for j in range(len(krw)):
1009
+ if(i>=j):
1010
+ continue
1011
+ n2=krw[j]
1012
+ # Convert breaklines to wkb format
1013
+ rw1=ListPts2Wkb(riverWalls[n1],geometry_type='line')
1014
+ rw2=ListPts2Wkb(riverWalls[n2],geometry_type='line')
1015
+ # Add intersection points
1016
+ rw1, rw2 =addIntersectionPtsToLines(rw1, rw2,\
1017
+ point_movement_threshold=point_movement_threshold,\
1018
+ verbose=verbose, nameFlag=n1+' intersects '+ n2)
1019
+ riverWalls[n1]=Wkb2ListPts(rw1)
1020
+ riverWalls[n2]=Wkb2ListPts(rw2)
1021
+
1022
+ # Clean intersections of breaklines with riverwalls
1023
+ if(verbose):
1024
+ print 'Cleaning breakLine-riverWall intersections'
1025
+ if( (len(riverWalls)>0) and (len(breakLines)>0)):
1026
+ krw=riverWalls.keys()
1027
+ kbl=breakLines.keys()
1028
+ for i in range(len(krw)):
1029
+ n1=krw[i]
1030
+ for j in range(len(kbl)):
1031
+ n2=kbl[j]
1032
+ # Convert breaklines to wkb format
1033
+ rw1=ListPts2Wkb(riverWalls[n1],geometry_type='line')
1034
+ bw2=ListPts2Wkb(breakLines[n2],geometry_type='line')
1035
+ # Add intersection points
1036
+ rw1, bw2 =addIntersectionPtsToLines(rw1, bw2,\
1037
+ point_movement_threshold=point_movement_threshold,\
1038
+ verbose=verbose, nameFlag=n1+' intersects '+ n2)
1039
+ riverWalls[n1]=Wkb2ListPts(rw1)
1040
+ breakLines[n2]=Wkb2ListPts(bw2)
1041
+
1042
+
1043
+ # Clean intersections of bounding polygon and riverwalls
1044
+ if(verbose):
1045
+ print 'Cleaning bounding_poly-riverWall intersections'
1046
+ if( (len(riverWalls)>0)):
1047
+ krw=riverWalls.keys()
1048
+ for i in range(len(krw)):
1049
+ n1=krw[i]
1050
+ # Convert breaklines to wkb format
1051
+ rw1=ListPts2Wkb(riverWalls[n1],geometry_type='line')
1052
+ bp2=ListPts2Wkb(bounding_polygon,geometry_type='line', appendFirstOnEnd=True)
1053
+ # Add intersection points
1054
+ rw1, bp2 =addIntersectionPtsToLines(rw1, bp2,\
1055
+ point_movement_threshold=point_movement_threshold,\
1056
+ verbose=verbose, nameFlag='Bounding Pol intersects '+ n1)
1057
+ riverWalls[n1]=Wkb2ListPts(rw1)
1058
+ # Since the bounding polygon is a loop, the first/last points are the same
1059
+ # If one of these was moved, the other should be moved too. Since we
1060
+ # will drop the last bounding_polygon point, we only need to worry about the first
1061
+ bounding_polygon=Wkb2ListPts(bp2,removeLast=False)
1062
+ if(bounding_polygon[-1] is not bounding_polygon[0]):
1063
+ bounding_polygon[0]=bounding_polygon[-1]
1064
+ # Drop the last point
1065
+ bounding_polygon=bounding_polygon[:-1]
1066
+
1067
+ # Clean intersections of bounding polygon and breaklines
1068
+ if(verbose):
1069
+ print 'Cleaning bounding_poly-breaklines intersections'
1070
+ if( (len(breakLines)>0)):
1071
+ kbl=breakLines.keys()
1072
+ for i in range(len(kbl)):
1073
+ n1=kbl[i]
1074
+ # Convert breaklines to wkb format
1075
+ bl1=ListPts2Wkb(breakLines[n1],geometry_type='line')
1076
+ bp2=ListPts2Wkb(bounding_polygon,geometry_type='line', appendFirstOnEnd=True)
1077
+ # Add intersection points
1078
+ bl1, bp2 =addIntersectionPtsToLines(bl1, bp2,\
1079
+ point_movement_threshold=point_movement_threshold,
1080
+ verbose=verbose, nameFlag='Bounding Pol intersects '+n1)
1081
+ breakLines[n1]=Wkb2ListPts(bl1)
1082
+ # Since the bounding polygon is a loop, the first/last points are the same
1083
+ # If one of these was moved, the other should be moved too. Since we
1084
+ # will drop the last bp2 point, we only need to worry about the first
1085
+ bounding_polygon=Wkb2ListPts(bp2,removeLast=False)
1086
+ if(bounding_polygon[-1] is not bounding_polygon[0]):
1087
+ bounding_polygon[0]=bounding_polygon[-1]
1088
+ # Drop the last point
1089
+ bounding_polygon=bounding_polygon[:-1]
1090
+
1091
+ # Remove the extra 0.0 from bounding polygon [this cannot have 3 coordinates]
1092
+ bounding_polygon = [ bounding_polygon[i][0:2] for i in range(len(bounding_polygon))]
1093
+ # Same for breaklines [although might not matter]
1094
+ for n1 in breakLines.keys():
1095
+ breakLines[n1] = [breakLines[n1][i][0:2] for i in range(len(breakLines[n1]))]
1096
+
1097
+ # Check that all mesh-boundary points are inside the bounding polygon
1098
+ from anuga.geometry.polygon import outside_polygon
1099
+ for blCat in [riverWalls, breakLines]:
1100
+ for n1 in blCat.keys():
1101
+ l=len(blCat[n1])
1102
+ # Test every point -- means we can strip 3rd coordinate if needed
1103
+ for j in range(l):
1104
+ isOut=outside_polygon(blCat[n1][j][0:2], bounding_polygon)
1105
+ if(len(isOut)>0):
1106
+ msg='Breakline/riverwall point '+str(blCat[n1][j][0:2]) +' on '+ n1+\
1107
+ ' is outside the bounding polygon.\n'+\
1108
+ 'Check that it exceeds the bounding polygon'+\
1109
+ ' by a distance < point_movement_threshold \n'+\
1110
+ ' so it can be moved back onto the polygon'
1111
+ print 'Polygon\n '
1112
+ print bounding_polygon
1113
+ print 'Line \n'
1114
+ print blCat[n1]
1115
+ raise Exception, msg
1116
+
1117
+ return [bounding_polygon, breakLines, riverWalls]
1118
+
1119
+ ###################################################################
1120
+
1121
+ def readRegionPtAreas(shapefile, convert_length_to_area=False):
1122
+ """
1123
+ Read a point shapefile to define the ANUGA mesh resoutions.
1124
+
1125
+ MUST HAVE A SINGLE ATTRIBUTE REPRESENTING THE LENGTHS OF TRIANGLES IN
1126
+ REGIONS
1127
+
1128
+ INPUT: shapefile -- name of the input shapefile
1129
+ convert_length_to_area -- if True, res values are assumed to
1130
+ represent triangle side lengths, and are converted to areas with 0.5*res0*res0
1131
+ Note that this might not ensure that the max triangle side length really is res0, but
1132
+ it will be of similar magnitude
1133
+ If False, attribute values are assumed to represent triangle areas
1134
+
1135
+ OUTPUT: list of the form [ [x0,y0,res0], [x1, y1, res1], ...]
1136
+ """
1137
+
1138
+ ptData=readShpPtsAndAttributes(shapefile)
1139
+
1140
+ # Must have only 1 attribute
1141
+ assert len(ptData[2])==1
1142
+
1143
+ numPts=len(ptData[0])
1144
+ outData=[]
1145
+ for i in range(numPts):
1146
+ if(convert_length_to_area):
1147
+ newDat=[ptData[0][i][0], ptData[0][i][1], 0.5*float(ptData[1][i])**2]
1148
+ else:
1149
+ newDat=[ptData[0][i][0], ptData[0][i][1], float(ptData[1][i])]
1150
+ outData.append(newDat)
1151
+
1152
+ return outData
1153
+
1154
+ #########################################
1155
+ def readListOfBreakLines(fileList):
1156
+ """
1157
+ Take a list with the names of shapefiles or anuga_polygon csv files
1158
+
1159
+ They are assumed to be '2D breaklines', so we just read their
1160
+ coordinates into a dict with their names
1161
+
1162
+ Read them in
1163
+
1164
+ INPUT: fileList -- a list of shapefile and/or anuga_polygon csv filenames
1165
+ [e.g. from glob.glob('GIS/Breaklines/*.shp')]
1166
+
1167
+ OUTPUT: dictionary with breaklines [filenames are keys]
1168
+ """
1169
+
1170
+ allBreakLines = {}
1171
+ for shapefile in fileList:
1172
+ allBreakLines[shapefile] = read_polygon(shapefile,
1173
+ close_polygon_shapefiles=True)
1174
+
1175
+ return allBreakLines
1176
+
1177
+ #########################################
1178
+ def readListOfRiverWalls(rwfileList):
1179
+ """
1180
+ Take a list with the names of riverwall input files
1181
+ [should be comma-separated x,y,elevation files]
1182
+
1183
+ The input file can OPTIONALLY have a first line defining some
1184
+ hydraulic parameters. A valid example is
1185
+
1186
+ Qfactor: 1.5, s1: 0.94
1187
+ 200., 300., 0.5
1188
+ 300., 400., 0.7
1189
+ ....and so on..
1190
+
1191
+ Read their coordinates into a dict with their names, read for use by ANUGA
1192
+
1193
+ INPUT: rwfileList -- a list of riverwall filenames
1194
+ [e.g. from glob.glob('GIS/RiverWalls/*.csv')]
1195
+
1196
+ OUTPUT:
1197
+ dictionary with riverwalls [filenames are keys] AND
1198
+ dictionary with hydraulic parameters [filenames are keys]
1199
+ """
1200
+ import numpy
1201
+
1202
+ allRiverWalls = {}
1203
+ allRiverWallPar = {}
1204
+ for rwfile in rwfileList:
1205
+ f = open(rwfile)
1206
+ firstLine = f.readline()
1207
+ f.close()
1208
+ # If the top line has any letters, assume it is a hydraulic
1209
+ # variables line
1210
+ hasLetters = any(c.isalpha() for c in firstLine)
1211
+ if(not hasLetters):
1212
+ allRiverWalls[rwfile] = \
1213
+ numpy.genfromtxt(rwfile,delimiter=",").tolist()
1214
+ allRiverWallPar[rwfile] = {}
1215
+ else:
1216
+ # Get the wall geometry
1217
+ allRiverWalls[rwfile] = \
1218
+ numpy.genfromtxt(rwfile,delimiter=",",skip_header=1).tolist()
1219
+ # Get the hydraulic par
1220
+ firstLine = firstLine.replace(' ', '') # No whitespace
1221
+ wallPar = firstLine.split(',')
1222
+ allRiverWallPar[rwfile] = {}
1223
+ for wp in wallPar:
1224
+ keyNameValue = wp.split(':')
1225
+ allRiverWallPar[rwfile][keyNameValue[0]] = \
1226
+ float(keyNameValue[1])
1227
+
1228
+ return allRiverWalls, allRiverWallPar
1229
+
1230
+ ############################################################################
1231
+
1232
+ def combine_breakLines_and_riverWalls_for_mesh(breakLines, riverWalls):
1233
+ """
1234
+ Combine breaklines and riverwalls for input in mesh generation,
1235
+ ensuring both have 2 coordinates only
1236
+ """
1237
+ mesh_breakLines=riverWalls.values()+breakLines.values()
1238
+ for i in range(len(mesh_breakLines)):
1239
+ mesh_breakLines[i] =\
1240
+ [mesh_breakLines[i][j][0:2] for j in range(len(mesh_breakLines[i]))]
1241
+ return mesh_breakLines
1242
+
1243
+ ############################################################################
1244
+ def polygon_from_matching_breaklines(pattern,breakLinesIn, reverse2nd=None):
1245
+ """ We sometimes have breaklines defining 2 edges of a channel,
1246
+ and wish to make a polygon from them
1247
+
1248
+ Can do this with the current function
1249
+
1250
+ INPUTS: pattern == character string containing pattern which
1251
+ is inside exactly 2 keys in breaklines
1252
+
1253
+ breakLinesIn = the breakLines dictionary
1254
+
1255
+ reverse2nd = True/False or None. Reverse the order of the
1256
+ 2nd set of edges before making the polygon.
1257
+ If None, then we compute the distance between the
1258
+ first point on breakline1 and the first/last
1259
+ points on breakline2, and reverse2nd if the
1260
+ 'distance from the first point' <
1261
+ 'distance from the last point'
1262
+
1263
+ OUTPUT: Polygon made with the 2 breaklines
1264
+ """
1265
+
1266
+ breakLines=copy.copy(breakLinesIn)
1267
+ bk=breakLines.keys()
1268
+
1269
+ # They can be pathnames from glob, and sometimes / and \\ get mixed up
1270
+ # Fix that here
1271
+ pattern_norm = os.path.normpath(pattern)
1272
+ bk_norm = [ os.path.normpath(bk_i) for bk_i in bk ]
1273
+
1274
+ matchers=matchInds(pattern_norm, bk_norm)
1275
+
1276
+ if(len(matchers)==0):
1277
+ msg = 'Cannot match ' + pattern + ' in breaklines file names'
1278
+ raise Exception, msg
1279
+
1280
+ if(len(matchers)!=2):
1281
+ print 'Need exactly 2 matches, but pattern matched these', bk[matchers]
1282
+
1283
+ # There are 2 matches
1284
+
1285
+ if(reverse2nd is None):
1286
+ # Automatically compute whether we should reverse the 2nd breakline
1287
+ bl1_0=breakLines[bk[matchers[0]]][0]
1288
+ bl2_0=breakLines[bk[matchers[1]]][0]
1289
+ bl2_N=breakLines[bk[matchers[1]]][-1]
1290
+ d0 = ((bl1_0[0]-bl2_0[0])**2 + (bl1_0[1]-bl2_0[1])**2)
1291
+ dN = ((bl1_0[0]-bl2_N[0])**2 + (bl1_0[1]-bl2_N[1])**2)
1292
+ if(d0<dN):
1293
+ reverse2nd = True
1294
+ else:
1295
+ reverse2nd = False
1296
+
1297
+ if(reverse2nd):
1298
+ breakLines[bk[matchers[1]]].reverse()
1299
+ polyOut=breakLines[bk[matchers[0]]] + breakLines[bk[matchers[1]]]
1300
+
1301
+ # If the breakLines values have > 2 entries (i.e. like for riverwalls),
1302
+ # remove the third
1303
+ if(len(polyOut[0])>2):
1304
+ polyOut=[polyOut[i][0:2] for i in range(len(polyOut))]
1305
+
1306
+ return polyOut
1307
+ ###################
1308
+
1309
+ else: # gdal_available == False
1310
+ msg='Failed to import gdal/ogr modules --'\
1311
+ + 'perhaps gdal python interface is not installed.'
1312
+
1313
+
1314
+
1315
+ def readShp_1PolyGeo(shapefile, dropLast=True):
1316
+ raise ImportError, msg
1317
+
1318
+ def readShp_1LineGeo(shapefile):
1319
+ raise ImportError, msg
1320
+
1321
+ def read_csv_optional_header(filename):
1322
+ raise ImportError, msg
1323
+
1324
+ def read_polygon(filename):
1325
+ raise ImportError, msg
1326
+
1327
+ def readShpPtsAndAttributes(shapefile):
1328
+ raise ImportError, msg
1329
+
1330
+ def read_points(filename):
1331
+ raise ImportError, msg
1332
+
1333
+ def ListPts2Wkb( ptsIn, geometry_type='line', appendFirstOnEnd=None):
1334
+ raise ImportError, msg
1335
+
1336
+ def Wkb2ListPts(wkb_geo, removeLast=False, drop_third_dimension=False):
1337
+ raise ImportError, msg
1338
+
1339
+ def compute_squared_distance_to_segment(pt, line):
1340
+ raise ImportError, msg
1341
+
1342
+ def find_nearest_segment(pt, segments):
1343
+ raise ImportError, msg
1344
+
1345
+ def shift_point_on_line(pt, lineIn, nearest_segment_index):
1346
+ raise ImportError, msg
1347
+
1348
+ def insert_intersection_point(intersectionPt, line_pts,
1349
+ point_movement_threshold,verbose=False):
1350
+ raise ImportError, msg
1351
+
1352
+ def check_polygon_is_small(intersection, buf, tol2=100.):
1353
+ raise ImportError, msg
1354
+
1355
+ def addIntersectionPtsToLines(L1,L2, point_movement_threshold=0.0,
1356
+ buf=1.0e-06, tol2 = 100,
1357
+ verbose=True, nameFlag=''):
1358
+ raise ImportError, msg
1359
+
1360
+ def getRasterExtent(rasterFile, asPolygon=False):
1361
+ raise ImportError, msg
1362
+
1363
+ def rasterValuesAtPoints(xy, rasterFile, band=1):
1364
+ raise ImportError, msg
1365
+
1366
+
1367
+ def gridPointsInPolygon(polygon, approx_grid_spacing=[1.,1.], eps=1.0e-06):
1368
+ raise ImportError, msg
1369
+
1370
+
1371
+ def matchInds(pattern, stringList):
1372
+ raise ImportError, msg
1373
+
1374
+
1375
+ def add_intersections_to_domain_features(bounding_polygonIn,
1376
+ breakLinesIn={ }, riverWallsIn={ }, point_movement_threshold=0.,
1377
+ verbose=True):
1378
+ raise ImportError, msg
1379
+
1380
+
1381
+ def readRegionPtAreas(shapefile, convert_length_to_area=False):
1382
+ raise ImportError, msg
1383
+
1384
+ def readListOfBreakLines(shapefileList):
1385
+ raise ImportError, msg
1386
+
1387
+ def combine_breakLines_and_riverwalls_for_mesh(breakLines, riverWalls):
1388
+ raise ImportError, msg
1389
+
1390
+ def polygon_from_matching_breaklines(pattern,breakLinesIn, reverse2nd=None):
1391
+ raise ImportError, msg
1392
+ ###################
1393
+
1394
+