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