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,1854 @@
1
+ #!/usr/bin/env python
2
+
3
+
4
+
5
+ #FIXME: Seperate the tests for mesh and general_mesh
6
+
7
+ #FIXME (Ole): Maxe this test independent of anything that inherits from General_mesh (namely shallow_water)
8
+
9
+ import unittest
10
+ from math import sqrt
11
+
12
+
13
+ from anuga.abstract_2d_finite_volumes.neighbour_mesh import *
14
+ from anuga.abstract_2d_finite_volumes.mesh_factory import rectangular
15
+ from anuga.abstract_2d_finite_volumes.mesh_factory import rectangular_periodic
16
+ from anuga.config import epsilon
17
+
18
+ from anuga.coordinate_transforms.geo_reference import Geo_reference
19
+ from anuga.geometry.polygon import is_inside_polygon
20
+ from anuga.utilities.numerical_tools import ensure_numeric
21
+
22
+ import numpy as num
23
+
24
+
25
+ def distance(x, y):
26
+ return sqrt(num.sum((num.array(x)-num.array(y))**2))
27
+
28
+ class Test_Mesh(unittest.TestCase):
29
+ def setUp(self):
30
+ pass
31
+
32
+ def tearDown(self):
33
+ pass
34
+
35
+ def test_triangle_inputs(self):
36
+ points = [[0.0, 0.0], [4.0, 0.0], [0.0, 3.0]]
37
+ vertices = [0,1,2] #Wrong
38
+
39
+ try:
40
+ mesh = Mesh(points, vertices)
41
+ except:
42
+ pass
43
+ else:
44
+ msg = 'Should have raised exception'
45
+ raise Exception(msg)
46
+
47
+
48
+ def test_basic_triangle(self):
49
+
50
+ a = [0.0, 0.0]
51
+ b = [4.0, 0.0]
52
+ c = [0.0, 3.0]
53
+
54
+ points = [a, b, c]
55
+ vertices = [[0,1,2]]
56
+ mesh = Mesh(points, vertices)
57
+
58
+ #Centroid
59
+ centroid = mesh.centroid_coordinates[0]
60
+ assert centroid[0] == 4.0/3
61
+ assert centroid[1] == 1.0
62
+
63
+ #Area
64
+ assert mesh.areas[0] == 6.0,\
65
+ 'Area was %f, should have been 6.0' %mesh.areas[0]
66
+
67
+ #Normals
68
+ normals = mesh.get_normals()
69
+ assert num.allclose(normals[0, 0:2], [3.0/5, 4.0/5])
70
+ assert num.allclose(normals[0, 2:4], [-1.0, 0.0])
71
+ assert num.allclose(normals[0, 4:6], [0.0, -1.0])
72
+
73
+ assert num.allclose(mesh.get_normal(0,0), [3.0/5, 4.0/5])
74
+ assert num.allclose(mesh.get_normal(0,1), [-1.0, 0.0])
75
+ assert num.allclose(mesh.get_normal(0,2), [0.0, -1.0])
76
+
77
+ #Edge lengths
78
+ assert num.allclose(mesh.edgelengths[0], [5.0, 3.0, 4.0])
79
+
80
+
81
+ #Vertex coordinates
82
+ #V = mesh.get_vertex_coordinates()
83
+ #assert allclose(V[0], [0.0, 0.0, 4.0, 0.0, 0.0, 3.0])
84
+
85
+
86
+ V = mesh.get_vertex_coordinates()
87
+ assert num.allclose(V, [ [0.0, 0.0],
88
+ [4.0, 0.0],
89
+ [0.0, 3.0] ])
90
+
91
+ V0 = mesh.get_vertex_coordinate(0, 0)
92
+ assert num.allclose(V0, [0.0, 0.0])
93
+
94
+ V1 = mesh.get_vertex_coordinate(0, 1)
95
+ assert num.allclose(V1, [4.0, 0.0])
96
+
97
+ V2 = mesh.get_vertex_coordinate(0, 2)
98
+ assert num.allclose(V2, [0.0, 3.0])
99
+
100
+
101
+ #General tests:
102
+
103
+ #Test that points are arranged in a counter clock wise order etc
104
+ mesh.check_integrity()
105
+
106
+
107
+ #Test that the centroid is located 2/3 of the way
108
+ #from each vertex to the midpoint of the opposite side
109
+
110
+ V = mesh.get_vertex_coordinates()
111
+ x0 = V[0, 0]; y0 = V[0, 1]
112
+ x1 = V[1, 0]; y1 = V[1, 1]
113
+ x2 = V[2, 0]; y2 = V[2, 1]
114
+ #x0 = V[0,0]
115
+ #y0 = V[0,1]
116
+ #x1 = V[0,2]
117
+ #y1 = V[0,3]
118
+ #x2 = V[0,4]
119
+ #y2 = V[0,5]
120
+
121
+ m0 = [(x1 + x2)/2, (y1 + y2)/2]
122
+ m1 = [(x0 + x2)/2, (y0 + y2)/2]
123
+ m2 = [(x1 + x0)/2, (y1 + y0)/2]
124
+
125
+ d0 = distance(centroid, [x0, y0])
126
+ d1 = distance(m0, [x0, y0])
127
+ assert d0 == 2*d1/3
128
+ #
129
+ d0 = distance(centroid, [x1, y1])
130
+ d1 = distance(m1, [x1, y1])
131
+ assert abs(d0 - 2*d1/3) < epsilon, '%e, %e' %(d0, 2*d1/3)
132
+
133
+ d0 = distance(centroid, [x2, y2])
134
+ d1 = distance(m2, [x2, y2])
135
+ assert abs(d0 - 2*d1/3) < epsilon, '%e, %e' %(d0, 2*d1/3)
136
+
137
+ #Radius
138
+ d0 = distance(centroid, m0)
139
+ assert d0 == 5.0/6
140
+
141
+ d1 = distance(centroid, m1)
142
+ assert d1 == sqrt(73.0/36)
143
+
144
+ d2 = distance(centroid, m2)
145
+ assert d2 == sqrt(13.0/9)
146
+
147
+ assert mesh.radii[0] == min(d0, d1, d2)
148
+ assert mesh.radii[0] == 5.0/6
149
+
150
+
151
+ #Let x be the centroid of triangle abc.
152
+ #Test that areas of the three triangles axc, cxb, and bxa are equal.
153
+ points = [a, b, c, centroid]
154
+ vertices = [[0,3,2], [2,3,1], [1,3,0]]
155
+ new_mesh = Mesh(points, vertices)
156
+
157
+ assert new_mesh.areas[0] == new_mesh.areas[1]
158
+ assert new_mesh.areas[1] == new_mesh.areas[2]
159
+ assert new_mesh.areas[1] == new_mesh.areas[2]
160
+
161
+ assert new_mesh.areas[1] == mesh.areas[0]/3
162
+
163
+
164
+
165
+ def test_general_triangle(self):
166
+ a = [2.0, 1.0]
167
+ b = [6.0, 2.0]
168
+ c = [1.0, 3.0]
169
+
170
+ points = [a, b, c]
171
+ vertices = [[0,1,2]]
172
+
173
+ mesh = Mesh(points, vertices)
174
+ centroid = mesh.centroid_coordinates[0]
175
+
176
+
177
+ #Test that the centroid is located 2/3 of the way
178
+ #from each vertex to the midpoint of the opposite side
179
+
180
+ V = mesh.get_vertex_coordinates()
181
+ x0 = V[0, 0]; y0 = V[0, 1]
182
+ x1 = V[1, 0]; y1 = V[1, 1]
183
+ x2 = V[2, 0]; y2 = V[2, 1]
184
+
185
+ #x0 = V[0,0]
186
+ #y0 = V[0,1]
187
+ #x1 = V[0,2]
188
+ #y1 = V[0,3]
189
+ #x2 = V[0,4]
190
+ #y2 = V[0,5]
191
+
192
+ m0 = [(x1 + x2)/2, (y1 + y2)/2]
193
+ m1 = [(x0 + x2)/2, (y0 + y2)/2]
194
+ m2 = [(x1 + x0)/2, (y1 + y0)/2]
195
+
196
+ d0 = distance(centroid, [x0, y0])
197
+ d1 = distance(m0, [x0, y0])
198
+ assert abs(d0 - 2*d1/3) < epsilon, '%e, %e' %(d0, 2*d1/3)
199
+ #
200
+ d0 = distance(centroid, [x1, y1])
201
+ d1 = distance(m1, [x1, y1])
202
+ assert abs(d0 - 2*d1/3) < epsilon, '%e, %e' %(d0, 2*d1/3)
203
+
204
+ d0 = distance(centroid, [x2, y2])
205
+ d1 = distance(m2, [x2, y2])
206
+ assert abs(d0 - 2*d1/3) < epsilon, '%e, %e' %(d0, 2*d1/3)
207
+
208
+ #Radius
209
+ d0 = distance(centroid, m0)
210
+ d1 = distance(centroid, m1)
211
+ d2 = distance(centroid, m2)
212
+ assert mesh.radii[0] == min(d0, d1, d2)
213
+
214
+
215
+
216
+ #Let x be the centroid of triangle abc.
217
+ #Test that areas of the three triangles axc, cxb, and bxa are equal.
218
+
219
+ points = [a, b, c, centroid]
220
+ vertices = [[0,3,2], [2,3,1], [1,3,0]]
221
+ new_mesh = Mesh(points, vertices)
222
+
223
+ assert new_mesh.areas[0] == new_mesh.areas[1]
224
+ assert new_mesh.areas[1] == new_mesh.areas[2]
225
+ assert new_mesh.areas[1] == new_mesh.areas[2]
226
+
227
+ assert new_mesh.areas[1] == mesh.areas[0]/3
228
+
229
+
230
+ #Test that points are arranged in a counter clock wise order
231
+ mesh.check_integrity()
232
+
233
+ def test_inscribed_circle_equilateral(self):
234
+ """test that the radius is calculated correctly by mesh in the case of an equilateral triangle"""
235
+ a = [0.0, 0.0]
236
+ b = [2.0, 0.0]
237
+ c = [1.0, sqrt(3.0)]
238
+
239
+ points = [a, b, c]
240
+ vertices = [[0,1,2]]
241
+
242
+ mesh = Mesh(points, vertices,use_inscribed_circle=False)
243
+ assert num.allclose(mesh.radii[0],sqrt(3.0)/3),'Steve''s doesn''t work'
244
+
245
+ mesh = Mesh(points, vertices,use_inscribed_circle=True)
246
+ assert num.allclose(mesh.radii[0],sqrt(3.0)/3),'inscribed circle doesn''t work'
247
+
248
+ def test_inscribed_circle_rightangle_triangle(self):
249
+ """test that the radius is calculated correctly by mesh in the case of a right-angled triangle"""
250
+ a = [0.0, 0.0]
251
+ b = [4.0, 0.0]
252
+ c = [0.0, 3.0]
253
+
254
+ points = [a, b, c]
255
+ vertices = [[0,1,2]]
256
+
257
+ mesh = Mesh(points, vertices,use_inscribed_circle=False)
258
+ assert num.allclose(mesh.radii[0],5.0/6),'Steve''s doesn''t work'
259
+
260
+ mesh = Mesh(points, vertices,use_inscribed_circle=True)
261
+ assert num.allclose(mesh.radii[0],1.0),'inscribed circle doesn''t work'
262
+
263
+
264
+ def test_two_triangles(self):
265
+ a = [0.0, 0.0]
266
+ b = [0.0, 2.0]
267
+ c = [2.0,0.0]
268
+ e = [2.0, 2.0]
269
+ points = [a, b, c, e]
270
+ vertices = [ [1,0,2], [1,2,3] ] #bac, bce
271
+ mesh = Mesh(points, vertices)
272
+
273
+ assert mesh.areas[0] == 2.0
274
+
275
+ assert num.allclose(mesh.centroid_coordinates[0], [2.0/3, 2.0/3])
276
+
277
+
278
+ #Test that points are arranged in a counter clock wise order
279
+ mesh.check_integrity()
280
+
281
+
282
+
283
+ def test_more_triangles(self):
284
+
285
+ a = [0.0, 0.0]
286
+ b = [0.0, 2.0]
287
+ c = [2.0, 0.0]
288
+ d = [0.0, 4.0]
289
+ e = [2.0, 2.0]
290
+ f = [4.0, 0.0]
291
+
292
+ points = [a, b, c, d, e, f]
293
+ #bac, bce, ecf, dbe, daf, dae
294
+ vertices = [ [1,0,2], [1,2,4], [4,2,5], [3,1,4]]
295
+ mesh = Mesh(points, vertices)
296
+
297
+ #Test that points are arranged in a counter clock wise order
298
+ mesh.check_integrity()
299
+
300
+ assert mesh.areas[0] == 2.0
301
+ assert mesh.areas[1] == 2.0
302
+ assert mesh.areas[2] == 2.0
303
+ assert mesh.areas[3] == 2.0
304
+
305
+ assert mesh.edgelengths[1,0] == 2.0
306
+ assert mesh.edgelengths[1,1] == 2.0
307
+ assert mesh.edgelengths[1,2] == sqrt(8.0)
308
+
309
+ assert num.allclose(mesh.centroid_coordinates[0], [2.0/3, 2.0/3])
310
+ assert num.allclose(mesh.centroid_coordinates[1], [4.0/3, 4.0/3])
311
+ assert num.allclose(mesh.centroid_coordinates[2], [8.0/3, 2.0/3])
312
+ assert num.allclose(mesh.centroid_coordinates[3], [2.0/3, 8.0/3])
313
+
314
+ def test_mesh_and_neighbours(self):
315
+ a = [0.0, 0.0]
316
+ b = [0.0, 2.0]
317
+ c = [2.0,0.0]
318
+ d = [0.0, 4.0]
319
+ e = [2.0, 2.0]
320
+ f = [4.0,0.0]
321
+
322
+
323
+ points = [a, b, c, d, e, f]
324
+
325
+ #bac, bce, ecf, dbe
326
+ vertices = [ [1,0,2], [1,2,4], [4,2,5], [3,1,4] ]
327
+ mesh = Mesh(points, vertices)
328
+
329
+ mesh.check_integrity()
330
+
331
+
332
+ T = mesh
333
+ tid = 0
334
+ assert T.number_of_boundaries[tid] == 2
335
+ assert T.neighbours[tid, 0] < 0 #Opposite point b (0,2)
336
+ assert T.neighbours[tid, 1] == 1 #Opposite point a (0,0)
337
+ assert T.neighbours[tid, 2] < 0 #Opposite point c (2,0)
338
+
339
+ tid = 1
340
+ assert T.number_of_boundaries[tid] == 0
341
+ assert T.neighbours[tid, 0] == 2 #Opposite point b (0,2)
342
+ assert T.neighbours[tid, 1] == 3 #Opposite point c (2,0)
343
+ assert T.neighbours[tid, 2] == 0 #Opposite point e (2,2)
344
+
345
+ tid = 2
346
+ assert T.number_of_boundaries[tid] == 2
347
+ assert T.neighbours[tid, 0] < 0 #Opposite point e (2,2)
348
+ assert T.neighbours[tid, 1] < 0 #Opposite point c (2,0)
349
+ assert T.neighbours[tid, 2] == 1 #Opposite point f (4,0)
350
+
351
+ tid = 3
352
+ assert T.number_of_boundaries[tid] == 2
353
+ assert T.neighbours[tid, 0] == 1 #Opposite point d (0,4)
354
+ assert T.neighbours[tid, 1] < 0 #Opposite point b (0,3)
355
+ assert T.neighbours[tid, 2] < 0 #Opposite point e (2,2)
356
+
357
+ #Neighbouring edges
358
+ tid = 0
359
+ assert T.neighbour_edges[tid, 0] < 0 #Opposite point b (0,2)
360
+ assert T.neighbour_edges[tid, 1] == 2 #Opposite point a (0,0)
361
+ assert T.neighbour_edges[tid, 2] < 0 #Opposite point c (2,0)
362
+
363
+ tid = 1
364
+ assert T.neighbour_edges[tid, 0] == 2 #Opposite point b (0,2)
365
+ assert T.neighbour_edges[tid, 1] == 0 #Opposite point c (2,0)
366
+ assert T.neighbour_edges[tid, 2] == 1 #Opposite point e (2,2)
367
+
368
+ tid = 2
369
+ assert T.neighbour_edges[tid, 0] < 0 #Opposite point e (2,2)
370
+ assert T.neighbour_edges[tid, 1] < 0 #Opposite point c (2,0)
371
+ assert T.neighbour_edges[tid, 2] == 0 #Opposite point f (4,0)
372
+
373
+ tid = 3
374
+ assert T.neighbour_edges[tid, 0] == 1 #Opposite point d (0,4)
375
+ assert T.neighbour_edges[tid, 1] < 0 #Opposite point b (0,3)
376
+ assert T.neighbour_edges[tid, 2] < 0 #Opposite point e (2,2)
377
+
378
+
379
+ def test_build_neighbour_structure_duplicates(self):
380
+ p0 = [-66.0, 14.0]
381
+ p1 = [14.0, -66.0]
382
+ p2 = [14.0, 14.0]
383
+ p3 = [60.0, 20.0]
384
+ p4 = [10.0, 60.0]
385
+ p5 = [60.0, 60.0]
386
+
387
+ points = [p0, p1, p2, p3, p4, p5]
388
+ triangles = [ [0, 1, 2],
389
+ [3, 2, 1],
390
+ [0, 2, 4],
391
+ [0, 2, 4],
392
+ [4, 2, 5],
393
+ [5, 2, 3]]
394
+ try:
395
+ mesh = Mesh(points, triangles)
396
+ except:
397
+ pass
398
+ else:
399
+ raise Exception("triangle edge duplicates not caught")
400
+
401
+
402
+ def test_rectangular_mesh_basic(self):
403
+ M=1
404
+ N=1
405
+
406
+ points, vertices, boundary = rectangular(M, N)
407
+ mesh = Mesh(points, vertices, boundary)
408
+
409
+ #Test that points are arranged in a counter clock wise order
410
+ mesh.check_integrity()
411
+
412
+ M=2
413
+ N=2
414
+ points, vertices, boundary = rectangular(M, N)
415
+ mesh = Mesh(points, vertices, boundary)
416
+
417
+ #Test that points are arranged in a counter clock wise order
418
+ mesh.check_integrity()
419
+
420
+ #assert mesh.boundary[(7,1)] == 2 # top
421
+ assert mesh.boundary[(7,1)] == 'top' # top
422
+ assert mesh.boundary[(3,1)] == 'top' # top
423
+
424
+
425
+
426
+
427
+
428
+
429
+ def test_boundary_tags(self):
430
+
431
+
432
+ points, vertices, boundary = rectangular(4, 4)
433
+ mesh = Mesh(points, vertices, boundary)
434
+
435
+
436
+ #Test that points are arranged in a counter clock wise order
437
+ mesh.check_integrity()
438
+
439
+ #print mesh.get_boundary_tags()
440
+ #print mesh.boundary
441
+
442
+ for k in [1, 3, 5, 7]:
443
+ assert mesh.boundary[(k,2)] == 'left'
444
+
445
+ for k in [24, 26, 28, 30]:
446
+ assert mesh.boundary[(k,2)] == 'right'
447
+
448
+ for k in [7, 15, 23, 31]:
449
+ assert mesh.boundary[(k,1)] == 'top'
450
+ for k in [0, 8, 16, 24]:
451
+ assert mesh.boundary[(k,1)] == 'bottom'
452
+
453
+
454
+
455
+ def test_rectangular_mesh(self):
456
+ M=4
457
+ N=16
458
+ len1 = 100.0
459
+ len2 = 17.0
460
+
461
+ points, vertices, boundary = rectangular(M, N, len1, len2)
462
+ mesh = Mesh(points, vertices, boundary)
463
+
464
+ assert len(mesh) == 2*M*N
465
+
466
+ for i in range(len(mesh)):
467
+ assert mesh.areas[i] == len1*len2/(2*M*N)
468
+
469
+ hypo = sqrt((len1/M)**2 + (len2/N)**2) #hypothenuse
470
+ assert mesh.edgelengths[i, 0] == hypo
471
+ assert mesh.edgelengths[i, 1] == len1/M #x direction
472
+ assert mesh.edgelengths[i, 2] == len2/N #y direction
473
+
474
+ #Test that points are arranged in a counter clock wise order
475
+ mesh.check_integrity()
476
+
477
+
478
+ def test_rectangular_mesh2(self):
479
+ #Check that integers don't cause trouble
480
+ N = 16
481
+
482
+ points, vertices, boundary = rectangular(2*N, N, len1=10, len2=10)
483
+ mesh = Mesh(points, vertices, boundary)
484
+
485
+
486
+ def test_surrogate_neighbours(self):
487
+ a = [0.0, 0.0]
488
+ b = [0.0, 2.0]
489
+ c = [2.0,0.0]
490
+ d = [0.0, 4.0]
491
+ e = [2.0, 2.0]
492
+ f = [4.0,0.0]
493
+
494
+ points = [a, b, c, d, e, f]
495
+
496
+ #bac, bce, ecf, dbe
497
+ vertices = [ [1,0,2], [1,2,4], [4,2,5], [3,1,4] ]
498
+ mesh = Mesh(points, vertices)
499
+ mesh.check_integrity()
500
+
501
+
502
+ T = mesh
503
+ tid = 0
504
+ assert T.number_of_boundaries[tid] == 2
505
+ assert T.surrogate_neighbours[tid, 0] == tid
506
+ assert T.surrogate_neighbours[tid, 1] == 1
507
+ assert T.surrogate_neighbours[tid, 2] == tid
508
+
509
+ tid = 1
510
+ assert T.number_of_boundaries[tid] == 0
511
+ assert T.surrogate_neighbours[tid, 0] == 2
512
+ assert T.surrogate_neighbours[tid, 1] == 3
513
+ assert T.surrogate_neighbours[tid, 2] == 0
514
+
515
+ tid = 2
516
+ assert T.number_of_boundaries[tid] == 2
517
+ assert T.surrogate_neighbours[tid, 0] == tid
518
+ assert T.surrogate_neighbours[tid, 1] == tid
519
+ assert T.surrogate_neighbours[tid, 2] == 1
520
+
521
+ tid = 3
522
+ assert T.number_of_boundaries[tid] == 2
523
+ assert T.surrogate_neighbours[tid, 0] == 1
524
+ assert T.surrogate_neighbours[tid, 1] == tid
525
+ assert T.surrogate_neighbours[tid, 2] == tid
526
+
527
+
528
+ def test_boundary_inputs(self):
529
+ a = [0.0, 0.0]
530
+ b = [0.0, 2.0]
531
+ c = [2.0,0.0]
532
+ d = [0.0, 4.0]
533
+ e = [2.0, 2.0]
534
+ f = [4.0,0.0]
535
+
536
+ points = [a, b, c, d, e, f]
537
+
538
+ #bac, bce, ecf, dbe
539
+ vertices = [ [1,0,2], [1,2,4], [4,2,5], [3,1,4] ]
540
+
541
+ boundary = { (0, 0): 'First',
542
+ (0, 2): 'Second',
543
+ (2, 0): 'Third',
544
+ (2, 1): 'Fourth',
545
+ (3, 1): 'Fifth',
546
+ (3, 2): 'Sixth'}
547
+
548
+
549
+ mesh = Mesh(points, vertices, boundary)
550
+ mesh.check_integrity()
551
+
552
+
553
+ #Check enumeration
554
+ #for k, (vol_id, edge_id) in enumerate(mesh.boundary_segments):
555
+ # b = -k-1
556
+ # assert mesh.neighbours[vol_id, edge_id] == b
557
+
558
+
559
+
560
+ def test_boundary_inputs_using_one_default(self):
561
+ a = [0.0, 0.0]
562
+ b = [0.0, 2.0]
563
+ c = [2.0,0.0]
564
+ d = [0.0, 4.0]
565
+ e = [2.0, 2.0]
566
+ f = [4.0,0.0]
567
+
568
+ points = [a, b, c, d, e, f]
569
+
570
+ #bac, bce, ecf, dbe
571
+ vertices = [ [1,0,2], [1,2,4], [4,2,5], [3,1,4] ]
572
+
573
+ boundary = { (0, 0): 'First',
574
+ (0, 2): 'Second',
575
+ (2, 0): 'Third',
576
+ (2, 1): 'Fourth',
577
+ #(3, 1): 'Fifth', #Skip this
578
+ (3, 2): 'Sixth'}
579
+
580
+
581
+ mesh = Mesh(points, vertices, boundary)
582
+ mesh.check_integrity()
583
+
584
+ from anuga.config import default_boundary_tag
585
+ assert mesh.boundary[ (3, 1) ] == default_boundary_tag
586
+
587
+
588
+ #Check enumeration
589
+ #for k, (vol_id, edge_id) in enumerate(mesh.boundary_segments):
590
+ # b = -k-1
591
+ # assert mesh.neighbours[vol_id, edge_id] == b
592
+
593
+ def test_boundary_inputs_using_all_defaults(self):
594
+ a = [0.0, 0.0]
595
+ b = [0.0, 2.0]
596
+ c = [2.0,0.0]
597
+ d = [0.0, 4.0]
598
+ e = [2.0, 2.0]
599
+ f = [4.0,0.0]
600
+
601
+ points = [a, b, c, d, e, f]
602
+
603
+ #bac, bce, ecf, dbe
604
+ vertices = [ [1,0,2], [1,2,4], [4,2,5], [3,1,4] ]
605
+
606
+ boundary = { (0, 0): 'First',
607
+ (0, 2): 'Second',
608
+ (2, 0): 'Third',
609
+ (2, 1): 'Fourth',
610
+ #(3, 1): 'Fifth', #Skip this
611
+ (3, 2): 'Sixth'}
612
+
613
+
614
+ mesh = Mesh(points, vertices) #, boundary)
615
+ mesh.check_integrity()
616
+
617
+ from anuga.config import default_boundary_tag
618
+ assert mesh.boundary[ (0, 0) ] == default_boundary_tag
619
+ assert mesh.boundary[ (0, 2) ] == default_boundary_tag
620
+ assert mesh.boundary[ (2, 0) ] == default_boundary_tag
621
+ assert mesh.boundary[ (2, 1) ] == default_boundary_tag
622
+ assert mesh.boundary[ (3, 1) ] == default_boundary_tag
623
+ assert mesh.boundary[ (3, 2) ] == default_boundary_tag
624
+
625
+
626
+ #Check enumeration
627
+ #for k, (vol_id, edge_id) in enumerate(mesh.boundary_segments):
628
+ # b = -k-1
629
+ # assert mesh.neighbours[vol_id, edge_id] == b
630
+
631
+
632
+
633
+
634
+
635
+
636
+ def test_inputs(self):
637
+ a = [0.0, 0.0]
638
+ b = [0.0, 2.0]
639
+ c = [2.0,0.0]
640
+ d = [0.0, 4.0]
641
+ e = [2.0, 2.0]
642
+ f = [4.0,0.0]
643
+
644
+ points = [a, b, c, d, e, f]
645
+
646
+ #bac, bce, ecf, dbe
647
+ vertices = [ [1,0,2], [1,2,4], [4,2,5], [3,1,4] ]
648
+
649
+ #Too few points
650
+ try:
651
+ mesh = Mesh([points[0]], vertices)
652
+ except AssertionError:
653
+ pass
654
+ else:
655
+ raise Exception('Should have raised an exception')
656
+
657
+ #Too few points - 1 element
658
+ try:
659
+ mesh = Mesh([points[0]], [vertices[0]])
660
+ except AssertionError:
661
+ pass
662
+ else:
663
+ raise Exception('Should have raised an exception')
664
+
665
+ #Wrong dimension of vertices
666
+ try:
667
+ mesh = Mesh(points, vertices[0])
668
+ except AssertionError:
669
+ pass
670
+ else:
671
+ raise Exception('Should have raised an exception')
672
+
673
+ #Unsubscriptable coordinates object raises exception
674
+ try:
675
+ mesh = Mesh(points[0], [vertices[0]])
676
+ except AssertionError:
677
+ pass
678
+ else:
679
+ raise Exception('Should have raised an exception')
680
+
681
+ #FIXME: This has been commented out pending a decision
682
+ #whether to allow partial boundary tags or not
683
+ #
684
+ #Not specifying all boundary tags
685
+ #try:
686
+ # mesh = Mesh(points, vertices, {(3,0): 'x'})
687
+ #except AssertionError:
688
+ # pass
689
+ #else:
690
+ # raise Exception('Should have raised an exception')
691
+
692
+ #Specifying wrong non existing segment
693
+ try:
694
+ mesh = Mesh(points, vertices, {(5,0): 'x'})
695
+ except AssertionError:
696
+ pass
697
+ except RuntimeError:
698
+ pass
699
+ else:
700
+ raise Exception('Should have raised an exception')
701
+
702
+
703
+
704
+
705
+ def test_internal_boundaries(self):
706
+ """
707
+ get values based on triangle lists.
708
+ """
709
+ from anuga.abstract_2d_finite_volumes.mesh_factory import rectangular
710
+
711
+ #Create basic mesh
712
+ points, vertices, boundary = rectangular(1, 3)
713
+
714
+ # Add an internal boundary
715
+ boundary[(2,0)] = 'internal'
716
+ boundary[(1,0)] = 'internal'
717
+
718
+ #Create shallow water domain
719
+ domain = Mesh(points, vertices, boundary)
720
+ domain.build_tagged_elements_dictionary({'bottom':[0,1],
721
+ 'top':[4,5],
722
+ 'all':[0,1,2,3,4,5]})
723
+
724
+
725
+ def test_boundary_polygon(self):
726
+ from anuga.abstract_2d_finite_volumes.mesh_factory import rectangular
727
+ #from mesh import Mesh
728
+
729
+ #Create basic mesh
730
+ points, vertices, boundary = rectangular(2, 2)
731
+ mesh = Mesh(points, vertices, boundary)
732
+
733
+
734
+ P = mesh.get_boundary_polygon()
735
+
736
+ assert len(P) == 8
737
+ assert num.allclose(P, [[0.0, 0.0], [0.5, 0.0], [1.0, 0.0],
738
+ [1.0, 0.5], [1.0, 1.0], [0.5, 1.0],
739
+ [0.0, 1.0], [0.0, 0.5]])
740
+ for p in points:
741
+ #print p, P
742
+ assert is_inside_polygon(p, P)
743
+
744
+
745
+ def test_boundary_polygon_II(self):
746
+
747
+ #Points
748
+ a = [0.0, 0.0] #0
749
+ b = [0.0, 0.5] #1
750
+ c = [0.0, 1.0] #2
751
+ d = [0.5, 0.0] #3
752
+ e = [0.5, 0.5] #4
753
+ f = [1.0, 0.0] #5
754
+ g = [1.0, 0.5] #6
755
+ h = [1.0, 1.0] #7
756
+ i = [1.5, 0.5] #8
757
+
758
+ points = [a, b, c, d, e, f, g, h, i]
759
+
760
+ #dea, bae, bec, fgd,
761
+ #edg, ghe, gfi, gih
762
+ vertices = [ [3,4,0], [1,0,4], [1,4,2], [5,6,3],
763
+ [4,3,6], [6,7,4], [6,5,8], [6,8,7]]
764
+
765
+ mesh = Mesh(points, vertices)
766
+
767
+ mesh.check_integrity()
768
+
769
+ P = mesh.get_boundary_polygon()
770
+
771
+ assert len(P) == 8
772
+ assert num.allclose(P, [a, d, f, i, h, e, c, b])
773
+
774
+ for p in points:
775
+ #print p, P
776
+ assert is_inside_polygon(p, P)
777
+
778
+
779
+ def test_boundary_polygon_III(self):
780
+ """Same as II but vertices ordered differently
781
+ """
782
+
783
+
784
+ #Points
785
+ a = [0.0, 0.0] #0
786
+ b = [0.0, 0.5] #1
787
+ c = [0.0, 1.0] #2
788
+ d = [0.5, 0.0] #3
789
+ e = [0.5, 0.5] #4
790
+ f = [1.0, 0.0] #5
791
+ g = [1.0, 0.5] #6
792
+ h = [1.0, 1.0] #7
793
+ i = [1.5, 0.5] #8
794
+
795
+ points = [a, b, c, d, e, f, g, h, i]
796
+
797
+ #edg, ghe, gfi, gih
798
+ #dea, bae, bec, fgd,
799
+ vertices = [[4,3,6], [6,7,4], [6,5,8], [6,8,7],
800
+ [3,4,0], [1,0,4], [1,4,2], [5,6,3]]
801
+
802
+
803
+ mesh = Mesh(points, vertices)
804
+ mesh.check_integrity()
805
+
806
+
807
+ P = mesh.get_boundary_polygon()
808
+
809
+ assert len(P) == 8
810
+ assert num.allclose(P, [a, d, f, i, h, e, c, b])
811
+
812
+ for p in points:
813
+ assert is_inside_polygon(p, P)
814
+
815
+
816
+ def test_boundary_polygon_IIIa(self):
817
+ """test_boundary_polygon_IIIa - Check pathological situation where
818
+ one triangle has no neighbours. This may be the case if a mesh
819
+ is partitioned using pymetis.
820
+ """
821
+
822
+
823
+ #Points
824
+ a = [0.0, 0.0] #0
825
+ b = [0.0, 0.5] #1
826
+ c = [0.0, 1.0] #2
827
+ d = [0.5, 0.0] #3
828
+ e = [0.5, 0.5] #4
829
+ f = [1.0, 0.0] #5
830
+ g = [1.0, 0.5] #6
831
+ h = [1.0, 1.0] #7
832
+
833
+ # Add pathological triangle with no neighbours to an otherwise
834
+ # trivial mesh
835
+
836
+ points = [a, b, c, d, e, f, g, h]
837
+
838
+ #cbe, aeb, dea, fed, ghe (pathological triangle)
839
+ vertices = [[2,1,4], [0,4,1], [3,4,0], [5,4,3],
840
+ [6,7,4]]
841
+
842
+ mesh = Mesh(points, vertices)
843
+ mesh.check_integrity()
844
+
845
+ P = mesh.get_boundary_polygon(verbose=False)
846
+
847
+
848
+ assert len(P) == 9
849
+
850
+ # Note that point e appears twice!
851
+ assert num.allclose(P, [a, d, f, e, g, h, e, c, b])
852
+
853
+ for p in points:
854
+ msg = 'Point %s is not inside polygon %s'\
855
+ %(p, P)
856
+ assert is_inside_polygon(p, P), msg
857
+
858
+
859
+
860
+
861
+
862
+
863
+ def test_boundary_polygon_IV(self):
864
+ """Reproduce test test_spatio_temporal_file_function_time
865
+ from test_util.py that looked as if it produced the wrong boundary
866
+ """
867
+
868
+ from anuga.abstract_2d_finite_volumes.mesh_factory import rectangular
869
+
870
+ #Create a domain to hold test grid
871
+ #(0:15, -20:10)
872
+ points, vertices, boundary =\
873
+ rectangular(4, 4, 15, 30, origin = (0, -20))
874
+
875
+ #####
876
+ mesh = Mesh(points, vertices)
877
+ mesh.check_integrity()
878
+
879
+ P = mesh.get_boundary_polygon()
880
+
881
+ #print P
882
+ assert len(P) == 16
883
+ for p in points:
884
+ assert is_inside_polygon(p, P)
885
+
886
+
887
+
888
+ #####
889
+ mesh = Mesh(points, vertices, boundary)
890
+ mesh.check_integrity()
891
+
892
+ P = mesh.get_boundary_polygon()
893
+
894
+
895
+ #print P, len(P)
896
+ assert len(P) == 16
897
+
898
+ for p in points:
899
+ assert is_inside_polygon(p, P)
900
+
901
+ #print mesh.statistics()
902
+
903
+
904
+
905
+ def test_boundary_polygon_V(self):
906
+ """Create a discontinuous mesh (duplicate vertices)
907
+ and check that boundary is as expected
908
+
909
+ """
910
+
911
+ #Points
912
+ a = [0.0, 0.0] #0
913
+ b = [0.0, 0.5] #1
914
+ c = [0.0, 1.0] #2
915
+ d = [0.5, 0.0] #3
916
+ e = [0.5, 0.5] #4
917
+ f = [1.0, 0.0] #5
918
+ g = [1.0, 0.5] #6
919
+ h = [1.0, 1.0] #7
920
+ i = [1.5, 0.5] #8
921
+
922
+ #Duplicate points for triangles edg [4,3,6] (central) and
923
+ #gid [6,8,7] (top right boundary) to them disconnected
924
+ #from the others
925
+
926
+ e0 = [0.5, 0.5] #9
927
+ d0 = [0.5, 0.0] #10
928
+ g0 = [1.0, 0.5] #11
929
+ i0 = [1.5, 0.5] #12
930
+
931
+
932
+ points = [a, b, c, d, e, f, g, h, i, e0, d0, g0, i0]
933
+
934
+
935
+
936
+ #dea, bae, bec, fgd,
937
+ #edg, ghe, gfi, gih
938
+ #vertices = [ [3,4,0], [1,0,4], [1,4,2], [5,6,3],
939
+ # [4,3,6], [6,7,4], [6,5,8], [6,8,7]]
940
+
941
+
942
+ #dea, bae, bec, fgd,
943
+ #e0d0g0, ghe, gfi, g0i0h
944
+ vertices = [[3,4,0], [1,0,4], [1,4,2], [5,6,3],
945
+ [9,10,11], [6,7,4], [6,5,8], [11,12,7]]
946
+
947
+ mesh = Mesh(points, vertices)
948
+
949
+ mesh.check_integrity()
950
+
951
+ P = mesh.get_boundary_polygon()
952
+
953
+ #print P
954
+
955
+ assert len(P) == 8
956
+ assert num.allclose(P, [a, d, f, i, h, e, c, b])
957
+ assert num.allclose(P, [(0.0, 0.0), (0.5, 0.0), (1.0, 0.0), (1.5, 0.5), (1.0, 1.0), (0.5, 0.5), (0.0, 1.0), (0.0, 0.5)])
958
+
959
+
960
+ for p in points:
961
+ #print p, P
962
+ assert is_inside_polygon(p, P)
963
+
964
+
965
+
966
+ def test_boundary_polygon_VI(self):
967
+ """test_boundary_polygon_VI(self)
968
+
969
+ Create a discontinuous mesh (duplicate vertices) from a real situation that failed
970
+ and check that boundary is as expected
971
+ """
972
+
973
+ # First do the continuous version of mesh
974
+
975
+ points = [[ 6626.85400391, 0. ],
976
+ [ 0. , 38246.4140625 ],
977
+ [ 9656.2734375 , 68351.265625 ],
978
+ [ 20827.25585938, 77818.203125 ],
979
+ [ 32755.59375 , 58126.9765625 ],
980
+ [ 35406.3359375 , 79332.9140625 ],
981
+ [ 31998.23828125, 88799.84375 ],
982
+ [ 23288.65820313, 104704.296875 ],
983
+ [ 32187.57617188, 109816.4375 ],
984
+ [ 50364.08984375, 110763.1328125 ],
985
+ [ 80468.9453125 , 96184.0546875 ],
986
+ [ 86149.1015625 , 129886.34375 ],
987
+ [ 118715.359375 , 129886.34375 ],
988
+ [ 117768.6640625 , 85770.4296875 ],
989
+ [ 101485.5390625 , 45251.9453125 ],
990
+ [ 49985.4140625 , 2272.06396484],
991
+ [ 51737.94140625, 90559.2109375 ],
992
+ [ 56659.0703125 , 65907.6796875 ],
993
+ [ 75735.4765625 , 23762.00585938],
994
+ [ 52341.70703125, 38563.39453125]]
995
+
996
+ triangles = [[19, 0,15],
997
+ [ 2, 4, 3],
998
+ [ 4, 2, 1],
999
+ [ 1,19, 4],
1000
+ [15,18,19],
1001
+ [18,14,17],
1002
+ [19, 1, 0],
1003
+ [ 6, 8, 7],
1004
+ [ 8, 6,16],
1005
+ [10, 9,16],
1006
+ [17, 5, 4],
1007
+ [16,17,10],
1008
+ [17,19,18],
1009
+ [ 5,17,16],
1010
+ [10,14,13],
1011
+ [10,17,14],
1012
+ [ 8,16, 9],
1013
+ [12,11,10],
1014
+ [10,13,12],
1015
+ [19,17, 4],
1016
+ [16, 6, 5]]
1017
+
1018
+
1019
+ triangles = num.array(triangles,num.int)
1020
+ points = num.array(points,num.float)
1021
+
1022
+ mesh = Mesh(points, triangles)
1023
+ mesh.check_integrity()
1024
+ Pref = mesh.get_boundary_polygon()
1025
+
1026
+ #plot_polygons([ensure_numeric(Pref)], 'goodP')
1027
+
1028
+ for p in points:
1029
+ assert is_inside_polygon(p, Pref)
1030
+
1031
+
1032
+ # Then do the discontinuous version
1033
+ import warnings
1034
+ warnings.filterwarnings('ignore')
1035
+
1036
+
1037
+ points = [[ 52341.70703125, 38563.39453125],
1038
+ [ 6626.85400391, 0. ],
1039
+ [ 49985.4140625 , 2272.06396484],
1040
+ [ 9656.2734375 , 68351.265625 ],
1041
+ [ 32755.59375 , 58126.9765625 ],
1042
+ [ 20827.25585938, 77818.203125 ],
1043
+ [ 32755.59375 , 58126.9765625 ],
1044
+ [ 9656.2734375 , 68351.265625 ],
1045
+ [ 0. , 38246.4140625 ],
1046
+ [ 0. , 38246.4140625 ],
1047
+ [ 52341.70703125, 38563.39453125],
1048
+ [ 32755.59375 , 58126.9765625 ],
1049
+ [ 49985.4140625 , 2272.06396484],
1050
+ [ 75735.4765625 , 23762.00585938],
1051
+ [ 52341.70703125, 38563.39453125],
1052
+ [ 75735.4765625 , 23762.00585938],
1053
+ [ 101485.5390625 , 45251.9453125 ],
1054
+ [ 56659.0703125 , 65907.6796875 ],
1055
+ [ 52341.70703125, 38563.39453125],
1056
+ [ 0. , 38246.4140625 ],
1057
+ [ 6626.85400391, 0. ],
1058
+ [ 31998.23828125, 88799.84375 ],
1059
+ [ 32187.57617188, 109816.4375 ],
1060
+ [ 23288.65820313, 104704.296875 ],
1061
+ [ 32187.57617188, 109816.4375 ],
1062
+ [ 31998.23828125, 88799.84375 ],
1063
+ [ 51737.94140625, 90559.2109375 ],
1064
+ [ 80468.9453125 , 96184.0546875 ],
1065
+ [ 50364.08984375, 110763.1328125 ],
1066
+ [ 51737.94140625, 90559.2109375 ],
1067
+ [ 56659.0703125 , 65907.6796875 ],
1068
+ [ 35406.3359375 , 79332.9140625 ],
1069
+ [ 32755.59375 , 58126.9765625 ],
1070
+ [ 51737.94140625, 90559.2109375 ],
1071
+ [ 56659.0703125 , 65907.6796875 ],
1072
+ [ 80468.9453125 , 96184.0546875 ],
1073
+ [ 56659.0703125 , 65907.6796875 ],
1074
+ [ 52341.70703125, 38563.39453125],
1075
+ [ 75735.4765625 , 23762.00585938],
1076
+ [ 35406.3359375 , 79332.9140625 ],
1077
+ [ 56659.0703125 , 65907.6796875 ],
1078
+ [ 51737.94140625, 90559.2109375 ],
1079
+ [ 80468.9453125 , 96184.0546875 ],
1080
+ [ 101485.5390625 , 45251.9453125 ],
1081
+ [ 117768.6640625 , 85770.4296875 ],
1082
+ [ 80468.9453125 , 96184.0546875 ],
1083
+ [ 56659.0703125 , 65907.6796875 ],
1084
+ [ 101485.5390625 , 45251.9453125 ],
1085
+ [ 32187.57617188, 109816.4375 ],
1086
+ [ 51737.94140625, 90559.2109375 ],
1087
+ [ 50364.08984375, 110763.1328125 ],
1088
+ [ 118715.359375 , 129886.34375 ],
1089
+ [ 86149.1015625 , 129886.34375 ],
1090
+ [ 80468.9453125 , 96184.0546875 ],
1091
+ [ 80468.9453125 , 96184.0546875 ],
1092
+ [ 117768.6640625 , 85770.4296875 ],
1093
+ [ 118715.359375 , 129886.34375 ],
1094
+ [ 52341.70703125, 38563.39453125],
1095
+ [ 56659.0703125 , 65907.6796875 ],
1096
+ [ 32755.59375 , 58126.9765625 ],
1097
+ [ 51737.94140625, 90559.2109375 ],
1098
+ [ 31998.23828125, 88799.84375 ],
1099
+ [ 35406.3359375 , 79332.9140625 ]]
1100
+
1101
+ scaled_points = ensure_numeric(points, num.int)/1000 # Simplify for ease of interpretation
1102
+
1103
+ triangles = [[ 0, 1, 2],
1104
+ [ 3, 4, 5],
1105
+ [ 6, 7, 8],
1106
+ [ 9,10,11],
1107
+ [12,13,14],
1108
+ [15,16,17],
1109
+ [18,19,20],
1110
+ [21,22,23],
1111
+ [24,25,26],
1112
+ [27,28,29],
1113
+ [30,31,32],
1114
+ [33,34,35],
1115
+ [36,37,38],
1116
+ [39,40,41],
1117
+ [42,43,44],
1118
+ [45,46,47],
1119
+ [48,49,50],
1120
+ [51,52,53],
1121
+ [54,55,56],
1122
+ [57,58,59],
1123
+ [60,61,62]]
1124
+
1125
+
1126
+ # First use scaled points for ease of debugging
1127
+ mesh = Mesh(scaled_points, triangles)
1128
+ mesh.check_integrity()
1129
+ P = mesh.get_boundary_polygon()
1130
+
1131
+ for p in scaled_points:
1132
+ assert is_inside_polygon(p, P)
1133
+
1134
+ # Then use original points and test
1135
+ mesh = Mesh(points, triangles)
1136
+ mesh.check_integrity()
1137
+ P = mesh.get_boundary_polygon()
1138
+
1139
+ for p in points:
1140
+ assert is_inside_polygon(p, P)
1141
+
1142
+ assert num.allclose(P, Pref)
1143
+
1144
+ def test_lone_vertices(self):
1145
+ a = [2.0, 1.0]
1146
+ b = [6.0, 2.0]
1147
+ c = [1.0, 3.0]
1148
+ d = [2.0, 4.0]
1149
+ e = [4.0, 3.0]
1150
+
1151
+ points = [a, b, d, c, e]
1152
+ vertices = [[0,1,3]]
1153
+
1154
+ mesh = Mesh(points, vertices)
1155
+ mesh.check_integrity()
1156
+ loners = mesh.get_lone_vertices()
1157
+
1158
+ #print loners
1159
+ self.assertTrue(loners==[2,4],
1160
+ 'FAILED!')
1161
+
1162
+
1163
+ a = [2.0, 1.0]
1164
+ b = [6.0, 2.0]
1165
+ c = [1.0, 3.0]
1166
+ d = [2.0, 4.0]
1167
+
1168
+ points = [d, a, b, c]
1169
+ vertices = [[3,1,2]]
1170
+
1171
+ mesh = Mesh(points, vertices)
1172
+ mesh.check_integrity()
1173
+ loners = mesh.get_lone_vertices()
1174
+ self.assertTrue(loners==[0],
1175
+ 'FAILED!')
1176
+
1177
+ def test_mesh_get_boundary_polygon_with_georeferencing(self):
1178
+ """test_mesh_get_boundary_polygon_with_georeferencing
1179
+
1180
+ Test that get_boundary_polygon returns absolute coordinates
1181
+ """
1182
+
1183
+ # test
1184
+ a = [0.0, 0.0]
1185
+ b = [4.0, 0.0]
1186
+ c = [0.0, 4.0]
1187
+
1188
+ absolute_points = [a, b, c]
1189
+ vertices = [[0, 1, 2]]
1190
+
1191
+ geo = Geo_reference(56, 67, -56)
1192
+
1193
+ relative_points = geo.change_points_geo_ref(absolute_points)
1194
+
1195
+ mesh = Mesh(relative_points, vertices, geo_reference=geo)
1196
+ boundary_polygon = mesh.get_boundary_polygon()
1197
+
1198
+ assert num.allclose(absolute_points, boundary_polygon)
1199
+
1200
+ def test_get_triangle_containing_point(self):
1201
+
1202
+ a = [0.0, 0.0]
1203
+ b = [0.0, 2.0]
1204
+ c = [2.0, 0.0]
1205
+ d = [0.0, 4.0]
1206
+ e = [2.0, 2.0]
1207
+ f = [4.0, 0.0]
1208
+
1209
+ points = [a, b, c, d, e, f]
1210
+ #bac, bce, ecf, dbe
1211
+ vertices = [ [1,0,2], [1,2,4], [4,2,5], [3,1,4]]
1212
+ mesh = Mesh(points, vertices)
1213
+
1214
+ mesh.check_integrity()
1215
+
1216
+
1217
+ try:
1218
+ id = mesh.get_triangle_containing_point([3.0, 5.0])
1219
+ except:
1220
+ pass
1221
+ else:
1222
+ msg = 'Should have caught point outside polygon (Non)'
1223
+ raise Exception(msg)
1224
+
1225
+ id = mesh.get_triangle_containing_point([0.5, 1.0])
1226
+ assert id == 0
1227
+
1228
+ id = mesh.get_triangle_containing_point([1.0, 3.0])
1229
+ assert id == 3
1230
+
1231
+ for i, point in enumerate(mesh.get_centroid_coordinates()):
1232
+ id = mesh.get_triangle_containing_point(point)
1233
+ assert id == i
1234
+
1235
+ def test_get_triangle_neighbours(self):
1236
+ a = [0.0, 0.0]
1237
+ b = [0.0, 2.0]
1238
+ c = [2.0,0.0]
1239
+ e = [2.0, 2.0]
1240
+ points = [a, b, c, e]
1241
+ vertices = [ [1,0,2], [1,2,3] ] #bac, bce
1242
+ mesh = Mesh(points, vertices)
1243
+
1244
+ neighbours = mesh.get_triangle_neighbours(0)
1245
+ assert num.allclose(neighbours, [-1,1,-2])
1246
+ neighbours = mesh.get_triangle_neighbours(-10)
1247
+ assert neighbours == []
1248
+ neighbours = mesh.get_triangle_neighbours(2)
1249
+ assert neighbours == []
1250
+
1251
+
1252
+ def test_get_intersecting_segments1(self):
1253
+ """test_get_intersecting_segments(self):
1254
+
1255
+ Very simple test (horizontal lines)
1256
+ """
1257
+
1258
+ # Build test mesh
1259
+
1260
+ # Create basic mesh
1261
+ # 9 points at (0,0), (0, 1), ..., (2,2)
1262
+ # 8 triangles enumerated from left bottom to right top.
1263
+ points, vertices, boundary = rectangular(2, 2, 2, 2)
1264
+ mesh = Mesh(points, vertices, boundary)
1265
+
1266
+ # Very simple horizontal line intersecting
1267
+ #
1268
+
1269
+
1270
+ for y_line in [0.1, 0.2, 0.314159, 0.41, 0.6, 0.99, 1.01, 1.5, 1.77, 1.9]:
1271
+ if y_line < 1:
1272
+ ceiling = 1
1273
+ floor = 0
1274
+ intersected_triangles = [0,1,4,5]
1275
+ elif y_line > 1:
1276
+ ceiling = 2
1277
+ floor = 1
1278
+ intersected_triangles = [2,3,6,7]
1279
+ else:
1280
+ raise Exception('this test is not for parallel lines')
1281
+
1282
+
1283
+ line = [[-1,y_line], [3,y_line]]
1284
+
1285
+ L = mesh.get_intersecting_segments(line)
1286
+ assert len(L) == 4
1287
+
1288
+
1289
+
1290
+ # Check all normals point straight down etc
1291
+ total_length = 0
1292
+ for x in L:
1293
+ if x.triangle_id % 2 == 0:
1294
+ assert num.allclose(x.length, ceiling-y_line)
1295
+ else:
1296
+ assert num.allclose(x.length, y_line-floor)
1297
+
1298
+
1299
+ assert num.allclose(x.normal, [0,-1])
1300
+
1301
+ assert num.allclose(x.segment[1][0], x.segment[0][0] + x.length)
1302
+ assert num.allclose(x.segment[0][1], y_line)
1303
+ assert num.allclose(x.segment[1][1], y_line)
1304
+
1305
+ assert x.triangle_id in intersected_triangles
1306
+
1307
+ total_length += x.length
1308
+
1309
+ msg = 'Segments do not add up'
1310
+ assert num.allclose(total_length, 2), msg
1311
+
1312
+
1313
+ def test_get_intersecting_segments_coinciding(self):
1314
+ """test_get_intersecting_segments_coinciding(self):
1315
+
1316
+ Test that lines coinciding with triangle edges work.
1317
+ """
1318
+
1319
+ # Build test mesh
1320
+
1321
+ # Create basic mesh
1322
+ # 9 points at (0,0), (0, 1), ..., (2,2)
1323
+ # 8 triangles enumerated from left bottom to right top.
1324
+ points, vertices, boundary = rectangular(2, 2, 2, 2)
1325
+ mesh = Mesh(points, vertices, boundary)
1326
+ intersected_triangles = [1,5]
1327
+
1328
+ # Very simple horizontal line intersecting
1329
+ #
1330
+
1331
+ y_line = 1.0
1332
+
1333
+ line = [[-1,y_line], [3,y_line]]
1334
+
1335
+ L = mesh.get_intersecting_segments(line)
1336
+
1337
+
1338
+ msg = 'Only two triangles should be returned'
1339
+ assert len(L) == 2, msg
1340
+
1341
+
1342
+ # Check all
1343
+ total_length = 0
1344
+ for x in L:
1345
+ assert num.allclose(x.length, 1.0)
1346
+ assert num.allclose(x.normal, [0,-1])
1347
+
1348
+ assert num.allclose(x.segment[1][0], x.segment[0][0] + x.length)
1349
+ assert num.allclose(x.segment[0][1], y_line)
1350
+ assert num.allclose(x.segment[1][1], y_line)
1351
+
1352
+
1353
+
1354
+ assert x.triangle_id in intersected_triangles
1355
+
1356
+ total_length += x.length
1357
+
1358
+ msg = 'Segments do not add up'
1359
+ assert num.allclose(total_length, 2), msg
1360
+
1361
+
1362
+ def test_get_intersecting_segments_partially_coinciding(self):
1363
+ """test_get_intersecting_segments_partially_coinciding(self):
1364
+
1365
+ Test that line coinciding with triangle edges work.
1366
+ But this ones only coincide with parts of the edge.
1367
+ """
1368
+
1369
+ # Build test mesh
1370
+
1371
+ # Create basic mesh
1372
+ # 9 points at (0,0), (0, 1), ..., (2,2)
1373
+ # 8 triangles enumerated from left bottom to right top.
1374
+ points, vertices, boundary = rectangular(2, 2, 2, 2)
1375
+ mesh = Mesh(points, vertices, boundary)
1376
+ intersected_triangles = [1,5]
1377
+
1378
+ # Horizontal line intersecting along center but stopping
1379
+ # parway through second triangle's edge
1380
+ #
1381
+
1382
+ y_line = 1.0
1383
+
1384
+ #line = [[0, y_line], [2, y_line]]
1385
+ line = [[0, y_line], [1.5, y_line]]
1386
+
1387
+ L = mesh.get_intersecting_segments(line)
1388
+ #for x in L:
1389
+ # print x
1390
+
1391
+ msg = 'Two triangles should be returned'
1392
+ assert len(L) == 2, msg
1393
+
1394
+
1395
+ # Check all
1396
+ total_length = 0
1397
+ for x in L:
1398
+ if x.triangle_id == 1:
1399
+ assert num.allclose(x.length, 1)
1400
+ assert num.allclose(x.normal, [0, -1])
1401
+
1402
+ if x.triangle_id == 5:
1403
+ assert num.allclose(x.length, 0.5)
1404
+ assert num.allclose(x.normal, [0, -1])
1405
+
1406
+
1407
+ assert x.triangle_id in intersected_triangles
1408
+
1409
+ total_length += x.length
1410
+
1411
+ msg = 'Segments do not add up'
1412
+ assert num.allclose(total_length, 1.5), msg
1413
+
1414
+
1415
+
1416
+ def test_get_intersecting_segments2(self):
1417
+ """test_get_intersecting_segments(self):
1418
+
1419
+ Lines with a slope
1420
+ """
1421
+
1422
+ s2 = sqrt(2.0)/2
1423
+
1424
+
1425
+ # Build test mesh
1426
+
1427
+ # Create basic mesh
1428
+ # 9 points at (0,0), (0, 1), ..., (2,2)
1429
+ # 8 triangles enumerated from left bottom to right top.
1430
+ points, vertices, boundary = rectangular(2, 2, 2, 2)
1431
+ mesh = Mesh(points, vertices, boundary)
1432
+
1433
+
1434
+ # Diagonal cutting through a vertex and hypothenuses
1435
+ line = [[0, 2], [2, 0]]
1436
+ intersected_triangles = [3,2,5,4]
1437
+
1438
+ L = mesh.get_intersecting_segments(line)
1439
+ assert len(L) == 4
1440
+
1441
+ #print L
1442
+
1443
+ # Check all segments
1444
+ total_length = 0
1445
+ for i, x in enumerate(L):
1446
+ assert num.allclose(x.length, s2)
1447
+ assert num.allclose(x.normal, [-s2, -s2])
1448
+ assert num.allclose(sum(x.normal**2), 1)
1449
+
1450
+ assert x.triangle_id in intersected_triangles
1451
+
1452
+ total_length += x.length
1453
+
1454
+ msg = 'Segments do not add up'
1455
+ assert num.allclose(total_length, 4*s2), msg
1456
+
1457
+
1458
+ # Diagonal cutting through a vertex and hypothenuses (reversed)
1459
+ line = [[2, 0], [0, 2]]
1460
+ intersected_triangles = [3,2,5,4]
1461
+
1462
+ L = mesh.get_intersecting_segments(line)
1463
+ assert len(L) == 4
1464
+
1465
+ #print L
1466
+
1467
+ # Check all segments
1468
+ total_length = 0
1469
+ for i, x in enumerate(L):
1470
+ assert num.allclose(x.length, s2)
1471
+ assert num.allclose(x.normal, [s2, s2])
1472
+ assert num.allclose(sum(x.normal**2), 1)
1473
+
1474
+ assert x.triangle_id in intersected_triangles
1475
+
1476
+ total_length += x.length
1477
+
1478
+ msg = 'Segments do not add up'
1479
+ assert num.allclose(total_length, 4*s2), msg
1480
+
1481
+
1482
+
1483
+ # Diagonal coinciding with hypothenuses
1484
+ line = [[2, 2], [0, 0]]
1485
+ intersected_triangles = [6,0]
1486
+
1487
+ L = mesh.get_intersecting_segments(line)
1488
+ assert len(L) == 2
1489
+
1490
+ #print L
1491
+
1492
+ # Check all segments
1493
+ total_length = 0
1494
+ for i, x in enumerate(L):
1495
+ assert num.allclose(x.length, 2*s2)
1496
+ assert num.allclose(x.normal, [-s2, s2])
1497
+ assert num.allclose(sum(x.normal**2), 1)
1498
+
1499
+ assert x.triangle_id in intersected_triangles
1500
+
1501
+ total_length += x.length
1502
+
1503
+ msg = 'Segments do not add up'
1504
+ assert num.allclose(total_length, 4*s2), msg
1505
+
1506
+
1507
+ # Diagonal coinciding with hypothenuses (reversed)
1508
+ line = [[0, 0], [2, 2]]
1509
+ intersected_triangles = [6,0]
1510
+
1511
+ L = mesh.get_intersecting_segments(line)
1512
+ assert len(L) == 2
1513
+
1514
+ #print L
1515
+
1516
+ # Check all segments
1517
+ total_length = 0
1518
+ for i, x in enumerate(L):
1519
+ assert num.allclose(x.length, 2*s2)
1520
+ assert num.allclose(x.normal, [s2, -s2])
1521
+ assert num.allclose(sum(x.normal**2), 1)
1522
+
1523
+ assert x.triangle_id in intersected_triangles
1524
+
1525
+ total_length += x.length
1526
+
1527
+ msg = 'Segments do not add up'
1528
+ assert num.allclose(total_length, 4*s2), msg
1529
+
1530
+
1531
+
1532
+ # line with slope [1, -1] cutting through vertices of tri 7 and 6
1533
+ line = [[1, 2], [2, 1]]
1534
+ intersected_triangles = [7,6]
1535
+
1536
+ L = mesh.get_intersecting_segments(line)
1537
+ assert len(L) == 2
1538
+
1539
+ #print L
1540
+
1541
+ # Check all segments
1542
+ total_length = 0
1543
+ for i, x in enumerate(L):
1544
+ assert num.allclose(x.length, s2)
1545
+ assert num.allclose(x.normal, [-s2, -s2])
1546
+ assert num.allclose(sum(x.normal**2), 1)
1547
+
1548
+ assert x.triangle_id in intersected_triangles
1549
+
1550
+ total_length += x.length
1551
+
1552
+ msg = 'Segments do not add up'
1553
+ assert num.allclose(total_length, 2*s2), msg
1554
+
1555
+
1556
+ # Arbitrary line with slope [1, -1] cutting through tri 7 and 6
1557
+ line = [[1.1, 2], [2.1, 1]]
1558
+ intersected_triangles = [7,6]
1559
+
1560
+ L = mesh.get_intersecting_segments(line)
1561
+ assert len(L) == 2
1562
+
1563
+ # Check all segments
1564
+ total_length = 0
1565
+ for i, x in enumerate(L):
1566
+ assert num.allclose(x.normal, [-s2, -s2])
1567
+ assert num.allclose(sum(x.normal**2), 1)
1568
+
1569
+ msg = 'Triangle %d' %x.triangle_id + ' is not in %s' %(intersected_triangles)
1570
+ assert x.triangle_id in intersected_triangles, msg
1571
+
1572
+
1573
+
1574
+ def test_get_intersecting_segments3(self):
1575
+ """test_get_intersecting_segments(self):
1576
+
1577
+ Check that line can stop inside a triangle
1578
+
1579
+ """
1580
+
1581
+
1582
+
1583
+ s2 = sqrt(2.0)/2
1584
+
1585
+
1586
+ # Build test mesh
1587
+
1588
+ # Create basic mesh
1589
+ # 9 points at (0,0), (0, 1), ..., (2,2)
1590
+ # 8 triangles enumerated from left bottom to right top.
1591
+ points, vertices, boundary = rectangular(2, 2, 2, 2)
1592
+ mesh = Mesh(points, vertices, boundary)
1593
+
1594
+
1595
+ # Line cutting through one triangle and ending on its edge
1596
+ line = [[0.5, 3], [0.5, 1.5]]
1597
+ intersected_triangles = [3]
1598
+
1599
+ L = mesh.get_intersecting_segments(line)
1600
+ assert len(L) == 1
1601
+ assert L[0].triangle_id == 3
1602
+ assert num.allclose(L[0].length, 0.5)
1603
+ assert num.allclose(L[0].normal, [-1,0])
1604
+
1605
+
1606
+
1607
+ # Now try to shorten it so that its endpoint falls short of the far edge
1608
+ line = [[0.5, 3], [0.5, 1.6]]
1609
+ intersected_triangles = [3]
1610
+
1611
+ L = mesh.get_intersecting_segments(line)
1612
+ assert len(L) == 1
1613
+ assert L[0].triangle_id == 3
1614
+ assert num.allclose(L[0].length, 0.4)
1615
+ assert num.allclose(L[0].normal, [-1,0])
1616
+
1617
+ intersected_triangles = [3]
1618
+
1619
+ # Now the same, but with direction changed
1620
+ line = [[0.5, 3], [0.5, 1.6]]
1621
+ line = [[0.5, 1.6], [0.5, 3]]
1622
+ intersected_triangles = [3]
1623
+
1624
+ L = mesh.get_intersecting_segments(line)
1625
+ assert len(L) == 1
1626
+ assert L[0].triangle_id == 3
1627
+ assert num.allclose(L[0].length, 0.4)
1628
+ assert num.allclose(L[0].normal, [1,0])
1629
+
1630
+
1631
+
1632
+
1633
+ def test_get_intersecting_segments4(self):
1634
+ """test_get_intersecting_segments(self):
1635
+
1636
+ Simple poly line
1637
+
1638
+ """
1639
+
1640
+
1641
+
1642
+ s2 = sqrt(2.0)/2
1643
+
1644
+
1645
+ # Build test mesh
1646
+
1647
+ # Create basic mesh
1648
+ # 9 points at (0,0), (0, 1), ..., (2,2)
1649
+ # 8 triangles enumerated from left bottom to right top.
1650
+ points, vertices, boundary = rectangular(2, 2, 2, 2)
1651
+ mesh = Mesh(points, vertices, boundary)
1652
+
1653
+
1654
+ # Polyline with three segments cutting through mesh
1655
+ line = [[0.5, 3], [0.5, 1.5], [1,1]]
1656
+
1657
+ L = mesh.get_intersecting_segments(line)
1658
+ assert len(L) == 2
1659
+
1660
+ for x in L:
1661
+ if x.triangle_id == 3:
1662
+ assert num.allclose(x.length, 0.5)
1663
+ assert num.allclose(x.normal, [-1,0])
1664
+
1665
+ if x.triangle_id == 2:
1666
+ assert num.allclose(x.length, s2)
1667
+ assert num.allclose(x.normal, [-s2,-s2])
1668
+
1669
+
1670
+
1671
+ def test_get_intersecting_segments5(self):
1672
+ """test_get_intersecting_segments(self):
1673
+
1674
+ More complex poly line
1675
+
1676
+ """
1677
+
1678
+
1679
+
1680
+ s2 = sqrt(2.0)/2
1681
+
1682
+
1683
+ # Build test mesh
1684
+
1685
+ # Create basic mesh
1686
+ # 9 points at (0,0), (0, 1), ..., (2,2)
1687
+ # 8 triangles enumerated from left bottom to right top.
1688
+ points, vertices, boundary = rectangular(2, 2, 2, 2)
1689
+ mesh = Mesh(points, vertices, boundary)
1690
+
1691
+
1692
+ # Polyline with three segments cutting through mesh
1693
+ line = [[0.5, 3], [0.5, 1.5], [1.25, 0.75]]
1694
+
1695
+ L = mesh.get_intersecting_segments(line)
1696
+ assert len(L) == 3
1697
+
1698
+ for x in L:
1699
+ if x.triangle_id == 3:
1700
+ assert num.allclose(x.length, 0.5)
1701
+ assert num.allclose(x.normal, [-1,0])
1702
+
1703
+ if x.triangle_id == 2:
1704
+ msg = str(x.length)
1705
+ assert num.allclose(x.length, s2), msg
1706
+ assert num.allclose(x.normal, [-s2,-s2])
1707
+
1708
+ if x.triangle_id == 5:
1709
+ segvec = num.array([line[2][0]-1,
1710
+ line[2][1]-1])
1711
+ msg = str(x.length)
1712
+ assert num.allclose(x.length, sqrt(sum(segvec**2))), msg
1713
+ assert num.allclose(x.normal, [-s2,-s2])
1714
+
1715
+
1716
+ def test_get_intersecting_segments6(self):
1717
+ """test_get_intersecting_segments(self):
1718
+
1719
+ Even more complex poly line, where line breaks within triangle 5
1720
+
1721
+ 5 segments are returned even though only four triangles [3,2,5,6] are touched.
1722
+ Triangle 5 therefor has two segments in it.
1723
+
1724
+ """
1725
+
1726
+
1727
+
1728
+ s2 = sqrt(2.0)/2
1729
+
1730
+
1731
+ # Build test mesh
1732
+
1733
+ # Create basic mesh
1734
+ # 9 points at (0,0), (0, 1), ..., (2,2)
1735
+ # 8 triangles enumerated from left bottom to right top.
1736
+ points, vertices, boundary = rectangular(2, 2, 2, 2)
1737
+ mesh = Mesh(points, vertices, boundary)
1738
+
1739
+
1740
+ # Polyline with three segments cutting through mesh
1741
+ line = [[0.5, 3], [0.5, 1.5], [1.25, 0.75], [2.25, 1.75]]
1742
+
1743
+ L = mesh.get_intersecting_segments(line)
1744
+ #for x in L:
1745
+ # print x
1746
+
1747
+ assert len(L) == 5
1748
+
1749
+ for x in L:
1750
+ if x.triangle_id == 3:
1751
+ assert num.allclose(x.length, 0.5)
1752
+ assert num.allclose(x.normal, [-1,0])
1753
+
1754
+ if x.triangle_id == 2:
1755
+ msg = str(x.length)
1756
+ assert num.allclose(x.length, s2), msg
1757
+ assert num.allclose(x.normal, [-s2,-s2])
1758
+
1759
+ if x.triangle_id == 5:
1760
+ if x.segment == ((1.0, 1.0), (1.25, 0.75)):
1761
+ segvec = num.array([line[2][0]-1,
1762
+ line[2][1]-1])
1763
+ msg = str(x.length)
1764
+ assert num.allclose(x.length, sqrt(sum(segvec**2))), msg
1765
+ assert num.allclose(x.normal, [-s2,-s2])
1766
+ elif x.segment == ((1.25, 0.75), (1.5, 1.0)):
1767
+ segvec = num.array([1.5-line[2][0],
1768
+ 1.0-line[2][1]])
1769
+
1770
+ assert num.allclose(x.length, sqrt(sum(segvec**2))), msg
1771
+ assert num.allclose(x.normal, [s2,-s2])
1772
+ else:
1773
+ msg = 'Unknown segment: %s' %x.segment
1774
+ raise Exception(msg)
1775
+
1776
+
1777
+
1778
+ if x.triangle_id == 6:
1779
+ assert num.allclose(x.normal, [s2,-s2])
1780
+ assert num.allclose(x.segment, ((1.5, 1.0), (2, 1.5)))
1781
+
1782
+
1783
+ # Internal test that sum of line segments add up
1784
+ # to length of input line
1785
+ #
1786
+ # Could be useful perhaps
1787
+ #
1788
+ #xi1 = line[1][0]
1789
+ #eta1 = line[1][1]
1790
+ #linevector = num.array([xi1-xi0, eta1-eta0])
1791
+ #linelength = sqrt(sum(linevector**2))
1792
+ #
1793
+ #segmentlength = 0
1794
+ #for segment in triangle_intersections:
1795
+ # vector = array([segment[1][0] - segment[0][0],
1796
+ # segment[1][1] - segment[0][1]])
1797
+ # length = sqrt(sum(vector**2))
1798
+ # segmentlength += length
1799
+ #
1800
+ #msg = 'Sum of intersecting segments do not add up'
1801
+ #assert allclose(segmentlength, linelength), msg
1802
+
1803
+
1804
+
1805
+
1806
+ def test_get_intersecting_segments7(self):
1807
+ """test_get_intersecting_segments(self):
1808
+
1809
+ Check that line can stop inside a triangle - this is from
1810
+ flow throug a cross sections example in test_datamanager.
1811
+
1812
+ """
1813
+
1814
+ # Build test mesh
1815
+ width = 5
1816
+ length = 100
1817
+ t_end = 1
1818
+ points, vertices, boundary = rectangular(length, width,
1819
+ length, width)
1820
+
1821
+ mesh = Mesh(points, vertices, boundary)
1822
+
1823
+
1824
+ # A range of partial lines
1825
+ x = length/2.
1826
+ for i in range(10):
1827
+ start_point = [length/2., i*width/10.]
1828
+ #print
1829
+ #print start_point
1830
+
1831
+ line = [start_point, [length/2., width]]
1832
+
1833
+ L = mesh.get_intersecting_segments(line)
1834
+
1835
+ if start_point[1] < 1:
1836
+ assert len(L) == 5
1837
+
1838
+
1839
+ total_length = 0
1840
+ for x in L:
1841
+ total_length += x.length
1842
+
1843
+
1844
+ ref_length = line[1][1] - line[0][1]
1845
+ #print ref_length, total_length
1846
+ assert num.allclose(total_length, ref_length)
1847
+
1848
+
1849
+ #-------------------------------------------------------------
1850
+
1851
+ if __name__ == "__main__":
1852
+ suite = unittest.makeSuite(Test_Mesh, 'test_mesh_and_neighbours')
1853
+ runner = unittest.TextTestRunner()#verbosity=2)
1854
+ runner.run(suite)