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,1237 @@
1
+ """ Random utilities for reading sww file data and for plotting
2
+ (in ipython, or in scripts)
3
+
4
+ Functionality of note:
5
+
6
+ plot_utils.get_outputs -- read the data from a single sww file
7
+ into a single object
8
+
9
+ plot_utils.combine_outputs -- read the data from a list of sww
10
+ files into a single object
11
+
12
+ plot_utils.near_transect -- for finding the indices of points
13
+ 'near' to a given line, and
14
+ assigning these points a
15
+ coordinate along that line.
16
+
17
+ This is useful for plotting outputs which are 'almost' along a
18
+ transect (e.g. a channel cross-section) -- see example below
19
+
20
+ plot_utils.sort_sww_filenames -- match sww filenames by a wildcard, and order
21
+ them according to their 'time'. This means that
22
+ they can be stuck together using
23
+ 'combine_outputs' correctly
24
+
25
+ plot_utils.triangle_areas -- compute the areas of every triangle
26
+ in a get_outputs object [ must be vertex-based]
27
+
28
+ plot_utils.water_volume -- compute the water volume at every
29
+ time step in an sww file (needs both
30
+ vertex and centroid value input).
31
+
32
+ plot_utils.Make_Geotif -- convert sww centroids to a georeferenced tiff
33
+
34
+ Here is an example ipython session which uses some of these functions:
35
+
36
+ > from anuga import plot_utils
37
+ > from matplotlib import pyplot as pyplot
38
+ > p=plot_utils.get_output('myfile.sww',minimum_allowed_height=0.01)
39
+ > p2=plot_utils.get_centroids(p,velocity_extrapolation=True)
40
+ > xxx=plot_utils.near_transect(p,[95., 85.], [120.,68.],tol=2.) # Could equally well use p2
41
+ > pyplot.ion() # Interactive plotting
42
+ > pyplot.scatter(xxx[1],p.vel[140,xxx[0]],color='red') # Plot along the transect
43
+
44
+ FIXME: TODO -- Convert to a single function 'get_output', which can either take a
45
+ single filename, a list of filenames, or a wildcard defining a number of
46
+ filenames, and ensure that in each case, the output will be as desired.
47
+
48
+ """
49
+ from anuga.file.netcdf import NetCDFFile
50
+ import numpy
51
+ import copy
52
+ import matplotlib.cm
53
+
54
+ class combine_outputs:
55
+ """
56
+ Read in a list of filenames, and combine all their outputs into a single object.
57
+ e.g.:
58
+
59
+ p = util.combine_outputs(['file1.sww', 'file1_time_10000.sww', 'file1_time_20000.sww'], 0.01)
60
+
61
+ will make an object p which has components p.x,p.y,p.time,p.stage, .... etc,
62
+ where the values of stage / momentum / velocity from the sww files are concatenated as appropriate.
63
+
64
+ This is nice for interactive interrogation of model outputs, or for sticking together outputs in scripts
65
+
66
+ WARNING: It is easy to use lots of memory, if the sww files are large.
67
+
68
+ Note: If you want the centroid values, then you could subsequently use:
69
+
70
+ p2 = util.get_centroids(p,velocity_extrapolation=False)
71
+
72
+ which would make an object p2 that is like p, but holds information at centroids
73
+ """
74
+ def __init__(self, filename_list, minimum_allowed_height=1.0e-03, verbose=False):
75
+ #
76
+ # Go through the sww files in 'filename_list', and combine them into one object.
77
+ #
78
+
79
+ for i, filename in enumerate(filename_list):
80
+ if verbose: print i, filename
81
+ # Store output from filename
82
+ p_tmp = get_output(filename, minimum_allowed_height,verbose=verbose)
83
+ if(i==0):
84
+ # Create self
85
+ p1=p_tmp
86
+ else:
87
+ # Append extra data to self
88
+ # Note that p1.x, p1.y, p1.vols, p1.elev should not change
89
+ assert (p1.x == p_tmp.x).all()
90
+ assert (p1.y == p_tmp.y).all()
91
+ assert (p1.vols ==p_tmp.vols).all()
92
+ p1.time = numpy.append(p1.time, p_tmp.time)
93
+ p1.stage = numpy.append(p1.stage, p_tmp.stage, axis=0)
94
+ p1.height = numpy.append(p1.height, p_tmp.height, axis=0)
95
+ p1.xmom = numpy.append(p1.xmom, p_tmp.xmom, axis=0)
96
+ p1.ymom = numpy.append(p1.ymom, p_tmp.ymom, axis=0)
97
+ p1.xvel = numpy.append(p1.xvel, p_tmp.xvel, axis=0)
98
+ p1.yvel = numpy.append(p1.yvel, p_tmp.yvel, axis=0)
99
+ p1.vel = numpy.append(p1.vel, p_tmp.vel, axis=0)
100
+
101
+ self.x, self.y, self.time, self.vols, self.stage, \
102
+ self.height, self.elev, self.friction, self.xmom, self.ymom, \
103
+ self.xvel, self.yvel, self.vel, self.minimum_allowed_height,\
104
+ self.xllcorner, self.yllcorner, self.timeSlices =\
105
+ p1.x, p1.y, p1.time, p1.vols, p1.stage, \
106
+ p1.height, p1.elev, p1.friction, p1.xmom, p1.ymom, \
107
+ p1.xvel, p1.yvel, p1.vel, p1.minimum_allowed_height,\
108
+ p1.xllcorner, p1.yllcorner, p1.timeSlices
109
+
110
+ self.filename = p1.filename
111
+ self.verbose = p1.verbose
112
+
113
+
114
+ ####################
115
+
116
+ def sort_sww_filenames(sww_wildcard):
117
+ # Function to take a 'wildcard' sww filename,
118
+ # and return a list of all filenames of this type,
119
+ # sorted by their time.
120
+ # This can then be used efficiently in 'combine_outputs'
121
+ # if you have many filenames starting with the same pattern
122
+ import glob
123
+ filenames=glob.glob(sww_wildcard)
124
+
125
+ # Extract time from filenames
126
+ file_time=range(len(filenames)) # Predefine
127
+
128
+ for i,filename in enumerate(filenames):
129
+ filesplit=filename.rsplit('_time_')
130
+ if(len(filesplit)>1):
131
+ file_time[i]=int(filesplit[1].split('_0.sww')[0])
132
+ else:
133
+ file_time[i]=0
134
+
135
+ name_and_time=zip(file_time,filenames)
136
+ name_and_time.sort() # Sort by file_time
137
+
138
+ output_times, output_names = zip(*name_and_time)
139
+
140
+ return list(output_names)
141
+
142
+ #####################################################################
143
+ class get_output:
144
+ """Read in data from an .sww file in a convenient form
145
+ e.g.
146
+ p = plot_utils.get_output('channel3.sww', minimum_allowed_height=0.01)
147
+
148
+ p then contains most relevant information as e.g., p.stage, p.elev, p.xmom, etc
149
+ """
150
+ def __init__(self, filename, minimum_allowed_height=1.0e-03, timeSlices='all', verbose=False):
151
+ # FIXME: verbose is not used
152
+ self.x, self.y, self.time, self.vols, self.stage, \
153
+ self.height, self.elev, self.friction, self.xmom, self.ymom, \
154
+ self.xvel, self.yvel, self.vel, self.minimum_allowed_height,\
155
+ self.xllcorner, self.yllcorner, self.timeSlices = \
156
+ _read_output(filename, minimum_allowed_height,copy.copy(timeSlices))
157
+ self.filename = filename
158
+ self.verbose = verbose
159
+
160
+ ####################################################################
161
+ def getInds(varIn, timeSlices, absMax=False):
162
+ """
163
+ Convenience function to get the indices we want in an array.
164
+ There are a number of special cases that make this worthwhile
165
+ having in its own function
166
+
167
+ INPUT: varIn -- numpy array, either 1D (variables in space) or 2D
168
+ (variables in time+space)
169
+ timeSlices -- times that we want the variable, see read_output or get_output
170
+ absMax -- if TRUE and timeSlices is 'max', then get max-absolute-values
171
+ OUTPUT:
172
+
173
+ """
174
+ #import pdb
175
+ #pdb.set_trace()
176
+
177
+ if (len(varIn.shape)==2):
178
+ # There are multiple time-slices
179
+ if timeSlices is 'max':
180
+ # Extract the maxima over time, assuming there are multiple
181
+ # time-slices, and ensure the var is still a 2D array
182
+ if( not absMax):
183
+ var = (varIn[:]).max(axis=0, keepdims=True)
184
+ else:
185
+ # For variables xmom,ymom,xvel,yvel we want the 'maximum-absolute-value'
186
+ varInds = abs(varIn[:]).argmax(axis=0)
187
+ varNew = varInds*0.
188
+ for i in range(len(varInds)):
189
+ varNew[i] = varIn[varInds[i],i]
190
+ var = varNew
191
+ var=var.reshape((1,len(var)))
192
+ else:
193
+ var = numpy.zeros((len(timeSlices), varIn.shape[1]), dtype='float32')
194
+ for i in range(len(timeSlices)):
195
+ var[i,:]=varIn[timeSlices[i]]
196
+ var.reshape((len(timeSlices), varIn.shape[1]))
197
+ else:
198
+ # There is 1 time slice only
199
+ var = varIn[:]
200
+
201
+ return var
202
+
203
+ ############################################################################
204
+
205
+ def _read_output(filename, minimum_allowed_height, timeSlices):
206
+ """
207
+ Purpose: To read the sww file, and output a number of variables as arrays that
208
+ we can then e.g. plot, interrogate
209
+
210
+ See get_output for the typical interface, and get_centroids for
211
+ working with centroids directly
212
+
213
+ Input: filename -- The name of an .sww file to read data from,
214
+ e.g. read_sww('channel3.sww')
215
+ minimum_allowed_height -- zero velocity when height < this
216
+ timeSlices -- List of time indices to read (e.g. [100] or [0, 10, 21]), or 'all' or 'last' or 'max'
217
+ If 'max', the time-max of each variable will be computed. For xmom/ymom/xvel/yvel, the
218
+ one with maximum magnitude is reported
219
+
220
+
221
+ Output: x, y, time, stage, height, elev, xmom, ymom, xvel, yvel, vel
222
+ x,y are only stored at one time
223
+ elevation may be stored at one or multiple times
224
+ everything else is stored every time step for vertices
225
+ """
226
+
227
+ # Open ncdf connection
228
+ fid=NetCDFFile(filename)
229
+
230
+ time=fid.variables['time'][:]
231
+
232
+ # Treat specification of timeSlices
233
+ if(timeSlices=='all'):
234
+ inds=range(len(time))
235
+ elif(timeSlices=='last'):
236
+ inds=[len(time)-1]
237
+ elif(timeSlices=='max'):
238
+ inds='max' #
239
+ else:
240
+ try:
241
+ inds=list(timeSlices)
242
+ except:
243
+ inds=[timeSlices]
244
+
245
+ if(inds is not 'max'):
246
+ time=time[inds]
247
+ else:
248
+ # We can't really assign a time to 'max', but I guess max(time) is
249
+ # technically the right thing -- if not misleading
250
+ time=time.max()
251
+
252
+
253
+ # Get lower-left
254
+ xllcorner=fid.xllcorner
255
+ yllcorner=fid.yllcorner
256
+
257
+ # Read variables
258
+ x=fid.variables['x'][:]
259
+ y=fid.variables['y'][:]
260
+
261
+ stage=getInds(fid.variables['stage'], timeSlices=inds)
262
+ elev=getInds(fid.variables['elevation'], timeSlices=inds)
263
+
264
+ # Simple approach for volumes
265
+ vols=fid.variables['volumes'][:]
266
+
267
+ # Friction if it exists
268
+ if(fid.variables.has_key('friction')):
269
+ friction=getInds(fid.variables['friction'],timeSlices=inds)
270
+ else:
271
+ # Set friction to nan if it is not stored
272
+ friction = elev*0.+numpy.nan
273
+
274
+ # Trick to treat the case where inds == 'max'
275
+ inds2 = copy.copy(inds)
276
+ if inds == 'max':
277
+ inds2 = range(len(fid.variables['time']))
278
+
279
+ # Get height
280
+ if(fid.variables.has_key('height')):
281
+ height = fid.variables['height'][inds2]
282
+ else:
283
+ # Back calculate height if it is not stored
284
+ #height = fid.variables['stage'][inds2]+0.
285
+ height = numpy.zeros((len(inds2), stage.shape[1]), dtype='float32')
286
+ for i in range(len(inds2)):
287
+ height[i,:] = fid.variables['stage'][inds2[i]]
288
+
289
+ if(len(elev.shape)==2):
290
+ height = height-elev
291
+ else:
292
+ for i in range(height.shape[0]):
293
+ height[i,:] = height[i,:]-elev
294
+ height = height*(height>0.)
295
+
296
+ # Get xmom
297
+ #xmom = fid.variables['xmomentum'][inds2]
298
+ #ymom = fid.variables['ymomentum'][inds2]
299
+ xmom = numpy.zeros((len(inds2), stage.shape[1]), dtype='float32')
300
+ ymom = numpy.zeros((len(inds2), stage.shape[1]), dtype='float32')
301
+ for i in range(len(inds2)):
302
+ xmom[i,:] = fid.variables['xmomentum'][inds2[i]]
303
+ ymom[i,:] = fid.variables['ymomentum'][inds2[i]]
304
+
305
+ # Get vel
306
+ h_inv = 1.0/(height+1.0e-12)
307
+ hWet = (height > minimum_allowed_height)
308
+ xvel = xmom*h_inv*hWet
309
+ yvel = ymom*h_inv*hWet
310
+ vel = (xmom**2 + ymom**2)**0.5*h_inv*hWet
311
+
312
+ if inds == 'max':
313
+ height = height.max(axis=0, keepdims=True)
314
+ vel = vel.max(axis=0, keepdims=True)
315
+ xvel = getInds(xvel, timeSlices=inds,absMax=True)
316
+ yvel = getInds(yvel, timeSlices=inds,absMax=True)
317
+ xmom = getInds(xmom, timeSlices=inds,absMax=True)
318
+ ymom = getInds(ymom, timeSlices=inds,absMax=True)
319
+
320
+ fid.close()
321
+
322
+ return x, y, time, vols, stage, height, elev, friction, xmom, ymom,\
323
+ xvel, yvel, vel, minimum_allowed_height, xllcorner,yllcorner, inds
324
+
325
+ ######################################################################################
326
+
327
+ class get_centroids:
328
+ """
329
+ Extract centroid values from the output of get_output, OR from a
330
+ filename
331
+ See _read_output or _get_centroid_values for further explanation of
332
+ arguments
333
+ e.g.
334
+ # Case 1 -- get vertex values first, then centroids
335
+ p = plot_utils.get_output('my_sww.sww', minimum_allowed_height=0.01)
336
+ pc=util.get_centroids(p, velocity_extrapolation=True)
337
+
338
+ # Case 2 -- get centroids directly
339
+ pc=plot_utils.get_centroids('my_sww.sww', velocity_extrapolation=True)
340
+
341
+ NOTE: elevation is only stored once in the output, even if it was
342
+ stored every timestep.
343
+ This is done because presently centroid elevations in ANUGA
344
+ do not change over time.
345
+ Also lots of existing plotting code assumes elevation is a 1D
346
+ array
347
+ """
348
+ def __init__(self,p, velocity_extrapolation=False, verbose=False,
349
+ timeSlices=None, minimum_allowed_height=1.0e-03):
350
+
351
+ self.time, self.x, self.y, self.stage, self.xmom,\
352
+ self.ymom, self.height, self.elev, self.friction, self.xvel,\
353
+ self.yvel, self.vel, self.xllcorner, self.yllcorner, self.timeSlices= \
354
+ _get_centroid_values(p, velocity_extrapolation,\
355
+ timeSlices=copy.copy(timeSlices),\
356
+ minimum_allowed_height=minimum_allowed_height,\
357
+ verbose=verbose)
358
+
359
+ def _getCentVar(fid, varkey_c, time_indices, absMax=False, vols = None, space_indices=None):
360
+ """
361
+ Convenience function used to get centroid variables from netCDF
362
+ file connection fid
363
+
364
+ """
365
+
366
+ if vols is not None:
367
+ vols0 = vols[:,0]
368
+ vols1 = vols[:,1]
369
+ vols2 = vols[:,2]
370
+
371
+ if(fid.variables.has_key(varkey_c)==False):
372
+ # It looks like centroid values are not stored
373
+ # In this case, compute centroid values from vertex values
374
+ assert (vols is not None), "Must specify vols since centroid quantity is not stored"
375
+
376
+ newkey=varkey_c.replace('_c','')
377
+ if time_indices is not 'max':
378
+ # Relatively efficient treatment is possible
379
+ var_cent = fid.variables[newkey]
380
+ if (len(var_cent.shape)>1):
381
+ # array contain time slices
382
+ var_cent = numpy.zeros((len(time_indices), fid.variables[newkey].shape[1]), dtype='float32')
383
+ for i in range(len(time_indices)):
384
+ var_cent[i,:] = fid.variables[newkey][time_indices[i]]
385
+ var_cent = (var_cent[:,vols0]+var_cent[:,vols1]+var_cent[:,vols2])/3.0
386
+ else:
387
+ var_cent = fid.variables[newkey][:]
388
+ var_cent = (var_cent[vols0]+var_cent[vols1]+var_cent[vols2])/3.0
389
+ else:
390
+ # Requires reading all the data
391
+ tmp = fid.variables[newkey][:]
392
+ try: # array contain time slices
393
+ tmp=(tmp[:,vols0]+tmp[:,vols1]+tmp[:,vols2])/3.0
394
+ except:
395
+ tmp=(tmp[vols0]+tmp[vols1]+tmp[vols2])/3.0
396
+ var_cent=getInds(tmp, timeSlices=time_indices, absMax=absMax)
397
+ else:
398
+ if time_indices is not 'max':
399
+ if(len(fid.variables[varkey_c].shape)>1):
400
+ var_cent = numpy.zeros((len(time_indices), fid.variables[varkey_c].shape[1]), dtype='float32')
401
+ for i in range(len(time_indices)):
402
+ var_cent[i,:] = fid.variables[varkey_c][time_indices[i]]
403
+ else:
404
+ var_cent = fid.variables[varkey_c][:]
405
+ else:
406
+ var_cent=getInds(fid.variables[varkey_c][:], timeSlices=time_indices, absMax=absMax)
407
+
408
+ if space_indices is not None:
409
+ # Maybe only return particular space indices. Could do this more
410
+ # efficiently by only reading those indices initially, if that proves
411
+ # important
412
+ if (len(var_cent.shape)>1):
413
+ var_cent = var_cent[:,space_indices]
414
+ else:
415
+ var_cent = var_cent[space_indices]
416
+
417
+ return var_cent
418
+
419
+
420
+ def _get_centroid_values(p, velocity_extrapolation, verbose, timeSlices,
421
+ minimum_allowed_height):
422
+ """
423
+ Function to get centroid information -- main interface is through
424
+ get_centroids.
425
+ See get_centroids for usage examples, and read_output or get_output for further relevant info
426
+ Input:
427
+ p -- EITHER:
428
+ The result of e.g. p=util.get_output('mysww.sww').
429
+ See the get_output class defined above.
430
+ OR:
431
+ Alternatively, the name of an sww file
432
+
433
+ velocity_extrapolation -- If true, and centroid values are not
434
+ in the file, then compute centroid velocities from vertex velocities, and
435
+ centroid momenta from centroid velocities. If false, and centroid values
436
+ are not in the file, then compute centroid momenta from vertex momenta,
437
+ and centroid velocities from centroid momenta
438
+
439
+ timeSlices = list of integer indices when we want output for, or
440
+ 'all' or 'last' or 'max'. See _read_output
441
+
442
+ minimum_allowed_height = height at which velocities are zeroed. See _read_output
443
+
444
+ Output: Values of x, y, Stage, xmom, ymom, elev, xvel, yvel, vel etc at centroids
445
+ """
446
+
447
+ #@ Figure out if p is a string (filename) or the output of get_output
448
+ pIsFile=(type(p) is str)
449
+
450
+ if(pIsFile):
451
+ fid=NetCDFFile(p)
452
+ else:
453
+ fid=NetCDFFile(p.filename)
454
+
455
+ # UPDATE: 15/06/2014 -- below, we now get all variables directly from the file
456
+ # This is more flexible, and allows to get 'max' as well
457
+ # However, potentially it could have performance penalities vs the old approach (?)
458
+
459
+ # Make 3 arrays, each containing one index of a vertex of every triangle.
460
+ vols=fid.variables['volumes'][:]
461
+ vols0=vols[:,0]
462
+ vols1=vols[:,1]
463
+ vols2=vols[:,2]
464
+
465
+ # Get lower-left offset
466
+ xllcorner=fid.xllcorner
467
+ yllcorner=fid.yllcorner
468
+
469
+ #@ Get timeSlices
470
+ # It will be either a list of integers, or 'max'
471
+ l=len(vols)
472
+ time=fid.variables['time'][:]
473
+ nts=len(time) # number of time slices in the file
474
+ if(timeSlices is None):
475
+ if(pIsFile):
476
+ # Assume all timeSlices
477
+ timeSlices=range(nts)
478
+ else:
479
+ timeSlices=copy.copy(p.timeSlices)
480
+ else:
481
+ # Treat word-based special cases
482
+ if(timeSlices is 'all'):
483
+ timeSlices=range(nts)
484
+ if(timeSlices is 'last'):
485
+ timeSlices=[nts-1]
486
+
487
+ #@ Get minimum_allowed_height
488
+ if(minimum_allowed_height is None):
489
+ if(pIsFile):
490
+ minimum_allowed_height=0.
491
+ else:
492
+ minimum_allowed_height=copy.copy(p.minimum_allowed_height)
493
+
494
+ # Treat specification of timeSlices
495
+ if(timeSlices=='all'):
496
+ inds=range(len(time))
497
+ elif(timeSlices=='last'):
498
+ inds=[len(time)-1]
499
+ elif(timeSlices=='max'):
500
+ inds='max' #
501
+ else:
502
+ try:
503
+ inds=list(timeSlices)
504
+ except:
505
+ inds=[timeSlices]
506
+
507
+ if(inds is not 'max'):
508
+ time=time[inds]
509
+ else:
510
+ # We can't really assign a time to 'max', but I guess max(time) is
511
+ # technically the right thing -- if not misleading
512
+ time=time.max()
513
+
514
+ # Get coordinates
515
+ x=fid.variables['x'][:]
516
+ y=fid.variables['y'][:]
517
+ x_cent=(x[vols0]+x[vols1]+x[vols2])/3.0
518
+ y_cent=(y[vols0]+y[vols1]+y[vols2])/3.0
519
+
520
+ # Stage and height and elevation
521
+ stage_cent = _getCentVar(fid, 'stage_c', time_indices=inds, vols=vols)
522
+ elev_cent = _getCentVar(fid, 'elevation_c', time_indices=inds, vols=vols)
523
+
524
+ if(len(elev_cent.shape)==2):
525
+ # Coerce to 1D array, since lots of our code assumes it is
526
+ elev_cent=elev_cent[0,:]
527
+
528
+ # Friction might not be stored at all
529
+ try:
530
+ friction_cent = _getCentVar(fid, 'friction_c', time_indices=inds, vols=vols)
531
+ except:
532
+ friction_cent=elev_cent*0.+numpy.nan
533
+
534
+ # Trick to treat the case where inds == 'max'
535
+ inds2 = copy.copy(inds)
536
+ if inds == 'max':
537
+ inds2 = range(len(fid.variables['time']))
538
+
539
+ # height
540
+ height_cent= stage_cent + 0.
541
+ for i in range(stage_cent.shape[0]):
542
+ height_cent[i,:] = stage_cent[i,:] - elev_cent
543
+
544
+ if fid.variables.has_key('xmomentum_c'):
545
+ # The following commented out lines seem to only work on
546
+ # some numpy/netcdf versions. So we loop
547
+ #xmom_cent = fid.variables['xmomentum_c'][inds2]
548
+ #ymom_cent = fid.variables['ymomentum_c'][inds2]
549
+ xmom_cent = numpy.zeros((len(inds2), fid.variables['xmomentum_c'].shape[1]), dtype='float32')
550
+ ymom_cent = numpy.zeros((len(inds2), fid.variables['ymomentum_c'].shape[1]), dtype='float32')
551
+ height_c_tmp = numpy.zeros((len(inds2), fid.variables['stage_c'].shape[1]), dtype='float32')
552
+ for i in range(len(inds2)):
553
+ xmom_cent[i,:] = fid.variables['xmomentum_c'][inds2[i]]
554
+ ymom_cent[i,:] = fid.variables['ymomentum_c'][inds2[i]]
555
+ if fid.variables.has_key('height_c'):
556
+ height_c_tmp[i,:] = fid.variables['height_c'][inds2[i]]
557
+ else:
558
+ height_c_tmp[i,:] = fid.variables['stage_c'][inds2[i]] - elev_cent
559
+
560
+ # Vel
561
+ hInv = 1.0/(height_c_tmp + 1.0e-12)
562
+ hWet = (height_c_tmp > minimum_allowed_height)
563
+ xvel_cent = xmom_cent*hInv*hWet
564
+ yvel_cent = ymom_cent*hInv*hWet
565
+
566
+ else:
567
+ # Get important vertex variables
568
+ xmom_v = numpy.zeros((len(inds2), fid.variables['xmomentum'].shape[1]), dtype='float32')
569
+ ymom_v = numpy.zeros((len(inds2), fid.variables['ymomentum'].shape[1]), dtype='float32')
570
+ stage_v = numpy.zeros((len(inds2), fid.variables['stage'].shape[1]), dtype='float32')
571
+ for i in range(len(inds2)):
572
+ xmom_v[i,:] = fid.variables['xmomentum'][inds2[i]]
573
+ ymom_v[i,:] = fid.variables['ymomentum'][inds2[i]]
574
+ stage_v[i,:] = fid.variables['stage'][inds2[i]]
575
+
576
+ elev_v = fid.variables['elevation']
577
+ # Fix elevation + get height at vertices
578
+ if (len(elev_v.shape)>1):
579
+ elev_v = numpy.zeros(elev_v.shape, dtype='float32')
580
+ for i in range(len(elev_v.shape[0])):
581
+ elev_v[i,:] = fid.variables['elevation'][inds2[i]]
582
+ height_v = stage_v - elev_v
583
+ else:
584
+ elev_v = elev_v[:]
585
+ height_v = stage_v + 0.
586
+ for i in range(stage_v.shape[0]):
587
+ height_v[i,:] = stage_v[i,:] - elev_v
588
+
589
+ # Height at centroids
590
+ height_c_tmp = (height_v[:, vols0] + height_v[:,vols1] + height_v[:,vols2])/3.0
591
+
592
+ # Compute xmom/xvel/ymom/yvel
593
+ if velocity_extrapolation:
594
+
595
+ xvel_v = xmom_v*0.
596
+ yvel_v = ymom_v*0.
597
+
598
+ hInv = 1.0/(height_v+1.0e-12)
599
+ hWet = (height_v > minimum_allowed_height)
600
+
601
+ xvel_v = xmom_v*hInv*hWet
602
+ yvel_v = ymom_v*hInv*hWet
603
+
604
+ # Final xmom/ymom centroid values
605
+ xvel_cent = (xvel_v[:, vols0] + xvel_v[:,vols1] + xvel_v[:,vols2])/3.0
606
+ xmom_cent = xvel_cent*height_c_tmp
607
+ yvel_cent = (yvel_v[:, vols0] + yvel_v[:,vols1] + yvel_v[:,vols2])/3.0
608
+ ymom_cent = yvel_cent*height_c_tmp
609
+
610
+ else:
611
+ hInv = 1.0/(height_c_tmp + 1.0e-12)
612
+ hWet = (height_c_tmp > minimum_allowed_height)
613
+
614
+ xmom_v = numpy.zeros((len(inds2), fid.variables['xmomentum'].shape[1]), dtype='float32')
615
+ ymom_v = numpy.zeros((len(inds2), fid.variables['ymomentum'].shape[1]), dtype='float32')
616
+ for i in range(len(inds2)):
617
+ xmom_v[i,:] = fid.variables['xmomentum'][inds2[i]]
618
+ ymom_v[i,:] = fid.variables['ymomentum'][inds2[i]]
619
+
620
+ xmom_cent = (xmom_v[:,vols0] + xmom_v[:,vols1] + xmom_v[:,vols2])/3.0
621
+ xvel_cent = xmom_cent*hInv*hWet
622
+ ymom_cent = (ymom_v[:,vols0] + ymom_v[:,vols1] + ymom_v[:,vols2])/3.0
623
+ yvel_cent = ymom_cent*hInv*hWet
624
+
625
+ # Velocity
626
+ vel_cent = (xvel_cent**2 + yvel_cent**2)**0.5
627
+
628
+ if inds == 'max':
629
+ vel_cent = vel_cent.max(axis=0, keepdims=True)
630
+ #vel_cent = getInds(vel_cent, timeSlices=inds)
631
+ xmom_cent = getInds(xmom_cent, timeSlices=inds, absMax=True)
632
+ ymom_cent = getInds(ymom_cent, timeSlices=inds, absMax=True)
633
+ xvel_cent = getInds(xvel_cent, timeSlices=inds, absMax=True)
634
+ yvel_cent = getInds(yvel_cent, timeSlices=inds, absMax=True)
635
+
636
+ fid.close()
637
+
638
+ return time, x_cent, y_cent, stage_cent, xmom_cent,\
639
+ ymom_cent, height_cent, elev_cent, friction_cent,\
640
+ xvel_cent, yvel_cent, vel_cent, xllcorner, yllcorner, inds
641
+
642
+
643
+ def animate_1D(time, var, x, ylab=' '):
644
+ """Animate a 2d array with a sequence of 1d plots
645
+
646
+ Input: time = one-dimensional time vector;
647
+ var = array with first dimension = len(time) ;
648
+ x = (optional) vector width dimension equal to var.shape[1];
649
+ ylab = ylabel for plot
650
+ """
651
+
652
+ import pylab
653
+ import numpy
654
+
655
+
656
+
657
+ pylab.close()
658
+ pylab.ion()
659
+
660
+ # Initial plot
661
+ vmin=var.min()
662
+ vmax=var.max()
663
+ line, = pylab.plot( (x.min(), x.max()), (vmin, vmax), 'o')
664
+
665
+ # Lots of plots
666
+ for i in range(len(time)):
667
+ line.set_xdata(x)
668
+ line.set_ydata(var[i,:])
669
+ pylab.draw()
670
+ pylab.xlabel('x')
671
+ pylab.ylabel(ylab)
672
+ pylab.title('time = ' + str(time[i]))
673
+
674
+ return
675
+
676
+ def near_transect(p, point1, point2, tol=1.):
677
+ # Function to get the indices of points in p less than 'tol' from the line
678
+ # joining (x1,y1), and (x2,y2)
679
+ # p comes from util.get_output('mysww.sww')
680
+ #
681
+ # e.g.
682
+ # import util
683
+ # from matplotlib import pyplot
684
+ # p=util.get_output('merewether_1m.sww',0.01)
685
+ # p2=util.get_centroids(p,velocity_extrapolation=True)
686
+ # #xxx=transect_interpolate.near_transect(p,[95., 85.], [120.,68.],tol=2.)
687
+ # xxx=util.near_transect(p,[95., 85.], [120.,68.],tol=2.)
688
+ # pyplot.scatter(xxx[1],p.vel[140,xxx[0]],color='red')
689
+
690
+ x1=point1[0]
691
+ y1=point1[1]
692
+
693
+ x2=point2[0]
694
+ y2=point2[1]
695
+
696
+ # Find line equation a*x + b*y + c = 0
697
+ # based on y=gradient*x +intercept
698
+ if x1!=x2:
699
+ gradient= (y2-y1)/(x2-x1)
700
+ intercept = y1 - gradient*x1
701
+ #
702
+ a = -gradient
703
+ b = 1.
704
+ c = -intercept
705
+ else:
706
+ a=1.
707
+ b=0.
708
+ c=-x2
709
+
710
+ # Distance formula
711
+ inv_denom = 1./(a**2 + b**2)**0.5
712
+ distp = abs(p.x*a + p.y*b + c)*inv_denom
713
+
714
+ near_points = (distp<tol).nonzero()[0]
715
+
716
+ # Now find a 'local' coordinate for the point, projected onto the line
717
+ # g1 = unit vector parallel to the line
718
+ # g2 = vector joining (x1,y1) and (p.x,p.y)
719
+ g1x = x2-x1
720
+ g1y = y2-y1
721
+ g1_norm = (g1x**2 + g1y**2)**0.5
722
+ g1x=g1x/g1_norm
723
+ g1y=g1y/g1_norm
724
+
725
+ g2x = p.x[near_points] - x1
726
+ g2y = p.y[near_points] - y1
727
+
728
+ # Dot product = projected distance == a local coordinate
729
+ local_coord = g1x*g2x + g1y*g2y
730
+
731
+ # only keep coordinates between zero and the distance along the line
732
+ dl=((x1-x2)**2+(y1-y2)**2)**0.5
733
+ keepers=(local_coord<=dl)*(local_coord>=0.)
734
+ keepers=keepers.nonzero()
735
+
736
+ return near_points[keepers], local_coord[keepers]
737
+
738
+
739
+ def triangle_areas(p, subset=None):
740
+ # Compute areas of triangles in p -- assumes p contains vertex information
741
+ # subset = vector of centroid indices to include in the computation.
742
+
743
+ if(subset is None):
744
+ subset=range(len(p.vols[:,0]))
745
+
746
+ x0=p.x[p.vols[subset,0]]
747
+ x1=p.x[p.vols[subset,1]]
748
+ x2=p.x[p.vols[subset,2]]
749
+
750
+ y0=p.y[p.vols[subset,0]]
751
+ y1=p.y[p.vols[subset,1]]
752
+ y2=p.y[p.vols[subset,2]]
753
+
754
+ # Vectors for cross-product
755
+ v1_x=x0-x1
756
+ v1_y=y0-y1
757
+ #
758
+ v2_x=x2-x1
759
+ v2_y=y2-y1
760
+ # Area
761
+ area=(v1_x*v2_y-v1_y*v2_x)*0.5
762
+ area=abs(area)
763
+ return area
764
+
765
+
766
+ def water_volume(p, p2, per_unit_area=False, subset=None):
767
+ # Compute the water volume from p(vertex values) and p2(centroid values)
768
+
769
+ if(subset is None):
770
+ subset=range(len(p2.x))
771
+
772
+ l=len(p2.time)
773
+ area=triangle_areas(p, subset=subset)
774
+
775
+ total_area=area.sum()
776
+ volume=p2.time*0.
777
+
778
+ # This accounts for how volume is measured in ANUGA
779
+ # Compute in 2 steps to reduce precision error from limited SWW precision
780
+ # FIXME: Is this really needed?
781
+ for i in range(l):
782
+ #volume[i]=((p2.stage[i,subset]-p2.elev[subset])*(p2.stage[i,subset]>p2.elev[subset])*area).sum()
783
+ volume[i]=((p2.stage[i,subset])*(p2.stage[i,subset]>p2.elev[subset])*area).sum()
784
+ volume[i]=volume[i]+((-p2.elev[subset])*(p2.stage[i,subset]>p2.elev[subset])*area).sum()
785
+
786
+ if(per_unit_area):
787
+ volume=volume/total_area
788
+
789
+ return volume
790
+
791
+
792
+ def get_triangle_containing_point(p,point, search_order=None):
793
+
794
+ V = p.vols
795
+
796
+ x = p.x
797
+ y = p.y
798
+
799
+ from anuga.geometry.polygon import is_outside_polygon,is_inside_polygon
800
+
801
+ if search_order is None:
802
+ # Estimate a good search order by finding the distance to the first
803
+ # vertex of every triangle, and doing the search ordered by that
804
+ # distance.
805
+ point_distance2 = (x[V[:,0]] - point[0])**2 + (y[V[:,0]]-point[1])**2
806
+ point_distance_order = point_distance2.argsort().tolist()
807
+ else:
808
+ point_distance_order = search_order
809
+
810
+ for i in point_distance_order:
811
+ i0 = V[i,0]
812
+ i1 = V[i,1]
813
+ i2 = V[i,2]
814
+ poly = [ [x[i0], y[i0]], [x[i1], y[i1]], [x[i2], y[i2]] ]
815
+
816
+ if is_inside_polygon(point, poly, closed=True):
817
+ return i
818
+
819
+ msg = 'Point %s not found within a triangle' %str(point)
820
+ raise Exception(msg)
821
+
822
+
823
+ def get_extent(p):
824
+
825
+ import numpy
826
+
827
+ x_min = numpy.min(p.x)
828
+ x_max = numpy.max(p.x)
829
+
830
+ y_min = numpy.min(p.y)
831
+ y_max = numpy.max(p.y)
832
+
833
+ return x_min, x_max, y_min, y_max
834
+
835
+
836
+
837
+ def make_grid(data, lats, lons, fileName, EPSG_CODE=None, proj4string=None,
838
+ creation_options=[]):
839
+ """
840
+ Convert data,lats,lons to a georeferenced raster tif
841
+ INPUT: data -- array with desired raster cell values
842
+ lats -- 1d array with 'latitude' or 'y' range
843
+ lons -- 1D array with 'longitude' or 'x' range
844
+ fileName -- name of file to write to
845
+ EPSG_CODE -- Integer code with projection information in EPSG format
846
+ proj4string -- proj4string with projection information
847
+ creation_options -- list of tif creation options for gdal (e.g. ["COMPRESS=DEFLATE"])
848
+
849
+ NOTE: proj4string is used in preference to EPSG_CODE if available
850
+ """
851
+
852
+ try:
853
+ import gdal
854
+ import osr
855
+ except ImportError, e:
856
+ msg='Failed to import gdal/ogr modules --'\
857
+ + 'perhaps gdal python interface is not installed.'
858
+ raise ImportError, msg
859
+
860
+
861
+
862
+ xres = lons[1] - lons[0]
863
+ yres = lats[1] - lats[0]
864
+
865
+ ysize = len(lats)
866
+ xsize = len(lons)
867
+
868
+ # Assume data/lats/longs refer to cell centres, and compute upper left coordinate
869
+ ulx = lons[0] - (xres / 2.)
870
+ uly = lats[lats.shape[0]-1] + (yres / 2.)
871
+
872
+ # GDAL magic to make the tif
873
+ driver = gdal.GetDriverByName('GTiff')
874
+ ds = driver.Create(fileName, xsize, ysize, 1, gdal.GDT_Float32,
875
+ creation_options)
876
+
877
+ srs = osr.SpatialReference()
878
+ if(proj4string is not None):
879
+ srs.ImportFromProj4(proj4string)
880
+ elif(EPSG_CODE is not None):
881
+ srs.ImportFromEPSG(EPSG_CODE)
882
+ else:
883
+ raise Exception, 'No spatial reference information given'
884
+
885
+
886
+ ds.SetProjection(srs.ExportToWkt())
887
+
888
+ gt = [ulx, xres, 0, uly, 0, -yres ]
889
+ #gt = [llx, xres, 0, lly, yres,0 ]
890
+ ds.SetGeoTransform(gt)
891
+
892
+ #import pdb
893
+ #pdb.set_trace()
894
+ import scipy
895
+
896
+ outband = ds.GetRasterBand(1)
897
+ outband.SetNoDataValue(numpy.nan)
898
+ outband.WriteArray(data)
899
+
900
+ ds = None
901
+ return
902
+
903
+ ##################################################################################
904
+
905
+ def Make_Geotif(swwFile=None,
906
+ output_quantities=['depth'],
907
+ myTimeStep=0, CellSize=100.0,
908
+ lower_left=None, upper_right=None,
909
+ EPSG_CODE=None,
910
+ proj4string=None,
911
+ velocity_extrapolation=True,
912
+ min_allowed_height=1.0e-05,
913
+ output_dir='TIFS',
914
+ bounding_polygon=None,
915
+ verbose=False,
916
+ k_nearest_neighbours=3,
917
+ creation_options=[]):
918
+ """
919
+ Make a georeferenced tif by nearest-neighbour interpolation of sww file outputs (or a 3-column array with xyz Points)
920
+
921
+ You must supply projection information as either a proj4string or an integer EPSG_CODE (but not both!)
922
+
923
+ INPUTS: swwFile -- name of sww file, OR a 3-column array with x/y/z
924
+ points. In the latter case x and y are assumed to be in georeferenced
925
+ coordinates. The output raster will contain 'z', and will have a name-tag
926
+ based on the name in 'output_quantities'.
927
+ output_quantities -- list of quantitiies to plot, e.g.
928
+ ['depth', 'velocity', 'stage','elevation','depthIntegratedVelocity','friction']
929
+ myTimeStep -- list containing time-index of swwFile to plot (e.g. [0, 10, 32] ) or 'last', or 'max', or 'all'
930
+ CellSize -- approximate pixel size for output raster [adapted to fit lower_left / upper_right]
931
+ lower_left -- [x0,y0] of lower left corner. If None, use extent of swwFile.
932
+ upper_right -- [x1,y1] of upper right corner. If None, use extent of swwFile.
933
+ EPSG_CODE -- Projection information as an integer EPSG code (e.g. 3123 for PRS92 Zone 3, 32756 for UTM Zone 56 S, etc).
934
+ Google for info on EPSG Codes
935
+ proj4string -- Projection information as a proj4string (e.g. '+init=epsg:3123')
936
+ Google for info on proj4strings.
937
+ velocity_extrapolation -- Compute velocity assuming the code extrapolates with velocity (instead of momentum)?
938
+ min_allowed_height -- Minimum allowed height from ANUGA
939
+ output_dir -- Write outputs to this directory
940
+ bounding_polygon -- polygon (e.g. from read_polygon) If present, only set values of raster cells inside the bounding_polygon
941
+ k_nearest_neighbours -- how many neighbours to use in interpolation. If k>1, inverse-distance-weighted interpolation is used
942
+ creation_options -- list of tif creation options for gdal, e.g. ['COMPRESS=DEFLATE']
943
+ """
944
+
945
+ #import pdb
946
+ #pdb.set_trace()
947
+
948
+ import scipy.io
949
+ import scipy.interpolate
950
+ import scipy.spatial
951
+ import anuga
952
+ from anuga.utilities import plot_utils as util
953
+ import os
954
+
955
+ try:
956
+ import gdal
957
+ import osr
958
+ except ImportError, e:
959
+ msg='Failed to import gdal/ogr modules --'\
960
+ + 'perhaps gdal python interface is not installed.'
961
+ raise ImportError, msg
962
+
963
+
964
+
965
+
966
+
967
+
968
+ # Check whether swwFile is an array, and if so, redefine various inputs to
969
+ # make the code work
970
+ if(type(swwFile)==scipy.ndarray):
971
+ import copy
972
+ xyzPoints=copy.copy(swwFile)
973
+ swwFile=None
974
+
975
+ if(((EPSG_CODE is None) & (proj4string is None) )|
976
+ ((EPSG_CODE is not None) & (proj4string is not None))):
977
+ raise Exception, 'Must specify EITHER an integer EPSG_CODE describing the file projection, OR a proj4string'
978
+
979
+
980
+ # Make output_dir
981
+ try:
982
+ os.mkdir(output_dir)
983
+ except:
984
+ pass
985
+
986
+ if(swwFile is not None):
987
+ # Read in ANUGA outputs
988
+
989
+
990
+
991
+ if(verbose):
992
+ print 'Reading sww File ...'
993
+ p2=util.get_centroids(swwFile, velocity_extrapolation, timeSlices=myTimeStep,
994
+ minimum_allowed_height=min_allowed_height)
995
+ xllcorner=p2.xllcorner
996
+ yllcorner=p2.yllcorner
997
+
998
+ #if(myTimeStep=='all'):
999
+ # myTimeStep=range(len(p2.time))
1000
+ #elif(myTimeStep=='last'):
1001
+ # # This is [0]!
1002
+ # myTimeStep=[len(p2.time)-1]
1003
+
1004
+ myTimeStep_Orig = myTimeStep
1005
+ # Now, myTimeStep just holds indices we want to plot in p2
1006
+ if(myTimeStep!='max'):
1007
+ myTimeStep=range(len(p2.time))
1008
+
1009
+ # Ensure myTimeStep is a list
1010
+ if type(myTimeStep)!=list:
1011
+ myTimeStep=[myTimeStep]
1012
+
1013
+ if(verbose):
1014
+ print 'Extracting required data ...'
1015
+ # Get ANUGA points
1016
+ swwX=p2.x+xllcorner
1017
+ swwY=p2.y+yllcorner
1018
+ else:
1019
+ # Get the point data from the 3-column array
1020
+ if(xyzPoints.shape[1]!=3):
1021
+ raise Exception, 'If an array is passed, it must have exactly 3 columns'
1022
+ if(len(output_quantities)!=1):
1023
+ raise Exception, 'Can only have 1 output quantity when passing an array'
1024
+ swwX=xyzPoints[:,0]
1025
+ swwY=xyzPoints[:,1]
1026
+ myTimeStep=['pointData']
1027
+
1028
+ # Grid for meshing
1029
+ if(verbose):
1030
+ print 'Computing grid of output locations...'
1031
+ # Get points where we want raster cells
1032
+ if(lower_left is None):
1033
+ lower_left=[swwX.min(),swwY.min()]
1034
+ if(upper_right is None):
1035
+ upper_right=[swwX.max(),swwY.max()]
1036
+ nx=round((upper_right[0]-lower_left[0])*1.0/(1.0*CellSize)) + 1
1037
+ xres=(upper_right[0]-lower_left[0])*1.0/(1.0*(nx-1))
1038
+ desiredX=scipy.linspace(lower_left[0], upper_right[0],nx )
1039
+ ny=round((upper_right[1]-lower_left[1])*1.0/(1.0*CellSize)) + 1
1040
+ yres=(upper_right[1]-lower_left[1])*1.0/(1.0*(ny-1))
1041
+ desiredY=scipy.linspace(lower_left[1], upper_right[1], ny)
1042
+
1043
+ gridX, gridY=scipy.meshgrid(desiredX,desiredY)
1044
+
1045
+ if(verbose):
1046
+ print 'Making interpolation functions...'
1047
+ swwXY=scipy.array([swwX[:],swwY[:]]).transpose()
1048
+
1049
+ # Get function to interpolate quantity onto gridXY_array
1050
+ gridXY_array=scipy.array([scipy.concatenate(gridX),
1051
+ scipy.concatenate(gridY)]).transpose()
1052
+ gridXY_array=scipy.ascontiguousarray(gridXY_array)
1053
+
1054
+ # Create Interpolation function
1055
+ #basic_nearest_neighbour=False
1056
+ if(k_nearest_neighbours==1):
1057
+ index_qFun = scipy.interpolate.NearestNDInterpolator(
1058
+ swwXY,
1059
+ scipy.arange(len(swwX),dtype='int64').transpose())
1060
+ gridqInd = index_qFun(gridXY_array)
1061
+ # Function to do the interpolation
1062
+ def myInterpFun(quantity):
1063
+ return quantity[gridqInd]
1064
+ else:
1065
+ # Combined nearest neighbours and inverse-distance interpolation
1066
+ index_qFun = scipy.spatial.cKDTree(swwXY)
1067
+ NNInfo = index_qFun.query(gridXY_array, k=k_nearest_neighbours)
1068
+ # Weights for interpolation
1069
+ nn_wts = 1./(NNInfo[0]+1.0e-100)
1070
+ nn_inds = NNInfo[1]
1071
+ def myInterpFun(quantity):
1072
+ denom = 0.
1073
+ num = 0.
1074
+ for i in range(k_nearest_neighbours):
1075
+ denom += nn_wts[:,i]
1076
+ num += quantity[nn_inds[:,i]]*nn_wts[:,i]
1077
+ return (num/denom)
1078
+
1079
+ if(bounding_polygon is not None):
1080
+ # Find points to exclude (i.e. outside the bounding polygon)
1081
+ from anuga.geometry.polygon import outside_polygon
1082
+ cut_points = outside_polygon(gridXY_array, bounding_polygon)
1083
+
1084
+ #print cut_points.shape
1085
+ #cut_points=(nxutils.points_inside_poly(gridXY_array, bounding_polygon)==False).nonzero()[0]
1086
+
1087
+ # Loop over all output quantities and produce the output
1088
+ for myTSindex, myTSi in enumerate(myTimeStep):
1089
+ if(verbose):
1090
+ print 'Reduction = ', myTSi
1091
+ for output_quantity in output_quantities:
1092
+ if (verbose): print output_quantity
1093
+
1094
+ if(myTSi is not 'max'):
1095
+ myTS=myTSi
1096
+ else:
1097
+ # We have already extracted the max, and e.g.
1098
+ # p2.stage is an array of dimension (1, number_of_pointS).
1099
+ myTS=0
1100
+
1101
+ if(type(myTS)==int):
1102
+ if(output_quantity=='stage'):
1103
+ gridq=myInterpFun(p2.stage[myTS,:])
1104
+ if(output_quantity=='depth'):
1105
+ gridq=p2.height[myTS,:]*(p2.height[myTS,:]>0.)# Force positive depth (tsunami alg)
1106
+ gridq=myInterpFun(gridq)
1107
+ if(output_quantity=='velocity'):
1108
+ gridq=myInterpFun(p2.vel[myTS,:])
1109
+ if(output_quantity=='friction'):
1110
+ gridq=myInterpFun(p2.friction)
1111
+ if(output_quantity=='depthIntegratedVelocity'):
1112
+ swwDIVel=(p2.xmom[myTS,:]**2+p2.ymom[myTS,:]**2)**0.5
1113
+ gridq=myInterpFun(swwDIVel)
1114
+ if(output_quantity=='elevation'):
1115
+ gridq=myInterpFun(p2.elev)
1116
+
1117
+ if(myTSi is 'max'):
1118
+ timestepString='max'
1119
+ else:
1120
+ timestepString=str(myTimeStep_Orig[myTSindex])+'_Time_'+str(round(p2.time[myTS]))
1121
+ elif(myTS=='pointData'):
1122
+ gridq=myInterpFun(xyzPoints[:,2])
1123
+
1124
+
1125
+ if ( (bounding_polygon is not None) and (len(cut_points)>0)):
1126
+ # Cut the points outside the bounding polygon
1127
+ gridq[cut_points]= numpy.nan
1128
+
1129
+ # Make name for output file
1130
+ if(myTS!='pointData'):
1131
+ output_name=output_dir+'/'+os.path.splitext(os.path.basename(swwFile))[0] + '_'+\
1132
+ output_quantity+'_'+timestepString+\
1133
+ '.tif'
1134
+ #'_'+str(myTS)+'.tif'
1135
+ else:
1136
+ output_name=output_dir+'/'+'PointData_'+output_quantity+'.tif'
1137
+
1138
+ if(verbose):
1139
+ print 'Making raster ...'
1140
+ gridq.shape=(len(desiredY),len(desiredX))
1141
+ make_grid(scipy.flipud(gridq),desiredY,desiredX, output_name,EPSG_CODE=EPSG_CODE,
1142
+ proj4string=proj4string, creation_options=creation_options)
1143
+
1144
+ return
1145
+
1146
+ def plot_triangles(p, adjustLowerLeft=False, values=None, values_cmap=matplotlib.cm.jet, edgecolors='k'):
1147
+ """ Add mesh triangles to a pyplot plot
1148
+
1149
+ @param p = object holding sww vertex information (from util.get_output)
1150
+ @param adjustLowerLeft = if TRUE, use spatial coordinates, otherwise use ANUGA internal coordinates
1151
+ @param values = list or array of length(p.x), or None. All triangles are assigned this value (for face plotting colors).
1152
+ @param values_cmap = colormap for faces [e.g. values_cmap = matplotlib.cm.get_cmap('spectral')]
1153
+ @param edgecolors = edge color for polygons (using matplotlib.colors notation). Use 'none' for no color
1154
+ """
1155
+ import matplotlib
1156
+ from matplotlib import pyplot as pyplot
1157
+ from matplotlib.collections import PolyCollection
1158
+
1159
+ x0=p.xllcorner
1160
+ y0=p.yllcorner
1161
+
1162
+ # Make vertices for PolyCollection Object
1163
+ vertices = []
1164
+ for i in range(len(p.vols)):
1165
+ k1=p.vols[i][0]
1166
+ k2=p.vols[i][1]
1167
+ k3=p.vols[i][2]
1168
+ if not adjustLowerLeft:
1169
+ vertices.append([ [p.x[k1], p.y[k1]], [p.x[k2], p.y[k2]], [p.x[k3], p.y[k3]] ])
1170
+ else:
1171
+ vertices.append([ [p.x[k1]+x0, p.y[k1]+y0], [p.x[k2]+x0, p.y[k2]+y0], [p.x[k3]+x0, p.y[k3]+y0] ])
1172
+
1173
+ # Make PolyCollection
1174
+ if values is None:
1175
+ all_poly = PolyCollection( vertices, array = numpy.zeros(len(p.vols)),
1176
+ edgecolors=edgecolors)
1177
+ all_poly.set_facecolor('none')
1178
+ else:
1179
+ assert len(values)==len(p.vols), 'len(values) must either be 1, or the same as len(p.vols)'
1180
+ all_poly = PolyCollection( vertices, array = values, cmap = values_cmap, edgecolors=edgecolors)
1181
+
1182
+ # Add to plot
1183
+ # FIXME: To see the triangles, this might require that the user does
1184
+ # something else to the plot?
1185
+ pyplot.gca().add_collection(all_poly)
1186
+
1187
+ def find_neighbours(p,ind):
1188
+ """
1189
+ Find the triangles neighbouring triangle 'ind'
1190
+ p is an object from get_output containing mesh vertices
1191
+ """
1192
+ ind_nei=p.vols[ind]
1193
+
1194
+ shared_nei0=p.vols[:,1]*0.0
1195
+ shared_nei1=p.vols[:,1]*0.0
1196
+ shared_nei2=p.vols[:,1]*0.0
1197
+ # Compute indices that match one of the vertices of triangle ind
1198
+ # Note: Each triangle can only match a vertex, at most, once
1199
+ for i in range(3):
1200
+ shared_nei0+=1*(p.x[p.vols[:,i]]==p.x[ind_nei[0]])*\
1201
+ 1*(p.y[p.vols[:,i]]==p.y[ind_nei[0]])
1202
+
1203
+ shared_nei1+=1*(p.x[p.vols[:,i]]==p.x[ind_nei[1]])*\
1204
+ 1*(p.y[p.vols[:,i]]==p.y[ind_nei[1]])
1205
+
1206
+ shared_nei2+=1*(p.x[p.vols[:,i]]==p.x[ind_nei[2]])*\
1207
+ 1*(p.y[p.vols[:,i]]==p.y[ind_nei[2]])
1208
+
1209
+ out=(shared_nei2 + shared_nei1 + shared_nei0)
1210
+ return((out==2).nonzero())
1211
+
1212
+ def calc_edge_elevations(p):
1213
+ """
1214
+ Compute the triangle edge elevations on p
1215
+ Return x,y,elev for edges
1216
+ """
1217
+ pe_x=p.x*0.
1218
+ pe_y=p.y*0.
1219
+ pe_el=p.elev*0.
1220
+
1221
+
1222
+ # Compute coordinates + elevations
1223
+ pe_x[p.vols[:,0]] = 0.5*(p.x[p.vols[:,1]] + p.x[p.vols[:,2]])
1224
+ pe_y[p.vols[:,0]] = 0.5*(p.y[p.vols[:,1]] + p.y[p.vols[:,2]])
1225
+ pe_el[p.vols[:,0]] = 0.5*(p.elev[p.vols[:,1]] + p.elev[p.vols[:,2]])
1226
+
1227
+ pe_x[p.vols[:,1]] = 0.5*(p.x[p.vols[:,0]] + p.x[p.vols[:,2]])
1228
+ pe_y[p.vols[:,1]] = 0.5*(p.y[p.vols[:,0]] + p.y[p.vols[:,2]])
1229
+ pe_el[p.vols[:,1]] = 0.5*(p.elev[p.vols[:,0]] + p.elev[p.vols[:,2]])
1230
+
1231
+ pe_x[p.vols[:,2]] = 0.5*(p.x[p.vols[:,0]] + p.x[p.vols[:,1]])
1232
+ pe_y[p.vols[:,2]] = 0.5*(p.y[p.vols[:,0]] + p.y[p.vols[:,1]])
1233
+ pe_el[p.vols[:,2]] = 0.5*(p.elev[p.vols[:,0]] + p.elev[p.vols[:,1]])
1234
+
1235
+ return [pe_x, pe_y, pe_el]
1236
+
1237
+