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,1552 @@
1
+ """ Classes to read an SWW file.
2
+ """
3
+
4
+ import exceptions
5
+ class DataFileNotOpenError(exceptions.Exception): pass
6
+ class DataMissingValuesError(exceptions.Exception): pass
7
+ class NewQuantity(exceptions.Exception): pass
8
+ class DataDomainError(exceptions.Exception): pass
9
+ class DataTimeError(exceptions.Exception): pass
10
+
11
+ import numpy
12
+ from anuga.coordinate_transforms.geo_reference import Geo_reference
13
+ from anuga.config import netcdf_mode_r, netcdf_mode_w, netcdf_mode_a
14
+ from anuga.config import netcdf_float, netcdf_float32, netcdf_int, netcdf_float64
15
+ from anuga.config import max_float
16
+ from anuga.utilities.numerical_tools import ensure_numeric
17
+ import anuga.utilities.log as log
18
+ from anuga.file.netcdf import NetCDFFile
19
+
20
+ from anuga.config import minimum_storable_height as default_minimum_storable_height
21
+
22
+ from sts import Write_sts
23
+
24
+ from anuga.coordinate_transforms.geo_reference import \
25
+ ensure_geo_reference
26
+
27
+ from anuga.utilities.file_utils import create_filename
28
+ import numpy as num
29
+
30
+ class Data_format:
31
+ """Generic interface to data formats
32
+ """
33
+
34
+ def __init__(self, domain, extension, mode=netcdf_mode_w):
35
+ assert mode[0] in ['r', 'w', 'a'], \
36
+ "Mode %s must be either:\n" % mode + \
37
+ " 'w' (write)\n" + \
38
+ " 'r' (read)\n" + \
39
+ " 'a' (append)"
40
+
41
+ #Create filename
42
+ self.filename = create_filename(domain.get_datadir(),
43
+ domain.get_name(), extension)
44
+
45
+ self.timestep = 0
46
+ self.domain = domain
47
+
48
+ # Probably should exclude ghosts in case this is a parallel domain
49
+
50
+ self.number_of_nodes = domain.number_of_nodes
51
+ self.number_of_volumes = domain.number_of_triangles
52
+ #self.number_of_volumes = len(domain)
53
+
54
+ #FIXME: Should we have a general set_precision function?
55
+
56
+
57
+ class SWW_file(Data_format):
58
+ """Interface to native NetCDF format (.sww) for storing model output
59
+
60
+ There are two kinds of data
61
+
62
+ 1: Constant data: Vertex coordinates and field values. Stored once
63
+ 2: Variable data: Conserved quantities. Stored once per timestep.
64
+
65
+ All data is assumed to reside at vertex locations.
66
+ """
67
+
68
+ def __init__(self, domain,
69
+ mode=netcdf_mode_w, max_size=200000000000, recursion=False):
70
+
71
+ self.precision = netcdf_float32 # Use single precision for quantities
72
+ self.recursion = recursion
73
+ self.mode = mode
74
+
75
+ if hasattr(domain, 'max_size'):
76
+ self.max_size = domain.max_size # File size max is 2Gig
77
+ else:
78
+ self.max_size = max_size
79
+
80
+ if hasattr(domain, 'store_centroids'):
81
+ self.store_centroids = domain.store_centroids
82
+ else:
83
+ self.store_centroids = False
84
+
85
+ if hasattr(domain, 'minimum_storable_height'):
86
+ self.minimum_storable_height = domain.minimum_storable_height
87
+ else:
88
+ self.minimum_storable_height = default_minimum_storable_height
89
+
90
+ # Call parent constructor
91
+ Data_format.__init__(self, domain, 'sww', mode)
92
+
93
+ # Get static and dynamic quantities from domain
94
+ static_quantities = []
95
+ dynamic_quantities = []
96
+ static_c_quantities = []
97
+ dynamic_c_quantities = []
98
+
99
+ for q in domain.quantities_to_be_stored:
100
+ flag = domain.quantities_to_be_stored[q]
101
+
102
+ msg = 'Quantity %s is requested to be stored ' % q
103
+ msg += 'but it does not exist in domain.quantities'
104
+ assert q in domain.quantities, msg
105
+
106
+ assert flag in [1,2]
107
+ if flag == 1:
108
+ static_quantities.append(q)
109
+ if self.store_centroids: static_c_quantities.append(q+'_c')
110
+
111
+ if flag == 2:
112
+ dynamic_quantities.append(q)
113
+ if self.store_centroids: dynamic_c_quantities.append(q+'_c')
114
+
115
+
116
+ # NetCDF file definition
117
+ fid = NetCDFFile(self.filename, mode)
118
+ if mode[0] == 'w':
119
+ description = 'Output from anuga.file.sww ' \
120
+ 'suitable for plotting'
121
+
122
+ self.writer = Write_sww(static_quantities,
123
+ dynamic_quantities,
124
+ static_c_quantities,
125
+ dynamic_c_quantities)
126
+
127
+ self.writer.store_header(fid,
128
+ domain.starttime,
129
+ self.number_of_volumes,
130
+ self.domain.number_of_nodes,
131
+ description=description,
132
+ smoothing=domain.smooth,
133
+ order=domain.default_order,
134
+ sww_precision=self.precision)
135
+
136
+ # Extra optional information
137
+ if hasattr(domain, 'texture'):
138
+ fid.texture = domain.texture
139
+
140
+ if domain.quantities_to_be_monitored is not None:
141
+ fid.createDimension('singleton', 1)
142
+ fid.createDimension('two', 2)
143
+
144
+ poly = domain.monitor_polygon
145
+ if poly is not None:
146
+ N = len(poly)
147
+ fid.createDimension('polygon_length', N)
148
+ fid.createVariable('extrema.polygon',
149
+ self.precision,
150
+ ('polygon_length', 'two'))
151
+ fid.variables['extrema.polygon'][:] = poly
152
+
153
+ interval = domain.monitor_time_interval
154
+ if interval is not None:
155
+ fid.createVariable('extrema.time_interval',
156
+ self.precision,
157
+ ('two',))
158
+ fid.variables['extrema.time_interval'][:] = interval
159
+
160
+ for q in domain.quantities_to_be_monitored:
161
+ fid.createVariable(q + '.extrema', self.precision,
162
+ ('numbers_in_range',))
163
+ fid.createVariable(q + '.min_location', self.precision,
164
+ ('numbers_in_range',))
165
+ fid.createVariable(q + '.max_location', self.precision,
166
+ ('numbers_in_range',))
167
+ fid.createVariable(q + '.min_time', self.precision,
168
+ ('singleton',))
169
+ fid.createVariable(q + '.max_time', self.precision,
170
+ ('singleton',))
171
+
172
+ fid.close()
173
+
174
+ def store_connectivity(self):
175
+ """Store information about nodes, triangles and static quantities
176
+
177
+ Writes x,y coordinates of triangles and their connectivity.
178
+
179
+ Store also any quantity that has been identified as static.
180
+ """
181
+
182
+ # FIXME: Change name to reflect the fact thta this function
183
+ # stores both connectivity (triangulation) and static quantities
184
+
185
+
186
+ domain = self.domain
187
+
188
+ # append to the NetCDF file
189
+ fid = NetCDFFile(self.filename, netcdf_mode_a)
190
+
191
+ # Get X, Y from one (any) of the quantities
192
+ Q = domain.quantities.values()[0]
193
+ X,Y,_,V = Q.get_vertex_values(xy=True, precision=self.precision)
194
+
195
+ # store the connectivity data
196
+ points = num.concatenate((X[:,num.newaxis],Y[:,num.newaxis]), axis=1)
197
+ self.writer.store_triangulation(fid,
198
+ points,
199
+ V.astype(num.float32),
200
+ points_georeference=\
201
+ domain.geo_reference)
202
+
203
+
204
+ if domain.parallel:
205
+ self.writer.store_parallel_data(fid,
206
+ domain.number_of_global_triangles,
207
+ domain.number_of_global_nodes,
208
+ domain.tri_full_flag,
209
+ domain.tri_l2g,
210
+ domain.node_l2g)
211
+
212
+
213
+ # Get names of static quantities
214
+ static_quantities = {}
215
+ static_quantities_centroid = {}
216
+
217
+ for name in self.writer.static_quantities:
218
+ Q = domain.quantities[name]
219
+ A, _ = Q.get_vertex_values(xy=False,
220
+ precision=self.precision)
221
+ static_quantities[name] = A
222
+
223
+ #print domain.quantities
224
+ #print self.writer.static_c_quantities
225
+
226
+ for name in self.writer.static_c_quantities:
227
+ Q = domain.quantities[name[:-2]] # rip off _c from name
228
+ static_quantities_centroid[name] = Q.centroid_values
229
+
230
+ # Store static quantities
231
+ self.writer.store_static_quantities(fid, **static_quantities)
232
+ self.writer.store_static_quantities_centroid(fid, **static_quantities_centroid)
233
+
234
+ fid.close()
235
+
236
+
237
+ def store_timestep(self):
238
+ """Store time and time dependent quantities
239
+ """
240
+
241
+ #import types
242
+ from time import sleep
243
+ from os import stat
244
+
245
+
246
+ # Get NetCDF
247
+ retries = 0
248
+ file_open = False
249
+ while not file_open and retries < 10:
250
+ try:
251
+ # Open existing file
252
+ fid = NetCDFFile(self.filename, netcdf_mode_a)
253
+ except IOError:
254
+ # This could happen if someone was reading the file.
255
+ # In that case, wait a while and try again
256
+ msg = 'Warning (store_timestep): File %s could not be opened' \
257
+ % self.filename
258
+ msg += ' - trying step %s again' % self.domain.time
259
+ log.critical(msg)
260
+ retries += 1
261
+ sleep(1)
262
+ else:
263
+ file_open = True
264
+
265
+ if not file_open:
266
+ msg = 'File %s could not be opened for append' % self.filename
267
+ raise DataFileNotOpenError, msg
268
+
269
+ # Check to see if the file is already too big:
270
+ time = fid.variables['time'][:]
271
+
272
+ i = len(time) + 1
273
+ file_size = stat(self.filename)[6]
274
+ file_size_increase = file_size / i
275
+ if file_size + file_size_increase > self.max_size * 2**self.recursion:
276
+ # In order to get the file name and start time correct,
277
+ # I change the domain.filename and domain.starttime.
278
+ # This is the only way to do this without changing
279
+ # other modules (I think).
280
+
281
+ # Write a filename addon that won't break the anuga viewers
282
+ # (10.sww is bad)
283
+ filename_ext = '_time_%s' % self.domain.time
284
+ filename_ext = filename_ext.replace('.', '_')
285
+
286
+ # Remember the old filename, then give domain a
287
+ # name with the extension
288
+ old_domain_filename = self.domain.get_name()
289
+ if not self.recursion:
290
+ self.domain.set_name(old_domain_filename + filename_ext)
291
+
292
+ # Temporarily change the domain starttime to the current time
293
+ old_domain_starttime = self.domain.starttime
294
+ self.domain.starttime = self.domain.get_time()
295
+
296
+ # Build a new data_structure.
297
+ next_data_structure = SWW_file(self.domain, mode=self.mode,
298
+ max_size=self.max_size,
299
+ recursion=self.recursion+1)
300
+ if not self.recursion:
301
+ log.critical(' file_size = %s' % file_size)
302
+ log.critical(' saving file to %s'
303
+ % next_data_structure.filename)
304
+
305
+ # Set up the new data_structure
306
+ self.domain.writer = next_data_structure
307
+
308
+ # Store connectivity and first timestep
309
+ next_data_structure.store_connectivity()
310
+ next_data_structure.store_timestep()
311
+ fid.sync()
312
+ fid.close()
313
+
314
+ # Restore the old starttime and filename
315
+ self.domain.starttime = old_domain_starttime
316
+ self.domain.set_name(old_domain_filename)
317
+ else:
318
+ self.recursion = False
319
+ domain = self.domain
320
+
321
+ # Get the variables
322
+ time = fid.variables['time'][:]
323
+ i = len(time)
324
+
325
+ if 'stage' in self.writer.dynamic_quantities:
326
+ # Select only those values for stage,
327
+ # xmomentum and ymomentum (if stored) where
328
+ # depth exceeds minimum_storable_height
329
+ #
330
+ # In this branch it is assumed that elevation
331
+ # is also available as a quantity
332
+
333
+
334
+ # Smoothing for the get_vertex_values will be obtained
335
+ # from the smooth setting in domain
336
+
337
+ Q = domain.quantities['stage']
338
+ w, _ = Q.get_vertex_values(xy=False)
339
+
340
+ Q = domain.quantities['elevation']
341
+ z, _ = Q.get_vertex_values(xy=False)
342
+
343
+ storable_indices = num.array(w-z >= self.minimum_storable_height)
344
+ else:
345
+ # Very unlikely branch
346
+ storable_indices = None # This means take all
347
+
348
+ # Now store dynamic quantities
349
+ dynamic_quantities = {}
350
+ dynamic_quantities_centroid = {}
351
+
352
+ for name in self.writer.dynamic_quantities:
353
+ #netcdf_array = fid.variables[name]
354
+
355
+ Q = domain.quantities[name]
356
+ A, _ = Q.get_vertex_values(xy=False,
357
+ precision=self.precision)
358
+
359
+ if storable_indices is not None:
360
+ if name == 'stage':
361
+ A = num.choose(storable_indices, (z, A))
362
+
363
+ if name in ['xmomentum', 'ymomentum']:
364
+ # Get xmomentum where depth exceeds
365
+ # minimum_storable_height
366
+
367
+ # Define a zero vector of same size and type as A
368
+ # for use with momenta
369
+ null = num.zeros(num.size(A), A.dtype.char)
370
+ A = num.choose(storable_indices, (null, A))
371
+
372
+ dynamic_quantities[name] = A
373
+
374
+ for name in self.writer.dynamic_c_quantities:
375
+ Q = domain.quantities[name[:-2]]
376
+ dynamic_quantities_centroid[name] = Q.centroid_values
377
+
378
+
379
+ # Store dynamic quantities
380
+ slice_index = self.writer.store_quantities(fid,
381
+ time=self.domain.time,
382
+ sww_precision=self.precision,
383
+ **dynamic_quantities)
384
+
385
+ # Store dynamic quantities
386
+ if self.store_centroids:
387
+ self.writer.store_quantities_centroid(fid,
388
+ slice_index= slice_index,
389
+ sww_precision=self.precision,
390
+ **dynamic_quantities_centroid)
391
+
392
+
393
+ # Update extrema if requested
394
+ domain = self.domain
395
+ if domain.quantities_to_be_monitored is not None:
396
+ for q, info in domain.quantities_to_be_monitored.items():
397
+ if info['min'] is not None:
398
+ fid.variables[q + '.extrema'][0] = info['min']
399
+ fid.variables[q + '.min_location'][:] = \
400
+ info['min_location']
401
+ fid.variables[q + '.min_time'][0] = info['min_time']
402
+
403
+ if info['max'] is not None:
404
+ fid.variables[q + '.extrema'][1] = info['max']
405
+ fid.variables[q + '.max_location'][:] = \
406
+ info['max_location']
407
+ fid.variables[q + '.max_time'][0] = info['max_time']
408
+
409
+ # Flush and close
410
+ #fid.sync()
411
+ fid.close()
412
+
413
+
414
+ class Read_sww:
415
+
416
+ def __init__(self, source):
417
+ """The source parameter is assumed to be a NetCDF sww file.
418
+ """
419
+
420
+ self.source = source
421
+
422
+ self.frame_number = 0
423
+
424
+ fin = NetCDFFile(self.source, 'r')
425
+
426
+ self.time = num.array(fin.variables['time'][:], num.float)
427
+ self.last_frame_number = self.time.shape[0] - 1
428
+
429
+ self.frames = num.arange(self.last_frame_number+1)
430
+
431
+ fin.close()
432
+
433
+ self.read_mesh()
434
+
435
+ self.quantities = {}
436
+
437
+ self.read_quantities()
438
+
439
+
440
+ def read_mesh(self):
441
+ """ Read and store the mesh data contained within this sww file.
442
+ """
443
+ fin = NetCDFFile(self.source, 'r')
444
+
445
+ self.vertices = num.array(fin.variables['volumes'][:], num.int)
446
+
447
+ self.x = x = num.array(fin.variables['x'][:], num.float)
448
+ self.y = y = num.array(fin.variables['y'][:], num.float)
449
+
450
+ assert len(self.x) == len(self.y)
451
+
452
+ self.xmin = num.min(x)
453
+ self.xmax = num.max(x)
454
+ self.ymin = num.min(y)
455
+ self.ymax = num.max(y)
456
+
457
+
458
+ fin.close()
459
+
460
+ def read_quantities(self, frame_number=0):
461
+ """
462
+ Read the quantities contained in this file.
463
+ frame_number is the time index to load.
464
+ """
465
+ assert frame_number >= 0 and frame_number <= self.last_frame_number
466
+
467
+ self.frame_number = frame_number
468
+
469
+ M = len(self.x)/3
470
+
471
+ fin = NetCDFFile(self.source, 'r')
472
+
473
+ for q in filter(lambda n:n != 'x' and n != 'y' and n != 'time' and n != 'volumes' and \
474
+ '_range' not in n and '_c' not in n , \
475
+ fin.variables.keys()):
476
+ #print q
477
+ if len(fin.variables[q].shape) == 1: # Not a time-varying quantity
478
+ self.quantities[q] = num.ravel(num.array(fin.variables[q][:], num.float)).reshape(M,3)
479
+ else: # Time-varying, get the current timestep data
480
+ self.quantities[q] = num.array(fin.variables[q][self.frame_number], num.float).reshape(M,3)
481
+ fin.close()
482
+ return self.quantities
483
+
484
+ def get_bounds(self):
485
+ """
486
+ Get the bounding rect around the mesh.
487
+ """
488
+ return [self.xmin, self.xmax, self.ymin, self.ymax]
489
+
490
+ def get_last_frame_number(self):
491
+ """
492
+ Return the last loaded frame index.
493
+ """
494
+ return self.last_frame_number
495
+
496
+ def get_time(self):
497
+ """
498
+ Get time at the current frame num, in secs.
499
+ """
500
+ return self.time[self.frame_number]
501
+
502
+
503
+ class Write_sww(Write_sts):
504
+ """
505
+ A class to write an SWW file.
506
+
507
+ It is domain agnostic, and requires all the data to be fed in
508
+ manually.
509
+ """
510
+
511
+ def __init__(self,
512
+ static_quantities,
513
+ dynamic_quantities,
514
+ static_c_quantities = [],
515
+ dynamic_c_quantities = []):
516
+
517
+ """Initialise Write_sww with two (or 4) list af quantity names:
518
+
519
+ static_quantities (e.g. elevation or friction):
520
+ Stored once at the beginning of the simulation in a 1D array
521
+ of length number_of_points
522
+ dynamic_quantities (e.g stage):
523
+ Stored every timestep in a 2D array with
524
+ dimensions number_of_points X number_of_timesteps
525
+
526
+ static_c_quantities (e.g. elevation_c or friction_c):
527
+ Stored once at the beginning of the simulation in a 1D array
528
+ of length number_of_triangles
529
+ dynamic_c_quantities (e.g stage_c):
530
+ Stored every timestep in a 2D array with
531
+ dimensions number_of_triangles X number_of_timesteps
532
+
533
+ """
534
+ self.static_quantities = static_quantities
535
+ self.dynamic_quantities = dynamic_quantities
536
+ self.static_c_quantities = static_c_quantities
537
+ self.dynamic_c_quantities = dynamic_c_quantities
538
+
539
+ self.store_centroids = False
540
+ if static_c_quantities or dynamic_c_quantities:
541
+ self.store_centroids = True
542
+
543
+
544
+ def store_header(self,
545
+ outfile,
546
+ times,
547
+ number_of_volumes,
548
+ number_of_points,
549
+ description='Generated by ANUGA',
550
+ smoothing=True,
551
+ order=1,
552
+ sww_precision=netcdf_float32,
553
+ verbose=False):
554
+ """Write an SWW file header.
555
+
556
+ Writes the first section of the .sww file.
557
+
558
+ outfile - the open file that will be written
559
+ times - A list of the time slice times OR a start time
560
+ Note, if a list is given the info will be made relative.
561
+ number_of_volumes - the number of triangles
562
+ number_of_points - the number of vertices in the mesh
563
+ """
564
+
565
+ from anuga.abstract_2d_finite_volumes.util \
566
+ import get_revision_number
567
+
568
+ outfile.institution = 'Geoscience Australia'
569
+ outfile.description = description
570
+
571
+ # For sww compatibility
572
+ if smoothing is True:
573
+ # Smoothing to be depreciated
574
+ outfile.smoothing = 'Yes'
575
+ outfile.vertices_are_stored_uniquely = 'False'
576
+ else:
577
+ # Smoothing to be depreciated
578
+ outfile.smoothing = 'No'
579
+ outfile.vertices_are_stored_uniquely = 'True'
580
+ outfile.order = order
581
+
582
+ try:
583
+ revision_number = get_revision_number()
584
+ except:
585
+ # This will be triggered if the system cannot get the SVN
586
+ # revision number.
587
+ revision_number = None
588
+ # Allow None to be stored as a string
589
+ outfile.revision_number = str(revision_number)
590
+
591
+ # This is being used to seperate one number from a list.
592
+ # what it is actually doing is sorting lists from numeric arrays.
593
+ if isinstance(times, (list, num.ndarray)):
594
+ number_of_times = len(times)
595
+ times = ensure_numeric(times)
596
+ if number_of_times == 0:
597
+ starttime = 0
598
+ else:
599
+ starttime = times[0]
600
+ times = times - starttime #Store relative times
601
+ else:
602
+ number_of_times = 0
603
+ starttime = times
604
+
605
+
606
+ outfile.starttime = starttime
607
+
608
+ # dimension definitions
609
+ outfile.createDimension('number_of_volumes', number_of_volumes)
610
+ outfile.createDimension('number_of_triangle_vertices', number_of_points)
611
+ outfile.createDimension('number_of_vertices', 3)
612
+ outfile.createDimension('numbers_in_range', 2)
613
+
614
+ if smoothing is True:
615
+ outfile.createDimension('number_of_points', number_of_points)
616
+ # FIXME(Ole): This will cause sww files for parallel domains to
617
+ # have ghost nodes stored (but not used by triangles).
618
+ # To clean this up, we have to change get_vertex_values and
619
+ # friends in quantity.py (but I can't be bothered right now)
620
+ else:
621
+ outfile.createDimension('number_of_points', 3*number_of_volumes)
622
+
623
+ outfile.createDimension('number_of_timesteps', number_of_times)
624
+
625
+ # variable definitions
626
+ outfile.createVariable('x', sww_precision, ('number_of_points',))
627
+ outfile.createVariable('y', sww_precision, ('number_of_points',))
628
+
629
+ outfile.createVariable('volumes', netcdf_int , ('number_of_volumes',
630
+ 'number_of_vertices'))
631
+
632
+
633
+ for q in self.static_quantities:
634
+
635
+ outfile.createVariable(q, sww_precision,
636
+ ('number_of_points',))
637
+
638
+ outfile.createVariable(q + Write_sww.RANGE, sww_precision,
639
+ ('numbers_in_range',))
640
+
641
+ # Initialise ranges with small and large sentinels.
642
+ # If this was in pure Python we could have used None sensibly
643
+ outfile.variables[q+Write_sww.RANGE][0] = max_float # Min
644
+ outfile.variables[q+Write_sww.RANGE][1] = -max_float # Max
645
+
646
+
647
+ for q in self.static_c_quantities:
648
+ outfile.createVariable(q, sww_precision,
649
+ ('number_of_volumes',))
650
+
651
+
652
+ self.write_dynamic_quantities(outfile, times, precis = sww_precision)
653
+
654
+
655
+ outfile.sync()
656
+
657
+
658
+
659
+ def store_triangulation(self,
660
+ outfile,
661
+ points_utm,
662
+ volumes,
663
+ zone=None,
664
+ new_origin=None,
665
+ points_georeference=None,
666
+ verbose=False):
667
+ """
668
+ Store triangulation data in the underlying file.
669
+
670
+ Stores the points and triangle indices in the sww file
671
+
672
+ outfile Open handle to underlying file.
673
+
674
+ new_origin georeference that the points can be set to.
675
+
676
+ points_georeference The georeference of the points_utm.
677
+
678
+ verbose True if this function is to be verbose.
679
+
680
+ new_origin - qa georeference that the points can be set to. (Maybe
681
+ do this before calling this function.)
682
+
683
+ points_utm - currently a list or array of the points in UTM.
684
+ points_georeference - the georeference of the points_utm
685
+
686
+ How about passing new_origin and current_origin.
687
+ If you get both, do a convertion from the old to the new.
688
+
689
+ If you only get new_origin, the points are absolute,
690
+ convert to relative
691
+
692
+ if you only get the current_origin the points are relative, store
693
+ as relative.
694
+
695
+ if you get no georefs create a new georef based on the minimums of
696
+ points_utm. (Another option would be to default to absolute)
697
+
698
+ Yes, and this is done in another part of the code.
699
+ Probably geospatial.
700
+
701
+ If you don't supply either geo_refs, then supply a zone. If not
702
+ the default zone will be used.
703
+
704
+ precon:
705
+ header has been called.
706
+ """
707
+
708
+ number_of_points = len(points_utm)
709
+ volumes = num.array(volumes,num.int32).reshape(-1,3)
710
+
711
+
712
+ points_utm = num.array(points_utm)
713
+
714
+ # Given the two geo_refs and the points, do the stuff
715
+ # described in the method header
716
+ # if this is needed else where, pull out as a function
717
+ points_georeference = ensure_geo_reference(points_georeference)
718
+ new_origin = ensure_geo_reference(new_origin)
719
+ if new_origin is None and points_georeference is not None:
720
+ points = points_utm
721
+ geo_ref = points_georeference
722
+ else:
723
+ if new_origin is None:
724
+ new_origin = Geo_reference(zone, min(points_utm[:,0]),
725
+ min(points_utm[:,1]))
726
+ points = new_origin.change_points_geo_ref(points_utm,
727
+ points_georeference)
728
+ geo_ref = new_origin
729
+
730
+ # At this stage I need a georef and points
731
+ # the points are relative to the georef
732
+ geo_ref.write_NetCDF(outfile)
733
+
734
+ # This will put the geo ref in the middle
735
+ #geo_ref = Geo_reference(refzone,(max(x)+min(x))/2.0,(max(x)+min(y))/2.)
736
+
737
+ x = points[:,0]
738
+ y = points[:,1]
739
+
740
+ #x = x.astype(netcdf_float32)
741
+ #y = y.astype(netcdf_float32)
742
+
743
+
744
+ if verbose:
745
+ log.critical('------------------------------------------------')
746
+ log.critical('More Statistics:')
747
+ log.critical(' Extent (/lon):')
748
+ log.critical(' x in [%f, %f], len(lat) == %d'
749
+ % (min(x), max(x), len(x)))
750
+ log.critical(' y in [%f, %f], len(lon) == %d'
751
+ % (min(y), max(y), len(y)))
752
+ #log.critical(' z in [%f, %f], len(z) == %d'
753
+ # % (min(elevation), max(elevation), len(elevation)))
754
+ log.critical('geo_ref: %s' % str(geo_ref))
755
+ log.critical('------------------------------------------------')
756
+
757
+
758
+ outfile.variables['x'][:] = x #- geo_ref.get_xllcorner()
759
+ outfile.variables['y'][:] = y #- geo_ref.get_yllcorner()
760
+
761
+
762
+ msg = 'Mismatch between shape of volumes array and (number_of_volumes , 3)'
763
+ assert volumes.shape == outfile.variables['volumes'].shape, msg
764
+
765
+ outfile.variables['volumes'][:] = volumes
766
+
767
+
768
+
769
+ def write_dynamic_quantities(self, outfile,
770
+ times, precis = netcdf_float32, verbose = False):
771
+ """
772
+ Write out given quantities to file.
773
+ """
774
+
775
+
776
+ for q in self.dynamic_quantities:
777
+ outfile.createVariable(q, precis, ('number_of_timesteps',
778
+ 'number_of_points'))
779
+ outfile.createVariable(q + Write_sts.RANGE, precis,
780
+ ('numbers_in_range',))
781
+
782
+ # Initialise ranges with small and large sentinels.
783
+ # If this was in pure Python we could have used None sensibly
784
+ outfile.variables[q+Write_sts.RANGE][0] = max_float # Min
785
+ outfile.variables[q+Write_sts.RANGE][1] = -max_float # Max
786
+
787
+ for q in self.dynamic_c_quantities:
788
+ outfile.createVariable(q, precis, ('number_of_timesteps',
789
+ 'number_of_volumes'))
790
+
791
+ # Doing sts_precision instead of Float gives cast errors.
792
+ outfile.createVariable('time', netcdf_float, ('number_of_timesteps',))
793
+
794
+ if isinstance(times, (list, num.ndarray)):
795
+ outfile.variables['time'][:] = times # Store time relative
796
+
797
+ if verbose:
798
+ log.critical('------------------------------------------------')
799
+ log.critical('Statistics:')
800
+ log.critical(' t in [%f, %f], len(t) == %d'
801
+ % (num.min(times), num.max(times), len(times.flat)))
802
+
803
+ def store_parallel_data(self,
804
+ outfile,
805
+ number_of_global_triangles,
806
+ number_of_global_nodes,
807
+ tri_full_flag = None,
808
+ tri_l2g = None,
809
+ node_l2g = None,
810
+ sww_precision=netcdf_float32,
811
+ verbose=False):
812
+
813
+
814
+ # dimension definitions
815
+ #outfile.createDimension('number_of_volumes', number_of_volumes)
816
+ #outfile.createDimension('number_of_vertices', 3)
817
+ #outfile.createDimension('numbers_in_range', 2)
818
+
819
+ #print 'store parallel data'
820
+ outfile.number_of_global_triangles = number_of_global_triangles
821
+ outfile.number_of_global_nodes = number_of_global_nodes
822
+
823
+ # variable definitions
824
+ outfile.createVariable('tri_l2g', netcdf_int, ('number_of_volumes',))
825
+ outfile.createVariable('node_l2g', netcdf_int, ('number_of_triangle_vertices',))
826
+ outfile.createVariable('tri_full_flag', netcdf_int, ('number_of_volumes',))
827
+
828
+ #print tri_l2g.shape
829
+ #print tri_l2g
830
+ #print outfile.variables['tri_l2g'].shape
831
+
832
+ outfile.variables['tri_l2g'][:] = tri_l2g.astype(num.int32)
833
+
834
+ #print node_l2g.shape
835
+ #print node_l2g
836
+ #print outfile.variables['node_l2g'].shape
837
+
838
+ outfile.variables['node_l2g'][:] = node_l2g.astype(num.int32)
839
+
840
+ #print tri_full_flag.shape
841
+ #print tri_full_flag
842
+ #print outfile.variables['tri_full_flag'].shape
843
+
844
+ outfile.variables['tri_full_flag'][:] = tri_full_flag.astype(num.int32)
845
+
846
+
847
+
848
+ def store_static_quantities(self,
849
+ outfile,
850
+ sww_precision=num.float32,
851
+ verbose=False,
852
+ **quant):
853
+ """
854
+ Write the static quantity info.
855
+
856
+ **quant is extra keyword arguments passed in. These must be
857
+ the numpy arrays to be stored in the sww file at each timestep.
858
+
859
+ The argument sww_precision allows for storing as either
860
+ * single precision (default): num.float32
861
+ * double precision: num.float64 or num.float
862
+
863
+ Precondition:
864
+ store_triangulation and
865
+ store_header have been called.
866
+ """
867
+
868
+ # The dictionary quant must contain numpy arrays for each name.
869
+ # These will typically be quantities from Domain such as friction
870
+ #
871
+ # Arrays not listed in static_quantitiues will be ignored, silently.
872
+ #
873
+ # This method will also write the ranges for each quantity,
874
+ # e.g. stage_range, xmomentum_range and ymomentum_range
875
+ for q in self.static_quantities:
876
+ if not quant.has_key(q):
877
+ msg = 'Values for quantity %s was not specified in ' % q
878
+ msg += 'store_quantities so they cannot be stored.'
879
+ raise NewQuantity, msg
880
+ else:
881
+ q_values = ensure_numeric(quant[q])
882
+
883
+ x = q_values.astype(sww_precision)
884
+ outfile.variables[q][:] = x
885
+
886
+ # This populates the _range values
887
+ outfile.variables[q + Write_sww.RANGE][0] = num.min(x)
888
+ outfile.variables[q + Write_sww.RANGE][1] = num.max(x)
889
+
890
+ # FIXME: Hack for backwards compatibility with old viewer
891
+ #if 'elevation' in self.static_quantities:
892
+ # outfile.variables['z'][:] = outfile.variables['elevation'][:]
893
+
894
+
895
+
896
+ def store_static_quantities_centroid(self,
897
+ outfile,
898
+ sww_precision=num.float32,
899
+ verbose=False,
900
+ **quant):
901
+ """
902
+ Write the static centroid quantity info.
903
+
904
+ **quant is extra keyword arguments passed in. These must be
905
+ the numpy arrays to be stored in the sww file at each timestep.
906
+
907
+ The argument sww_precision allows for storing as either
908
+ * single precision (default): num.float32
909
+ * double precision: num.float64 or num.float
910
+
911
+ Precondition:
912
+ store_triangulation and
913
+ store_header have been called.
914
+ """
915
+
916
+ # The dictionary quant must contain numpy arrays for each name.
917
+ # These will typically be quantities from Domain such as friction
918
+ #
919
+ # Arrays not listed in static_quantitiues will be ignored, silently.
920
+ #
921
+ # This method will also write the ranges for each quantity,
922
+ # e.g. stage_range, xmomentum_range and ymomentum_range
923
+
924
+ #print outfile.variables.keys()
925
+ #print self.static_c_quantities
926
+
927
+ for q in self.static_c_quantities:
928
+ if not quant.has_key(q):
929
+ msg = 'Values for quantity %s was not specified in ' % q
930
+ msg += 'store_quantities so they cannot be stored.'
931
+ raise NewQuantity, msg
932
+ else:
933
+ q_values = ensure_numeric(quant[q])
934
+
935
+ x = q_values.astype(sww_precision)
936
+ outfile.variables[q][:] = x
937
+
938
+
939
+
940
+
941
+
942
+ def store_quantities(self,
943
+ outfile,
944
+ sww_precision=num.float32,
945
+ slice_index=None,
946
+ time=None,
947
+ verbose=False,
948
+ **quant):
949
+ """
950
+ Write the quantity info at each timestep.
951
+
952
+ **quant is extra keyword arguments passed in. These must be
953
+ the numpy arrays to be stored in the sww file at each timestep.
954
+
955
+ if the time array is already been built, use the slice_index
956
+ to specify the index.
957
+
958
+ Otherwise, use time to increase the time dimension
959
+
960
+ Maybe make this general, but the viewer assumes these quantities,
961
+ so maybe we don't want it general - unless the viewer is general
962
+
963
+ The argument sww_precision allows for storing as either
964
+ * single precision (default): num.float32
965
+ * double precision: num.float64 or num.float
966
+
967
+ Precondition:
968
+ store_triangulation and
969
+ store_header have been called.
970
+ """
971
+
972
+ if time is not None:
973
+ file_time = outfile.variables['time']
974
+ slice_index = len(file_time)
975
+ # check if time already saved as in check pointing
976
+ if slice_index > 0:
977
+ if time <= file_time[slice_index-1]:
978
+ check = numpy.where(numpy.abs(file_time[:]-time)< 1.0e-14)
979
+ slice_index = int(check[0][0])
980
+ file_time[slice_index] = time
981
+ else:
982
+ slice_index = int(slice_index) # Has to be cast in case it was numpy.int
983
+
984
+ # Write the named dynamic quantities
985
+ # The dictionary quant must contain numpy arrays for each name.
986
+ # These will typically be the conserved quantities from Domain
987
+ # (Typically stage, xmomentum, ymomentum).
988
+ #
989
+ # Arrays not listed in dynamic_quantitiues will be ignored, silently.
990
+ #
991
+ # This method will also write the ranges for each quantity,
992
+ # e.g. stage_range, xmomentum_range and ymomentum_range
993
+ for q in self.dynamic_quantities:
994
+ if not quant.has_key(q):
995
+ msg = 'Values for quantity %s was not specified in ' % q
996
+ msg += 'store_quantities so they cannot be stored.'
997
+ raise NewQuantity, msg
998
+ else:
999
+ q_values = ensure_numeric(quant[q])
1000
+
1001
+ q_retyped = q_values.astype(sww_precision)
1002
+ outfile.variables[q][slice_index] = q_retyped
1003
+
1004
+ # This updates the _range values
1005
+ q_range = outfile.variables[q + Write_sww.RANGE][:]
1006
+ q_values_min = num.min(q_values)
1007
+ if q_values_min < q_range[0]:
1008
+ outfile.variables[q + Write_sww.RANGE][0] = q_values_min
1009
+ q_values_max = num.max(q_values)
1010
+ if q_values_max > q_range[1]:
1011
+ outfile.variables[q + Write_sww.RANGE][1] = q_values_max
1012
+
1013
+ return slice_index
1014
+
1015
+
1016
+
1017
+ def store_quantities_centroid(self,
1018
+ outfile,
1019
+ sww_precision=num.float32,
1020
+ slice_index=None,
1021
+ verbose=False,
1022
+ **quant):
1023
+ """
1024
+ Write the quantity centroid info at each timestep.
1025
+
1026
+ **quant is extra keyword arguments passed in. These must be
1027
+ the numpy arrays to be stored in the sww file at each timestep.
1028
+
1029
+ if the time array is already been built, use the slice_index
1030
+ to specify the index.
1031
+
1032
+ Otherwise, use time to increase the time dimension
1033
+
1034
+ Maybe make this general, but the viewer assumes these quantities,
1035
+ so maybe we don't want it general - unless the viewer is general
1036
+
1037
+ The argument sww_precision allows for storing as either
1038
+ * single precision (default): num.float32
1039
+ * double precision: num.float64 or num.float
1040
+
1041
+ Precondition:
1042
+ store_triangulation and
1043
+ store_header have been called.
1044
+ """
1045
+
1046
+ assert slice_index is not None, 'slice_index should be set in store_quantities'
1047
+
1048
+
1049
+ # Write the named dynamic quantities
1050
+ # The dictionary quant must contain numpy arrays for each name.
1051
+ # These will typically be the conserved quantities from Domain
1052
+ # (Typically stage, xmomentum, ymomentum).
1053
+ #
1054
+ # Arrays not listed in dynamic_quantitiues will be ignored, silently.
1055
+ #
1056
+ # This method will also write the ranges for each quantity,
1057
+ # e.g. stage_range, xmomentum_range and ymomentum_range
1058
+
1059
+ #print 50*"="
1060
+ #print quant
1061
+ #print self.dynamic_c_quantities
1062
+
1063
+ for q in self.dynamic_c_quantities:
1064
+ if not quant.has_key(q):
1065
+ msg = 'Values for quantity %s was not specified in ' % q
1066
+ msg += 'store_quantities so they cannot be stored.'
1067
+ raise NewQuantity, msg
1068
+ else:
1069
+ q_values = ensure_numeric(quant[q])
1070
+
1071
+ q_retyped = q_values.astype(sww_precision)
1072
+ outfile.variables[q][slice_index] = q_retyped
1073
+
1074
+
1075
+
1076
+
1077
+ def verbose_quantities(self, outfile):
1078
+ log.critical('------------------------------------------------')
1079
+ log.critical('More Statistics:')
1080
+ for q in self.dynamic_quantities:
1081
+ log.critical(' %s in [%f, %f]'
1082
+ % (q, outfile.variables[q+Write_sww.RANGE][0],
1083
+ outfile.variables[q+Write_sww.RANGE][1]))
1084
+ log.critical('------------------------------------------------')
1085
+
1086
+
1087
+
1088
+
1089
+ def extent_sww(file_name):
1090
+ """Read in an sww file, then get its extents
1091
+
1092
+ Input:
1093
+ file_name - the sww file
1094
+
1095
+ Output:
1096
+ A list: [min(x),max(x),min(y),max(y),min(stage.flat),max(stage.flat)]
1097
+ """
1098
+
1099
+
1100
+ #Get NetCDF
1101
+ fid = NetCDFFile(file_name, netcdf_mode_r)
1102
+
1103
+ # Get the variables
1104
+ x = fid.variables['x'][:]
1105
+ y = fid.variables['y'][:]
1106
+ stage = fid.variables['stage'][:]
1107
+
1108
+ fid.close()
1109
+
1110
+ return [min(x), max(x), min(y), max(y), num.min(stage), num.max(stage)]
1111
+
1112
+
1113
+ def load_sww_as_domain(filename, boundary=None, t=None,
1114
+ fail_if_NaN=True, NaN_filler=0,
1115
+ verbose=False, very_verbose=False):
1116
+ """
1117
+ Load an sww file into a domain.
1118
+
1119
+ Usage: domain = load_sww_as_domain('file.sww',
1120
+ t=time (default = last time in file))
1121
+
1122
+ Boundary is not recommended if domain.smooth is not selected, as it
1123
+ uses unique coordinates, but not unique boundaries. This means that
1124
+ the boundary file will not be compatable with the coordinates, and will
1125
+ give a different final boundary, or crash.
1126
+ """
1127
+
1128
+ from anuga.shallow_water.shallow_water_domain import Domain
1129
+
1130
+ # initialise NaN.
1131
+ NaN = 9.969209968386869e+036
1132
+
1133
+ if verbose: log.critical('Reading from %s' % filename)
1134
+
1135
+ fid = NetCDFFile(filename, netcdf_mode_r) # Open existing file for read
1136
+ time = fid.variables['time'][:] # Timesteps
1137
+ if t is None:
1138
+ t = time[-1]
1139
+ time_interp = get_time_interp(time,t)
1140
+
1141
+ # Get the variables as numeric arrays
1142
+ x = fid.variables['x'][:] # x-coordinates of vertices
1143
+ y = fid.variables['y'][:] # y-coordinates of vertices
1144
+ #elevation = fid.variables['elevation'] # Elevation
1145
+ #stage = fid.variables['stage'] # Water level
1146
+ #xmomentum = fid.variables['xmomentum'] # Momentum in the x-direction
1147
+ #ymomentum = fid.variables['ymomentum'] # Momentum in the y-direction
1148
+
1149
+ starttime = float(fid.starttime)
1150
+ #starttime = fid.starttime[0]
1151
+ volumes = fid.variables['volumes'][:] # Connectivity
1152
+ coordinates = num.transpose(num.asarray([x.tolist(), y.tolist()]))
1153
+ # FIXME (Ole): Something like this might be better:
1154
+ # concatenate((x, y), axis=1)
1155
+ # or concatenate((x[:,num.newaxis], x[:,num.newaxis]), axis=1)
1156
+
1157
+ dynamic_quantities = []
1158
+ interpolated_quantities = {}
1159
+ static_quantities = []
1160
+
1161
+ # get geo_reference
1162
+ try: # sww files don't have to have a geo_ref
1163
+ geo_reference = Geo_reference(NetCDFObject=fid)
1164
+ except: # AttributeError, e:
1165
+ geo_reference = None
1166
+
1167
+ if verbose: log.critical(' getting quantities')
1168
+
1169
+ for quantity in fid.variables.keys():
1170
+ dimensions = fid.variables[quantity].dimensions
1171
+ if 'number_of_timesteps' in dimensions:
1172
+ dynamic_quantities.append(quantity)
1173
+ interpolated_quantities[quantity] = \
1174
+ interpolated_quantity(fid.variables[quantity][:], time_interp)
1175
+ else:
1176
+ static_quantities.append(quantity)
1177
+
1178
+ #print static_quantities
1179
+ #print dynamic_quantities
1180
+
1181
+ try:
1182
+ dynamic_quantities.remove('stage_c')
1183
+ dynamic_quantities.remove('xmomentum_c')
1184
+ dynamic_quantities.remove('ymomentum_c')
1185
+ dynamic_quantities.remove('elevation_c')
1186
+ dynamic_quantities.remove('friction_c')
1187
+ except:
1188
+ pass
1189
+
1190
+ try:
1191
+ static_quantities.remove('elevation_c')
1192
+ static_quantities.remove('friction_c')
1193
+ except:
1194
+ pass
1195
+
1196
+
1197
+ static_quantities.remove('x')
1198
+ static_quantities.remove('y')
1199
+ #other_quantities.remove('z')
1200
+ static_quantities.remove('volumes')
1201
+ try:
1202
+ static_quantities.remove('stage_range')
1203
+ static_quantities.remove('xmomentum_range')
1204
+ static_quantities.remove('ymomentum_range')
1205
+ static_quantities.remove('elevation_range')
1206
+ static_quantities.remove('friction_range')
1207
+ except:
1208
+ pass
1209
+
1210
+ dynamic_quantities.remove('time')
1211
+
1212
+ if verbose: log.critical(' building domain')
1213
+
1214
+ # From domain.Domain:
1215
+ # domain = Domain(coordinates, volumes,\
1216
+ # conserved_quantities = conserved_quantities,\
1217
+ # other_quantities = other_quantities,zone=zone,\
1218
+ # xllcorner=xllcorner, yllcorner=yllcorner)
1219
+
1220
+ # From shallow_water.Domain:
1221
+ coordinates = coordinates.tolist()
1222
+ volumes = volumes.tolist()
1223
+ # FIXME:should this be in mesh? (peter row)
1224
+ if fid.smoothing == 'Yes':
1225
+ unique = False
1226
+ else:
1227
+ unique = True
1228
+ if unique:
1229
+ coordinates, volumes, boundary = weed(coordinates, volumes, boundary)
1230
+
1231
+
1232
+
1233
+ try:
1234
+ domain = Domain(coordinates, volumes, boundary, starttime=(float(starttime) + float(t)))
1235
+ except AssertionError, e:
1236
+ fid.close()
1237
+ msg = 'Domain could not be created: %s. ' \
1238
+ 'Perhaps use "fail_if_NaN=False and NaN_filler = ..."' % e
1239
+ raise DataDomainError, msg
1240
+
1241
+ if not boundary is None:
1242
+ domain.boundary = boundary
1243
+
1244
+ domain.geo_reference = geo_reference
1245
+
1246
+ for quantity in static_quantities:
1247
+ try:
1248
+ NaN = fid.variables[quantity].missing_value
1249
+ except:
1250
+ pass # quantity has no missing_value number
1251
+ X = fid.variables[quantity][:]
1252
+ if very_verbose:
1253
+ log.critical(' %s' % str(quantity))
1254
+ log.critical(' NaN = %s' % str(NaN))
1255
+ log.critical(' max(X)')
1256
+ log.critical(' %s' % str(max(X)))
1257
+ log.critical(' max(X)==NaN')
1258
+ log.critical(' %s' % str(max(X)==NaN))
1259
+ log.critical('')
1260
+ if max(X) == NaN or min(X) == NaN:
1261
+ if fail_if_NaN:
1262
+ msg = 'quantity "%s" contains no_data entry' % quantity
1263
+ raise DataMissingValuesError, msg
1264
+ else:
1265
+ data = (X != NaN)
1266
+ X = (X*data) + (data==0)*NaN_filler
1267
+ if unique:
1268
+ X = num.resize(X, (len(X)/3, 3))
1269
+ domain.set_quantity(quantity, X)
1270
+ #
1271
+ for quantity in dynamic_quantities:
1272
+ try:
1273
+ NaN = fid.variables[quantity].missing_value
1274
+ except:
1275
+ pass # quantity has no missing_value number
1276
+ X = interpolated_quantities[quantity]
1277
+ if very_verbose:
1278
+ log.critical(' %s' % str(quantity))
1279
+ log.critical(' NaN = %s' % str(NaN))
1280
+ log.critical(' max(X)')
1281
+ log.critical(' %s' % str(max(X)))
1282
+ log.critical(' max(X)==NaN')
1283
+ log.critical(' %s' % str(max(X)==NaN))
1284
+ log.critical('')
1285
+ if max(X) == NaN or min(X) == NaN:
1286
+ if fail_if_NaN:
1287
+ msg = 'quantity "%s" contains no_data entry' % quantity
1288
+ raise DataMissingValuesError, msg
1289
+ else:
1290
+ data = (X != NaN)
1291
+ X = (X*data) + (data==0)*NaN_filler
1292
+ if unique:
1293
+ X = num.resize(X, (X.shape[0]/3, 3))
1294
+ domain.set_quantity(quantity, X)
1295
+
1296
+ fid.close()
1297
+
1298
+ return domain
1299
+
1300
+
1301
+ def get_mesh_and_quantities_from_file(filename,
1302
+ quantities=None,
1303
+ verbose=False):
1304
+ """Get and rebuild mesh structure and associated quantities from sww file
1305
+
1306
+ Input:
1307
+ filename - Name os sww file
1308
+ quantities - Names of quantities to load
1309
+
1310
+ Output:
1311
+ mesh - instance of class Interpolate
1312
+ (including mesh and interpolation functionality)
1313
+ quantities - arrays with quantity values at each mesh node
1314
+ time - vector of stored timesteps
1315
+
1316
+ This function is used by e.g.:
1317
+ get_interpolated_quantities_at_polyline_midpoints
1318
+ """
1319
+
1320
+ # FIXME (Ole): Maybe refactor filefunction using this more fundamental code.
1321
+
1322
+ import types
1323
+ from anuga.abstract_2d_finite_volumes.neighbour_mesh import Mesh
1324
+
1325
+ if verbose: log.critical('Reading from %s' % filename)
1326
+
1327
+ fid = NetCDFFile(filename, netcdf_mode_r) # Open existing file for read
1328
+ time = fid.variables['time'][:] # Time vector
1329
+ #time += fid.starttime[0]
1330
+ time += fid.starttime
1331
+
1332
+ # Get the variables as numeric arrays
1333
+ x = fid.variables['x'][:] # x-coordinates of nodes
1334
+ y = fid.variables['y'][:] # y-coordinates of nodes
1335
+
1336
+
1337
+ elevation = fid.variables['elevation'][:] # Elevation
1338
+ stage = fid.variables['stage'][:] # Water level
1339
+ xmomentum = fid.variables['xmomentum'][:] # Momentum in the x-direction
1340
+ ymomentum = fid.variables['ymomentum'][:] # Momentum in the y-direction
1341
+
1342
+
1343
+
1344
+ # Mesh (nodes (Mx2), triangles (Nx3))
1345
+ nodes = num.concatenate((x[:,num.newaxis], y[:,num.newaxis]), axis=1)
1346
+ triangles = fid.variables['volumes'][:]
1347
+
1348
+ # Get geo_reference
1349
+ try:
1350
+ geo_reference = Geo_reference(NetCDFObject=fid)
1351
+ except: #AttributeError, e:
1352
+ # Sww files don't have to have a geo_ref
1353
+ geo_reference = None
1354
+
1355
+ if verbose: log.critical(' building mesh from sww file %s' % filename)
1356
+
1357
+ boundary = None
1358
+
1359
+ #FIXME (Peter Row): Should this be in mesh?
1360
+ if fid.smoothing != 'Yes':
1361
+ nodes = nodes.tolist()
1362
+ triangles = triangles.tolist()
1363
+ nodes, triangles, boundary = weed(nodes, triangles, boundary)
1364
+
1365
+ try:
1366
+ mesh = Mesh(nodes, triangles, boundary, geo_reference=geo_reference)
1367
+ except AssertionError, e:
1368
+ fid.close()
1369
+ msg = 'Domain could not be created: %s. "' % e
1370
+ raise DataDomainError, msg
1371
+
1372
+ def gather(quantity):
1373
+
1374
+ shape = quantity.shape
1375
+
1376
+ def my_num_add_at(a,indices,b):
1377
+ """
1378
+ Use the numpy add.at opperation if it is available, (numpy version >1.8)
1379
+ otherwise just use a quick and dirty implementation via a python loop
1380
+ """
1381
+
1382
+ try:
1383
+ num.add.at(a, indices, b)
1384
+ except:
1385
+ n_ids = len(indices)
1386
+ b_array = num.zeros_like(indices,dtype=num.float)
1387
+ b_array[:] = b
1388
+
1389
+ for n in xrange(n_ids):
1390
+ a[indices[n]] = a[indices[n]] + b_array[n]
1391
+
1392
+
1393
+
1394
+ if len(shape) == 2:
1395
+ # time array
1396
+ if shape[1] == len(mesh.nodes):
1397
+ return quantity
1398
+ # need to calculate unique vertex values
1399
+ n_time = shape[0]
1400
+ n_nodes = len(mesh.nodes)
1401
+
1402
+ mesh_ids = mesh.triangles.ravel()
1403
+ temp_uv = num.zeros((n_time,n_nodes))
1404
+
1405
+ count_uv = num.zeros(len(mesh.nodes))
1406
+ my_num_add_at(count_uv, mesh_ids, 1)
1407
+
1408
+ for i in range(n_time):
1409
+ my_num_add_at(temp_uv[i,:], mesh_ids, quantity[i,:] )
1410
+ temp_uv[i,:] = temp_uv[i,:]/count_uv
1411
+
1412
+ elif len(shape) == 1:
1413
+ # non time array
1414
+ if shape[0] == len(mesh.nodes):
1415
+ return quantity
1416
+
1417
+ mesh_ids = mesh.triangles.ravel()
1418
+ temp_uv = num.zeros(len(mesh.nodes))
1419
+
1420
+ count_uv = num.zeros(len(mesh.nodes))
1421
+ my_num_add_at(count_uv, mesh_ids, 1)
1422
+ my_num_add_at(temp_uv, mesh_ids, quantity )
1423
+
1424
+ else:
1425
+ raise Exception
1426
+
1427
+ return temp_uv
1428
+
1429
+
1430
+ quantities = {}
1431
+ quantities['elevation'] = gather(elevation)
1432
+ quantities['stage'] = gather(stage)
1433
+ quantities['xmomentum'] = gather(xmomentum)
1434
+ quantities['ymomentum'] = gather(ymomentum)
1435
+
1436
+ fid.close()
1437
+
1438
+ return mesh, quantities, time
1439
+
1440
+
1441
+ def get_time_interp(time, t=None):
1442
+ """Finds the ratio and index for time interpolation.
1443
+ time is an array of time steps
1444
+ t is the sample time.
1445
+ returns a tuple containing index into time, and ratio
1446
+ """
1447
+ if t is None:
1448
+ t=time[-1]
1449
+ index = -1
1450
+ ratio = 0.
1451
+ else:
1452
+ T = time
1453
+ tau = t
1454
+ index=0
1455
+ msg = 'Time interval derived from file %s [%s:%s]' \
1456
+ % ('FIXMEfilename', T[0], T[-1])
1457
+ msg += ' does not match model time: %s' % tau
1458
+ if tau < time[0]: raise DataTimeError, msg
1459
+ if tau > time[-1]: raise DataTimeError, msg
1460
+ while tau > time[index]: index += 1
1461
+ while tau < time[index]: index -= 1
1462
+ if tau == time[index]:
1463
+ #Protect against case where tau == time[-1] (last time)
1464
+ # - also works in general when tau == time[i]
1465
+ ratio = 0
1466
+ else:
1467
+ #t is now between index and index+1
1468
+ ratio = (tau - time[index])/(time[index+1] - time[index])
1469
+
1470
+ return (index, ratio)
1471
+
1472
+
1473
+
1474
+ def interpolated_quantity(saved_quantity, time_interp):
1475
+ """Interpolate a quantity with respect to time.
1476
+
1477
+ saved_quantity the quantity to interpolate
1478
+ time_interp (index, ratio)
1479
+
1480
+ Returns a vector of interpolated values.
1481
+ """
1482
+
1483
+ index, ratio = time_interp
1484
+
1485
+ Q = saved_quantity
1486
+
1487
+ if ratio > 0:
1488
+ q = (1-ratio)*Q[index] + ratio*Q[index+1]
1489
+ else:
1490
+ q = Q[index]
1491
+
1492
+ #Return vector of interpolated values
1493
+ return q
1494
+
1495
+
1496
+ def weed(coordinates, volumes, boundary=None):
1497
+ """ Excise all duplicate points.
1498
+ """
1499
+ if isinstance(coordinates, num.ndarray):
1500
+ coordinates = coordinates.tolist()
1501
+ if isinstance(volumes, num.ndarray):
1502
+ volumes = volumes.tolist()
1503
+
1504
+ unique = False
1505
+ point_dict = {}
1506
+ same_point = {}
1507
+ for i in range(len(coordinates)):
1508
+ point = tuple(coordinates[i])
1509
+ if point_dict.has_key(point):
1510
+ unique = True
1511
+ same_point[i] = point
1512
+ #to change all point i references to point j
1513
+ else:
1514
+ point_dict[point] = i
1515
+ same_point[i] = point
1516
+
1517
+ coordinates = []
1518
+ i = 0
1519
+ for point in point_dict.keys():
1520
+ point = tuple(point)
1521
+ coordinates.append(list(point))
1522
+ point_dict[point] = i
1523
+ i += 1
1524
+
1525
+ for volume in volumes:
1526
+ for i in range(len(volume)):
1527
+ index = volume[i]
1528
+ if index > -1:
1529
+ volume[i] = point_dict[same_point[index]]
1530
+
1531
+ new_boundary = {}
1532
+ if not boundary is None:
1533
+ for segment in boundary.keys():
1534
+ point0 = point_dict[same_point[segment[0]]]
1535
+ point1 = point_dict[same_point[segment[1]]]
1536
+ label = boundary[segment]
1537
+ #FIXME should the bounday attributes be concaterated
1538
+ #('exterior, pond') or replaced ('pond')(peter row)
1539
+
1540
+ if new_boundary.has_key((point0, point1)):
1541
+ new_boundary[(point0,point1)] = new_boundary[(point0, point1)]
1542
+
1543
+ elif new_boundary.has_key((point1, point0)):
1544
+ new_boundary[(point1,point0)] = new_boundary[(point1, point0)]
1545
+ else: new_boundary[(point0, point1)] = label
1546
+
1547
+ boundary = new_boundary
1548
+
1549
+ return coordinates, volumes, boundary
1550
+
1551
+
1552
+