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,1627 @@
1
+ import sys
2
+
3
+ from anuga.shallow_water.forcing import Inflow, General_forcing
4
+ from anuga.culvert_flows.culvert_polygons import create_culvert_polygons
5
+ from anuga.utilities.system_tools import log_to_file
6
+ from anuga.geometry.polygon import inside_polygon, is_inside_polygon, plot_polygons
7
+
8
+ from anuga.utilities.numerical_tools import mean
9
+ from anuga.utilities.numerical_tools import ensure_numeric, sign
10
+
11
+ from anuga.config import g, epsilon
12
+ from anuga.config import minimum_allowed_height, velocity_protection
13
+ import anuga.utilities.log as log
14
+
15
+ import numpy as num
16
+ from math import sqrt
17
+ from math import sqrt
18
+
19
+ class Below_interval(Exception): pass
20
+ class Above_interval(Exception): pass
21
+
22
+ # FIXME(Ole): Take a good hard look at logging here
23
+
24
+
25
+ # FIXME(Ole): Write in C and reuse this function by similar code
26
+ # in interpolate.py
27
+ def interpolate_linearly(x, xvec, yvec):
28
+
29
+ msg = 'Input to function interpolate_linearly could not be converted '
30
+ msg += 'to numerical scalar: x = %s' % str(x)
31
+ try:
32
+ x = float(x)
33
+ except:
34
+ raise Exception(msg)
35
+
36
+
37
+ # Check bounds
38
+ if x < xvec[0]:
39
+ msg = 'Value provided = %.2f, interpolation minimum = %.2f.'\
40
+ % (x, xvec[0])
41
+ raise Below_interval(msg)
42
+
43
+ if x > xvec[-1]:
44
+ msg = 'Value provided = %.2f, interpolation maximum = %.2f.'\
45
+ %(x, xvec[-1])
46
+ raise Above_interval(msg)
47
+
48
+
49
+ # Find appropriate slot within bounds
50
+ i = 0
51
+ while x > xvec[i]: i += 1
52
+
53
+
54
+ x0 = xvec[i-1]
55
+ x1 = xvec[i]
56
+ alpha = (x - x0)/(x1 - x0)
57
+
58
+ y0 = yvec[i-1]
59
+ y1 = yvec[i]
60
+ y = alpha*y1 + (1-alpha)*y0
61
+
62
+ return y
63
+
64
+
65
+
66
+ def read_culvert_description(culvert_description_filename):
67
+
68
+ # Read description file
69
+ fid = open(culvert_description_filename)
70
+
71
+ read_rating_curve_data = False
72
+ rating_curve = []
73
+ for i, line in enumerate(fid.readlines()):
74
+
75
+ if read_rating_curve_data is True:
76
+ fields = line.split(',')
77
+ head_difference = float(fields[0].strip())
78
+ flow_rate = float(fields[1].strip())
79
+ barrel_velocity = float(fields[2].strip())
80
+
81
+ rating_curve.append([head_difference, flow_rate, barrel_velocity])
82
+
83
+ if i == 0:
84
+ # Header
85
+ continue
86
+ if i == 1:
87
+ # Metadata
88
+ fields = line.split(',')
89
+ label=fields[0].strip()
90
+ type=fields[1].strip().lower()
91
+ assert type in ['box', 'pipe']
92
+
93
+ width=float(fields[2].strip())
94
+ height=float(fields[3].strip())
95
+ length=float(fields[4].strip())
96
+ number_of_barrels=int(fields[5].strip())
97
+ #fields[6] refers to losses
98
+ description=fields[7].strip()
99
+
100
+ if line.strip() == '': continue # Skip blanks
101
+
102
+ if line.startswith('Rating'):
103
+ read_rating_curve_data = True
104
+ # Flow data follows
105
+
106
+ fid.close()
107
+
108
+ return label, type, width, height, length, number_of_barrels, description, rating_curve
109
+
110
+
111
+
112
+
113
+ class Culvert_flow_general:
114
+ """Culvert flow - transfer water from one hole to another
115
+
116
+ This version will work with either rating curve file or with culvert
117
+ routine.
118
+
119
+ Input: Two points, pipe_size (either diameter or width, height),
120
+ mannings_rougness,
121
+ """
122
+
123
+ def __init__(self,
124
+ domain,
125
+ culvert_description_filename=None,
126
+ culvert_routine=None,
127
+ end_point0=None,
128
+ end_point1=None,
129
+ enquiry_point0=None,
130
+ enquiry_point1=None,
131
+ type='box',
132
+ width=None,
133
+ height=None,
134
+ length=None,
135
+ number_of_barrels=1,
136
+ number_of_smoothing_steps=2000,
137
+ trigger_depth=0.01, # Depth below which no flow happens
138
+ manning=None, # Mannings Roughness for Culvert
139
+ sum_loss=None,
140
+ use_velocity_head=False, # FIXME(Ole): Get rid of - always True
141
+ use_momentum_jet=False, # FIXME(Ole): Not yet implemented
142
+ label=None,
143
+ description=None,
144
+ update_interval=None,
145
+ log_file=False,
146
+ discharge_hydrograph=False,
147
+ verbose=False):
148
+
149
+
150
+
151
+ # Input check
152
+
153
+ if height is None: height = width
154
+
155
+ assert number_of_barrels >= 1
156
+ assert use_velocity_head is True or use_velocity_head is False
157
+
158
+ #msg = 'Momentum jet not yet moved to general culvert'
159
+ #assert use_momentum_jet is False, msg
160
+ self.use_momentum_jet = use_momentum_jet
161
+
162
+ self.culvert_routine = culvert_routine
163
+ self.culvert_description_filename = culvert_description_filename
164
+ if culvert_description_filename is not None:
165
+ label, type, width, height, length, number_of_barrels, description, rating_curve = read_culvert_description(culvert_description_filename)
166
+ self.rating_curve = ensure_numeric(rating_curve)
167
+
168
+ self.height = height
169
+ self.width = width
170
+
171
+
172
+ self.domain = domain
173
+ self.trigger_depth = trigger_depth
174
+
175
+ if manning is None:
176
+ self.manning = 0.012 # Default roughness for pipe
177
+
178
+ if sum_loss is None:
179
+ self.sum_loss = 0.0
180
+
181
+
182
+
183
+ # Store culvert information
184
+ self.label = label
185
+ self.description = description
186
+ self.culvert_type = type
187
+ self.number_of_barrels = number_of_barrels
188
+
189
+ # Store options
190
+ self.use_velocity_head = use_velocity_head
191
+
192
+ if label is None: label = 'culvert_flow'
193
+ label += '_' + str(id(self))
194
+ self.label = label
195
+
196
+ # File for storing discharge_hydrograph
197
+ if discharge_hydrograph is True:
198
+ self.timeseries_filename = label + '_timeseries.csv'
199
+ fid = open(self.timeseries_filename, 'w')
200
+ fid.write('time, discharge\n')
201
+ fid.close()
202
+
203
+ # Log file for storing general textual output
204
+ if log_file is True:
205
+ self.log_filename = label + '.log'
206
+ log_to_file(self.log_filename, self.label)
207
+ log_to_file(self.log_filename, description)
208
+ log_to_file(self.log_filename, self.culvert_type)
209
+ else:
210
+ self.log_filename = None
211
+
212
+
213
+ # Create the fundamental culvert polygons from polygon
214
+ P = create_culvert_polygons(end_point0,
215
+ end_point1,
216
+ width=width,
217
+ height=height,
218
+ number_of_barrels=number_of_barrels)
219
+ self.culvert_polygons = P
220
+
221
+ # Select enquiry points
222
+ if enquiry_point0 is None:
223
+ enquiry_point0 = P['enquiry_point0']
224
+
225
+ if enquiry_point1 is None:
226
+ enquiry_point1 = P['enquiry_point1']
227
+
228
+ if verbose is True:
229
+ pass
230
+ #plot_polygons([[end_point0, end_point1],
231
+ # P['exchange_polygon0'],
232
+ # P['exchange_polygon1'],
233
+ # [enquiry_point0, 1.005*enquiry_point0],
234
+ # [enquiry_point1, 1.005*enquiry_point1]],
235
+ # figname='culvert_polygon_output')
236
+
237
+
238
+
239
+ self.enquiry_points = [enquiry_point0, enquiry_point1]
240
+ self.enquiry_indices = self.get_enquiry_indices()
241
+ self.check_culvert_inside_domain()
242
+
243
+
244
+ # Create inflow object at each end of the culvert.
245
+ self.openings = []
246
+ self.openings.append(Inflow(domain,
247
+ polygon=P['exchange_polygon0']))
248
+ self.openings.append(Inflow(domain,
249
+ polygon=P['exchange_polygon1']))
250
+
251
+ # Assume two openings for now: Referred to as 0 and 1
252
+ assert len(self.openings) == 2
253
+
254
+ # Establish initial values at each enquiry point
255
+ dq = domain.quantities
256
+ for i, opening in enumerate(self.openings):
257
+ idx = self.enquiry_indices[i]
258
+ elevation = dq['elevation'].get_values(location='centroids',
259
+ indices=[idx])[0]
260
+ stage = dq['stage'].get_values(location='centroids',
261
+ indices=[idx])[0]
262
+ opening.elevation = elevation
263
+ opening.stage = stage
264
+ opening.depth = stage-elevation
265
+
266
+
267
+
268
+ # Determine initial pipe direction.
269
+ # This may change dynamically based on the total energy difference
270
+ # Consequently, this may be superfluous
271
+ delta_z = self.openings[0].elevation - self.openings[1].elevation
272
+ if delta_z > 0.0:
273
+ self.inlet = self.openings[0]
274
+ self.outlet = self.openings[1]
275
+ else:
276
+ self.outlet = self.openings[0]
277
+ self.inlet = self.openings[1]
278
+
279
+
280
+ # Store basic geometry
281
+ self.end_points = [end_point0, end_point1]
282
+ self.vector = P['vector']
283
+ self.length = P['length']; assert self.length > 0.0
284
+ if culvert_description_filename is not None:
285
+ if not num.allclose(self.length, length, rtol=1.0e-2, atol=1.0e-2):
286
+ msg = 'WARNING: barrel length specified in "%s" (%.2f m)'\
287
+ % (culvert_description_filename,
288
+ length)
289
+ msg += ' does not match distance between specified'
290
+ msg += ' end points (%.2f m)' %self.length
291
+ log.critical(msg)
292
+
293
+ self.verbose = verbose
294
+
295
+ # Circular index for flow averaging in culvert
296
+ self.N = N = number_of_smoothing_steps
297
+ self.Q_list = [0]*N
298
+ self.i = i
299
+
300
+ # For use with update_interval
301
+ self.last_update = 0.0
302
+ self.update_interval = update_interval
303
+
304
+ # Create objects to update momentum (a bit crude at this stage). This is used with the momentum jet.
305
+ xmom0 = General_forcing(domain, 'xmomentum',
306
+ polygon=P['exchange_polygon0'])
307
+
308
+ xmom1 = General_forcing(domain, 'xmomentum',
309
+ polygon=P['exchange_polygon1'])
310
+
311
+ ymom0 = General_forcing(domain, 'ymomentum',
312
+ polygon=P['exchange_polygon0'])
313
+
314
+ ymom1 = General_forcing(domain, 'ymomentum',
315
+ polygon=P['exchange_polygon1'])
316
+
317
+ self.opening_momentum = [[xmom0, ymom0], [xmom1, ymom1]]
318
+
319
+
320
+
321
+ # Print some diagnostics to log if requested
322
+ if self.log_filename is not None:
323
+ s = 'Culvert Effective Length = %.2f m' %(self.length)
324
+ log_to_file(self.log_filename, s)
325
+
326
+ s = 'Culvert Direction is %s\n' %str(self.vector)
327
+ log_to_file(self.log_filename, s)
328
+
329
+
330
+
331
+
332
+
333
+ def __call__(self, domain):
334
+
335
+ # Time stuff
336
+ time = domain.get_time()
337
+
338
+
339
+ update = False
340
+ if self.update_interval is None:
341
+ # Use next timestep as has been computed in domain.py
342
+ delta_t = domain.timestep
343
+ update = True
344
+ else:
345
+ # Use update interval
346
+ delta_t = self.update_interval
347
+ if time - self.last_update > self.update_interval or time == 0.0:
348
+ update = True
349
+
350
+ if self.log_filename is not None:
351
+ s = '\nTime = %.2f, delta_t = %f' %(time, delta_t)
352
+ log_to_file(self.log_filename, s)
353
+
354
+
355
+ if update is True:
356
+ self.compute_rates(delta_t)
357
+
358
+
359
+ # Execute flow term for each opening
360
+ # This is where Inflow objects are evaluated using the last rate
361
+ # that has been calculated
362
+ #
363
+ # This will take place at every internal timestep and update the domain
364
+ for opening in self.openings:
365
+ opening(domain)
366
+
367
+
368
+
369
+ def get_enquiry_indices(self):
370
+ """Get indices for nearest centroids to self.enquiry_points
371
+ """
372
+
373
+ domain = self.domain
374
+
375
+ enquiry_indices = []
376
+ for point in self.enquiry_points:
377
+ # Find nearest centroid
378
+ N = len(domain)
379
+ points = domain.get_centroid_coordinates(absolute=True)
380
+
381
+ # Calculate indices in exchange area for this forcing term
382
+
383
+ triangle_id = min_dist = sys.maxint
384
+ for k in range(N):
385
+ x, y = points[k,:] # Centroid
386
+
387
+ c = point
388
+ distance = (x-c[0])**2+(y-c[1])**2
389
+ if distance < min_dist:
390
+ min_dist = distance
391
+ triangle_id = k
392
+
393
+
394
+ if triangle_id < sys.maxint:
395
+ msg = 'found triangle with centroid (%f, %f)'\
396
+ %tuple(points[triangle_id, :])
397
+ msg += ' for point (%f, %f)' %tuple(point)
398
+
399
+ enquiry_indices.append(triangle_id)
400
+ else:
401
+ msg = 'Triangle not found for point (%f, %f)' %point
402
+ raise Exception(msg)
403
+
404
+ return enquiry_indices
405
+
406
+
407
+ def check_culvert_inside_domain(self):
408
+ """Check that all polygons and enquiry points lie within the mesh.
409
+ """
410
+ bounding_polygon = self.domain.get_boundary_polygon()
411
+ P = self.culvert_polygons
412
+ for key in P.keys():
413
+ if key in ['exchange_polygon0',
414
+ 'exchange_polygon1']:
415
+ for point in list(P[key]) + self.enquiry_points:
416
+ msg = 'Point %s in polygon %s for culvert %s did not'\
417
+ %(str(point), key, self.label)
418
+ msg += 'fall within the domain boundary.'
419
+ assert is_inside_polygon(point, bounding_polygon), msg
420
+
421
+
422
+ def adjust_flow_for_available_water_at_inlet(self, Q, delta_t):
423
+ """Adjust Q downwards depending on available water at inlet
424
+
425
+ This is a critical step in modelling bridges and Culverts
426
+ the predicted flow through a structure based on an abstract
427
+ algorithm can at times request for water that is simply not
428
+ available due to any number of constrictions that limit the
429
+ flow approaching the structure In order to ensure that
430
+ there is adequate flow available certain checks are
431
+ required There needs to be a check using the Static Water
432
+ Volume sitting infront of the structure, In addition if the
433
+ water is moving the available water will be larger than the
434
+ static volume
435
+
436
+ NOTE To temporarily switch this off for Debugging purposes
437
+ rem out line in function def compute_rates below
438
+ """
439
+
440
+ if delta_t < epsilon:
441
+ # No need to adjust if time step is very small or zero
442
+ # In this case the possible flow will be very large
443
+ # anyway.
444
+ return Q
445
+
446
+ # Short hands
447
+ domain = self.domain
448
+ dq = domain.quantities
449
+ time = domain.get_time()
450
+ I = self.inlet
451
+ idx = I.exchange_indices
452
+
453
+ # Find triangle with the smallest depth
454
+ stage = dq['stage'].get_values(location='centroids',
455
+ indices=[idx])
456
+ elevation = dq['elevation'].get_values(location='centroids',
457
+ indices=[idx])
458
+ depth = stage-elevation
459
+ min_depth = min(depth.flat) # This may lead to errors if edge of area is at a higher level !!!!
460
+ avg_depth = mean(depth.flat) # Yes, but this one violates the conservation unit tests
461
+
462
+
463
+
464
+ # FIXME (Ole): If you want these, use log.critical() and
465
+ # make the statements depend on verbose
466
+ #print I.depth
467
+ #print I.velocity
468
+ #print self.width
469
+
470
+ # max_Q Based on Volume Calcs
471
+
472
+
473
+ depth_term = min_depth*I.exchange_area/delta_t
474
+ if min_depth < 0.2:
475
+ # Only add velocity term in shallow waters (< 20 cm)
476
+ # This is a little ad hoc, but maybe it is reasonable
477
+ velocity_term = self.width*min_depth*I.velocity
478
+ else:
479
+ velocity_term = 0.0
480
+
481
+ # This one takes approaching water into account
482
+ max_Q = max(velocity_term, depth_term)
483
+
484
+ # This one preserves Volume
485
+ #max_Q = depth_term
486
+
487
+
488
+ if self.verbose is True:
489
+ log.critical('Max_Q = %f' % max_Q)
490
+ msg = 'Width = %.2fm, Depth at inlet = %.2f m, Velocity = %.2f m/s. ' % (self.width, I.depth, I.velocity)
491
+ msg += 'Max Q = %.2f m^3/s' %(max_Q)
492
+ log.critical(msg)
493
+
494
+ if self.log_filename is not None:
495
+ log_to_file(self.log_filename, msg)
496
+ # New Procedure for assessing the flow available to the Culvert
497
+ # This routine uses the GET FLOW THROUGH CROSS SECTION
498
+ # Need to check Several Polyline however
499
+ # Firstly 3 sides of the exchange Poly
500
+ # then only the Line Directly infront of the Polygon
501
+ # Access polygon Points from self.inlet.polygon
502
+
503
+ # The Following computes the flow crossing over 3 sides of the exchange polygon for the structure
504
+ # Clearly the flow in the culvert can not be more than that flowing toward it through the exhange polygon
505
+
506
+ #q1 = domain.get_flow_through_cross_section(self.culvert_polygons['exchange_polygon0'][1:3]) # First Side Segment
507
+ #q2 = domain.get_flow_through_cross_section(self.culvert_polygons['exchange_polygon0'][2:]) # Second Face Segment
508
+ #q3 =domain.get_flow_through_cross_section(self.culvert_polygons['exchange_polygon0'].take([3,0], axis=0)) # Third Side Segment
509
+ # q4 = domain.get_flow_through_cross_section([self.culvert_polygons['exchange_polygon0'][1:4]][0])
510
+ #q4=max(q1,0.0)+max(q2,0.0)+max(q3,0.0)
511
+ # To use only the Flow crossing the 3 sides of the Exchange Polygon use the following Line Only
512
+ #max_Q=max(q1,q2,q3,q4)
513
+ # Try Simple Smoothing using Average of 2 approaches
514
+ #max_Q=(max(q1,q2,q3,q4)+max_Q)/2.0
515
+ # Calculate the minimum in absolute terms of
516
+ # the requsted flow and the possible flow
517
+ Q_reduced = sign(Q)*min(abs(Q), abs(max_Q))
518
+ if self.verbose is True:
519
+ msg = 'Initial Q Reduced = %.2f m3/s. ' % (Q_reduced)
520
+ log.critical(msg)
521
+
522
+ if self.log_filename is not None:
523
+ log_to_file(self.log_filename, msg)
524
+ # Now Keep Rolling Average of Computed Discharge to Reduce / Remove Oscillations
525
+ # can use delta_t if we want to averageover a time frame for example
526
+ # N = 5.0/delta_t Will provide the average over 5 seconds
527
+
528
+ self.i=(self.i+1)%self.N
529
+ self.Q_list[self.i]=Q_reduced
530
+ Q_reduced = sum(self.Q_list)/len(self.Q_list)
531
+
532
+ if self.verbose is True:
533
+ msg = 'Final Q Reduced = %.2f m3/s. ' % (Q_reduced)
534
+ log.critical(msg)
535
+
536
+ if self.log_filename is not None:
537
+ log_to_file(self.log_filename, msg)
538
+
539
+
540
+ if abs(Q_reduced) < abs(Q):
541
+ msg = '%.2fs: Requested flow is ' % time
542
+ msg += 'greater than what is supported by the smallest '
543
+ msg += 'depth at inlet exchange area:\n '
544
+ msg += 'inlet exchange area: %.2f '% (I.exchange_area)
545
+ msg += 'velocity at inlet :%.2f '% (I.velocity)
546
+ msg += 'Vel* Exch Area = : %.2f '% (I.velocity*avg_depth*self.width)
547
+ msg += 'h_min*inlet_area/delta_t = %.2f*%.2f/%.2f '\
548
+ % (avg_depth, I.exchange_area, delta_t)
549
+ msg += ' = %.2f m^3/s\n ' % Q_reduced
550
+ msg += 'Q will be reduced from %.2f m^3/s to %.2f m^3/s.' % (Q, Q_reduced)
551
+ msg += 'Note calculate max_Q from V %.2f m^3/s ' % (max_Q)
552
+ if self.verbose is True:
553
+ log.critical(msg)
554
+
555
+ if self.log_filename is not None:
556
+ log_to_file(self.log_filename, msg)
557
+
558
+ return Q_reduced
559
+
560
+
561
+ def compute_rates(self, delta_t):
562
+ """Compute new rates for inlet and outlet
563
+ """
564
+
565
+ # Short hands
566
+ domain = self.domain
567
+ dq = domain.quantities
568
+
569
+ # Time stuff
570
+ time = domain.get_time()
571
+ self.last_update = time
572
+
573
+
574
+ if hasattr(self, 'log_filename'):
575
+ log_filename = self.log_filename
576
+
577
+ # Compute stage, energy and velocity at the
578
+ # enquiry points at each end of the culvert
579
+ openings = self.openings
580
+ for i, opening in enumerate(openings):
581
+ idx = self.enquiry_indices[i]
582
+
583
+ stage = dq['stage'].get_values(location='centroids',
584
+ indices=[idx])[0]
585
+ depth = h = stage-opening.elevation
586
+
587
+
588
+ # Get velocity
589
+ xmomentum = dq['xmomentum'].get_values(location='centroids',
590
+ indices=[idx])[0]
591
+ ymomentum = dq['xmomentum'].get_values(location='centroids',
592
+ indices=[idx])[0]
593
+
594
+ if h > minimum_allowed_height:
595
+ u = xmomentum/(h + velocity_protection/h)
596
+ v = ymomentum/(h + velocity_protection/h)
597
+ else:
598
+ u = v = 0.0
599
+
600
+ v_squared = u*u + v*v
601
+
602
+ if self.use_velocity_head is True:
603
+ velocity_head = 0.5*v_squared/g
604
+ else:
605
+ velocity_head = 0.0
606
+
607
+ opening.total_energy = velocity_head + stage
608
+ opening.specific_energy = velocity_head + depth
609
+ opening.stage = stage
610
+ opening.depth = depth
611
+ opening.velocity = sqrt(v_squared)
612
+
613
+
614
+ # We now need to deal with each opening individually
615
+ # Determine flow direction based on total energy difference
616
+ delta_total_energy = openings[0].total_energy - openings[1].total_energy
617
+ if delta_total_energy > 0:
618
+ inlet = openings[0]
619
+ outlet = openings[1]
620
+
621
+ # FIXME: I think this whole momentum jet thing could be a bit more elegant
622
+ inlet.momentum = self.opening_momentum[0]
623
+ outlet.momentum = self.opening_momentum[1]
624
+ else:
625
+ inlet = openings[1]
626
+ outlet = openings[0]
627
+
628
+ inlet.momentum = self.opening_momentum[1]
629
+ outlet.momentum = self.opening_momentum[0]
630
+
631
+ delta_total_energy = -delta_total_energy
632
+
633
+ self.inlet = inlet
634
+ self.outlet = outlet
635
+
636
+ msg = 'Total energy difference is negative'
637
+ assert delta_total_energy >= 0.0, msg
638
+
639
+ # Recompute slope and issue warning if flow is uphill
640
+ # These values do not enter the computation
641
+ delta_z = inlet.elevation - outlet.elevation
642
+ culvert_slope = (delta_z/self.length)
643
+ if culvert_slope < 0.0:
644
+ # Adverse gradient - flow is running uphill
645
+ # Flow will be purely controlled by uphill outlet face
646
+ if self.verbose is True:
647
+ log.critical('%.2fs - WARNING: Flow is running uphill.' % time)
648
+
649
+ if self.log_filename is not None:
650
+ s = 'Time=%.2f, inlet stage = %.2f, outlet stage = %.2f'\
651
+ %(time, self.inlet.stage, self.outlet.stage)
652
+ log_to_file(self.log_filename, s)
653
+ s = 'Delta total energy = %.3f' %(delta_total_energy)
654
+ log_to_file(log_filename, s)
655
+
656
+
657
+ # Determine controlling energy (driving head) for culvert
658
+ if inlet.specific_energy > delta_total_energy:
659
+ # Outlet control
660
+ driving_head = delta_total_energy
661
+ else:
662
+ # Inlet control
663
+ driving_head = inlet.specific_energy
664
+
665
+
666
+
667
+ if self.inlet.depth <= self.trigger_depth:
668
+ Q = 0.0
669
+ else:
670
+ # Calculate discharge for one barrel and
671
+ # set inlet.rate and outlet.rate
672
+
673
+ if self.culvert_description_filename is not None:
674
+ try:
675
+ Q = interpolate_linearly(driving_head,
676
+ self.rating_curve[:,0],
677
+ self.rating_curve[:,1])
678
+ except Below_interval, e:
679
+ Q = self.rating_curve[0,1]
680
+ msg = '%.2fs: ' % time
681
+ msg += 'Delta head smaller than rating curve minimum: '
682
+ msg += str(e)
683
+ msg += '\n '
684
+ msg += 'I will use minimum discharge %.2f m^3/s ' % Q
685
+ msg += 'for culvert "%s"' % self.label
686
+
687
+ if hasattr(self, 'log_filename'):
688
+ log_to_file(self.log_filename, msg)
689
+ except Above_interval, e:
690
+ Q = self.rating_curve[-1,1]
691
+ msg = '%.2fs: ' % time
692
+ msg += 'Delta head greater than rating curve maximum: '
693
+ msg += str(e)
694
+ msg += '\n '
695
+ msg += 'I will use maximum discharge %.2f m^3/s ' % Q
696
+ msg += 'for culvert "%s"' % self.label
697
+
698
+ if self.log_filename is not None:
699
+ log_to_file(self.log_filename, msg)
700
+ else:
701
+ # User culvert routine
702
+ Q, barrel_velocity, culvert_outlet_depth =\
703
+ self.culvert_routine(inlet.depth,
704
+ outlet.depth,
705
+ inlet.velocity,
706
+ outlet.velocity,
707
+ inlet.specific_energy,
708
+ delta_total_energy,
709
+ g,
710
+ culvert_length=self.length,
711
+ culvert_width=self.width,
712
+ culvert_height=self.height,
713
+ culvert_type=self.culvert_type,
714
+ manning=self.manning,
715
+ sum_loss=self.sum_loss,
716
+ log_filename=self.log_filename)
717
+
718
+
719
+
720
+ # Adjust discharge for multiple barrels
721
+ Q *= self.number_of_barrels
722
+
723
+ # Adjust discharge for available water at the inlet
724
+ Q = self.adjust_flow_for_available_water_at_inlet(Q, delta_t)
725
+
726
+ self.inlet.rate = -Q
727
+ self.outlet.rate = Q
728
+
729
+
730
+ # Momentum jet stuff
731
+ if self.use_momentum_jet is True:
732
+
733
+
734
+ # Compute barrel momentum
735
+ barrel_momentum = barrel_velocity*culvert_outlet_depth
736
+
737
+ if self.log_filename is not None:
738
+ s = 'Barrel velocity = %f' %barrel_velocity
739
+ log_to_file(self.log_filename, s)
740
+
741
+ # Compute momentum vector at outlet
742
+ outlet_mom_x, outlet_mom_y = self.vector * barrel_momentum
743
+
744
+ if self.log_filename is not None:
745
+ s = 'Directional momentum = (%f, %f)' %(outlet_mom_x, outlet_mom_y)
746
+ log_to_file(self.log_filename, s)
747
+
748
+
749
+ # Update momentum
750
+ if delta_t > 0.0:
751
+ xmomentum_rate = outlet_mom_x - outlet.momentum[0].value
752
+ xmomentum_rate /= delta_t
753
+
754
+ ymomentum_rate = outlet_mom_y - outlet.momentum[1].value
755
+ ymomentum_rate /= delta_t
756
+
757
+ if self.log_filename is not None:
758
+ s = 'X Y MOM_RATE = (%f, %f) ' %(xmomentum_rate, ymomentum_rate)
759
+ log_to_file(self.log_filename, s)
760
+ else:
761
+ xmomentum_rate = ymomentum_rate = 0.0
762
+
763
+
764
+ # Set momentum rates for outlet jet
765
+ outlet.momentum[0].rate = xmomentum_rate
766
+ outlet.momentum[1].rate = ymomentum_rate
767
+
768
+ # Remember this value for next step (IMPORTANT)
769
+ outlet.momentum[0].value = outlet_mom_x
770
+ outlet.momentum[1].value = outlet_mom_y
771
+
772
+ if int(domain.time*100) % 100 == 0:
773
+
774
+ if self.log_filename is not None:
775
+ s = 'T=%.5f, Culvert Discharge = %.3f f'\
776
+ %(time, Q)
777
+ s += ' Depth= %0.3f Momentum = (%0.3f, %0.3f)'\
778
+ %(culvert_outlet_depth, outlet_mom_x,outlet_mom_y)
779
+ s += ' Momentum rate: (%.4f, %.4f)'\
780
+ %(xmomentum_rate, ymomentum_rate)
781
+ s+='Outlet Vel= %.3f'\
782
+ %(barrel_velocity)
783
+ log_to_file(self.log_filename, s)
784
+
785
+
786
+ # Execute momentum terms
787
+ # This is where Inflow objects are evaluated and update the domain
788
+ self.outlet.momentum[0](domain)
789
+ self.outlet.momentum[1](domain)
790
+
791
+
792
+
793
+ # Log timeseries to file
794
+ try:
795
+ fid = open(self.timeseries_filename, 'a')
796
+ except:
797
+ pass
798
+ else:
799
+ fid.write('%.2f, %.2f\n' %(time, Q))
800
+ fid.close()
801
+
802
+ # Store value of time
803
+ self.last_time = time
804
+
805
+
806
+
807
+
808
+
809
+
810
+
811
+ # OBSOLETE (Except for momentum jet in Culvert_flow_energy)
812
+ class Culvert_flow_rating:
813
+ """Culvert flow - transfer water from one hole to another
814
+
815
+
816
+ Input: Two points, pipe_size (either diameter or width, height),
817
+ mannings_rougness,
818
+ inlet/outlet energy_loss_coefficients, internal_bend_coefficent,
819
+ top-down_blockage_factor and bottom_up_blockage_factor
820
+
821
+ """
822
+
823
+ def __init__(self,
824
+ domain,
825
+ culvert_description_filename=None,
826
+ end_point0=None,
827
+ end_point1=None,
828
+ enquiry_point0=None,
829
+ enquiry_point1=None,
830
+ update_interval=None,
831
+ log_file=False,
832
+ discharge_hydrograph=False,
833
+ verbose=False):
834
+
835
+
836
+
837
+ label, type, width, height, length, number_of_barrels, description, rating_curve = read_culvert_description(culvert_description_filename)
838
+
839
+
840
+ # Store culvert information
841
+ self.label = label
842
+ self.description = description
843
+ self.culvert_type = type
844
+ self.rating_curve = ensure_numeric(rating_curve)
845
+ self.number_of_barrels = number_of_barrels
846
+
847
+ if label is None: label = 'culvert_flow'
848
+ label += '_' + str(id(self))
849
+ self.label = label
850
+
851
+ # File for storing discharge_hydrograph
852
+ if discharge_hydrograph is True:
853
+ self.timeseries_filename = label + '_timeseries.csv'
854
+ fid = open(self.timeseries_filename, 'w')
855
+ fid.write('time, discharge\n')
856
+ fid.close()
857
+
858
+ # Log file for storing general textual output
859
+ if log_file is True:
860
+ self.log_filename = label + '.log'
861
+ log_to_file(self.log_filename, self.label)
862
+ log_to_file(self.log_filename, description)
863
+ log_to_file(self.log_filename, self.culvert_type)
864
+
865
+
866
+ # Create the fundamental culvert polygons from POLYGON
867
+ #if self.culvert_type == 'circle':
868
+ # # Redefine width and height for use with create_culvert_polygons
869
+ # width = height = diameter
870
+
871
+ P = create_culvert_polygons(end_point0,
872
+ end_point1,
873
+ width=width,
874
+ height=height,
875
+ number_of_barrels=number_of_barrels)
876
+
877
+ # Select enquiry points
878
+ if enquiry_point0 is None:
879
+ enquiry_point0 = P['enquiry_point0']
880
+
881
+ if enquiry_point1 is None:
882
+ enquiry_point1 = P['enquiry_point1']
883
+
884
+ if verbose is True:
885
+ pass
886
+ #plot_polygons([[end_point0, end_point1],
887
+ # P['exchange_polygon0'],
888
+ # P['exchange_polygon1'],
889
+ # [enquiry_point0, 1.005*enquiry_point0],
890
+ # [enquiry_point1, 1.005*enquiry_point1]],
891
+ # figname='culvert_polygon_output')
892
+
893
+
894
+
895
+ self.enquiry_points = [enquiry_point0, enquiry_point1]
896
+
897
+ self.enquiry_indices = []
898
+ for point in self.enquiry_points:
899
+ # Find nearest centroid
900
+ N = len(domain)
901
+ points = domain.get_centroid_coordinates(absolute=True)
902
+
903
+ # Calculate indices in exchange area for this forcing term
904
+
905
+ triangle_id = min_dist = sys.maxint
906
+ for k in range(N):
907
+ x, y = points[k,:] # Centroid
908
+
909
+ c = point
910
+ distance = (x-c[0])**2+(y-c[1])**2
911
+ if distance < min_dist:
912
+ min_dist = distance
913
+ triangle_id = k
914
+
915
+
916
+ if triangle_id < sys.maxint:
917
+ msg = 'found triangle with centroid (%f, %f)'\
918
+ %tuple(points[triangle_id, :])
919
+ msg += ' for point (%f, %f)' %tuple(point)
920
+
921
+ self.enquiry_indices.append(triangle_id)
922
+ else:
923
+ msg = 'Triangle not found for point (%f, %f)' %point
924
+ raise Exception(msg)
925
+
926
+
927
+
928
+ # Check that all polygons lie within the mesh.
929
+ bounding_polygon = domain.get_boundary_polygon()
930
+ for key in P.keys():
931
+ if key in ['exchange_polygon0',
932
+ 'exchange_polygon1']:
933
+ for point in list(P[key]) + self.enquiry_points:
934
+ msg = 'Point %s in polygon %s for culvert %s did not'\
935
+ %(str(point), key, self.label)
936
+ msg += 'fall within the domain boundary.'
937
+ assert is_inside_polygon(point, bounding_polygon), msg
938
+
939
+
940
+ # Create inflow object at each end of the culvert.
941
+ self.openings = []
942
+ self.openings.append(Inflow(domain,
943
+ polygon=P['exchange_polygon0']))
944
+
945
+ self.openings.append(Inflow(domain,
946
+ polygon=P['exchange_polygon1']))
947
+
948
+
949
+
950
+ dq = domain.quantities
951
+ for i, opening in enumerate(self.openings):
952
+ elevation = dq['elevation'].get_values(location='centroids',
953
+ indices=[self.enquiry_indices[i]])
954
+ opening.elevation = elevation
955
+ opening.stage = elevation # Simple assumption that culvert is dry initially
956
+
957
+ # Assume two openings for now: Referred to as 0 and 1
958
+ assert len(self.openings) == 2
959
+
960
+ # Determine pipe direction
961
+ self.delta_z = delta_z = self.openings[0].elevation - self.openings[1].elevation
962
+ if delta_z > 0.0:
963
+ self.inlet = self.openings[0]
964
+ self.outlet = self.openings[1]
965
+ else:
966
+ self.outlet = self.openings[0]
967
+ self.inlet = self.openings[1]
968
+
969
+
970
+ # Store basic geometry
971
+ self.end_points = [end_point0, end_point1]
972
+ self.vector = P['vector']
973
+ self.length = P['length']; assert self.length > 0.0
974
+ if not num.allclose(self.length, length, rtol=1.0e-2, atol=1.0e-2):
975
+ msg = 'WARNING: barrel length specified in "%s" (%.2f m)' %(culvert_description_filename, length)
976
+ msg += ' does not match distance between specified'
977
+ msg += ' end points (%.2f m)' %self.length
978
+ log.critical(msg)
979
+
980
+ self.verbose = verbose
981
+ self.last_update = 0.0 # For use with update_interval
982
+ self.last_time = 0.0
983
+ self.update_interval = update_interval
984
+
985
+
986
+ # Print something
987
+ if hasattr(self, 'log_filename'):
988
+ s = 'Culvert Effective Length = %.2f m' %(self.length)
989
+ log_to_file(self.log_filename, s)
990
+
991
+ s = 'Culvert Direction is %s\n' %str(self.vector)
992
+ log_to_file(self.log_filename, s)
993
+
994
+
995
+
996
+
997
+
998
+ def __call__(self, domain):
999
+
1000
+ # Time stuff
1001
+ time = domain.get_time()
1002
+
1003
+
1004
+ update = False
1005
+ if self.update_interval is None:
1006
+ update = True
1007
+ delta_t = domain.timestep # Next timestep has been computed in domain.py
1008
+ else:
1009
+ if time - self.last_update > self.update_interval or time == 0.0:
1010
+ update = True
1011
+ delta_t = self.update_interval
1012
+
1013
+ s = '\nTime = %.2f, delta_t = %f' %(time, delta_t)
1014
+ if hasattr(self, 'log_filename'):
1015
+ log_to_file(self.log_filename, s)
1016
+
1017
+
1018
+ if update is True:
1019
+ self.last_update = time
1020
+
1021
+ dq = domain.quantities
1022
+
1023
+ # Get average water depths at each opening
1024
+ openings = self.openings # There are two Opening [0] and [1]
1025
+ for i, opening in enumerate(openings):
1026
+
1027
+ # Compute mean values of selected quantitites in the
1028
+ # enquiry area in front of the culvert
1029
+
1030
+ stage = dq['stage'].get_values(location='centroids',
1031
+ indices=[self.enquiry_indices[i]])
1032
+
1033
+ # Store current average stage and depth with each opening object
1034
+ opening.depth = stage - opening.elevation
1035
+ opening.stage = stage
1036
+
1037
+
1038
+
1039
+ ################# End of the FOR loop ################################################
1040
+
1041
+ # We now need to deal with each opening individually
1042
+
1043
+ # Determine flow direction based on total energy difference
1044
+
1045
+ delta_w = self.inlet.stage - self.outlet.stage
1046
+
1047
+ if hasattr(self, 'log_filename'):
1048
+ s = 'Time=%.2f, inlet stage = %.2f, outlet stage = %.2f' %(time,
1049
+ self.inlet.stage,
1050
+ self.outlet.stage)
1051
+ log_to_file(self.log_filename, s)
1052
+
1053
+
1054
+ if self.inlet.depth <= 0.01:
1055
+ Q = 0.0
1056
+ else:
1057
+ # Calculate discharge for one barrel and set inlet.rate and outlet.rate
1058
+
1059
+ try:
1060
+ Q = interpolate_linearly(delta_w, self.rating_curve[:,0], self.rating_curve[:,1])
1061
+ except Below_interval, e:
1062
+ Q = self.rating_curve[0,1]
1063
+ msg = '%.2fs: Delta head smaller than rating curve minimum: ' %time
1064
+ msg += str(e)
1065
+ msg += '\n I will use minimum discharge %.2f m^3/s for culvert "%s"'\
1066
+ %(Q, self.label)
1067
+ if hasattr(self, 'log_filename'):
1068
+ log_to_file(self.log_filename, msg)
1069
+ except Above_interval, e:
1070
+ Q = self.rating_curve[-1,1]
1071
+ msg = '%.2fs: Delta head greater than rating curve maximum: ' %time
1072
+ msg += str(e)
1073
+ msg += '\n I will use maximum discharge %.2f m^3/s for culvert "%s"'\
1074
+ %(Q, self.label)
1075
+ if hasattr(self, 'log_filename'):
1076
+ log_to_file(self.log_filename, msg)
1077
+
1078
+
1079
+
1080
+
1081
+ # Adjust discharge for multiple barrels
1082
+ Q *= self.number_of_barrels
1083
+
1084
+
1085
+ # Adjust Q downwards depending on available water at inlet
1086
+ stage = self.inlet.get_quantity_values(quantity_name='stage')
1087
+ elevation = self.inlet.get_quantity_values(quantity_name='elevation')
1088
+ depth = stage-elevation
1089
+
1090
+
1091
+ V = 0
1092
+ for i, d in enumerate(depth):
1093
+ V += d * domain.areas[i]
1094
+
1095
+ dt = delta_t
1096
+ if Q*dt > V:
1097
+
1098
+ Q_reduced = 0.9*V/dt # Reduce with safety factor
1099
+
1100
+ msg = '%.2fs: Computed extraction for this time interval (Q*dt) is ' % time
1101
+ msg += 'greater than current volume (V) at inlet.\n'
1102
+ msg += ' Q will be reduced from %.2f m^3/s to %.2f m^3/s.' % (Q, Q_reduced)
1103
+
1104
+ if self.verbose is True:
1105
+ log.critical(msg)
1106
+ if hasattr(self, 'log_filename'):
1107
+ log_to_file(self.log_filename, msg)
1108
+
1109
+ Q = Q_reduced
1110
+
1111
+ self.inlet.rate = -Q
1112
+ self.outlet.rate = Q
1113
+
1114
+ # Log timeseries to file
1115
+ try:
1116
+ fid = open(self.timeseries_filename, 'a')
1117
+ except:
1118
+ pass
1119
+ else:
1120
+ fid.write('%.2f, %.2f\n' %(time, Q))
1121
+ fid.close()
1122
+
1123
+ # Store value of time
1124
+ self.last_time = time
1125
+
1126
+
1127
+
1128
+ # Execute flow term for each opening
1129
+ # This is where Inflow objects are evaluated using the last rate that has been calculated
1130
+ #
1131
+ # This will take place at every internal timestep and update the domain
1132
+ for opening in self.openings:
1133
+ opening(domain)
1134
+
1135
+
1136
+
1137
+
1138
+
1139
+
1140
+ class Culvert_flow_energy:
1141
+ """Culvert flow - transfer water from one hole to another
1142
+
1143
+ Using Momentum as Calculated by Culvert Flow !!
1144
+ Could be Several Methods Investigated to do This !!!
1145
+
1146
+ 2008_May_08
1147
+ To Ole:
1148
+ OK so here we need to get the Polygon Creating code to create
1149
+ polygons for the culvert Based on
1150
+ the two input Points (X0,Y0) and (X1,Y1) - need to be passed
1151
+ to create polygon
1152
+
1153
+ The two centers are now passed on to create_polygon.
1154
+
1155
+
1156
+ Input: Two points, pipe_size (either diameter or width, height),
1157
+ mannings_rougness,
1158
+ inlet/outlet energy_loss_coefficients, internal_bend_coefficent,
1159
+ top-down_blockage_factor and bottom_up_blockage_factor
1160
+
1161
+
1162
+ And the Delta H enquiry should be change from Openings in line 412
1163
+ to the enquiry Polygons infront of the culvert
1164
+ At the moment this script uses only Depth, later we can change it to
1165
+ Energy...
1166
+
1167
+ Once we have Delta H can calculate a Flow Rate and from Flow Rate
1168
+ an Outlet Velocity
1169
+ The Outlet Velocity x Outlet Depth = Momentum to be applied at the Outlet...
1170
+
1171
+ Invert levels are optional. If left out they will default to the
1172
+ elevation at the opening.
1173
+
1174
+ """
1175
+
1176
+ def __init__(self,
1177
+ domain,
1178
+ label=None,
1179
+ description=None,
1180
+ end_point0=None,
1181
+ end_point1=None,
1182
+ width=None,
1183
+ height=None,
1184
+ diameter=None,
1185
+ manning=None, # Mannings Roughness for Culvert
1186
+ invert_level0=None, # Invert level at opening 0
1187
+ invert_level1=None, # Invert level at opening 1
1188
+ loss_exit=None,
1189
+ loss_entry=None,
1190
+ loss_bend=None,
1191
+ loss_special=None,
1192
+ blockage_topdwn=None,
1193
+ blockage_bottup=None,
1194
+ culvert_routine=None,
1195
+ number_of_barrels=1,
1196
+ enquiry_point0=None,
1197
+ enquiry_point1=None,
1198
+ update_interval=None,
1199
+ verbose=False):
1200
+
1201
+ # Input check
1202
+ if diameter is not None:
1203
+ self.culvert_type = 'circle'
1204
+ self.diameter = diameter
1205
+ if height is not None or width is not None:
1206
+ msg = 'Either diameter or width&height must be specified, '
1207
+ msg += 'but not both.'
1208
+ raise Exception(msg)
1209
+ else:
1210
+ if height is not None:
1211
+ if width is None:
1212
+ self.culvert_type = 'square'
1213
+ width = height
1214
+ else:
1215
+ self.culvert_type = 'rectangle'
1216
+ elif width is not None:
1217
+ if height is None:
1218
+ self.culvert_type = 'square'
1219
+ height = width
1220
+ else:
1221
+ msg = 'Either diameter or width&height must be specified.'
1222
+ raise Exception(msg)
1223
+
1224
+ if height == width:
1225
+ self.culvert_type = 'square'
1226
+
1227
+ self.height = height
1228
+ self.width = width
1229
+
1230
+
1231
+ assert self.culvert_type in ['circle', 'square', 'rectangle']
1232
+
1233
+ assert number_of_barrels >= 1
1234
+ self.number_of_barrels = number_of_barrels
1235
+
1236
+
1237
+ # Set defaults
1238
+ if manning is None: manning = 0.012 # Default roughness for pipe
1239
+ if loss_exit is None: loss_exit = 1.00
1240
+ if loss_entry is None: loss_entry = 0.50
1241
+ if loss_bend is None: loss_bend=0.00
1242
+ if loss_special is None: loss_special=0.00
1243
+ if blockage_topdwn is None: blockage_topdwn=0.00
1244
+ if blockage_bottup is None: blockage_bottup=0.00
1245
+ if culvert_routine is None:
1246
+ culvert_routine=boyd_generalised_culvert_model
1247
+
1248
+ if label is None: label = 'culvert_flow'
1249
+ label += '_' + str(id(self))
1250
+ self.label = label
1251
+
1252
+ # File for storing culvert quantities
1253
+ self.timeseries_filename = label + '_timeseries.csv'
1254
+ fid = open(self.timeseries_filename, 'w')
1255
+ fid.write('time, E0, E1, Velocity, Discharge\n')
1256
+ fid.close()
1257
+
1258
+ # Log file for storing general textual output
1259
+ self.log_filename = label + '.log'
1260
+ log_to_file(self.log_filename, self.label)
1261
+ log_to_file(self.log_filename, description)
1262
+ log_to_file(self.log_filename, self.culvert_type)
1263
+
1264
+
1265
+ # Create the fundamental culvert polygons from POLYGON
1266
+ if self.culvert_type == 'circle':
1267
+ # Redefine width and height for use with create_culvert_polygons
1268
+ width = height = diameter
1269
+
1270
+ P = create_culvert_polygons(end_point0,
1271
+ end_point1,
1272
+ width=width,
1273
+ height=height,
1274
+ number_of_barrels=number_of_barrels)
1275
+
1276
+ # Select enquiry points
1277
+ if enquiry_point0 is None:
1278
+ enquiry_point0 = P['enquiry_point0']
1279
+
1280
+ if enquiry_point1 is None:
1281
+ enquiry_point1 = P['enquiry_point1']
1282
+
1283
+ if verbose is True:
1284
+ pass
1285
+ #plot_polygons([[end_point0, end_point1],
1286
+ # P['exchange_polygon0'],
1287
+ # P['exchange_polygon1'],
1288
+ # [enquiry_point0, 1.005*enquiry_point0],
1289
+ # [enquiry_point1, 1.005*enquiry_point1]],
1290
+ # figname='culvert_polygon_output')
1291
+
1292
+
1293
+ self.enquiry_points = [enquiry_point0, enquiry_point1]
1294
+
1295
+
1296
+ self.enquiry_indices = []
1297
+ for point in self.enquiry_points:
1298
+ # Find nearest centroid
1299
+ N = len(domain)
1300
+ points = domain.get_centroid_coordinates(absolute=True)
1301
+
1302
+ # Calculate indices in exchange area for this forcing term
1303
+
1304
+ triangle_id = min_dist = sys.maxint
1305
+ for k in range(N):
1306
+ x, y = points[k,:] # Centroid
1307
+
1308
+ c = point
1309
+ distance = (x-c[0])**2+(y-c[1])**2
1310
+ if distance < min_dist:
1311
+ min_dist = distance
1312
+ triangle_id = k
1313
+
1314
+
1315
+ if triangle_id < sys.maxint:
1316
+ msg = 'found triangle with centroid (%f, %f)'\
1317
+ %tuple(points[triangle_id, :])
1318
+ msg += ' for point (%f, %f)' %tuple(point)
1319
+
1320
+ self.enquiry_indices.append(triangle_id)
1321
+ else:
1322
+ msg = 'Triangle not found for point (%f, %f)' %point
1323
+ raise Exception(msg)
1324
+
1325
+
1326
+
1327
+
1328
+
1329
+
1330
+ # Check that all polygons lie within the mesh.
1331
+ bounding_polygon = domain.get_boundary_polygon()
1332
+ for key in P.keys():
1333
+ if key in ['exchange_polygon0',
1334
+ 'exchange_polygon1']:
1335
+ for point in P[key]:
1336
+
1337
+ msg = 'Point %s in polygon %s for culvert %s did not'\
1338
+ %(str(point), key, self.label)
1339
+ msg += 'fall within the domain boundary.'
1340
+ assert is_inside_polygon(point, bounding_polygon), msg
1341
+
1342
+
1343
+ # Create inflow object at each end of the culvert.
1344
+ self.openings = []
1345
+ self.openings.append(Inflow(domain,
1346
+ polygon=P['exchange_polygon0']))
1347
+
1348
+ self.openings.append(Inflow(domain,
1349
+ polygon=P['exchange_polygon1']))
1350
+
1351
+
1352
+ # Assume two openings for now: Referred to as 0 and 1
1353
+ assert len(self.openings) == 2
1354
+
1355
+ # Store basic geometry
1356
+ self.end_points = [end_point0, end_point1]
1357
+ self.invert_levels = [invert_level0, invert_level1]
1358
+ #self.enquiry_polygons = [P['enquiry_polygon0'], P['enquiry_polygon1']]
1359
+ #self.enquiry_polylines = [P['enquiry_polygon0'][:2],
1360
+ # P['enquiry_polygon1'][:2]]
1361
+ self.vector = P['vector']
1362
+ self.length = P['length']; assert self.length > 0.0
1363
+ self.verbose = verbose
1364
+ self.last_time = 0.0
1365
+ self.last_update = 0.0 # For use with update_interval
1366
+ self.update_interval = update_interval
1367
+
1368
+
1369
+ # Store hydraulic parameters
1370
+ self.manning = manning
1371
+ self.loss_exit = loss_exit
1372
+ self.loss_entry = loss_entry
1373
+ self.loss_bend = loss_bend
1374
+ self.loss_special = loss_special
1375
+ self.sum_loss = loss_exit + loss_entry + loss_bend + loss_special
1376
+ self.blockage_topdwn = blockage_topdwn
1377
+ self.blockage_bottup = blockage_bottup
1378
+
1379
+ # Store culvert routine
1380
+ self.culvert_routine = culvert_routine
1381
+
1382
+
1383
+ # Create objects to update momentum (a bit crude at this stage)
1384
+ xmom0 = General_forcing(domain, 'xmomentum',
1385
+ polygon=P['exchange_polygon0'])
1386
+
1387
+ xmom1 = General_forcing(domain, 'xmomentum',
1388
+ polygon=P['exchange_polygon1'])
1389
+
1390
+ ymom0 = General_forcing(domain, 'ymomentum',
1391
+ polygon=P['exchange_polygon0'])
1392
+
1393
+ ymom1 = General_forcing(domain, 'ymomentum',
1394
+ polygon=P['exchange_polygon1'])
1395
+
1396
+ self.opening_momentum = [ [xmom0, ymom0], [xmom1, ymom1] ]
1397
+
1398
+
1399
+ # Print something
1400
+ s = 'Culvert Effective Length = %.2f m' %(self.length)
1401
+ log_to_file(self.log_filename, s)
1402
+
1403
+ s = 'Culvert Direction is %s\n' %str(self.vector)
1404
+ log_to_file(self.log_filename, s)
1405
+
1406
+
1407
+ def __call__(self, domain):
1408
+
1409
+ log_filename = self.log_filename
1410
+
1411
+ # Time stuff
1412
+ time = domain.get_time()
1413
+
1414
+ # Short hand
1415
+ dq = domain.quantities
1416
+
1417
+
1418
+ update = False
1419
+ if self.update_interval is None:
1420
+ update = True
1421
+ delta_t = domain.timestep # Next timestep has been computed in domain.py
1422
+ else:
1423
+ if time - self.last_update > self.update_interval or time == 0.0:
1424
+ update = True
1425
+ delta_t = self.update_interval
1426
+
1427
+ s = '\nTime = %.2f, delta_t = %f' %(time, delta_t)
1428
+ if hasattr(self, 'log_filename'):
1429
+ log_to_file(log_filename, s)
1430
+
1431
+
1432
+ if update is True:
1433
+ self.last_update = time
1434
+
1435
+ msg = 'Time did not advance'
1436
+ if time > 0.0: assert delta_t > 0.0, msg
1437
+
1438
+
1439
+ # Get average water depths at each opening
1440
+ openings = self.openings # There are two Opening [0] and [1]
1441
+ for i, opening in enumerate(openings):
1442
+
1443
+ # Compute mean values of selected quantitites in the
1444
+ # exchange area in front of the culvert
1445
+
1446
+ stage = opening.get_quantity_values(quantity_name='stage')
1447
+ w = mean(stage) # Average stage
1448
+
1449
+ # Use invert level instead of elevation if specified
1450
+ invert_level = self.invert_levels[i]
1451
+ if invert_level is not None:
1452
+ z = invert_level
1453
+ else:
1454
+ elevation = opening.get_quantity_values(quantity_name='elevation')
1455
+ z = mean(elevation) # Average elevation
1456
+
1457
+ # Estimated depth above the culvert inlet
1458
+ d = w - z # Used for calculations involving depth
1459
+ if d < 0.0:
1460
+ # This is possible since w and z are taken at different locations
1461
+ #msg = 'D < 0.0: %f' %d
1462
+ #raise Exception(msg)
1463
+ d = 0.0
1464
+
1465
+
1466
+ # Ratio of depth to culvert height.
1467
+ # If ratio > 1 then culvert is running full
1468
+ if self.culvert_type == 'circle':
1469
+ ratio = d/self.diameter
1470
+ else:
1471
+ ratio = d/self.height
1472
+ opening.ratio = ratio
1473
+
1474
+
1475
+ # Average measures of energy in front of this opening
1476
+
1477
+ id = [self.enquiry_indices[i]]
1478
+ stage = dq['stage'].get_values(location='centroids',
1479
+ indices=id)
1480
+ elevation = dq['elevation'].get_values(location='centroids',
1481
+ indices=id)
1482
+ xmomentum = dq['xmomentum'].get_values(location='centroids',
1483
+ indices=id)
1484
+ ymomentum = dq['xmomentum'].get_values(location='centroids',
1485
+ indices=id)
1486
+ depth = stage-elevation
1487
+ if depth > 0.0:
1488
+ u = xmomentum/(depth + velocity_protection/depth)
1489
+ v = ymomentum/(depth + velocity_protection/depth)
1490
+ else:
1491
+ u = v = 0.0
1492
+
1493
+
1494
+ opening.total_energy = 0.5*(u*u + v*v)/g + stage
1495
+
1496
+ # Store current average stage and depth with each opening object
1497
+ opening.depth = d
1498
+ opening.depth_trigger = d # Use this for now
1499
+ opening.stage = w
1500
+ opening.elevation = z
1501
+
1502
+
1503
+ ################# End of the FOR loop ################################################
1504
+
1505
+ # We now need to deal with each opening individually
1506
+
1507
+ # Determine flow direction based on total energy difference
1508
+ delta_Et = openings[0].total_energy - openings[1].total_energy
1509
+
1510
+ if delta_Et > 0:
1511
+ inlet = openings[0]
1512
+ outlet = openings[1]
1513
+
1514
+ inlet.momentum = self.opening_momentum[0]
1515
+ outlet.momentum = self.opening_momentum[1]
1516
+
1517
+ else:
1518
+ inlet = openings[1]
1519
+ outlet = openings[0]
1520
+
1521
+ inlet.momentum = self.opening_momentum[1]
1522
+ outlet.momentum = self.opening_momentum[0]
1523
+
1524
+ delta_Et = -delta_Et
1525
+
1526
+ self.inlet = inlet
1527
+ self.outlet = outlet
1528
+
1529
+ msg = 'Total energy difference is negative'
1530
+ assert delta_Et > 0.0, msg
1531
+
1532
+ delta_h = inlet.stage - outlet.stage
1533
+ delta_z = inlet.elevation - outlet.elevation
1534
+ culvert_slope = (delta_z/self.length)
1535
+
1536
+ if culvert_slope < 0.0:
1537
+ # Adverse gradient - flow is running uphill
1538
+ # Flow will be purely controlled by uphill outlet face
1539
+ if self.verbose is True:
1540
+ log.critical('WARNING: Flow is running uphill. Watch Out! '
1541
+ 'inlet.elevation=%s, outlet.elevation%s'
1542
+ % (str(inlet.elevation), str(outlet.elevation)))
1543
+
1544
+
1545
+ s = 'Delta total energy = %.3f' %(delta_Et)
1546
+ log_to_file(log_filename, s)
1547
+
1548
+
1549
+ # Calculate discharge for one barrel and set inlet.rate and outlet.rate
1550
+ Q, barrel_velocity, culvert_outlet_depth = self.culvert_routine(self, inlet, outlet, delta_Et, g)
1551
+
1552
+ # Adjust discharge for multiple barrels
1553
+ Q *= self.number_of_barrels
1554
+
1555
+ # Compute barrel momentum
1556
+ barrel_momentum = barrel_velocity*culvert_outlet_depth
1557
+
1558
+ s = 'Barrel velocity = %f' %barrel_velocity
1559
+ log_to_file(log_filename, s)
1560
+
1561
+ # Compute momentum vector at outlet
1562
+ outlet_mom_x, outlet_mom_y = self.vector * barrel_momentum
1563
+
1564
+ s = 'Directional momentum = (%f, %f)' %(outlet_mom_x, outlet_mom_y)
1565
+ log_to_file(log_filename, s)
1566
+
1567
+ # Log timeseries to file
1568
+ fid = open(self.timeseries_filename, 'a')
1569
+ fid.write('%f, %f, %f, %f, %f\n'\
1570
+ %(time,
1571
+ openings[0].total_energy,
1572
+ openings[1].total_energy,
1573
+ barrel_velocity,
1574
+ Q))
1575
+ fid.close()
1576
+
1577
+ # Update momentum
1578
+ if delta_t > 0.0:
1579
+ xmomentum_rate = outlet_mom_x - outlet.momentum[0].value
1580
+ xmomentum_rate /= delta_t
1581
+
1582
+ ymomentum_rate = outlet_mom_y - outlet.momentum[1].value
1583
+ ymomentum_rate /= delta_t
1584
+
1585
+ s = 'X Y MOM_RATE = (%f, %f) ' %(xmomentum_rate, ymomentum_rate)
1586
+ log_to_file(log_filename, s)
1587
+ else:
1588
+ xmomentum_rate = ymomentum_rate = 0.0
1589
+
1590
+
1591
+ # Set momentum rates for outlet jet
1592
+ outlet.momentum[0].rate = xmomentum_rate
1593
+ outlet.momentum[1].rate = ymomentum_rate
1594
+
1595
+ # Remember this value for next step (IMPORTANT)
1596
+ outlet.momentum[0].value = outlet_mom_x
1597
+ outlet.momentum[1].value = outlet_mom_y
1598
+
1599
+ if int(domain.time*100) % 100 == 0:
1600
+ s = 'T=%.5f, Culvert Discharge = %.3f f'\
1601
+ %(time, Q)
1602
+ s += ' Depth= %0.3f Momentum = (%0.3f, %0.3f)'\
1603
+ %(culvert_outlet_depth, outlet_mom_x,outlet_mom_y)
1604
+ s += ' Momentum rate: (%.4f, %.4f)'\
1605
+ %(xmomentum_rate, ymomentum_rate)
1606
+ s+='Outlet Vel= %.3f'\
1607
+ %(barrel_velocity)
1608
+ log_to_file(log_filename, s)
1609
+
1610
+ # Store value of time
1611
+ self.last_time = time
1612
+
1613
+
1614
+
1615
+ # Execute flow term for each opening
1616
+ # This is where Inflow objects are evaluated and update the domain
1617
+ for opening in self.openings:
1618
+ opening(domain)
1619
+
1620
+ # Execute momentum terms
1621
+ # This is where Inflow objects are evaluated and update the domain
1622
+ self.outlet.momentum[0](domain)
1623
+ self.outlet.momentum[1](domain)
1624
+
1625
+
1626
+
1627
+ Culvert_flow = Culvert_flow_general