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,2271 @@
1
+ """ Test environmental forcing - rain, wind, etc.
2
+ """
3
+
4
+ import unittest, os
5
+ import anuga
6
+ from anuga.shallow_water.shallow_water_domain import Domain
7
+ from anuga.shallow_water.boundaries import Reflective_boundary
8
+ from anuga.coordinate_transforms.geo_reference import Geo_reference
9
+ from anuga.file_conversion.file_conversion import timefile2netcdf
10
+ from anuga.abstract_2d_finite_volumes.mesh_factory import rectangular
11
+ from anuga.abstract_2d_finite_volumes.util import file_function
12
+ from anuga.config import netcdf_mode_r, netcdf_mode_w, netcdf_mode_a
13
+
14
+ from anuga.shallow_water.forcing import *
15
+
16
+ import numpy as num
17
+ import warnings
18
+
19
+
20
+ def scalar_func_list(t, x, y):
21
+ """Function that returns a scalar.
22
+
23
+ Used to test error message when numeric array is expected
24
+ """
25
+
26
+ return [17.7]
27
+
28
+
29
+ def speed(t, x, y):
30
+ """
31
+ Variable windfield implemented using functions
32
+ Large speeds halfway between center and edges
33
+
34
+ Low speeds at center and edges
35
+ """
36
+
37
+ from math import exp, cos, pi
38
+
39
+ x = num.array(x)
40
+ y = num.array(y)
41
+
42
+ N = len(x)
43
+ s = 0*x #New array
44
+
45
+ for k in range(N):
46
+ r = num.sqrt(x[k]**2 + y[k]**2)
47
+ factor = exp(-(r-0.15)**2)
48
+ s[k] = 4000 * factor * (cos(t*2*pi/150) + 2)
49
+
50
+ return s
51
+
52
+
53
+ def angle(t, x, y):
54
+ """Rotating field
55
+ """
56
+ from math import atan, pi
57
+
58
+ x = num.array(x)
59
+ y = num.array(y)
60
+
61
+ N = len(x)
62
+ a = 0 * x # New array
63
+
64
+ for k in range(N):
65
+ r = num.sqrt(x[k]**2 + y[k]**2)
66
+
67
+ angle = atan(y[k]/x[k])
68
+
69
+ if x[k] < 0:
70
+ angle += pi
71
+
72
+ # Take normal direction
73
+ angle -= pi/2
74
+
75
+ # Ensure positive radians
76
+ if angle < 0:
77
+ angle += 2*pi
78
+
79
+ a[k] = angle/pi*180
80
+
81
+ return a
82
+
83
+ def time_varying_speed(t, x, y):
84
+ """
85
+ Variable speed windfield
86
+ """
87
+
88
+ from math import exp, cos, pi
89
+
90
+ x = num.array(x,num.float)
91
+ y = num.array(y,num.float)
92
+
93
+ N = len(x)
94
+ s = 0*x #New array
95
+
96
+ #dx=x[-1]-x[0]; dy = y[-1]-y[0]
97
+ S=100.
98
+ for k in range(N):
99
+ s[k]=S*(1.+t/100.)
100
+ return s
101
+
102
+
103
+ def time_varying_angle(t, x, y):
104
+ """Rotating field
105
+ """
106
+ from math import atan, pi
107
+
108
+ x = num.array(x,num.float)
109
+ y = num.array(y,num.float)
110
+
111
+ N = len(x)
112
+ a = 0 * x # New array
113
+
114
+ phi=135.
115
+ for k in range(N):
116
+ a[k]=phi*(1.+t/100.)
117
+
118
+ return a
119
+
120
+
121
+ def time_varying_pressure(t, x, y):
122
+ """Rotating field
123
+ """
124
+ from math import atan, pi
125
+
126
+ x = num.array(x,num.float)
127
+ y = num.array(y,num.float)
128
+
129
+ N = len(x)
130
+ p = 0 * x # New array
131
+
132
+ p0=1000.
133
+ for k in range(N):
134
+ p[k]=p0*(1.-t/100.)
135
+
136
+ return p
137
+
138
+ def spatial_linear_varying_speed(t, x, y):
139
+ """
140
+ Variable speed windfield
141
+ """
142
+
143
+ from math import exp, cos, pi
144
+
145
+ x = num.array(x)
146
+ y = num.array(y)
147
+
148
+ N = len(x)
149
+ s = 0*x #New array
150
+
151
+ #dx=x[-1]-x[0]; dy = y[-1]-y[0]
152
+ s0=250.
153
+ ymin=num.min(y)
154
+ xmin=num.min(x)
155
+ a=0.000025; b=0.0000125;
156
+ for k in range(N):
157
+ s[k]=s0*(1+t/100.)+a*x[k]+b*y[k]
158
+ return s
159
+
160
+
161
+ def spatial_linear_varying_angle(t, x, y):
162
+ """Rotating field
163
+ """
164
+ from math import atan, pi
165
+
166
+ x = num.array(x)
167
+ y = num.array(y)
168
+
169
+ N = len(x)
170
+ a = 0 * x # New array
171
+
172
+ phi=135.
173
+ b1=0.000025; b2=0.00001125;
174
+ for k in range(N):
175
+ a[k]=phi*(1+t/100.)+b1*x[k]+b2*y[k]
176
+ return a
177
+
178
+ def spatial_linear_varying_pressure(t, x, y):
179
+ p0=1000;
180
+ a=0.000025; b=0.0000125;
181
+
182
+ x = num.array(x)
183
+ y = num.array(y)
184
+
185
+ N = len(x)
186
+ p = 0 * x # New array
187
+
188
+ for k in range(N):
189
+ p[k]=p0*(1.-t/100.)+a*x[k]+b*y[k]
190
+ return p
191
+
192
+
193
+ def grid_1d(x0,dx,nx):
194
+ x = num.empty(nx,dtype=num.float)
195
+ for i in range(nx):
196
+ x[i]=x0+float(i)*dx
197
+ return x
198
+
199
+
200
+ def ndgrid(x,y):
201
+ nx = len(x)
202
+ ny = len(y)
203
+ X = num.empty(nx*ny,dtype=num.float)
204
+ Y = num.empty(nx*ny,dtype=num.float)
205
+ k=0
206
+ for i in range(nx):
207
+ for j in range(ny):
208
+ X[k]=x[i]
209
+ Y[k]=y[j]
210
+ k+=1
211
+ return X,Y
212
+
213
+ class Test_Forcing(unittest.TestCase):
214
+ def setUp(self):
215
+ pass
216
+
217
+ def tearDown(self):
218
+ for file in ['domain.sww']:
219
+ try:
220
+ os.remove(file)
221
+ except:
222
+ pass
223
+
224
+ def write_wind_pressure_field_sts(self,
225
+ field_sts_filename,
226
+ nrows=10,
227
+ ncols=10,
228
+ cellsize=25,
229
+ origin=(0.0,0.0),
230
+ refzone=50,
231
+ timestep=1,
232
+ number_of_timesteps=10,
233
+ angle=135.0,
234
+ speed=100.0,
235
+ pressure=1000.0):
236
+
237
+ xllcorner=origin[0]
238
+ yllcorner=origin[1]
239
+ starttime = 0; endtime = number_of_timesteps*timestep;
240
+ no_data = -9999
241
+
242
+ time = num.arange(starttime, endtime, timestep, dtype='i')
243
+
244
+ x = grid_1d(xllcorner,cellsize,ncols)
245
+ y = grid_1d(yllcorner,cellsize,nrows)
246
+ [X,Y] = ndgrid(x,y)
247
+ number_of_points = nrows*ncols
248
+
249
+ wind_speed = num.empty((number_of_timesteps,nrows*ncols),dtype=num.float)
250
+ wind_angle = num.empty((number_of_timesteps,nrows*ncols),dtype=num.float)
251
+ barometric_pressure = num.empty((number_of_timesteps,nrows*ncols),
252
+ dtype=num.float)
253
+
254
+ if ( callable(speed) and callable(angle) and callable(pressure) ):
255
+ x = num.ones(3, num.float)
256
+ y = num.ones(3, num.float)
257
+ try:
258
+ s = speed(1.0, x=x, y=y)
259
+ a = angle(1.0, x=x, y=y)
260
+ p = pressure(1.0, x=x, y=y)
261
+ use_function=True
262
+ except Exception, e:
263
+ msg = 'Function could not be executed.\n'
264
+ raise Exception, msg
265
+ else:
266
+ try :
267
+ speed=float(speed)
268
+ angle=float(angle)
269
+ pressure=float(pressure)
270
+ use_function=False
271
+ except:
272
+ msg = ('Force fields must be a scalar value coercible to float.')
273
+ raise Exception, msg
274
+
275
+ for i,t in enumerate(time):
276
+ if ( use_function ):
277
+ wind_speed[i,:] = speed(t,X,Y)
278
+ wind_angle[i,:] = angle(t,X,Y)
279
+ barometric_pressure[i,:] = pressure(t,X,Y)
280
+ else:
281
+ wind_speed[i,:] = speed
282
+ wind_angle[i,:] = angle
283
+ barometric_pressure[i,:] = pressure
284
+
285
+ # "Creating the field STS NetCDF file"
286
+
287
+ fid = NetCDFFile(field_sts_filename+'.sts', 'w')
288
+ fid.institution = 'Geoscience Australia'
289
+ fid.description = "description"
290
+ fid.starttime = 0.0
291
+ fid.ncols = ncols
292
+ fid.nrows = nrows
293
+ fid.cellsize = cellsize
294
+ fid.no_data = no_data
295
+ fid.createDimension('number_of_points', number_of_points)
296
+ fid.createDimension('number_of_timesteps', number_of_timesteps)
297
+ fid.createDimension('numbers_in_range', 2)
298
+
299
+ fid.createVariable('x', 'd', ('number_of_points',))
300
+ fid.createVariable('y', 'd', ('number_of_points',))
301
+ fid.createVariable('time', 'i', ('number_of_timesteps',))
302
+ fid.createVariable('wind_speed', 'd', ('number_of_timesteps',
303
+ 'number_of_points'))
304
+ fid.createVariable('wind_speed_range', 'd', ('numbers_in_range', ))
305
+ fid.createVariable('wind_angle', 'd', ('number_of_timesteps',
306
+ 'number_of_points'))
307
+ fid.createVariable('wind_angle_range', 'd', ('numbers_in_range',))
308
+ fid.createVariable('barometric_pressure', 'd', ('number_of_timesteps',
309
+ 'number_of_points'))
310
+ fid.createVariable('barometric_pressure_range', 'd', ('numbers_in_range',))
311
+
312
+
313
+ fid.variables['wind_speed_range'][:] = num.array([1e+036, -1e+036])
314
+ fid.variables['wind_angle_range'][:] = num.array([1e+036, -1e+036])
315
+ fid.variables['barometric_pressure_range'][:] = num.array([1e+036, -1e+036])
316
+ fid.variables['time'][:] = time
317
+
318
+ ws = fid.variables['wind_speed']
319
+ wa = fid.variables['wind_angle']
320
+ pr = fid.variables['barometric_pressure']
321
+
322
+ for i in xrange(number_of_timesteps):
323
+ ws[i] = wind_speed[i,:]
324
+ wa[i] = wind_angle[i,:]
325
+ pr[i] = barometric_pressure[i,:]
326
+
327
+ origin = anuga.coordinate_transforms.geo_reference.Geo_reference(refzone,
328
+ xllcorner,
329
+ yllcorner)
330
+ geo_ref = anuga.coordinate_transforms.geo_reference.write_NetCDF_georeference(origin, fid)
331
+
332
+ fid.variables['x'][:]=X-geo_ref.get_xllcorner()
333
+ fid.variables['y'][:]=Y-geo_ref.get_yllcorner()
334
+
335
+
336
+ fid.close()
337
+
338
+ def test_constant_wind_stress(self):
339
+ from anuga.config import rho_a, rho_w, eta_w
340
+ from math import pi, cos, sin
341
+
342
+ a = [0.0, 0.0]
343
+ b = [0.0, 2.0]
344
+ c = [2.0, 0.0]
345
+ d = [0.0, 4.0]
346
+ e = [2.0, 2.0]
347
+ f = [4.0, 0.0]
348
+
349
+ points = [a, b, c, d, e, f]
350
+ # bac, bce, ecf, dbe
351
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
352
+
353
+ domain = Domain(points, vertices)
354
+
355
+ #Flat surface with 1m of water
356
+ domain.set_quantity('elevation', 0)
357
+ domain.set_quantity('stage', 1.0)
358
+ domain.set_quantity('friction', 0)
359
+
360
+ Br = Reflective_boundary(domain)
361
+ domain.set_boundary({'exterior': Br})
362
+
363
+ #Setup only one forcing term, constant wind stress
364
+ s = 100
365
+ phi = 135
366
+ domain.forcing_terms = []
367
+ domain.forcing_terms.append(Wind_stress(s, phi))
368
+
369
+ domain.compute_forcing_terms()
370
+
371
+ const = eta_w*rho_a / rho_w
372
+
373
+ #Convert to radians
374
+ phi = phi*pi / 180
375
+
376
+ #Compute velocity vector (u, v)
377
+ u = s*cos(phi)
378
+ v = s*sin(phi)
379
+
380
+ #Compute wind stress
381
+ S = const * num.sqrt(u**2 + v**2)
382
+
383
+ assert num.allclose(domain.quantities['stage'].explicit_update, 0)
384
+ assert num.allclose(domain.quantities['xmomentum'].explicit_update, S*u)
385
+ assert num.allclose(domain.quantities['ymomentum'].explicit_update, S*v)
386
+
387
+ def test_variable_wind_stress(self):
388
+ from anuga.config import rho_a, rho_w, eta_w
389
+ from math import pi, cos, sin
390
+
391
+ a = [0.0, 0.0]
392
+ b = [0.0, 2.0]
393
+ c = [2.0, 0.0]
394
+ d = [0.0, 4.0]
395
+ e = [2.0, 2.0]
396
+ f = [4.0, 0.0]
397
+
398
+ points = [a, b, c, d, e, f]
399
+ # bac, bce, ecf, dbe
400
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
401
+
402
+ domain = Domain(points, vertices)
403
+
404
+ #Flat surface with 1m of water
405
+ domain.set_quantity('elevation', 0)
406
+ domain.set_quantity('stage', 1.0)
407
+ domain.set_quantity('friction', 0)
408
+
409
+ Br = Reflective_boundary(domain)
410
+ domain.set_boundary({'exterior': Br})
411
+
412
+ domain.time = 5.54 # Take a random time (not zero)
413
+
414
+ #Setup only one forcing term, constant wind stress
415
+ s = 100
416
+ phi = 135
417
+ domain.forcing_terms = []
418
+ domain.forcing_terms.append(Wind_stress(s=speed, phi=angle))
419
+
420
+ domain.compute_forcing_terms()
421
+
422
+ #Compute reference solution
423
+ const = eta_w*rho_a / rho_w
424
+
425
+ N = len(domain) # number_of_triangles
426
+
427
+ xc = domain.get_centroid_coordinates()
428
+ t = domain.time
429
+
430
+ x = xc[:,0]
431
+ y = xc[:,1]
432
+ s_vec = speed(t,x,y)
433
+ phi_vec = angle(t,x,y)
434
+
435
+ for k in range(N):
436
+ # Convert to radians
437
+ phi = phi_vec[k]*pi / 180
438
+ s = s_vec[k]
439
+
440
+ # Compute velocity vector (u, v)
441
+ u = s*cos(phi)
442
+ v = s*sin(phi)
443
+
444
+ # Compute wind stress
445
+ S = const * num.sqrt(u**2 + v**2)
446
+
447
+ assert num.allclose(domain.quantities['stage'].explicit_update[k],
448
+ 0)
449
+ assert num.allclose(domain.quantities['xmomentum'].\
450
+ explicit_update[k],
451
+ S*u)
452
+ assert num.allclose(domain.quantities['ymomentum'].\
453
+ explicit_update[k],
454
+ S*v)
455
+
456
+ def test_windfield_from_file(self):
457
+ import time
458
+ from anuga.config import rho_a, rho_w, eta_w
459
+ from math import pi, cos, sin
460
+ from anuga.config import time_format
461
+ from anuga.abstract_2d_finite_volumes.util import file_function
462
+
463
+ a = [0.0, 0.0]
464
+ b = [0.0, 2.0]
465
+ c = [2.0, 0.0]
466
+ d = [0.0, 4.0]
467
+ e = [2.0, 2.0]
468
+ f = [4.0, 0.0]
469
+
470
+ points = [a, b, c, d, e, f]
471
+ # bac, bce, ecf, dbe
472
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
473
+
474
+ domain = Domain(points, vertices)
475
+
476
+ # Flat surface with 1m of water
477
+ domain.set_quantity('elevation', 0)
478
+ domain.set_quantity('stage', 1.0)
479
+ domain.set_quantity('friction', 0)
480
+
481
+ Br = Reflective_boundary(domain)
482
+ domain.set_boundary({'exterior': Br})
483
+
484
+ domain.time = 7 # Take a time that is represented in file (not zero)
485
+
486
+ # Write wind stress file (ensure that domain.time is covered)
487
+ # Take x=1 and y=0
488
+ filename = 'test_windstress_from_file'
489
+ start = time.mktime(time.strptime('2000', '%Y'))
490
+ fid = open(filename + '.txt', 'w')
491
+ dt = 1 # One second interval
492
+ t = 0.0
493
+ while t <= 10.0:
494
+ t_string = time.strftime(time_format, time.gmtime(t+start))
495
+
496
+ fid.write('%s, %f %f\n' %
497
+ (t_string, speed(t,[1],[0])[0], angle(t,[1],[0])[0]))
498
+ t += dt
499
+
500
+ fid.close()
501
+
502
+ timefile2netcdf(filename + '.txt')
503
+ os.remove(filename + '.txt')
504
+
505
+ # Setup wind stress
506
+ F = file_function(filename + '.tms',
507
+ quantities=['Attribute0', 'Attribute1'])
508
+ os.remove(filename + '.tms')
509
+
510
+ W = Wind_stress(F)
511
+
512
+ domain.forcing_terms = []
513
+ domain.forcing_terms.append(W)
514
+
515
+ domain.compute_forcing_terms()
516
+
517
+ # Compute reference solution
518
+ const = eta_w*rho_a / rho_w
519
+
520
+ N = len(domain) # number_of_triangles
521
+
522
+ t = domain.time
523
+
524
+ s = speed(t, [1], [0])[0]
525
+ phi = angle(t, [1], [0])[0]
526
+
527
+ # Convert to radians
528
+ phi = phi*pi / 180
529
+
530
+ # Compute velocity vector (u, v)
531
+ u = s*cos(phi)
532
+ v = s*sin(phi)
533
+
534
+ # Compute wind stress
535
+ S = const * num.sqrt(u**2 + v**2)
536
+
537
+ for k in range(N):
538
+ assert num.allclose(domain.quantities['stage'].explicit_update[k],
539
+ 0)
540
+ assert num.allclose(domain.quantities['xmomentum'].\
541
+ explicit_update[k],
542
+ S*u)
543
+ assert num.allclose(domain.quantities['ymomentum'].\
544
+ explicit_update[k],
545
+ S*v)
546
+
547
+ def test_windfield_from_file_seconds(self):
548
+ import time
549
+ from anuga.config import rho_a, rho_w, eta_w
550
+ from math import pi, cos, sin
551
+ from anuga.config import time_format
552
+ from anuga.abstract_2d_finite_volumes.util import file_function
553
+
554
+ a = [0.0, 0.0]
555
+ b = [0.0, 2.0]
556
+ c = [2.0, 0.0]
557
+ d = [0.0, 4.0]
558
+ e = [2.0, 2.0]
559
+ f = [4.0, 0.0]
560
+
561
+ points = [a, b, c, d, e, f]
562
+ # bac, bce, ecf, dbe
563
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
564
+
565
+ domain = Domain(points, vertices)
566
+
567
+ # Flat surface with 1m of water
568
+ domain.set_quantity('elevation', 0)
569
+ domain.set_quantity('stage', 1.0)
570
+ domain.set_quantity('friction', 0)
571
+
572
+ Br = Reflective_boundary(domain)
573
+ domain.set_boundary({'exterior': Br})
574
+
575
+ domain.time = 7 # Take a time that is represented in file (not zero)
576
+
577
+ # Write wind stress file (ensure that domain.time is covered)
578
+ # Take x=1 and y=0
579
+ filename = 'test_windstress_from_file'
580
+ start = time.mktime(time.strptime('2000', '%Y'))
581
+ fid = open(filename + '.txt', 'w')
582
+ dt = 0.5 # Half second interval
583
+ t = 0.0
584
+ while t <= 10.0:
585
+ fid.write('%s, %f %f\n'
586
+ % (str(t), speed(t, [1], [0])[0], angle(t, [1], [0])[0]))
587
+ t += dt
588
+
589
+ fid.close()
590
+
591
+ timefile2netcdf(filename + '.txt', time_as_seconds=True)
592
+ os.remove(filename + '.txt')
593
+
594
+ # Setup wind stress
595
+ F = file_function(filename + '.tms',
596
+ quantities=['Attribute0', 'Attribute1'])
597
+ os.remove(filename + '.tms')
598
+
599
+ W = Wind_stress(F)
600
+
601
+ domain.forcing_terms = []
602
+ domain.forcing_terms.append(W)
603
+
604
+ domain.compute_forcing_terms()
605
+
606
+ # Compute reference solution
607
+ const = eta_w*rho_a / rho_w
608
+
609
+ N = len(domain) # number_of_triangles
610
+
611
+ t = domain.time
612
+
613
+ s = speed(t, [1], [0])[0]
614
+ phi = angle(t, [1], [0])[0]
615
+
616
+ # Convert to radians
617
+ phi = phi*pi / 180
618
+
619
+ # Compute velocity vector (u, v)
620
+ u = s*cos(phi)
621
+ v = s*sin(phi)
622
+
623
+ # Compute wind stress
624
+ S = const * num.sqrt(u**2 + v**2)
625
+
626
+ for k in range(N):
627
+ assert num.allclose(domain.quantities['stage'].explicit_update[k],
628
+ 0)
629
+ assert num.allclose(domain.quantities['xmomentum'].\
630
+ explicit_update[k],
631
+ S*u)
632
+ assert num.allclose(domain.quantities['ymomentum'].\
633
+ explicit_update[k],
634
+ S*v)
635
+
636
+ def test_wind_stress_error_condition(self):
637
+ """Test that windstress reacts properly when forcing functions
638
+ are wrong - e.g. returns a scalar
639
+ """
640
+
641
+ from math import pi, cos, sin
642
+ from anuga.config import rho_a, rho_w, eta_w
643
+
644
+ a = [0.0, 0.0]
645
+ b = [0.0, 2.0]
646
+ c = [2.0, 0.0]
647
+ d = [0.0, 4.0]
648
+ e = [2.0, 2.0]
649
+ f = [4.0, 0.0]
650
+
651
+ points = [a, b, c, d, e, f]
652
+ # bac, bce, ecf, dbe
653
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
654
+
655
+ domain = Domain(points, vertices)
656
+
657
+ # Flat surface with 1m of water
658
+ domain.set_quantity('elevation', 0)
659
+ domain.set_quantity('stage', 1.0)
660
+ domain.set_quantity('friction', 0)
661
+
662
+ Br = Reflective_boundary(domain)
663
+ domain.set_boundary({'exterior': Br})
664
+
665
+ domain.time = 5.54 # Take a random time (not zero)
666
+
667
+ # Setup only one forcing term, bad func
668
+ domain.forcing_terms = []
669
+
670
+ try:
671
+ domain.forcing_terms.append(Wind_stress(s=scalar_func_list,
672
+ phi=angle))
673
+ except AssertionError:
674
+ pass
675
+ else:
676
+ msg = 'Should have raised exception'
677
+ raise Exception, msg
678
+
679
+ try:
680
+ domain.forcing_terms.append(Wind_stress(s=speed, phi=scalar_func))
681
+ except Exception:
682
+ pass
683
+ else:
684
+ msg = 'Should have raised exception'
685
+ raise Exception, msg
686
+
687
+ try:
688
+ domain.forcing_terms.append(Wind_stress(s=speed, phi='xx'))
689
+ except:
690
+ pass
691
+ else:
692
+ msg = 'Should have raised exception'
693
+ raise Exception, msg
694
+
695
+ def test_rainfall(self):
696
+ from math import pi, cos, sin
697
+
698
+ a = [0.0, 0.0]
699
+ b = [0.0, 2.0]
700
+ c = [2.0, 0.0]
701
+ d = [0.0, 4.0]
702
+ e = [2.0, 2.0]
703
+ f = [4.0, 0.0]
704
+
705
+ points = [a, b, c, d, e, f]
706
+ # bac, bce, ecf, dbe
707
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
708
+
709
+ domain = Domain(points, vertices)
710
+
711
+ # Flat surface with 1m of water
712
+ domain.set_quantity('elevation', 0)
713
+ domain.set_quantity('stage', 1.0)
714
+ domain.set_quantity('friction', 0)
715
+
716
+ Br = Reflective_boundary(domain)
717
+ domain.set_boundary({'exterior': Br})
718
+
719
+ # Setup only one forcing term, constant rainfall
720
+ domain.forcing_terms = []
721
+ domain.forcing_terms.append(Rainfall(domain, rate=2.0))
722
+
723
+ domain.compute_forcing_terms()
724
+ assert num.allclose(domain.quantities['stage'].explicit_update,
725
+ 2.0/1000)
726
+
727
+ def test_rainfall_restricted_by_polygon(self):
728
+ from math import pi, cos, sin
729
+
730
+ a = [0.0, 0.0]
731
+ b = [0.0, 2.0]
732
+ c = [2.0, 0.0]
733
+ d = [0.0, 4.0]
734
+ e = [2.0, 2.0]
735
+ f = [4.0, 0.0]
736
+
737
+ points = [a, b, c, d, e, f]
738
+ # bac, bce, ecf, dbe
739
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
740
+
741
+ domain = Domain(points, vertices)
742
+
743
+ # Flat surface with 1m of water
744
+ domain.set_quantity('elevation', 0)
745
+ domain.set_quantity('stage', 1.0)
746
+ domain.set_quantity('friction', 0)
747
+
748
+ Br = Reflective_boundary(domain)
749
+ domain.set_boundary({'exterior': Br})
750
+
751
+ # Setup only one forcing term, constant rainfall
752
+ # restricted to a polygon enclosing triangle #1 (bce)
753
+ domain.forcing_terms = []
754
+ R = Rainfall(domain, rate=2.0, polygon=[[1,1], [2,1], [2,2], [1,2]])
755
+
756
+ assert num.allclose(R.exchange_area, 2)
757
+
758
+ domain.forcing_terms.append(R)
759
+
760
+ domain.compute_forcing_terms()
761
+
762
+ assert num.allclose(domain.quantities['stage'].explicit_update[1],
763
+ 2.0/1000)
764
+ assert num.allclose(domain.quantities['stage'].explicit_update[0], 0)
765
+ assert num.allclose(domain.quantities['stage'].explicit_update[2:], 0)
766
+
767
+ def test_time_dependent_rainfall_restricted_by_polygon(self):
768
+ a = [0.0, 0.0]
769
+ b = [0.0, 2.0]
770
+ c = [2.0, 0.0]
771
+ d = [0.0, 4.0]
772
+ e = [2.0, 2.0]
773
+ f = [4.0, 0.0]
774
+
775
+ points = [a, b, c, d, e, f]
776
+ # bac, bce, ecf, dbe
777
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
778
+
779
+ domain = Domain(points, vertices)
780
+
781
+ # Flat surface with 1m of water
782
+ domain.set_quantity('elevation', 0)
783
+ domain.set_quantity('stage', 1.0)
784
+ domain.set_quantity('friction', 0)
785
+
786
+ Br = Reflective_boundary(domain)
787
+ domain.set_boundary({'exterior': Br})
788
+
789
+ # Setup only one forcing term, time dependent rainfall
790
+ # restricted to a polygon enclosing triangle #1 (bce)
791
+ domain.forcing_terms = []
792
+ R = Rainfall(domain,
793
+ rate=lambda t: 3*t + 7,
794
+ polygon = [[1,1], [2,1], [2,2], [1,2]])
795
+
796
+ assert num.allclose(R.exchange_area, 2)
797
+
798
+ domain.forcing_terms.append(R)
799
+
800
+ domain.time = 10.
801
+
802
+ domain.compute_forcing_terms()
803
+
804
+ assert num.allclose(domain.quantities['stage'].explicit_update[1],
805
+ (3*domain.time + 7)/1000)
806
+ assert num.allclose(domain.quantities['stage'].explicit_update[0], 0)
807
+ assert num.allclose(domain.quantities['stage'].explicit_update[2:], 0)
808
+
809
+ def test_time_dependent_rainfall_using_starttime(self):
810
+ rainfall_poly = ensure_numeric([[1,1], [2,1], [2,2], [1,2]], num.float)
811
+
812
+ a = [0.0, 0.0]
813
+ b = [0.0, 2.0]
814
+ c = [2.0, 0.0]
815
+ d = [0.0, 4.0]
816
+ e = [2.0, 2.0]
817
+ f = [4.0, 0.0]
818
+
819
+ points = [a, b, c, d, e, f]
820
+ # bac, bce, ecf, dbe
821
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
822
+
823
+ domain = Domain(points, vertices)
824
+
825
+ # Flat surface with 1m of water
826
+ domain.set_quantity('elevation', 0)
827
+ domain.set_quantity('stage', 1.0)
828
+ domain.set_quantity('friction', 0)
829
+
830
+ Br = Reflective_boundary(domain)
831
+ domain.set_boundary({'exterior': Br})
832
+
833
+ # Setup only one forcing term, time dependent rainfall
834
+ # restricted to a polygon enclosing triangle #1 (bce)
835
+ domain.forcing_terms = []
836
+ R = Rainfall(domain,
837
+ rate=lambda t: 3*t + 7,
838
+ polygon=rainfall_poly)
839
+
840
+ assert num.allclose(R.exchange_area, 2)
841
+
842
+ domain.forcing_terms.append(R)
843
+
844
+ # This will test that time is set to starttime in set_starttime
845
+ domain.set_starttime(5.0)
846
+
847
+ domain.compute_forcing_terms()
848
+
849
+ assert num.allclose(domain.quantities['stage'].explicit_update[1],
850
+ (3*domain.get_time() + 7)/1000)
851
+ assert num.allclose(domain.quantities['stage'].explicit_update[1],
852
+ (3*domain.get_starttime() + 7)/1000)
853
+
854
+ assert num.allclose(domain.quantities['stage'].explicit_update[0], 0)
855
+ assert num.allclose(domain.quantities['stage'].explicit_update[2:], 0)
856
+
857
+ def test_time_dependent_rainfall_using_georef(self):
858
+ """test_time_dependent_rainfall_using_georef
859
+
860
+ This will also test the General forcing term using georef
861
+ """
862
+
863
+ # Mesh in zone 56 (absolute coords)
864
+ x0 = 314036.58727982
865
+ y0 = 6224951.2960092
866
+
867
+ rainfall_poly = ensure_numeric([[1,1], [2,1], [2,2], [1,2]], num.float)
868
+ rainfall_poly += [x0, y0]
869
+
870
+ a = [0.0, 0.0]
871
+ b = [0.0, 2.0]
872
+ c = [2.0, 0.0]
873
+ d = [0.0, 4.0]
874
+ e = [2.0, 2.0]
875
+ f = [4.0, 0.0]
876
+
877
+ points = [a, b, c, d, e, f]
878
+ # bac, bce, ecf, dbe
879
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
880
+
881
+ domain = Domain(points, vertices,
882
+ geo_reference=Geo_reference(56, x0, y0))
883
+
884
+ # Flat surface with 1m of water
885
+ domain.set_quantity('elevation', 0)
886
+ domain.set_quantity('stage', 1.0)
887
+ domain.set_quantity('friction', 0)
888
+
889
+ Br = Reflective_boundary(domain)
890
+ domain.set_boundary({'exterior': Br})
891
+
892
+ # Setup only one forcing term, time dependent rainfall
893
+ # restricted to a polygon enclosing triangle #1 (bce)
894
+ domain.forcing_terms = []
895
+ R = Rainfall(domain,
896
+ rate=lambda t: 3*t + 7,
897
+ polygon=rainfall_poly)
898
+
899
+ assert num.allclose(R.exchange_area, 2)
900
+
901
+ domain.forcing_terms.append(R)
902
+
903
+ # This will test that time is set to starttime in set_starttime
904
+ domain.set_starttime(5.0)
905
+
906
+ domain.compute_forcing_terms()
907
+
908
+ assert num.allclose(domain.quantities['stage'].explicit_update[1],
909
+ (3*domain.get_time() + 7)/1000)
910
+ assert num.allclose(domain.quantities['stage'].explicit_update[1],
911
+ (3*domain.get_starttime() + 7)/1000)
912
+
913
+ assert num.allclose(domain.quantities['stage'].explicit_update[0], 0)
914
+ assert num.allclose(domain.quantities['stage'].explicit_update[2:], 0)
915
+
916
+ def test_time_dependent_rainfall_restricted_by_polygon_with_default(self):
917
+ """
918
+ Test that default rainfall can be used when given rate runs out of data.
919
+ """
920
+
921
+ import warnings
922
+ warnings.simplefilter('ignore', UserWarning)
923
+
924
+
925
+ a = [0.0, 0.0]
926
+ b = [0.0, 2.0]
927
+ c = [2.0, 0.0]
928
+ d = [0.0, 4.0]
929
+ e = [2.0, 2.0]
930
+ f = [4.0, 0.0]
931
+
932
+ points = [a, b, c, d, e, f]
933
+ # bac, bce, ecf, dbe
934
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
935
+
936
+ domain = Domain(points, vertices)
937
+
938
+ # Flat surface with 1m of water
939
+ domain.set_quantity('elevation', 0)
940
+ domain.set_quantity('stage', 1.0)
941
+ domain.set_quantity('friction', 0)
942
+
943
+ Br = Reflective_boundary(domain)
944
+ domain.set_boundary({'exterior': Br})
945
+
946
+ # Setup only one forcing term, time dependent rainfall
947
+ # that expires at t==20
948
+ from anuga.fit_interpolate.interpolate import Modeltime_too_late
949
+
950
+ def main_rate(t):
951
+ if t > 20:
952
+ msg = 'Model time exceeded.'
953
+ raise Modeltime_too_late, msg
954
+ else:
955
+ return 3*t + 7
956
+
957
+ domain.forcing_terms = []
958
+ R = Rainfall(domain,
959
+ rate=main_rate,
960
+ polygon = [[1,1], [2,1], [2,2], [1,2]],
961
+ default_rate=5.0)
962
+
963
+ assert num.allclose(R.exchange_area, 2)
964
+
965
+ domain.forcing_terms.append(R)
966
+
967
+ domain.time = 10.
968
+
969
+ domain.compute_forcing_terms()
970
+
971
+ assert num.allclose(domain.quantities['stage'].explicit_update[1],
972
+ (3*domain.time+7)/1000)
973
+ assert num.allclose(domain.quantities['stage'].explicit_update[0], 0)
974
+ assert num.allclose(domain.quantities['stage'].explicit_update[2:], 0)
975
+
976
+ domain.time = 100.
977
+ domain.quantities['stage'].explicit_update[:] = 0.0 # Reset
978
+ domain.compute_forcing_terms()
979
+
980
+ assert num.allclose(domain.quantities['stage'].explicit_update[1],
981
+ 5.0/1000) # Default value
982
+ assert num.allclose(domain.quantities['stage'].explicit_update[0], 0)
983
+ assert num.allclose(domain.quantities['stage'].explicit_update[2:], 0)
984
+
985
+ def test_rainfall_forcing_with_evolve(self):
986
+ """test_rainfall_forcing_with_evolve
987
+
988
+ Test how forcing terms are called within evolve
989
+ """
990
+
991
+ # FIXME(Ole): This test is just to experiment
992
+ import warnings
993
+ warnings.simplefilter('ignore', UserWarning)
994
+
995
+
996
+ a = [0.0, 0.0]
997
+ b = [0.0, 2.0]
998
+ c = [2.0, 0.0]
999
+ d = [0.0, 4.0]
1000
+ e = [2.0, 2.0]
1001
+ f = [4.0, 0.0]
1002
+
1003
+ points = [a, b, c, d, e, f]
1004
+ # bac, bce, ecf, dbe
1005
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
1006
+
1007
+ domain = Domain(points, vertices)
1008
+
1009
+ # Flat surface with 1m of water
1010
+ domain.set_quantity('elevation', 0)
1011
+ domain.set_quantity('stage', 1.0)
1012
+ domain.set_quantity('friction', 0)
1013
+
1014
+ Br = Reflective_boundary(domain)
1015
+ domain.set_boundary({'exterior': Br})
1016
+
1017
+ # Setup only one forcing term, time dependent rainfall
1018
+ # that expires at t==20
1019
+ from anuga.fit_interpolate.interpolate import Modeltime_too_late
1020
+
1021
+ def main_rate(t):
1022
+ if t > 20:
1023
+ msg = 'Model time exceeded.'
1024
+ raise Modeltime_too_late, msg
1025
+ else:
1026
+ return 3*t + 7
1027
+
1028
+ domain.forcing_terms = []
1029
+ R = Rainfall(domain,
1030
+ rate=main_rate,
1031
+ polygon=[[1,1], [2,1], [2,2], [1,2]],
1032
+ default_rate=5.0)
1033
+
1034
+ assert num.allclose(R.exchange_area, 2)
1035
+
1036
+ domain.forcing_terms.append(R)
1037
+
1038
+ for t in domain.evolve(yieldstep=1, finaltime=25):
1039
+ pass
1040
+ #FIXME(Ole): A test here is hard because explicit_update also
1041
+ # receives updates from the flux calculation.
1042
+
1043
+
1044
+ def test_rainfall_forcing_with_evolve_1(self):
1045
+ """test_rainfall_forcing_with_evolve
1046
+
1047
+ Test how forcing terms are called within evolve.
1048
+ This test checks that proper exception is thrown when no default_rate is set
1049
+ """
1050
+
1051
+ import warnings
1052
+ warnings.simplefilter('ignore', UserWarning)
1053
+
1054
+
1055
+ a = [0.0, 0.0]
1056
+ b = [0.0, 2.0]
1057
+ c = [2.0, 0.0]
1058
+ d = [0.0, 4.0]
1059
+ e = [2.0, 2.0]
1060
+ f = [4.0, 0.0]
1061
+
1062
+ points = [a, b, c, d, e, f]
1063
+ # bac, bce, ecf, dbe
1064
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
1065
+
1066
+ domain = Domain(points, vertices)
1067
+
1068
+ # Flat surface with 1m of water
1069
+ domain.set_quantity('elevation', 0)
1070
+ domain.set_quantity('stage', 1.0)
1071
+ domain.set_quantity('friction', 0)
1072
+
1073
+ Br = Reflective_boundary(domain)
1074
+ domain.set_boundary({'exterior': Br})
1075
+
1076
+ # Setup only one forcing term, time dependent rainfall
1077
+ # that expires at t==20
1078
+ from anuga.fit_interpolate.interpolate import Modeltime_too_late
1079
+
1080
+ def main_rate(t):
1081
+ if t > 20:
1082
+ msg = 'Model time exceeded.'
1083
+ raise Modeltime_too_late, msg
1084
+ else:
1085
+ return 3*t + 7
1086
+
1087
+ domain.forcing_terms = []
1088
+ R = Rainfall(domain,
1089
+ rate=main_rate,
1090
+ polygon=[[1,1], [2,1], [2,2], [1,2]])
1091
+
1092
+
1093
+ assert num.allclose(R.exchange_area, 2)
1094
+
1095
+ domain.forcing_terms.append(R)
1096
+ #for t in domain.evolve(yieldstep=1, finaltime=25):
1097
+ # pass
1098
+
1099
+ try:
1100
+ for t in domain.evolve(yieldstep=1, finaltime=25):
1101
+ pass
1102
+ except Modeltime_too_late, e:
1103
+ # Test that error message is as expected
1104
+ assert 'can specify keyword argument default_rate in the forcing function' in str(e)
1105
+ else:
1106
+ raise Exception, 'Should have raised exception'
1107
+
1108
+ def test_constant_wind_stress_from_file(self):
1109
+ from anuga.config import rho_a, rho_w, eta_w
1110
+ from math import pi, cos, sin
1111
+ from anuga.file_conversion.sts2sww_mesh import sts2sww_mesh
1112
+
1113
+ cellsize = 25
1114
+ nrows=5; ncols = 6;
1115
+ refzone=50
1116
+ xllcorner=366000;yllcorner=6369500;
1117
+ number_of_timesteps = 6
1118
+ timestep=12*60
1119
+ eps=2e-16
1120
+
1121
+ points, vertices, boundary =rectangular(nrows-2,ncols-2,
1122
+ len1=cellsize*(ncols-1),
1123
+ len2=cellsize*(nrows-1),
1124
+ origin=(xllcorner,yllcorner))
1125
+
1126
+ domain = Domain(points, vertices, boundary)
1127
+ midpoints = domain.get_centroid_coordinates()
1128
+
1129
+ # Flat surface with 1m of water
1130
+ domain.set_quantity('elevation', 0)
1131
+ domain.set_quantity('stage', 1.0)
1132
+ domain.set_quantity('friction', 0)
1133
+
1134
+ Br = Reflective_boundary(domain)
1135
+ domain.set_boundary({'top': Br, 'bottom' :Br, 'left': Br, 'right': Br})
1136
+
1137
+ # Setup only one forcing term, constant wind stress
1138
+ s = 100
1139
+ phi = 135
1140
+ pressure=1000
1141
+ domain.forcing_terms = []
1142
+ field_sts_filename = 'wind_field'
1143
+ self.write_wind_pressure_field_sts(field_sts_filename,
1144
+ nrows=nrows,
1145
+ ncols=ncols,
1146
+ cellsize=cellsize,
1147
+ origin=(xllcorner,yllcorner),
1148
+ refzone=50,
1149
+ timestep=timestep,
1150
+ number_of_timesteps=10,
1151
+ speed=s,
1152
+ angle=phi,
1153
+ pressure=pressure)
1154
+
1155
+ sts2sww_mesh(field_sts_filename,spatial_thinning=1,
1156
+ verbose=False)
1157
+
1158
+ # Setup wind stress
1159
+ F = file_function(field_sts_filename+'.sww', domain,
1160
+ quantities=['wind_speed', 'wind_angle'],
1161
+ interpolation_points = midpoints)
1162
+
1163
+ W = Wind_stress(F,use_coordinates=False)
1164
+ domain.forcing_terms.append(W)
1165
+ domain.compute_forcing_terms()
1166
+
1167
+ const = eta_w*rho_a / rho_w
1168
+
1169
+ # Convert to radians
1170
+ phi = phi*pi / 180
1171
+
1172
+ # Compute velocity vector (u, v)
1173
+ u = s*cos(phi)
1174
+ v = s*sin(phi)
1175
+
1176
+ # Compute wind stress
1177
+ S = const * num.sqrt(u**2 + v**2)
1178
+
1179
+ assert num.allclose(domain.quantities['stage'].explicit_update, 0)
1180
+ assert num.allclose(domain.quantities['xmomentum'].explicit_update, S*u)
1181
+ assert num.allclose(domain.quantities['ymomentum'].explicit_update, S*v)
1182
+
1183
+ def test_variable_windfield_from_file(self):
1184
+ from anuga.config import rho_a, rho_w, eta_w
1185
+ from math import pi, cos, sin
1186
+ from anuga.config import time_format
1187
+ from anuga.file_conversion.sts2sww_mesh import sts2sww_mesh
1188
+
1189
+ cellsize = 25
1190
+ #nrows=25; ncols = 25;
1191
+ nrows=10; ncols = 10;
1192
+ refzone=50
1193
+ xllcorner=366000;yllcorner=6369500;
1194
+ number_of_timesteps = 10
1195
+ timestep=1
1196
+ eps=2.e-16
1197
+ spatial_thinning=1
1198
+
1199
+ points, vertices, boundary =rectangular(nrows-2,ncols-2,
1200
+ len1=cellsize*(ncols-1),
1201
+ len2=cellsize*(nrows-1),
1202
+ origin=(xllcorner,yllcorner))
1203
+
1204
+ time=num.arange(0,10,1,num.float)
1205
+ eval_time=time[7];
1206
+
1207
+ domain = Domain(points, vertices, boundary)
1208
+ midpoints = domain.get_centroid_coordinates()
1209
+ vertexpoints = domain.get_nodes()
1210
+
1211
+ """
1212
+ x=grid_1d(xllcorner,cellsize,ncols)
1213
+ y=grid_1d(yllcorner,cellsize,nrows)
1214
+ X,Y=num.meshgrid(x,y)
1215
+ interpolation_points=num.empty((X.shape[0]*X.shape[1],2),num.float)
1216
+ k=0
1217
+ for i in range(X.shape[0]):
1218
+ for j in range(X.shape[1]):
1219
+ interpolation_points[k,0]=X[i,j]
1220
+ interpolation_points[k,1]=Y[i,j]
1221
+ k+=1
1222
+
1223
+ z=spatial_linear_varying_speed(eval_time,interpolation_points[:,0],
1224
+ interpolation_points[:,1])
1225
+
1226
+ k=0
1227
+ Z=num.empty((X.shape[0],X.shape[1]),num.float)
1228
+ for i in range(X.shape[0]):
1229
+ for j in range(X.shape[1]):
1230
+ Z[i,j]=z[k]
1231
+ k+=1
1232
+
1233
+ Q=num.empty((time.shape[0],points.shape[0]),num.float)
1234
+ for i, t in enumerate(time):
1235
+ Q[i,:]=spatial_linear_varying_speed(t,points[:,0],points[:,1])
1236
+
1237
+ from interpolate import Interpolation_function
1238
+ I = Interpolation_function(time,Q,
1239
+ vertex_coordinates = points,
1240
+ triangles = domain.triangles,
1241
+ #interpolation_points = midpoints,
1242
+ interpolation_points=interpolation_points,
1243
+ verbose=False)
1244
+
1245
+ V=num.empty((X.shape[0],X.shape[1]),num.float)
1246
+ for k in range(len(interpolation_points)):
1247
+ assert num.allclose(I(eval_time,k),z[k])
1248
+ V[k/X.shape[1],k%X.shape[1]]=I(eval_time,k)
1249
+
1250
+
1251
+ import mpl_toolkits.mplot3d.axes3d as p3
1252
+ fig=P.figure()
1253
+ ax = p3.Axes3D(fig)
1254
+ ax.plot_surface(X,Y,V)
1255
+ ax.plot_surface(X,Y,Z)
1256
+ P.show()
1257
+
1258
+
1259
+ """
1260
+
1261
+ # Flat surface with 1m of water
1262
+ domain.set_quantity('elevation', 0)
1263
+ domain.set_quantity('stage', 1.0)
1264
+ domain.set_quantity('friction', 0)
1265
+
1266
+ domain.time = 7*timestep # Take a time that is represented in file (not zero)
1267
+
1268
+ # Write wind stress file (ensure that domain.time is covered)
1269
+
1270
+ field_sts_filename = 'wind_field'
1271
+ self.write_wind_pressure_field_sts(field_sts_filename,
1272
+ nrows=nrows,
1273
+ ncols=ncols,
1274
+ cellsize=cellsize,
1275
+ origin=(xllcorner,yllcorner),
1276
+ refzone=50,
1277
+ timestep=timestep,
1278
+ number_of_timesteps=10,
1279
+ speed=spatial_linear_varying_speed,
1280
+ angle=spatial_linear_varying_angle,
1281
+ pressure=spatial_linear_varying_pressure)
1282
+
1283
+
1284
+ sts2sww_mesh(field_sts_filename,spatial_thinning=spatial_thinning,
1285
+ verbose=False)
1286
+
1287
+ # Setup wind stress
1288
+ FW = file_function(field_sts_filename+'.sww', domain,
1289
+ quantities=['wind_speed', 'wind_angle'],
1290
+ interpolation_points = midpoints)
1291
+
1292
+ W = Wind_stress(FW,use_coordinates=False)
1293
+
1294
+ domain.forcing_terms = []
1295
+ domain.forcing_terms.append(W)
1296
+
1297
+ domain.compute_forcing_terms()
1298
+
1299
+ # Compute reference solution
1300
+ const = eta_w*rho_a / rho_w
1301
+
1302
+ N = len(domain) # number_of_triangles
1303
+
1304
+ xc = domain.get_centroid_coordinates()
1305
+ t = domain.time
1306
+
1307
+ x = xc[:,0]
1308
+ y = xc[:,1]
1309
+ s_vec = spatial_linear_varying_speed(t,x,y)
1310
+ phi_vec = spatial_linear_varying_angle(t,x,y)
1311
+
1312
+ for k in range(N):
1313
+ # Convert to radians
1314
+ phi = phi_vec[k]*pi / 180
1315
+ s = s_vec[k]
1316
+
1317
+ # Compute velocity vector (u, v)
1318
+ u = s*cos(phi)
1319
+ v = s*sin(phi)
1320
+
1321
+ # Compute wind stress
1322
+ S = const * num.sqrt(u**2 + v**2)
1323
+
1324
+ assert num.allclose(domain.quantities['stage'].explicit_update[k],0)
1325
+
1326
+ assert num.allclose(domain.quantities['xmomentum'].\
1327
+ explicit_update[k],S*u,eps)
1328
+ assert num.allclose(domain.quantities['ymomentum'].\
1329
+ explicit_update[k],S*v,eps)
1330
+
1331
+ os.remove(field_sts_filename+'.sts')
1332
+ os.remove(field_sts_filename+'.sww')
1333
+
1334
+ def test_variable_pressurefield_from_file(self):
1335
+ from anuga.config import rho_a, rho_w, eta_w
1336
+ from math import pi, cos, sin
1337
+ from anuga.config import time_format
1338
+ from anuga.file_conversion.sts2sww_mesh import sts2sww_mesh
1339
+
1340
+ cellsize = 25
1341
+ #nrows=25; ncols = 25;
1342
+ nrows=10; ncols = 10;
1343
+ refzone=50
1344
+ xllcorner=366000;yllcorner=6369500;
1345
+ number_of_timesteps = 10
1346
+ timestep=1
1347
+ eps=2.e-16
1348
+ spatial_thinning=1
1349
+
1350
+ points, vertices, boundary =rectangular(nrows-2,ncols-2,
1351
+ len1=cellsize*(ncols-1),
1352
+ len2=cellsize*(nrows-1),
1353
+ origin=(xllcorner,yllcorner))
1354
+
1355
+ time=num.arange(0,10,1,num.float)
1356
+ eval_time=time[7];
1357
+
1358
+ domain = Domain(points, vertices, boundary)
1359
+ midpoints = domain.get_centroid_coordinates()
1360
+ vertexpoints = domain.get_nodes()
1361
+
1362
+ # Flat surface with 1m of water
1363
+ domain.set_quantity('elevation', 0)
1364
+ domain.set_quantity('stage', 1.0)
1365
+ domain.set_quantity('friction', 0)
1366
+
1367
+ domain.time = 7*timestep # Take a time that is represented in file (not zero)
1368
+
1369
+ # Write wind stress file (ensure that domain.time is covered)
1370
+
1371
+ field_sts_filename = 'wind_field'
1372
+ self.write_wind_pressure_field_sts(field_sts_filename,
1373
+ nrows=nrows,
1374
+ ncols=ncols,
1375
+ cellsize=cellsize,
1376
+ origin=(xllcorner,yllcorner),
1377
+ refzone=50,
1378
+ timestep=timestep,
1379
+ number_of_timesteps=10,
1380
+ speed=spatial_linear_varying_speed,
1381
+ angle=spatial_linear_varying_angle,
1382
+ pressure=spatial_linear_varying_pressure)
1383
+
1384
+
1385
+ sts2sww_mesh(field_sts_filename,spatial_thinning=spatial_thinning,
1386
+ verbose=False)
1387
+
1388
+ # Setup barometric pressure
1389
+ FP = file_function(field_sts_filename+'.sww', domain,
1390
+ quantities=['barometric_pressure'],
1391
+ interpolation_points = vertexpoints)
1392
+
1393
+ P = Barometric_pressure(FP,use_coordinates=False)
1394
+
1395
+
1396
+ domain.forcing_terms = []
1397
+ domain.forcing_terms.append(P)
1398
+
1399
+ domain.compute_forcing_terms()
1400
+
1401
+ N = len(domain) # number_of_triangles
1402
+
1403
+ xc = domain.get_centroid_coordinates()
1404
+ t = domain.time
1405
+
1406
+ x = xc[:,0]
1407
+ y = xc[:,1]
1408
+ p_vec = spatial_linear_varying_pressure(t,x,y)
1409
+
1410
+ h=1 #depth
1411
+ px=0.000025 #pressure gradient in x-direction
1412
+ py=0.0000125 #pressure gradient in y-direction
1413
+ for k in range(N):
1414
+ # Convert to radians
1415
+ p = p_vec[k]
1416
+
1417
+ assert num.allclose(domain.quantities['stage'].explicit_update[k],0)
1418
+
1419
+ assert num.allclose(domain.quantities['xmomentum'].\
1420
+ explicit_update[k],h*px/rho_w)
1421
+
1422
+ assert num.allclose(domain.quantities['ymomentum'].\
1423
+ explicit_update[k],h*py/rho_w)
1424
+
1425
+ os.remove(field_sts_filename+'.sts')
1426
+ os.remove(field_sts_filename+'.sww')
1427
+
1428
+ def test_constant_wind_stress_from_file_evolve(self):
1429
+ from anuga.config import rho_a, rho_w, eta_w
1430
+ from math import pi, cos, sin
1431
+ from anuga.config import time_format
1432
+ from anuga.file_conversion.sts2sww_mesh import sts2sww_mesh
1433
+
1434
+ cellsize = 25
1435
+ nrows=5; ncols = 6;
1436
+ refzone=50
1437
+ xllcorner=366000;yllcorner=6369500;
1438
+ number_of_timesteps = 27
1439
+ timestep=1
1440
+ eps=2e-16
1441
+
1442
+ points, vertices, boundary =rectangular(nrows-2,ncols-2,
1443
+ len1=cellsize*(ncols-1),
1444
+ len2=cellsize*(nrows-1),
1445
+ origin=(xllcorner,yllcorner))
1446
+
1447
+ domain = Domain(points, vertices, boundary)
1448
+ midpoints = domain.get_centroid_coordinates()
1449
+
1450
+ # Flat surface with 1m of water
1451
+ domain.set_quantity('elevation', 0)
1452
+ domain.set_quantity('stage', 1.0)
1453
+ domain.set_quantity('friction', 0)
1454
+
1455
+ Br = Reflective_boundary(domain)
1456
+ domain.set_boundary({'top': Br, 'bottom' :Br, 'left': Br, 'right': Br})
1457
+
1458
+ # Setup only one forcing term, constant wind stress
1459
+ s = 100
1460
+ phi = 135
1461
+ field_sts_filename = 'wind_field'
1462
+ self.write_wind_pressure_field_sts(field_sts_filename,
1463
+ nrows=nrows,
1464
+ ncols=ncols,
1465
+ cellsize=cellsize,
1466
+ origin=(xllcorner,yllcorner),
1467
+ refzone=50,
1468
+ timestep=timestep,
1469
+ number_of_timesteps=number_of_timesteps,
1470
+ speed=s,
1471
+ angle=phi)
1472
+
1473
+ sts2sww_mesh(field_sts_filename,spatial_thinning=1,
1474
+ verbose=False)
1475
+
1476
+ # Setup wind stress
1477
+ F = file_function(field_sts_filename+'.sww', domain,
1478
+ quantities=['wind_speed', 'wind_angle'],
1479
+ interpolation_points = midpoints)
1480
+
1481
+ W = Wind_stress(F,use_coordinates=False)
1482
+ domain.forcing_terms.append(W)
1483
+
1484
+ valuesUsingFunction=num.empty((3,number_of_timesteps+1,midpoints.shape[0]),
1485
+ num.float)
1486
+ i=0
1487
+ for t in domain.evolve(yieldstep=1, finaltime=number_of_timesteps*timestep):
1488
+ valuesUsingFunction[0,i]=domain.quantities['stage'].explicit_update
1489
+ valuesUsingFunction[1,i]=domain.quantities['xmomentum'].explicit_update
1490
+ valuesUsingFunction[2,i]=domain.quantities['ymomentum'].explicit_update
1491
+ i+=1
1492
+
1493
+
1494
+ domain_II = Domain(points, vertices, boundary)
1495
+
1496
+ # Flat surface with 1m of water
1497
+ domain_II.set_quantity('elevation', 0)
1498
+ domain_II.set_quantity('stage', 1.0)
1499
+ domain_II.set_quantity('friction', 0)
1500
+
1501
+ Br = Reflective_boundary(domain_II)
1502
+ domain_II.set_boundary({'top': Br, 'bottom' :Br, 'left': Br, 'right': Br})
1503
+
1504
+ s = 100
1505
+ phi = 135
1506
+ domain_II.forcing_terms = []
1507
+ domain_II.forcing_terms.append(Wind_stress(s, phi))
1508
+
1509
+ i=0;
1510
+ for t in domain_II.evolve(yieldstep=1,
1511
+ finaltime=number_of_timesteps*timestep):
1512
+ assert num.allclose(valuesUsingFunction[0,i],domain_II.quantities['stage'].explicit_update), max(valuesUsingFunction[0,i]-domain_II.quantities['stage'].explicit_update)
1513
+ assert num.allclose(valuesUsingFunction[1,i],domain_II.quantities['xmomentum'].explicit_update)
1514
+ assert num.allclose(valuesUsingFunction[2,i],domain_II.quantities['ymomentum'].explicit_update)
1515
+ i+=1
1516
+
1517
+ os.remove(field_sts_filename+'.sts')
1518
+ os.remove(field_sts_filename+'.sww')
1519
+
1520
+ def test_temporally_varying_wind_stress_from_file_evolve(self):
1521
+ from anuga.config import rho_a, rho_w, eta_w
1522
+ from math import pi, cos, sin
1523
+ from anuga.config import time_format
1524
+ from anuga.file_conversion.sts2sww_mesh import sts2sww_mesh
1525
+
1526
+ cellsize = 25
1527
+ #nrows=20; ncols = 20;
1528
+ nrows=10; ncols = 10;
1529
+ refzone=50
1530
+ xllcorner=366000;yllcorner=6369500;
1531
+ number_of_timesteps = 28
1532
+ timestep=1.
1533
+ eps=2e-16
1534
+
1535
+ #points, vertices, boundary =rectangular(10,10,
1536
+ points, vertices, boundary =rectangular(5,5,
1537
+ len1=cellsize*(ncols-1),
1538
+ len2=cellsize*(nrows-1),
1539
+ origin=(xllcorner,yllcorner))
1540
+
1541
+ domain = Domain(points, vertices, boundary)
1542
+ midpoints = domain.get_centroid_coordinates()
1543
+
1544
+ # Flat surface with 1m of water
1545
+ domain.set_quantity('elevation', 0)
1546
+ domain.set_quantity('stage', 1.0)
1547
+ domain.set_quantity('friction', 0)
1548
+
1549
+ Br = Reflective_boundary(domain)
1550
+ domain.set_boundary({'top': Br, 'bottom' :Br, 'left': Br, 'right': Br})
1551
+
1552
+ # Setup only one forcing term, constant wind stress
1553
+ field_sts_filename = 'wind_field'
1554
+ self.write_wind_pressure_field_sts(field_sts_filename,
1555
+ nrows=nrows,
1556
+ ncols=ncols,
1557
+ cellsize=cellsize,
1558
+ origin=(xllcorner,yllcorner),
1559
+ refzone=50,
1560
+ timestep=timestep,
1561
+ number_of_timesteps=number_of_timesteps,
1562
+ speed=time_varying_speed,
1563
+ angle=time_varying_angle,
1564
+ pressure=time_varying_pressure)
1565
+
1566
+ sts2sww_mesh(field_sts_filename,spatial_thinning=1,
1567
+ verbose=False)
1568
+
1569
+ # Setup wind stress
1570
+ F = file_function(field_sts_filename+'.sww', domain,
1571
+ quantities=['wind_speed', 'wind_angle'],
1572
+ interpolation_points = midpoints)
1573
+
1574
+ #W = Wind_stress(F,use_coordinates=False)
1575
+ W = Wind_stress_fast(F,filename=field_sts_filename+'.sww', domain=domain)
1576
+ domain.forcing_terms.append(W)
1577
+
1578
+ valuesUsingFunction=num.empty((3,2*number_of_timesteps,midpoints.shape[0]),
1579
+ num.float)
1580
+ i=0
1581
+ for t in domain.evolve(yieldstep=timestep/2., finaltime=(number_of_timesteps-1)*timestep):
1582
+ valuesUsingFunction[0,i]=domain.quantities['stage'].explicit_update
1583
+ valuesUsingFunction[1,i]=domain.quantities['xmomentum'].explicit_update
1584
+ valuesUsingFunction[2,i]=domain.quantities['ymomentum'].explicit_update
1585
+ i+=1
1586
+
1587
+
1588
+ domain_II = Domain(points, vertices, boundary)
1589
+
1590
+ # Flat surface with 1m of water
1591
+ domain_II.set_quantity('elevation', 0)
1592
+ domain_II.set_quantity('stage', 1.0)
1593
+ domain_II.set_quantity('friction', 0)
1594
+
1595
+ Br = Reflective_boundary(domain_II)
1596
+ domain_II.set_boundary({'top': Br, 'bottom' :Br, 'left': Br, 'right': Br})
1597
+
1598
+ domain_II.forcing_terms.append(Wind_stress(s=time_varying_speed,
1599
+ phi=time_varying_angle))
1600
+
1601
+ i=0;
1602
+ for t in domain_II.evolve(yieldstep=timestep/2.,
1603
+ finaltime=(number_of_timesteps-1)*timestep):
1604
+ assert num.allclose(valuesUsingFunction[0,i],
1605
+ domain_II.quantities['stage'].explicit_update,
1606
+ eps)
1607
+ #print i,valuesUsingFunction[1,i]
1608
+ assert num.allclose(valuesUsingFunction[1,i],
1609
+ domain_II.quantities['xmomentum'].explicit_update,
1610
+ eps),(valuesUsingFunction[1,i]-
1611
+ domain_II.quantities['xmomentum'].explicit_update)
1612
+ assert num.allclose(valuesUsingFunction[2,i],
1613
+ domain_II.quantities['ymomentum'].explicit_update,
1614
+ eps)
1615
+ #if i==1: assert-1==1
1616
+ i+=1
1617
+
1618
+ os.remove(field_sts_filename+'.sts')
1619
+ os.remove(field_sts_filename+'.sww')
1620
+
1621
+ def test_spatially_varying_wind_stress_from_file_evolve(self):
1622
+ from anuga.config import rho_a, rho_w, eta_w
1623
+ from math import pi, cos, sin
1624
+ from anuga.config import time_format
1625
+ from anuga.file_conversion.sts2sww_mesh import sts2sww_mesh
1626
+
1627
+ cellsize = 25
1628
+ nrows=20; ncols = 20;
1629
+ nrows=10; ncols = 10;
1630
+ refzone=50
1631
+ xllcorner=366000;yllcorner=6369500;
1632
+ number_of_timesteps = 28
1633
+ timestep=1.
1634
+ eps=2e-16
1635
+
1636
+ #points, vertices, boundary =rectangular(10,10,
1637
+ points, vertices, boundary =rectangular(5,5,
1638
+ len1=cellsize*(ncols-1),
1639
+ len2=cellsize*(nrows-1),
1640
+ origin=(xllcorner,yllcorner))
1641
+
1642
+ domain = Domain(points, vertices, boundary)
1643
+ midpoints = domain.get_centroid_coordinates()
1644
+
1645
+ # Flat surface with 1m of water
1646
+ domain.set_quantity('elevation', 0)
1647
+ domain.set_quantity('stage', 1.0)
1648
+ domain.set_quantity('friction', 0)
1649
+
1650
+ Br = Reflective_boundary(domain)
1651
+ domain.set_boundary({'top': Br, 'bottom' :Br, 'left': Br, 'right': Br})
1652
+
1653
+ # Setup only one forcing term, constant wind stress
1654
+ field_sts_filename = 'wind_field'
1655
+ self.write_wind_pressure_field_sts(field_sts_filename,
1656
+ nrows=nrows,
1657
+ ncols=ncols,
1658
+ cellsize=cellsize,
1659
+ origin=(xllcorner,yllcorner),
1660
+ refzone=50,
1661
+ timestep=timestep,
1662
+ number_of_timesteps=number_of_timesteps,
1663
+ speed=spatial_linear_varying_speed,
1664
+ angle=spatial_linear_varying_angle,
1665
+ pressure=spatial_linear_varying_pressure)
1666
+
1667
+ sts2sww_mesh(field_sts_filename,spatial_thinning=1,
1668
+ verbose=False)
1669
+
1670
+ # Setup wind stress
1671
+ F = file_function(field_sts_filename+'.sww', domain,
1672
+ quantities=['wind_speed', 'wind_angle'],
1673
+ interpolation_points = midpoints)
1674
+
1675
+ W = Wind_stress(F,use_coordinates=False)
1676
+ domain.forcing_terms.append(W)
1677
+
1678
+ valuesUsingFunction=num.empty((3,number_of_timesteps,midpoints.shape[0]),
1679
+ num.float)
1680
+ i=0
1681
+ for t in domain.evolve(yieldstep=timestep, finaltime=(number_of_timesteps-1)*timestep):
1682
+ valuesUsingFunction[0,i]=domain.quantities['stage'].explicit_update
1683
+ valuesUsingFunction[1,i]=domain.quantities['xmomentum'].explicit_update
1684
+ valuesUsingFunction[2,i]=domain.quantities['ymomentum'].explicit_update
1685
+ i+=1
1686
+
1687
+
1688
+ domain_II = Domain(points, vertices, boundary)
1689
+
1690
+ # Flat surface with 1m of water
1691
+ domain_II.set_quantity('elevation', 0)
1692
+ domain_II.set_quantity('stage', 1.0)
1693
+ domain_II.set_quantity('friction', 0)
1694
+
1695
+ Br = Reflective_boundary(domain_II)
1696
+ domain_II.set_boundary({'top': Br, 'bottom' :Br, 'left': Br, 'right': Br})
1697
+
1698
+ domain_II.forcing_terms.append(Wind_stress(s=spatial_linear_varying_speed,
1699
+ phi=spatial_linear_varying_angle))
1700
+
1701
+ i=0;
1702
+ for t in domain_II.evolve(yieldstep=timestep,
1703
+ finaltime=(number_of_timesteps-1)*timestep):
1704
+ #print valuesUsingFunction[1,i],domain_II.quantities['xmomentum'].explicit_update
1705
+ assert num.allclose(valuesUsingFunction[0,i],
1706
+ domain_II.quantities['stage'].explicit_update,
1707
+ eps)
1708
+ assert num.allclose(valuesUsingFunction[1,i],
1709
+ domain_II.quantities['xmomentum'].explicit_update,
1710
+ eps)
1711
+ assert num.allclose(valuesUsingFunction[2,i],
1712
+ domain_II.quantities['ymomentum'].explicit_update,
1713
+ eps)
1714
+ i+=1
1715
+
1716
+ os.remove(field_sts_filename+'.sts')
1717
+ os.remove(field_sts_filename+'.sww')
1718
+
1719
+ def test_temporally_varying_pressure_stress_from_file_evolve(self):
1720
+ from anuga.config import rho_a, rho_w, eta_w
1721
+ from math import pi, cos, sin
1722
+ from anuga.config import time_format
1723
+ from anuga.file_conversion.sts2sww_mesh import sts2sww_mesh
1724
+
1725
+ cellsize = 25
1726
+ #nrows=20; ncols = 20;
1727
+ nrows=10; ncols = 10;
1728
+ refzone=50
1729
+ xllcorner=366000;yllcorner=6369500;
1730
+ number_of_timesteps = 28
1731
+ timestep=10.
1732
+ eps=2e-16
1733
+
1734
+ #print "Building mesh"
1735
+ #points, vertices, boundary =rectangular(10,10,
1736
+ points, vertices, boundary =rectangular(5,5,
1737
+ len1=cellsize*(ncols-1),
1738
+ len2=cellsize*(nrows-1),
1739
+ origin=(xllcorner,yllcorner))
1740
+
1741
+ domain = Domain(points, vertices, boundary)
1742
+ vertexpoints = domain.get_nodes()
1743
+
1744
+ # Flat surface with 1m of water
1745
+ domain.set_quantity('elevation', 0)
1746
+ domain.set_quantity('stage', 1.0)
1747
+ domain.set_quantity('friction', 0)
1748
+
1749
+ Br = Reflective_boundary(domain)
1750
+ domain.set_boundary({'top': Br, 'bottom' :Br, 'left': Br, 'right': Br})
1751
+
1752
+ # Setup only one forcing term, constant wind stress
1753
+ field_sts_filename = 'wind_field'
1754
+ #print 'Writing pressure field sts file'
1755
+ self.write_wind_pressure_field_sts(field_sts_filename,
1756
+ nrows=nrows,
1757
+ ncols=ncols,
1758
+ cellsize=cellsize,
1759
+ origin=(xllcorner,yllcorner),
1760
+ refzone=50,
1761
+ timestep=timestep,
1762
+ number_of_timesteps=number_of_timesteps,
1763
+ speed=time_varying_speed,
1764
+ angle=time_varying_angle,
1765
+ pressure=time_varying_pressure)
1766
+
1767
+ #print "converting sts to sww"
1768
+ sts2sww_mesh(field_sts_filename,spatial_thinning=1,
1769
+ verbose=False)
1770
+
1771
+ #print 'initialising file_function'
1772
+ # Setup wind stress
1773
+ F = file_function(field_sts_filename+'.sww', domain,
1774
+ quantities=['barometric_pressure'],
1775
+ interpolation_points = vertexpoints)
1776
+
1777
+ #P = Barometric_pressure(F,use_coordinates=False)
1778
+ #print 'initialising pressure forcing term'
1779
+ P = Barometric_pressure_fast(p=F,filename=field_sts_filename+'.sww',domain=domain)
1780
+ domain.forcing_terms.append(P)
1781
+
1782
+ valuesUsingFunction=num.empty((3,2*number_of_timesteps,len(domain)),
1783
+ num.float)
1784
+ i=0
1785
+ import time as timer
1786
+ t0=timer.time()
1787
+ for t in domain.evolve(yieldstep=timestep/2., finaltime=(number_of_timesteps-1)*timestep):
1788
+ valuesUsingFunction[0,i]=domain.quantities['stage'].explicit_update
1789
+ valuesUsingFunction[1,i]=domain.quantities['xmomentum'].explicit_update
1790
+ valuesUsingFunction[2,i]=domain.quantities['ymomentum'].explicit_update
1791
+ i+=1
1792
+ #domain.write_time()
1793
+ t1=timer.time()
1794
+ #print "That took %fs seconds" %(t1-t0)
1795
+
1796
+
1797
+ domain_II = Domain(points, vertices, boundary)
1798
+
1799
+ # Flat surface with 1m of water
1800
+ domain_II.set_quantity('elevation', 0)
1801
+ domain_II.set_quantity('stage', 1.0)
1802
+ domain_II.set_quantity('friction', 0)
1803
+
1804
+ Br = Reflective_boundary(domain_II)
1805
+ domain_II.set_boundary({'top': Br, 'bottom' :Br, 'left': Br, 'right': Br})
1806
+
1807
+ domain_II.forcing_terms.append(Barometric_pressure(p=time_varying_pressure))
1808
+
1809
+ i=0;
1810
+ for t in domain_II.evolve(yieldstep=timestep/2.,
1811
+ finaltime=(number_of_timesteps-1)*timestep):
1812
+ assert num.allclose(valuesUsingFunction[0,i],
1813
+ domain_II.quantities['stage'].explicit_update,
1814
+ eps)
1815
+ assert num.allclose(valuesUsingFunction[1,i],
1816
+ domain_II.quantities['xmomentum'].explicit_update,
1817
+ eps)
1818
+ assert num.allclose(valuesUsingFunction[2,i],
1819
+ domain_II.quantities['ymomentum'].explicit_update,
1820
+ eps)
1821
+ i+=1
1822
+
1823
+ os.remove(field_sts_filename+'.sts')
1824
+ os.remove(field_sts_filename+'.sww')
1825
+
1826
+ def test_spatially_varying_pressure_stress_from_file_evolve(self):
1827
+ from anuga.config import rho_a, rho_w, eta_w
1828
+ from math import pi, cos, sin
1829
+ from anuga.config import time_format
1830
+ from anuga.file_conversion.sts2sww_mesh import sts2sww_mesh
1831
+
1832
+ cellsize = 25
1833
+ #nrows=20; ncols = 20;
1834
+ nrows=10; ncols = 10;
1835
+ refzone=50
1836
+ xllcorner=366000;yllcorner=6369500;
1837
+ number_of_timesteps = 28
1838
+ timestep=1.
1839
+ eps=2e-16
1840
+
1841
+ #points, vertices, boundary =rectangular(10,10,
1842
+ points, vertices, boundary =rectangular(5,5,
1843
+ len1=cellsize*(ncols-1),
1844
+ len2=cellsize*(nrows-1),
1845
+ origin=(xllcorner,yllcorner))
1846
+
1847
+ domain = Domain(points, vertices, boundary)
1848
+ vertexpoints = domain.get_nodes()
1849
+
1850
+ # Flat surface with 1m of water
1851
+ domain.set_quantity('elevation', 0)
1852
+ domain.set_quantity('stage', 1.0)
1853
+ domain.set_quantity('friction', 0)
1854
+
1855
+ Br = Reflective_boundary(domain)
1856
+ domain.set_boundary({'top': Br, 'bottom' :Br, 'left': Br, 'right': Br})
1857
+
1858
+ # Setup only one forcing term, constant wind stress
1859
+ field_sts_filename = 'wind_field'
1860
+ self.write_wind_pressure_field_sts(field_sts_filename,
1861
+ nrows=nrows,
1862
+ ncols=ncols,
1863
+ cellsize=cellsize,
1864
+ origin=(xllcorner,yllcorner),
1865
+ refzone=50,
1866
+ timestep=timestep,
1867
+ number_of_timesteps=number_of_timesteps,
1868
+ speed=spatial_linear_varying_speed,
1869
+ angle=spatial_linear_varying_angle,
1870
+ pressure=spatial_linear_varying_pressure)
1871
+
1872
+ sts2sww_mesh(field_sts_filename,spatial_thinning=1,
1873
+ verbose=False)
1874
+
1875
+ # Setup wind stress
1876
+ F = file_function(field_sts_filename+'.sww', domain,
1877
+ quantities=['barometric_pressure'],
1878
+ interpolation_points = vertexpoints)
1879
+
1880
+ P = Barometric_pressure(F,use_coordinates=False)
1881
+ domain.forcing_terms.append(P)
1882
+
1883
+ valuesUsingFunction=num.empty((3,number_of_timesteps,len(domain)),
1884
+ num.float)
1885
+ i=0
1886
+ for t in domain.evolve(yieldstep=timestep, finaltime=(number_of_timesteps-1)*timestep):
1887
+ valuesUsingFunction[0,i]=domain.quantities['stage'].explicit_update
1888
+ valuesUsingFunction[1,i]=domain.quantities['xmomentum'].explicit_update
1889
+ valuesUsingFunction[2,i]=domain.quantities['ymomentum'].explicit_update
1890
+ i+=1
1891
+
1892
+
1893
+ domain_II = Domain(points, vertices, boundary)
1894
+
1895
+ # Flat surface with 1m of water
1896
+ domain_II.set_quantity('elevation', 0)
1897
+ domain_II.set_quantity('stage', 1.0)
1898
+ domain_II.set_quantity('friction', 0)
1899
+
1900
+ Br = Reflective_boundary(domain_II)
1901
+ domain_II.set_boundary({'top': Br, 'bottom' :Br, 'left': Br, 'right': Br})
1902
+
1903
+ domain_II.forcing_terms.append(Barometric_pressure(p=spatial_linear_varying_pressure))
1904
+
1905
+ i=0;
1906
+ for t in domain_II.evolve(yieldstep=timestep,
1907
+ finaltime=(number_of_timesteps-1)*timestep):
1908
+
1909
+ assert num.allclose(valuesUsingFunction[0,i],
1910
+ domain_II.quantities['stage'].explicit_update,
1911
+ eps)
1912
+ assert num.allclose(valuesUsingFunction[1,i],
1913
+ domain_II.quantities['xmomentum'].explicit_update,
1914
+ eps)
1915
+ assert num.allclose(valuesUsingFunction[2,i],
1916
+ domain_II.quantities['ymomentum'].explicit_update,
1917
+ eps)
1918
+ i+=1
1919
+
1920
+ os.remove(field_sts_filename+'.sts')
1921
+ os.remove(field_sts_filename+'.sww')
1922
+
1923
+ def test_flux_gravity(self):
1924
+ #Assuming no friction
1925
+
1926
+ from anuga.config import g
1927
+
1928
+ a = [0.0, 0.0]
1929
+ b = [0.0, 2.0]
1930
+ c = [2.0, 0.0]
1931
+ d = [0.0, 4.0]
1932
+ e = [2.0, 2.0]
1933
+ f = [4.0, 0.0]
1934
+
1935
+ points = [a, b, c, d, e, f]
1936
+ # bac, bce, ecf, dbe
1937
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
1938
+
1939
+ domain = Domain(points, vertices)
1940
+
1941
+ B = Reflective_boundary(domain)
1942
+ domain.set_boundary( {'exterior': B})
1943
+
1944
+
1945
+ #Set up for a gradient of (3,0) at mid triangle (bce)
1946
+ def slope(x, y):
1947
+ return 3*x
1948
+
1949
+ h = 0.1
1950
+ def stage(x, y):
1951
+ return slope(x, y) + h
1952
+
1953
+ domain.set_quantity('elevation', slope)
1954
+ domain.set_quantity('stage', stage)
1955
+
1956
+ for name in domain.conserved_quantities:
1957
+ assert num.allclose(domain.quantities[name].explicit_update, 0)
1958
+ assert num.allclose(domain.quantities[name].semi_implicit_update, 0)
1959
+
1960
+ # fluxes and gravity term are now combined. To ensure zero flux on boundary
1961
+ # need to set reflective boundaries
1962
+ domain.update_boundary()
1963
+ domain.compute_fluxes()
1964
+
1965
+
1966
+ assert num.allclose(domain.quantities['stage'].explicit_update, 0)
1967
+ assert num.allclose(domain.quantities['xmomentum'].explicit_update, -g*h*3)
1968
+ assert num.allclose(domain.quantities['ymomentum'].explicit_update, 0)
1969
+
1970
+
1971
+
1972
+ def test_manning_friction_old(self):
1973
+ from anuga.config import g
1974
+
1975
+ a = [0.0, 0.0]
1976
+ b = [0.0, 2.0]
1977
+ c = [2.0, 0.0]
1978
+ d = [0.0, 4.0]
1979
+ e = [2.0, 2.0]
1980
+ f = [4.0, 0.0]
1981
+
1982
+ points = [a, b, c, d, e, f]
1983
+ # bac, bce, ecf, dbe
1984
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
1985
+
1986
+ domain = Domain(points, vertices)
1987
+
1988
+ # Use the old function which doesn't take into account the extra
1989
+ # wetted area due to slope of bed
1990
+ domain.set_sloped_mannings_function(False)
1991
+
1992
+ B = Reflective_boundary(domain)
1993
+ domain.set_boundary( {'exterior': B})
1994
+
1995
+ #Set up for a gradient of (3,0) at mid triangle (bce)
1996
+ def slope(x, y):
1997
+ return 3*x
1998
+
1999
+ h = 0.1
2000
+ def stage(x, y):
2001
+ return slope(x, y) + h
2002
+
2003
+ eta = 0.07
2004
+ domain.set_quantity('elevation', slope)
2005
+ domain.set_quantity('stage', stage)
2006
+ domain.set_quantity('friction', eta)
2007
+
2008
+ for name in domain.conserved_quantities:
2009
+ assert num.allclose(domain.quantities[name].explicit_update, 0)
2010
+ assert num.allclose(domain.quantities[name].semi_implicit_update, 0)
2011
+
2012
+
2013
+ # Only manning friction in the forcing terms (gravity now combined with flux calc)
2014
+ domain.compute_forcing_terms()
2015
+
2016
+ assert num.allclose(domain.quantities['stage'].explicit_update, 0)
2017
+ assert num.allclose(domain.quantities['xmomentum'].explicit_update,
2018
+ 0)
2019
+ assert num.allclose(domain.quantities['ymomentum'].explicit_update, 0)
2020
+
2021
+ assert num.allclose(domain.quantities['stage'].semi_implicit_update, 0)
2022
+ assert num.allclose(domain.quantities['xmomentum'].semi_implicit_update,
2023
+ 0)
2024
+ assert num.allclose(domain.quantities['ymomentum'].semi_implicit_update,
2025
+ 0)
2026
+
2027
+ #Create some momentum for friction to work with
2028
+ domain.set_quantity('xmomentum', 1)
2029
+ S = -g*eta**2 / h**(7.0/3)
2030
+
2031
+ domain.compute_forcing_terms()
2032
+ assert num.allclose(domain.quantities['stage'].semi_implicit_update, 0)
2033
+ assert num.allclose(domain.quantities['xmomentum'].semi_implicit_update,
2034
+ S)
2035
+ assert num.allclose(domain.quantities['ymomentum'].semi_implicit_update,
2036
+ 0)
2037
+
2038
+ #A more complex example
2039
+ domain.quantities['stage'].semi_implicit_update[:] = 0.0
2040
+ domain.quantities['xmomentum'].semi_implicit_update[:] = 0.0
2041
+ domain.quantities['ymomentum'].semi_implicit_update[:] = 0.0
2042
+
2043
+ domain.set_quantity('xmomentum', 3)
2044
+ domain.set_quantity('ymomentum', 4)
2045
+ # sqrt(3^2 +4^2) = 5
2046
+
2047
+ S = -g*eta**2 / h**(7.0/3) * 5
2048
+
2049
+ domain.compute_forcing_terms()
2050
+
2051
+ assert num.allclose(domain.quantities['stage'].semi_implicit_update, 0)
2052
+ assert num.allclose(domain.quantities['xmomentum'].semi_implicit_update,3*S)
2053
+ assert num.allclose(domain.quantities['ymomentum'].semi_implicit_update,4*S)
2054
+
2055
+
2056
+ def test_manning_friction_new(self):
2057
+ from anuga.config import g
2058
+ import math
2059
+
2060
+ a = [0.0, 0.0]
2061
+ b = [0.0, 2.0]
2062
+ c = [2.0, 0.0]
2063
+ d = [0.0, 4.0]
2064
+ e = [2.0, 2.0]
2065
+ f = [4.0, 0.0]
2066
+
2067
+ points = [a, b, c, d, e, f]
2068
+ # bac, bce, ecf, dbe
2069
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
2070
+
2071
+ domain = Domain(points, vertices)
2072
+ B = Reflective_boundary(domain)
2073
+ domain.set_boundary( {'exterior': B})
2074
+
2075
+ # Use the new function which takes into account the extra
2076
+ # wetted area due to slope of bed
2077
+ domain.set_sloped_mannings_function(True)
2078
+
2079
+ #Set up for a gradient of (3,0) at mid triangle (bce)
2080
+ def slope(x, y):
2081
+ return 3*x
2082
+
2083
+ h = 0.1
2084
+ def stage(x, y):
2085
+ return slope(x, y) + h
2086
+
2087
+ eta = 0.07
2088
+ domain.set_quantity('elevation', slope)
2089
+ domain.set_quantity('stage', stage)
2090
+ domain.set_quantity('friction', eta)
2091
+
2092
+ for name in domain.conserved_quantities:
2093
+ assert num.allclose(domain.quantities[name].explicit_update, 0)
2094
+ assert num.allclose(domain.quantities[name].semi_implicit_update, 0)
2095
+
2096
+ domain.compute_forcing_terms()
2097
+
2098
+ assert num.allclose(domain.quantities['stage'].explicit_update, 0)
2099
+ assert num.allclose(domain.quantities['xmomentum'].explicit_update,
2100
+ 0)
2101
+ assert num.allclose(domain.quantities['ymomentum'].explicit_update, 0)
2102
+
2103
+ assert num.allclose(domain.quantities['stage'].semi_implicit_update, 0)
2104
+ assert num.allclose(domain.quantities['xmomentum'].semi_implicit_update,
2105
+ 0)
2106
+ assert num.allclose(domain.quantities['ymomentum'].semi_implicit_update,
2107
+ 0)
2108
+
2109
+ #Create some momentum for friction to work with
2110
+ domain.set_quantity('xmomentum', 1)
2111
+ S = -g*eta**2 / h**(7.0/3) * math.sqrt(10)
2112
+
2113
+ domain.compute_forcing_terms()
2114
+ assert num.allclose(domain.quantities['stage'].semi_implicit_update, 0)
2115
+ assert num.allclose(domain.quantities['xmomentum'].semi_implicit_update,
2116
+ S)
2117
+ assert num.allclose(domain.quantities['ymomentum'].semi_implicit_update,
2118
+ 0)
2119
+
2120
+ #A more complex example
2121
+ domain.quantities['stage'].semi_implicit_update[:] = 0.0
2122
+ domain.quantities['xmomentum'].semi_implicit_update[:] = 0.0
2123
+ domain.quantities['ymomentum'].semi_implicit_update[:] = 0.0
2124
+
2125
+ domain.set_quantity('xmomentum', 3)
2126
+ domain.set_quantity('ymomentum', 4)
2127
+
2128
+ S = -g*eta**2 *5 / h**(7.0/3) * math.sqrt(10.0)
2129
+
2130
+ domain.compute_forcing_terms()
2131
+
2132
+ #print 'S', S
2133
+ #print domain.quantities['xmomentum'].semi_implicit_update
2134
+ #print domain.quantities['ymomentum'].semi_implicit_update
2135
+
2136
+ assert num.allclose(domain.quantities['stage'].semi_implicit_update, 0)
2137
+ assert num.allclose(domain.quantities['xmomentum'].semi_implicit_update,3*S)
2138
+ assert num.allclose(domain.quantities['ymomentum'].semi_implicit_update,4*S)
2139
+
2140
+
2141
+
2142
+
2143
+
2144
+ def test_inflow_using_circle(self):
2145
+ from math import pi, cos, sin
2146
+
2147
+ a = [0.0, 0.0]
2148
+ b = [0.0, 2.0]
2149
+ c = [2.0, 0.0]
2150
+ d = [0.0, 4.0]
2151
+ e = [2.0, 2.0]
2152
+ f = [4.0, 0.0]
2153
+
2154
+ points = [a, b, c, d, e, f]
2155
+ # bac, bce, ecf, dbe
2156
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
2157
+
2158
+ domain = Domain(points, vertices)
2159
+
2160
+ # Flat surface with 1m of water
2161
+ domain.set_quantity('elevation', 0)
2162
+ domain.set_quantity('stage', 1.0)
2163
+ domain.set_quantity('friction', 0)
2164
+
2165
+ Br = Reflective_boundary(domain)
2166
+ domain.set_boundary({'exterior': Br})
2167
+
2168
+ # Setup only one forcing term, constant inflow of 2 m^3/s
2169
+ # on a circle affecting triangles #0 and #1 (bac and bce)
2170
+ domain.forcing_terms = []
2171
+
2172
+ I = Inflow(domain, rate=2.0, center=(1,1), radius=1)
2173
+ domain.forcing_terms.append(I)
2174
+ domain.compute_forcing_terms()
2175
+
2176
+
2177
+ A = I.exchange_area
2178
+ assert num.allclose(A, 4) # Two triangles
2179
+
2180
+ assert num.allclose(domain.quantities['stage'].explicit_update[1], 2.0/A)
2181
+ assert num.allclose(domain.quantities['stage'].explicit_update[0], 2.0/A)
2182
+ assert num.allclose(domain.quantities['stage'].explicit_update[2:], 0)
2183
+
2184
+
2185
+ def test_inflow_using_circle_function(self):
2186
+ from math import pi, cos, sin
2187
+
2188
+ a = [0.0, 0.0]
2189
+ b = [0.0, 2.0]
2190
+ c = [2.0, 0.0]
2191
+ d = [0.0, 4.0]
2192
+ e = [2.0, 2.0]
2193
+ f = [4.0, 0.0]
2194
+
2195
+ points = [a, b, c, d, e, f]
2196
+ # bac, bce, ecf, dbe
2197
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
2198
+
2199
+ domain = Domain(points, vertices)
2200
+
2201
+ # Flat surface with 1m of water
2202
+ domain.set_quantity('elevation', 0)
2203
+ domain.set_quantity('stage', 1.0)
2204
+ domain.set_quantity('friction', 0)
2205
+
2206
+ Br = Reflective_boundary(domain)
2207
+ domain.set_boundary({'exterior': Br})
2208
+
2209
+ # Setup only one forcing term, time dependent inflow of 2 m^3/s
2210
+ # on a circle affecting triangles #0 and #1 (bac and bce)
2211
+ domain.forcing_terms = []
2212
+ I = Inflow(domain, rate=lambda t: 2., center=(1,1), radius=1)
2213
+ domain.forcing_terms.append(I)
2214
+
2215
+ domain.compute_forcing_terms()
2216
+
2217
+ A = I.exchange_area
2218
+ assert num.allclose(A, 4) # Two triangles
2219
+
2220
+ assert num.allclose(domain.quantities['stage'].explicit_update[1], 2.0/A)
2221
+ assert num.allclose(domain.quantities['stage'].explicit_update[0], 2.0/A)
2222
+ assert num.allclose(domain.quantities['stage'].explicit_update[2:], 0)
2223
+
2224
+
2225
+
2226
+
2227
+ def test_inflow_catch_too_few_triangles(self):
2228
+ """
2229
+ Test that exception is thrown if no triangles are covered
2230
+ by the inflow area
2231
+ """
2232
+
2233
+ from math import pi, cos, sin
2234
+
2235
+ a = [0.0, 0.0]
2236
+ b = [0.0, 2.0]
2237
+ c = [2.0, 0.0]
2238
+ d = [0.0, 4.0]
2239
+ e = [2.0, 2.0]
2240
+ f = [4.0, 0.0]
2241
+
2242
+ points = [a, b, c, d, e, f]
2243
+ # bac, bce, ecf, dbe
2244
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
2245
+
2246
+ domain = Domain(points, vertices)
2247
+
2248
+ # Flat surface with 1m of water
2249
+ domain.set_quantity('elevation', 0)
2250
+ domain.set_quantity('stage', 1.0)
2251
+ domain.set_quantity('friction', 0)
2252
+
2253
+ Br = Reflective_boundary(domain)
2254
+ domain.set_boundary({'exterior': Br})
2255
+
2256
+ # Setup only one forcing term, constant inflow of 2 m^3/s
2257
+ # on a circle affecting triangles #0 and #1 (bac and bce)
2258
+ try:
2259
+ Inflow(domain, rate=2.0, center=(1,1.1), radius=0.01)
2260
+ except:
2261
+ pass
2262
+ else:
2263
+ msg = 'Should have raised exception'
2264
+ raise Exception, msg
2265
+
2266
+
2267
+
2268
+ if __name__ == "__main__":
2269
+ suite = unittest.makeSuite(Test_Forcing, 'test')
2270
+ runner = unittest.TextTestRunner(verbosity=1)
2271
+ runner.run(suite)