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,2859 @@
1
+ #!/usr/bin/env python
2
+
3
+ import unittest
4
+ from math import sqrt, pi
5
+ import tempfile
6
+
7
+ from anuga.abstract_2d_finite_volumes.quantity import *
8
+ from anuga.config import epsilon
9
+
10
+ from anuga.fit_interpolate.fit import fit_to_mesh
11
+ #from anuga.pyvolution.least_squares import fit_to_mesh
12
+ from anuga.abstract_2d_finite_volumes.generic_domain \
13
+ import Generic_Domain
14
+ from anuga.geospatial_data.geospatial_data import Geospatial_data
15
+ from anuga.coordinate_transforms.geo_reference import Geo_reference
16
+ from anuga.geometry.polygon import *
17
+
18
+ import numpy as num
19
+
20
+
21
+ #Aux for fit_interpolate.fit example
22
+ def linear_function(point):
23
+ point = num.array(point)
24
+ return point[:,0]+3*point[:,1]
25
+ #return point[:,1]
26
+
27
+
28
+ def axes2points(x, y):
29
+ """Generate all combinations of grid point coordinates from x and y axes
30
+
31
+ Args:
32
+ * x: x coordinates (array)
33
+ * y: y coordinates (array)
34
+
35
+ Returns:
36
+ * P: Nx2 array consisting of coordinates for all
37
+ grid points defined by x and y axes. The x coordinate
38
+ will vary the fastest to match the way 2D numpy
39
+ arrays are laid out by default ('C' order). That way,
40
+ the x and y coordinates will match a corresponding
41
+ 2D array A when flattened (A.flat[:] or A.reshape(-1))
42
+
43
+ Note:
44
+ Example
45
+
46
+ x = [1, 2, 3]
47
+ y = [10, 20]
48
+
49
+ P = [[1, 10],
50
+ [2, 10],
51
+ [3, 10],
52
+ [1, 20],
53
+ [2, 20],
54
+ [3, 20]]
55
+ """
56
+ import numpy
57
+
58
+ # Reverse y coordinates to have them start at bottom of array
59
+ y = numpy.flipud(y)
60
+
61
+ # Repeat x coordinates for each y (fastest varying)
62
+ X = numpy.kron(numpy.ones(len(y)), x)
63
+
64
+ # Repeat y coordinates for each x (slowest varying)
65
+ Y = numpy.kron(y, numpy.ones(len(x)))
66
+
67
+ # Check
68
+ N = len(X)
69
+ assert len(Y) == N
70
+
71
+ # Create Nx2 array of x and y coordinates
72
+ X = numpy.reshape(X, (N, 1))
73
+ Y = numpy.reshape(Y, (N, 1))
74
+ P = numpy.concatenate((X, Y), axis=1)
75
+
76
+ # Return
77
+ return P
78
+
79
+
80
+
81
+ class Test_Quantity(unittest.TestCase):
82
+ def setUp(self):
83
+
84
+ a = [0.0, 0.0]
85
+ b = [0.0, 2.0]
86
+ c = [2.0, 0.0]
87
+ d = [0.0, 4.0]
88
+ e = [2.0, 2.0]
89
+ f = [4.0, 0.0]
90
+
91
+ points = [a, b, c, d, e, f]
92
+
93
+ #bac, bce, ecf, dbe
94
+ elements = [ [1,0,2], [1,2,4], [4,2,5], [3,1,4] ]
95
+
96
+ self.mesh1 = Generic_Domain(points[:3], [elements[0]])
97
+ self.mesh1.check_integrity()
98
+
99
+ #print self.mesh1.__class__
100
+ #print isinstance(self.mesh1, Domain)
101
+
102
+ self.mesh4 = Generic_Domain(points, elements)
103
+ self.mesh4.check_integrity()
104
+
105
+ # UTM round Onslow
106
+ a = [240000, 7620000]
107
+ b = [240000, 7680000]
108
+ c = [300000, 7620000]
109
+
110
+ points = [a, b, c]
111
+ elements = [[0,2,1]]
112
+
113
+ self.mesh_onslow = Generic_Domain(points, elements)
114
+ self.mesh_onslow.check_integrity()
115
+
116
+ def tearDown(self):
117
+ pass
118
+ #print " Tearing down"
119
+
120
+
121
+ def test_creation(self):
122
+
123
+ quantity = Quantity(self.mesh1, [[1,2,3]])
124
+ assert num.allclose(quantity.vertex_values, [[1.,2.,3.]])
125
+
126
+ try:
127
+ quantity = Quantity()
128
+ except:
129
+ pass
130
+ else:
131
+ raise Exception('Should have raised empty quantity exception')
132
+
133
+
134
+ # FIXME(Ole): Temporarily disabled 18 Jan 2009
135
+ #try:
136
+ # quantity = Quantity([1,2,3])
137
+ #except AssertionError:
138
+ # pass
139
+ #except:
140
+ # raise Exception('Should have raised "mising mesh object" error')
141
+
142
+
143
+ def test_creation_zeros(self):
144
+
145
+ quantity = Quantity(self.mesh1)
146
+ assert num.allclose(quantity.vertex_values, [[0.,0.,0.]])
147
+
148
+
149
+ quantity = Quantity(self.mesh4)
150
+ assert num.allclose(quantity.vertex_values, [[0.,0.,0.], [0.,0.,0.],
151
+ [0.,0.,0.], [0.,0.,0.]])
152
+
153
+ def test_set_boundary_values(self):
154
+
155
+ quantity = Quantity(self.mesh1)
156
+
157
+ quantity.set_boundary_values()
158
+
159
+ assert num.allclose(quantity.boundary_values, [0.0, 0.0, 0.0])
160
+
161
+
162
+ def test_set_boundary_values_with_function(self):
163
+
164
+ quantity = Quantity(self.mesh1)
165
+ #assert num.allclose(quantity.vertex_values, [[0.,0.,0.]])
166
+
167
+ def simple(x,y):
168
+ return x+3*y
169
+
170
+ quantity.set_boundary_values(simple)
171
+
172
+ assert num.allclose(quantity.boundary_values, [1.0, 4.0, 3.0])
173
+
174
+ def test_set_boundary_values_with_constant(self):
175
+
176
+ quantity = Quantity(self.mesh1)
177
+ #assert num.allclose(quantity.vertex_values, [[0.,0.,0.]])
178
+
179
+ quantity.set_boundary_values(10.0)
180
+
181
+ assert num.allclose(quantity.boundary_values, [10.0, 10.0, 10.0])
182
+
183
+
184
+ def test_set_boundary_values_with_array(self):
185
+
186
+ quantity = Quantity(self.mesh1)
187
+ #assert num.allclose(quantity.vertex_values, [[0.,0.,0.]])
188
+
189
+
190
+ quantity.set_boundary_values([10.0, 4.0, 5.0])
191
+
192
+ assert num.allclose(quantity.boundary_values, [10.0, 4.0, 5.0])
193
+
194
+ def test_set_boundary_values_with_wrong_sized_array(self):
195
+
196
+ quantity = Quantity(self.mesh1)
197
+ #assert num.allclose(quantity.vertex_values, [[0.,0.,0.]])
198
+
199
+ try:
200
+ quantity.set_boundary_values([10.0, 4.0, 5.0, 8.0])
201
+ except:
202
+ pass
203
+ else:
204
+ msg = 'Should have caught this'
205
+ raise Exception(msg)
206
+
207
+ def test_set_boundary_values_from_edges(self):
208
+
209
+ quantity = Quantity(self.mesh4)
210
+
211
+ def simple(x,y):
212
+ return x+3*y
213
+
214
+ quantity.set_values(simple)
215
+
216
+ assert num.allclose(quantity.boundary_values, [ 0., 0., 0., 0., 0., 0.])
217
+
218
+ quantity.set_boundary_values_from_edges()
219
+
220
+ assert num.allclose(quantity.boundary_values, [ 1., 3., 3., 6., 10., 9.])
221
+
222
+
223
+ def test_interpolation(self):
224
+ quantity = Quantity(self.mesh1, [[1,2,3]])
225
+ assert num.allclose(quantity.centroid_values, [2.0]) #Centroid
226
+
227
+ assert num.allclose(quantity.edge_values, [[2.5, 2.0, 1.5]])
228
+
229
+
230
+ def test_interpolation2(self):
231
+ quantity = Quantity(self.mesh4,
232
+ [[1,2,3], [5,5,5], [0,0,9], [-6, 3, 3]])
233
+ assert num.allclose(quantity.centroid_values, [2., 5., 3., 0.]) #Centroid
234
+
235
+
236
+ quantity.extrapolate_second_order()
237
+
238
+ #print quantity.vertex_values
239
+ assert num.allclose(quantity.vertex_values, [[3.5, -1.0, 3.5],
240
+ [3.+2./3, 6.+2./3, 4.+2./3],
241
+ [4.6, 3.4, 1.],
242
+ [-5.0, 1.0, 4.0]])
243
+
244
+ #print quantity.edge_values
245
+ assert num.allclose(quantity.edge_values, [[1.25, 3.5, 1.25],
246
+ [5. + 2/3.0, 4.0 + 1.0/6, 5.0 + 1.0/6],
247
+ [2.2, 2.8, 4.0],
248
+ [2.5, -0.5, -2.0]])
249
+
250
+ def test_save_to_array(self):
251
+ quantity = Quantity(self.mesh4,
252
+ [[1,2,3], [5,5,5], [0,0,9], [-6, 3, 3]])
253
+
254
+
255
+ assert num.allclose(quantity.centroid_values, [2., 5., 3., 0.]) #Centroid
256
+
257
+ cellsize = 1.0
258
+ x,y,z = quantity.save_to_array(cellsize=cellsize, smooth=False)
259
+ #x,y,z = quantity.save_to_array(smooth=False)
260
+
261
+ from pprint import pprint
262
+ #pprint(x)
263
+ #pprint(y)
264
+ #pprint(z)
265
+
266
+
267
+ x_ex = [ 0., 1., 2., 3., 4.]
268
+ y_ex = [ 0., 1., 2., 3., 4.]
269
+
270
+ z_ex = [[ 2.00000000e+00, 2.50000000e+00, 0.00000000e+00,
271
+ 4.50000000e+00, 9.00000000e+00],
272
+ [ 1.50000000e+00, 5.00000000e+00, 0.00000000e+00,
273
+ 4.50000000e+00, -9.99900000e+03],
274
+ [ 3.00000000e+00, 3.00000000e+00, 3.00000000e+00,
275
+ -9.99900000e+03, -9.99900000e+03],
276
+ [ -1.50000000e+00, -1.50000000e+00, -9.99900000e+03,
277
+ -9.99900000e+03, -9.99900000e+03],
278
+ [ -6.00000000e+00, -9.99900000e+03, -9.99900000e+03,
279
+ -9.99900000e+03, -9.99900000e+03]]
280
+
281
+ assert num.allclose(x_ex,x)
282
+ assert num.allclose(y_ex,y)
283
+ assert num.allclose(z_ex,z)
284
+
285
+
286
+ Plot = False
287
+ if Plot:
288
+ import pylab
289
+ import numpy
290
+ #a = numpy.where(a == -9999, numpy.nan, a)
291
+ #a = numpy.where(a > 10.0, numpy.nan, a)
292
+
293
+ #z = z[::-1,:]
294
+
295
+
296
+ print z
297
+ print z.shape
298
+ print x
299
+ print y
300
+
301
+ nrows = z.shape[0]
302
+ ncols = z.shape[1]
303
+
304
+ ratio = float(nrows)/float(ncols)
305
+ print ratio
306
+
307
+ #y = numpy.arange(nrows)*cellsize
308
+ #x = numpy.arange(ncols)*cellsize
309
+
310
+ #Setup fig size to correpond to array size
311
+ fig = pylab.figure(figsize=(10, 10*ratio))
312
+
313
+ levels = numpy.arange(-7, 10, 0.1)
314
+ CF = pylab.contourf(x,y,z, levels=levels)
315
+ CB = pylab.colorbar(CF, shrink=0.8, extend='both')
316
+ #CC = pylab.contour(x,y,a, levels=levels)
317
+
318
+ pylab.show()
319
+
320
+
321
+
322
+ x,y,z = quantity.save_to_array(cellsize=cellsize, smooth=True)
323
+
324
+
325
+ x_ex = [ 0., 1., 2., 3., 4.]
326
+ y_ex = [ 0., 1., 2., 3., 4.]
327
+ z_ex = [[ 2.00000000e+00, 2.33333333e+00, 2.66666667e+00,
328
+ 5.83333333e+00, 9.00000000e+00],
329
+ [ 2.50000000e+00, 2.83333333e+00, 2.66666667e+00,
330
+ 5.83333333e+00, -9.99900000e+03],
331
+ [ 3.00000000e+00, 2.83333333e+00, 2.66666667e+00,
332
+ -9.99900000e+03, -9.99900000e+03],
333
+ [ -1.50000000e+00, -1.66666667e+00, -9.99900000e+03,
334
+ -9.99900000e+03, -9.99900000e+03],
335
+ [ -6.00000000e+00, -9.99900000e+03, -9.99900000e+03,
336
+ -9.99900000e+03, -9.99900000e+03]]
337
+
338
+ #pprint(z)
339
+ assert num.allclose(x_ex,x)
340
+ assert num.allclose(y_ex,y)
341
+ assert num.allclose(z_ex,z)
342
+
343
+ if Plot:
344
+ import pylab
345
+ import numpy
346
+ #a = numpy.where(a == -9999, numpy.nan, a)
347
+ #a = numpy.where(a > 10.0, numpy.nan, a)
348
+
349
+ #a = a[::-1,:]
350
+ nrows = z.shape[0]
351
+ ncols = z.shape[1]
352
+
353
+ ratio = float(nrows)/float(ncols)
354
+ print ratio
355
+
356
+ #Setup fig size to correpond to array size
357
+ fig = pylab.figure(figsize=(10, 10*ratio))
358
+
359
+ levels = numpy.arange(-7, 10, 0.1)
360
+ CF = pylab.contourf(x,y,z, levels=levels)
361
+ CB = pylab.colorbar(CF, shrink=0.8, extend='both')
362
+ #CC = pylab.contour(x,y,a, levels=[0.0,1.0,2.0,3.0])
363
+
364
+ pylab.show()
365
+
366
+
367
+
368
+
369
+
370
+ def test_get_extrema_1(self):
371
+ quantity = Quantity(self.mesh4,
372
+ [[1,2,3], [5,5,5], [0,0,9], [-6, 3, 3]])
373
+ assert num.allclose(quantity.centroid_values, [2., 5., 3., 0.]) #Centroids
374
+
375
+ v = quantity.get_maximum_value()
376
+ assert v == 5
377
+
378
+ v = quantity.get_minimum_value()
379
+ assert v == 0
380
+
381
+ i = quantity.get_maximum_index()
382
+ assert i == 1
383
+
384
+ i = quantity.get_minimum_index()
385
+ assert i == 3
386
+
387
+ x,y = quantity.get_maximum_location()
388
+ xref, yref = 4.0/3, 4.0/3
389
+ assert x == xref
390
+ assert y == yref
391
+
392
+ v = quantity.get_values(interpolation_points = [[x,y]])
393
+ assert num.allclose(v, 5)
394
+
395
+
396
+ x,y = quantity.get_minimum_location()
397
+ v = quantity.get_values(interpolation_points = [[x,y]])
398
+ assert num.allclose(v, 0)
399
+
400
+
401
+ def test_get_maximum_2(self):
402
+
403
+ a = [0.0, 0.0]
404
+ b = [0.0, 2.0]
405
+ c = [2.0,0.0]
406
+ d = [0.0, 4.0]
407
+ e = [2.0, 2.0]
408
+ f = [4.0,0.0]
409
+
410
+ points = [a, b, c, d, e, f]
411
+ #bac, bce, ecf, dbe
412
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
413
+
414
+ domain = Generic_Domain(points, vertices)
415
+
416
+ quantity = Quantity(domain)
417
+ quantity.set_values(lambda x, y: x+2*y) #2 4 4 6
418
+
419
+ v = quantity.get_maximum_value()
420
+ assert v == 6
421
+
422
+ v = quantity.get_minimum_value()
423
+ assert v == 2
424
+
425
+ i = quantity.get_maximum_index()
426
+ assert i == 3
427
+
428
+ i = quantity.get_minimum_index()
429
+ assert i == 0
430
+
431
+ x,y = quantity.get_maximum_location()
432
+ xref, yref = 2.0/3, 8.0/3
433
+ assert x == xref
434
+ assert y == yref
435
+
436
+ v = quantity.get_values(interpolation_points = [[x,y]])
437
+ assert num.allclose(v, 6)
438
+
439
+ x,y = quantity.get_minimum_location()
440
+ v = quantity.get_values(interpolation_points = [[x,y]])
441
+ assert num.allclose(v, 2)
442
+
443
+ #Multiple locations for maximum -
444
+ #Test that the algorithm picks the first occurrence
445
+ v = quantity.get_maximum_value(indices=[0,1,2])
446
+ assert num.allclose(v, 4)
447
+
448
+ i = quantity.get_maximum_index(indices=[0,1,2])
449
+ assert i == 1
450
+
451
+ x,y = quantity.get_maximum_location(indices=[0,1,2])
452
+ xref, yref = 4.0/3, 4.0/3
453
+ assert x == xref
454
+ assert y == yref
455
+
456
+ v = quantity.get_values(interpolation_points = [[x,y]])
457
+ assert num.allclose(v, 4)
458
+
459
+ # More test of indices......
460
+ v = quantity.get_maximum_value(indices=[2,3])
461
+ assert num.allclose(v, 6)
462
+
463
+ i = quantity.get_maximum_index(indices=[2,3])
464
+ assert i == 3
465
+
466
+ x,y = quantity.get_maximum_location(indices=[2,3])
467
+ xref, yref = 2.0/3, 8.0/3
468
+ assert x == xref
469
+ assert y == yref
470
+
471
+ v = quantity.get_values(interpolation_points = [[x,y]])
472
+ assert num.allclose(v, 6)
473
+
474
+
475
+
476
+ def test_boundary_allocation(self):
477
+ quantity = Quantity(self.mesh4,
478
+ [[1,2,3], [5,5,5], [0,0,9], [-6, 3, 3]])
479
+
480
+ assert quantity.boundary_values.shape[0] == len(self.mesh4.boundary)
481
+
482
+
483
+ def test_set_values(self):
484
+ quantity = Quantity(self.mesh4)
485
+
486
+ # get referece to data arrays
487
+ centroid_values = quantity.centroid_values
488
+ vertex_values = quantity.vertex_values
489
+
490
+ quantity.set_values([[1,2,3], [5,5,5], [0,0,9], [-6, 3, 3]],
491
+ location = 'vertices')
492
+ assert num.allclose(quantity.vertex_values,
493
+ [[1,2,3], [5,5,5], [0,0,9], [-6, 3, 3]])
494
+
495
+ assert id(vertex_values) == id(quantity.vertex_values)
496
+ assert num.allclose(quantity.centroid_values, [2., 5., 3., 0.]) #Centroid
497
+ assert num.allclose(quantity.edge_values, [[2.5, 2.0, 1.5],
498
+ [5., 5., 5.],
499
+ [4.5, 4.5, 0.],
500
+ [3.0, -1.5, -1.5]])
501
+
502
+
503
+ # Test default
504
+ quantity.set_values([[1,2,3], [5,5,5], [0,0,9], [-6, 3, 3]])
505
+ assert num.allclose(quantity.vertex_values,
506
+ [[1,2,3], [5,5,5], [0,0,9], [-6, 3, 3]])
507
+ assert num.allclose(quantity.centroid_values, [2., 5., 3., 0.]) #Centroid
508
+ assert num.allclose(quantity.edge_values, [[2.5, 2.0, 1.5],
509
+ [5., 5., 5.],
510
+ [4.5, 4.5, 0.],
511
+ [3.0, -1.5, -1.5]])
512
+
513
+ # Test centroids
514
+ quantity.set_values([1,2,3,4], location = 'centroids')
515
+ assert num.allclose(quantity.centroid_values, [1., 2., 3., 4.]) #Centroid
516
+
517
+ # Test exceptions
518
+ try:
519
+ quantity.set_values([[1,2,3], [5,5,5], [0,0,9], [-6, 3, 3]],
520
+ location = 'bas kamel tuba')
521
+ except:
522
+ pass
523
+
524
+
525
+
526
+ try:
527
+ quantity.set_values([[1,2,3], [0,0,9]])
528
+ except ValueError:
529
+ pass
530
+ except:
531
+ raise Exception('should have raised ValueeError')
532
+
533
+
534
+
535
+ def test_set_values_const(self):
536
+ quantity = Quantity(self.mesh4)
537
+
538
+ quantity.set_values(1.0, location = 'vertices')
539
+ assert num.allclose(quantity.vertex_values,
540
+ [[1,1,1], [1,1,1], [1,1,1], [1, 1, 1]])
541
+
542
+ assert num.allclose(quantity.centroid_values, [1, 1, 1, 1]) #Centroid
543
+ assert num.allclose(quantity.edge_values, [[1, 1, 1],
544
+ [1, 1, 1],
545
+ [1, 1, 1],
546
+ [1, 1, 1]])
547
+
548
+
549
+ quantity.set_values(2.0, location = 'centroids')
550
+ assert num.allclose(quantity.centroid_values, [2, 2, 2, 2])
551
+
552
+
553
+ def test_set_values_func(self):
554
+ quantity = Quantity(self.mesh4)
555
+
556
+ def f(x, y):
557
+ return x+y
558
+
559
+ quantity.set_values(f, location = 'vertices')
560
+ #print "quantity.vertex_values",quantity.vertex_values
561
+ assert num.allclose(quantity.vertex_values,
562
+ [[2,0,2], [2,2,4], [4,2,4], [4,2,4]])
563
+ assert num.allclose(quantity.centroid_values,
564
+ [4.0/3, 8.0/3, 10.0/3, 10.0/3])
565
+ assert num.allclose(quantity.edge_values,
566
+ [[1,2,1], [3,3,2], [3,4,3], [3,4,3]])
567
+
568
+
569
+ quantity.set_values(f, location = 'centroids')
570
+ assert num.allclose(quantity.centroid_values,
571
+ [4.0/3, 8.0/3, 10.0/3, 10.0/3])
572
+
573
+
574
+ def test_integral(self):
575
+ quantity = Quantity(self.mesh4)
576
+
577
+ # Try constants first
578
+ const = 5
579
+ quantity.set_values(const, location = 'vertices')
580
+ #print 'Q', quantity.get_integral()
581
+
582
+ assert num.allclose(quantity.get_integral(), self.mesh4.get_area() * const)
583
+
584
+ # Try with a linear function
585
+ def f(x, y):
586
+ return x+y
587
+
588
+ quantity.set_values(f, location = 'vertices')
589
+
590
+
591
+ ref_integral = (4.0/3 + 8.0/3 + 10.0/3 + 10.0/3) * 2
592
+
593
+ assert num.allclose (quantity.get_integral(), ref_integral)
594
+
595
+ def test_integral_with_region(self):
596
+ quantity = Quantity(self.mesh4)
597
+
598
+ # Try constants first
599
+ const = 5
600
+ quantity.set_values(const, location = 'vertices')
601
+ #print 'Q', quantity.get_integral()
602
+
603
+ assert num.allclose(quantity.get_integral(), self.mesh4.get_area() * const)
604
+
605
+ # Try with a linear function
606
+ def f(x, y):
607
+ return x+y
608
+
609
+ quantity.set_values(f, location = 'vertices')
610
+
611
+
612
+ from anuga import Region
613
+
614
+ reg1 = Region(self.mesh4, indices=[2])
615
+ ref_integral = (10.0/3) * 2
616
+
617
+ assert num.allclose (quantity.get_integral(region=reg1), ref_integral)
618
+
619
+ reg2 = Region(self.mesh4, indices=[2,3])
620
+ ref_integral = (10.0/3 + 10.0/3) * 2
621
+
622
+ assert num.allclose (quantity.get_integral(region=reg2), ref_integral)
623
+
624
+ id=[2,3]
625
+ ref_integral = (10.0/3 + 10.0/3) * 2
626
+
627
+ assert num.allclose (quantity.get_integral(indices=id), ref_integral)
628
+
629
+ def test_set_vertex_values(self):
630
+ quantity = Quantity(self.mesh4)
631
+ quantity.set_vertex_values([0,1,2,3,4,5])
632
+
633
+ assert num.allclose(quantity.vertex_values,
634
+ [[1,0,2], [1,2,4], [4,2,5], [3,1,4]])
635
+ assert num.allclose(quantity.centroid_values,
636
+ [1., 7./3, 11./3, 8./3]) #Centroid
637
+ assert num.allclose(quantity.edge_values, [[1., 1.5, 0.5],
638
+ [3., 2.5, 1.5],
639
+ [3.5, 4.5, 3.],
640
+ [2.5, 3.5, 2]])
641
+
642
+
643
+ def test_set_vertex_values_subset(self):
644
+ quantity = Quantity(self.mesh4)
645
+ quantity.set_vertex_values([0,1,2,3,4,5])
646
+ quantity.set_vertex_values([0,20,30,50], indices = [0,2,3,5])
647
+
648
+ assert num.allclose(quantity.vertex_values,
649
+ [[1,0,20], [1,20,4], [4,20,50], [30,1,4]])
650
+
651
+
652
+ def test_set_vertex_values_using_general_interface(self):
653
+ quantity = Quantity(self.mesh4)
654
+
655
+
656
+ quantity.set_values([0,1,2,3,4,5])
657
+
658
+
659
+ assert num.allclose(quantity.vertex_values,
660
+ [[1,0,2], [1,2,4], [4,2,5], [3,1,4]])
661
+
662
+ #Centroid
663
+ assert num.allclose(quantity.centroid_values, [1., 7./3, 11./3, 8./3])
664
+
665
+ assert num.allclose(quantity.edge_values, [[1., 1.5, 0.5],
666
+ [3., 2.5, 1.5],
667
+ [3.5, 4.5, 3.],
668
+ [2.5, 3.5, 2]])
669
+
670
+
671
+
672
+ def test_set_vertex_values_using_general_interface_with_subset(self):
673
+ """test_set_vertex_values_using_general_interface_with_subset(self):
674
+
675
+ Test that indices and polygon works (for constants values)
676
+ """
677
+
678
+ quantity = Quantity(self.mesh4)
679
+
680
+
681
+ quantity.set_values([0,2,3,5], indices=[0,2,3,5])
682
+ assert num.allclose(quantity.vertex_values,
683
+ [[0,0,2], [0,2,0], [0,2,5], [3,0,0]])
684
+
685
+
686
+ # Constant
687
+ quantity.set_values(0.0)
688
+ quantity.set_values(3.14, indices=[0,2], location='vertices')
689
+
690
+ # Indices refer to triangle numbers
691
+ assert num.allclose(quantity.vertex_values,
692
+ [[3.14,3.14,3.14], [0,0,0],
693
+ [3.14,3.14,3.14], [0,0,0]])
694
+
695
+
696
+
697
+ # Now try with polygon (pick points where y>2)
698
+ polygon = [[0,2.1], [4,2.1], [4,7], [0,7]]
699
+ quantity.set_values(0.0)
700
+ quantity.set_values(3.14, polygon=polygon)
701
+
702
+ assert num.allclose(quantity.vertex_values,
703
+ [[0,0,0], [0,0,0], [0,0,0],
704
+ [3.14,3.14,3.14]])
705
+
706
+
707
+ # Another polygon (pick triangle 1 and 2 (rightmost triangles)
708
+ # using centroids
709
+ polygon = [[2.1, 0.0], [3.5,0.1], [2,2.2], [0.2,2]]
710
+ quantity.set_values(0.0)
711
+ quantity.set_values(3.14, location='centroids', polygon=polygon)
712
+ assert num.allclose(quantity.vertex_values,
713
+ [[0,0,0],
714
+ [3.14,3.14,3.14],
715
+ [3.14,3.14,3.14],
716
+ [0,0,0]])
717
+
718
+
719
+ # Same polygon now use vertices (default)
720
+ polygon = [[2.1, 0.0], [3.5,0.1], [2,2.2], [0.2,2]]
721
+ quantity.set_values(0.0)
722
+ #print 'Here 2'
723
+ quantity.set_values(3.14, polygon=polygon)
724
+ assert num.allclose(quantity.vertex_values,
725
+ [[0,0,0],
726
+ [3.14,3.14,3.14],
727
+ [3.14,3.14,3.14],
728
+ [0,0,0]])
729
+
730
+
731
+ # Test input checking
732
+ try:
733
+ quantity.set_values(3.14, polygon=polygon, indices = [0,2])
734
+ except:
735
+ pass
736
+ else:
737
+ msg = 'Should have caught this'
738
+ raise Exception(msg)
739
+
740
+
741
+
742
+
743
+
744
+ def test_set_vertex_values_using_general_interface_subset_and_geo(self):
745
+ """test_set_vertex_values_using_general_interface_with_subset(self):
746
+ Test that indices and polygon works using georeferencing
747
+ """
748
+
749
+ quantity = Quantity(self.mesh4)
750
+ G = Geo_reference(56, 10, 100)
751
+ quantity.domain.set_georeference(G)
752
+
753
+
754
+ # Constant
755
+ quantity.set_values(0.0)
756
+ quantity.set_values(3.14, indices=[0,2], location='vertices')
757
+
758
+ # Indices refer to triangle numbers here - not vertices (why?)
759
+ assert num.allclose(quantity.vertex_values,
760
+ [[3.14,3.14,3.14], [0,0,0],
761
+ [3.14,3.14,3.14], [0,0,0]])
762
+
763
+
764
+
765
+ # Now try with polygon (pick points where y>2)
766
+ polygon = num.array([[0,2.1], [4,2.1], [4,7], [0,7]])
767
+ polygon += [G.xllcorner, G.yllcorner]
768
+
769
+ quantity.set_values(0.0)
770
+ quantity.set_values(3.14, polygon=polygon, location='centroids')
771
+ assert num.allclose(quantity.vertex_values,
772
+ [[0,0,0], [0,0,0], [0,0,0],
773
+ [3.14,3.14,3.14]])
774
+
775
+
776
+ # Another polygon (pick triangle 1 and 2 (rightmost triangles)
777
+ polygon = num.array([[2.1, 0.0], [3.5,0.1], [2,2.2], [0.2,2]])
778
+ polygon += [G.xllcorner, G.yllcorner]
779
+
780
+ quantity.set_values(0.0)
781
+ quantity.set_values(3.14, polygon=polygon)
782
+ msg = ('quantity.vertex_values=\n%s\nshould be close to\n'
783
+ '[[0,0,0],\n'
784
+ ' [3.14,3.14,3.14],\n'
785
+ ' [3.14,3.14,3.14],\n'
786
+ ' [0,0,0]]' % str(quantity.vertex_values))
787
+ assert num.allclose(quantity.vertex_values,
788
+ [[0,0,0],
789
+ [3.14,3.14,3.14],
790
+ [3.14,3.14,3.14],
791
+ [0,0,0]]), msg
792
+
793
+
794
+
795
+ def test_set_values_using_fit(self):
796
+
797
+
798
+ quantity = Quantity(self.mesh4)
799
+
800
+ #Get (enough) datapoints
801
+ data_points = [[ 0.66666667, 0.66666667],
802
+ [ 1.33333333, 1.33333333],
803
+ [ 2.66666667, 0.66666667],
804
+ [ 0.66666667, 2.66666667],
805
+ [ 0.0, 1.0],
806
+ [ 0.0, 3.0],
807
+ [ 1.0, 0.0],
808
+ [ 1.0, 1.0],
809
+ [ 1.0, 2.0],
810
+ [ 1.0, 3.0],
811
+ [ 2.0, 1.0],
812
+ [ 3.0, 0.0],
813
+ [ 3.0, 1.0]]
814
+
815
+ z = linear_function(data_points)
816
+
817
+ #Use built-in fit_interpolate.fit
818
+ quantity.set_values( Geospatial_data(data_points, z), alpha = 0 )
819
+ #quantity.set_values(points = data_points, values = z, alpha = 0)
820
+
821
+
822
+ answer = linear_function(quantity.domain.get_vertex_coordinates())
823
+ #print quantity.vertex_values, answer
824
+ assert num.allclose(quantity.vertex_values.flat, answer)
825
+
826
+
827
+ #Now try by setting the same values directly
828
+ vertex_attributes = fit_to_mesh(data_points,
829
+ quantity.domain.get_nodes(),
830
+ quantity.domain.get_triangles(),
831
+ point_attributes=z,
832
+ alpha = 0,
833
+ verbose=False)
834
+
835
+ #print vertex_attributes
836
+ quantity.set_values(vertex_attributes)
837
+ assert num.allclose(quantity.vertex_values.flat, answer)
838
+
839
+
840
+
841
+
842
+
843
+ def test_test_set_values_using_fit_w_geo(self):
844
+
845
+
846
+ #Mesh
847
+ vertex_coordinates = [[0.76, 0.76],
848
+ [0.76, 5.76],
849
+ [5.76, 0.76]]
850
+ triangles = [[0,2,1]]
851
+
852
+ mesh_georef = Geo_reference(56,-0.76,-0.76)
853
+ mesh1 = Generic_Domain(vertex_coordinates, triangles,
854
+ geo_reference = mesh_georef)
855
+ mesh1.check_integrity()
856
+
857
+ #Quantity
858
+ quantity = Quantity(mesh1)
859
+
860
+ #Data
861
+ data_points = [[ 201.0, 401.0],
862
+ [ 201.0, 403.0],
863
+ [ 203.0, 401.0]]
864
+
865
+ z = [2, 4, 4]
866
+
867
+ data_georef = Geo_reference(56,-200,-400)
868
+
869
+
870
+ #Reference
871
+ ref = fit_to_mesh(data_points, vertex_coordinates, triangles,
872
+ point_attributes=z,
873
+ data_origin = data_georef.get_origin(),
874
+ mesh_origin = mesh_georef.get_origin(),
875
+ alpha = 0)
876
+
877
+ assert num.allclose( ref, [0,5,5] )
878
+
879
+
880
+ #Test set_values
881
+
882
+ quantity.set_values( Geospatial_data(data_points, z, data_georef), alpha = 0 )
883
+
884
+ #quantity.set_values(points = data_points,
885
+ # values = z,
886
+ # data_georef = data_georef,
887
+ # alpha = 0)
888
+
889
+
890
+ #quantity.set_values(points = data_points,
891
+ # values = z,
892
+ # data_georef = data_georef,
893
+ # alpha = 0)
894
+ assert num.allclose(quantity.vertex_values.flat, ref)
895
+
896
+
897
+
898
+ #Test set_values using geospatial data object
899
+ quantity.vertex_values[:] = 0.0
900
+
901
+ geo = Geospatial_data(data_points, z, data_georef)
902
+
903
+
904
+ quantity.set_values(geospatial_data = geo, alpha = 0)
905
+ assert num.allclose(quantity.vertex_values.flat, ref)
906
+
907
+
908
+
909
+ def test_set_values_from_file1(self):
910
+ quantity = Quantity(self.mesh4)
911
+
912
+ #Get (enough) datapoints
913
+ data_points = [[ 0.66666667, 0.66666667],
914
+ [ 1.33333333, 1.33333333],
915
+ [ 2.66666667, 0.66666667],
916
+ [ 0.66666667, 2.66666667],
917
+ [ 0.0, 1.0],
918
+ [ 0.0, 3.0],
919
+ [ 1.0, 0.0],
920
+ [ 1.0, 1.0],
921
+ [ 1.0, 2.0],
922
+ [ 1.0, 3.0],
923
+ [ 2.0, 1.0],
924
+ [ 3.0, 0.0],
925
+ [ 3.0, 1.0]]
926
+
927
+ data_geo_spatial = Geospatial_data(data_points,
928
+ geo_reference = Geo_reference(56, 0, 0))
929
+ data_points_absolute = data_geo_spatial.get_data_points(absolute=True)
930
+ attributes = linear_function(data_points_absolute)
931
+ att = 'spam_and_eggs'
932
+
933
+ #Create .txt file
934
+ ptsfile = tempfile.mktemp(".txt")
935
+ file = open(ptsfile,"w")
936
+ file.write(" x,y," + att + " \n")
937
+ for data_point, attribute in map(None, data_points_absolute
938
+ ,attributes):
939
+ row = str(data_point[0]) + ',' + str(data_point[1]) \
940
+ + ',' + str(attribute)
941
+ file.write(row + "\n")
942
+ file.close()
943
+
944
+
945
+ #Check that values can be set from file
946
+ quantity.set_values(filename = ptsfile,
947
+ attribute_name = att, alpha = 0)
948
+ answer = linear_function(quantity.domain.get_vertex_coordinates())
949
+
950
+ #print quantity.vertex_values.flat
951
+ #print answer
952
+
953
+
954
+ assert num.allclose(quantity.vertex_values.flat, answer)
955
+
956
+
957
+ #Check that values can be set from file using default attribute
958
+ quantity.set_values(filename = ptsfile, alpha = 0)
959
+ assert num.allclose(quantity.vertex_values.flat, answer)
960
+
961
+ #Cleanup
962
+ import os
963
+ os.remove(ptsfile)
964
+
965
+
966
+
967
+ def Xtest_set_values_from_file_using_polygon(self):
968
+ """test_set_values_from_file_using_polygon(self):
969
+
970
+ Test that polygon restriction works for general points data
971
+ """
972
+
973
+ quantity = Quantity(self.mesh4)
974
+
975
+ #Get (enough) datapoints
976
+ data_points = [[ 0.66666667, 0.66666667],
977
+ [ 1.33333333, 1.33333333],
978
+ [ 2.66666667, 0.66666667],
979
+ [ 0.66666667, 2.66666667],
980
+ [ 0.0, 1.0],
981
+ [ 0.0, 3.0],
982
+ [ 1.0, 0.0],
983
+ [ 1.0, 1.0],
984
+ [ 1.0, 2.0],
985
+ [ 1.0, 3.0],
986
+ [ 2.0, 1.0],
987
+ [ 3.0, 0.0],
988
+ [ 3.0, 1.0]]
989
+
990
+ data_geo_spatial = Geospatial_data(data_points,
991
+ geo_reference = Geo_reference(56, 0, 0))
992
+ data_points_absolute = data_geo_spatial.get_data_points(absolute=True)
993
+ attributes = linear_function(data_points_absolute)
994
+ att = 'spam_and_eggs'
995
+
996
+ #Create .txt file
997
+ ptsfile = tempfile.mktemp(".txt")
998
+ file = open(ptsfile,"w")
999
+ file.write(" x,y," + att + " \n")
1000
+ for data_point, attribute in map(None, data_points_absolute
1001
+ ,attributes):
1002
+ row = str(data_point[0]) + ',' + str(data_point[1]) \
1003
+ + ',' + str(attribute)
1004
+ file.write(row + "\n")
1005
+ file.close()
1006
+
1007
+ # Create restricting polygon (containing node #4 (2,2) and
1008
+ # centroid of triangle #1 (bce)
1009
+ polygon = [[1.0, 1.0], [4.0, 1.0],
1010
+ [4.0, 4.0], [1.0, 4.0]]
1011
+
1012
+ #print self.mesh4.nodes
1013
+ #print inside_polygon(self.mesh4.nodes, polygon)
1014
+ assert num.allclose(inside_polygon(self.mesh4.nodes, polygon), 4)
1015
+
1016
+ #print quantity.domain.get_vertex_coordinates()
1017
+ #print quantity.domain.get_nodes()
1018
+
1019
+ # Check that values can be set from file
1020
+ quantity.set_values(filename=ptsfile,
1021
+ polygon=polygon,
1022
+ location='unique vertices',
1023
+ alpha=0)
1024
+
1025
+ # Get indices for vertex coordinates in polygon
1026
+ indices = inside_polygon(quantity.domain.get_vertex_coordinates(),
1027
+ polygon)
1028
+ points = num.take(quantity.domain.get_vertex_coordinates(), indices)
1029
+
1030
+ answer = linear_function(points)
1031
+
1032
+ #print quantity.vertex_values.flat
1033
+ #print answer
1034
+
1035
+ # Check vertices in polygon have been set
1036
+ assert num.allclose(num.take(quantity.vertex_values.flat, indices),
1037
+ answer)
1038
+
1039
+ # Check vertices outside polygon are zero
1040
+ indices = outside_polygon(quantity.domain.get_vertex_coordinates(),
1041
+ polygon)
1042
+ assert num.allclose(num.take(quantity.vertex_values.flat, indices),
1043
+ 0.0)
1044
+
1045
+ #Cleanup
1046
+ import os
1047
+ os.remove(ptsfile)
1048
+
1049
+
1050
+
1051
+
1052
+ def test_cache_test_set_values_from_file(self):
1053
+ # FIXME (Ole): What is this about?
1054
+ # I don't think it checks anything new
1055
+ quantity = Quantity(self.mesh4)
1056
+
1057
+ #Get (enough) datapoints
1058
+ data_points = [[ 0.66666667, 0.66666667],
1059
+ [ 1.33333333, 1.33333333],
1060
+ [ 2.66666667, 0.66666667],
1061
+ [ 0.66666667, 2.66666667],
1062
+ [ 0.0, 1.0],
1063
+ [ 0.0, 3.0],
1064
+ [ 1.0, 0.0],
1065
+ [ 1.0, 1.0],
1066
+ [ 1.0, 2.0],
1067
+ [ 1.0, 3.0],
1068
+ [ 2.0, 1.0],
1069
+ [ 3.0, 0.0],
1070
+ [ 3.0, 1.0]]
1071
+
1072
+ georef = Geo_reference(56, 0, 0)
1073
+ data_geo_spatial = Geospatial_data(data_points,
1074
+ geo_reference=georef)
1075
+
1076
+ data_points_absolute = data_geo_spatial.get_data_points(absolute=True)
1077
+ attributes = linear_function(data_points_absolute)
1078
+ att = 'spam_and_eggs'
1079
+
1080
+ # Create .txt file
1081
+ ptsfile = tempfile.mktemp(".txt")
1082
+ file = open(ptsfile,"w")
1083
+ file.write(" x,y," + att + " \n")
1084
+ for data_point, attribute in map(None, data_points_absolute
1085
+ ,attributes):
1086
+ row = str(data_point[0]) + ',' + str(data_point[1]) \
1087
+ + ',' + str(attribute)
1088
+ file.write(row + "\n")
1089
+ file.close()
1090
+
1091
+
1092
+ # Check that values can be set from file
1093
+ quantity.set_values(filename=ptsfile,
1094
+ attribute_name=att,
1095
+ alpha=0,
1096
+ use_cache=True,
1097
+ verbose=False)
1098
+ answer = linear_function(quantity.domain.get_vertex_coordinates())
1099
+ assert num.allclose(quantity.vertex_values.flat, answer)
1100
+
1101
+
1102
+ # Check that values can be set from file using default attribute
1103
+ quantity.set_values(filename=ptsfile,
1104
+ alpha=0)
1105
+ assert num.allclose(quantity.vertex_values.flat, answer)
1106
+
1107
+ # Check cache
1108
+ quantity.set_values(filename=ptsfile,
1109
+ attribute_name=att,
1110
+ alpha=0,
1111
+ use_cache=True,
1112
+ verbose=False)
1113
+
1114
+
1115
+ #Cleanup
1116
+ import os
1117
+ os.remove(ptsfile)
1118
+
1119
+ def test_set_values_from_lat_long(self):
1120
+ quantity = Quantity(self.mesh_onslow)
1121
+
1122
+ #Get (enough) datapoints
1123
+ data_points = [[-21.5, 114.5],[-21.4, 114.6],[-21.45,114.65],
1124
+ [-21.35, 114.65],[-21.45, 114.55],[-21.45,114.6]]
1125
+
1126
+ data_geo_spatial = Geospatial_data(data_points,
1127
+ points_are_lats_longs=True)
1128
+ points_UTM = data_geo_spatial.get_data_points(absolute=True)
1129
+ attributes = linear_function(points_UTM)
1130
+ att = 'elevation'
1131
+
1132
+ #Create .txt file
1133
+ txt_file = tempfile.mktemp(".txt")
1134
+ file = open(txt_file,"w")
1135
+ file.write(" lat,long," + att + " \n")
1136
+ for data_point, attribute in map(None, data_points, attributes):
1137
+ row = str(data_point[0]) + ',' + str(data_point[1]) \
1138
+ + ',' + str(attribute)
1139
+ #print "row", row
1140
+ file.write(row + "\n")
1141
+ file.close()
1142
+
1143
+
1144
+ #Check that values can be set from file
1145
+ quantity.set_values(filename=txt_file,
1146
+ attribute_name=att,
1147
+ alpha=0)
1148
+ answer = linear_function(quantity.domain.get_vertex_coordinates())
1149
+
1150
+ #print "quantity.vertex_values.flat", quantity.vertex_values.flat
1151
+ #print "answer",answer
1152
+
1153
+ assert num.allclose(quantity.vertex_values.flat, answer)
1154
+
1155
+
1156
+ #Check that values can be set from file using default attribute
1157
+ quantity.set_values(filename=txt_file, alpha=0)
1158
+ assert num.allclose(quantity.vertex_values.flat, answer)
1159
+
1160
+ #Cleanup
1161
+ import os
1162
+ os.remove(txt_file)
1163
+
1164
+ def test_set_values_from_lat_long_2(self):
1165
+ quantity = Quantity(self.mesh_onslow)
1166
+
1167
+ #Get (enough) datapoints
1168
+ data_points = [[-21.5, 114.5],[-21.4, 114.6],[-21.45,114.65],
1169
+ [-21.35, 114.65],[-21.45, 114.55],[-21.45,114.6]]
1170
+
1171
+ data_geo_spatial = Geospatial_data(data_points,
1172
+ points_are_lats_longs=True)
1173
+ points_UTM = data_geo_spatial.get_data_points(absolute=True)
1174
+ attributes = linear_function(points_UTM)
1175
+ att = 'elevation'
1176
+
1177
+ #Create .txt file
1178
+ txt_file = tempfile.mktemp(".txt")
1179
+ file = open(txt_file,"w")
1180
+ file.write(" lat,long," + att + " \n")
1181
+ for data_point, attribute in map(None, data_points, attributes):
1182
+ row = str(data_point[0]) + ',' + str(data_point[1]) \
1183
+ + ',' + str(attribute)
1184
+ #print "row", row
1185
+ file.write(row + "\n")
1186
+ file.close()
1187
+
1188
+
1189
+ #Check that values can be set from file
1190
+ quantity.set_values(filename=txt_file,
1191
+ attribute_name=att, alpha=0)
1192
+ answer = linear_function(quantity.domain.get_vertex_coordinates())
1193
+
1194
+ #print "quantity.vertex_values.flat", quantity.vertex_values.flat
1195
+ #print "answer",answer
1196
+
1197
+ assert num.allclose(quantity.vertex_values.flat, answer)
1198
+
1199
+
1200
+ #Check that values can be set from file using default attribute
1201
+ quantity.set_values(filename=txt_file, alpha=0)
1202
+ assert num.allclose(quantity.vertex_values.flat, answer)
1203
+
1204
+ #Cleanup
1205
+ import os
1206
+ os.remove(txt_file)
1207
+
1208
+ def test_set_values_from_UTM_pts(self):
1209
+ quantity = Quantity(self.mesh_onslow)
1210
+
1211
+ #Get (enough) datapoints
1212
+ data_points = [[-21.5, 114.5],[-21.4, 114.6],[-21.45,114.65],
1213
+ [-21.35, 114.65],[-21.45, 114.55],[-21.45,114.6]]
1214
+
1215
+ data_geo_spatial = Geospatial_data(data_points,
1216
+ points_are_lats_longs=True)
1217
+ points_UTM = data_geo_spatial.get_data_points(absolute=True)
1218
+ attributes = linear_function(points_UTM)
1219
+ att = 'elevation'
1220
+
1221
+ #Create .txt file
1222
+ txt_file = tempfile.mktemp(".txt")
1223
+ file = open(txt_file,"w")
1224
+ file.write(" x,y," + att + " \n")
1225
+ for data_point, attribute in map(None, points_UTM, attributes):
1226
+ row = str(data_point[0]) + ',' + str(data_point[1]) \
1227
+ + ',' + str(attribute)
1228
+ #print "row", row
1229
+ file.write(row + "\n")
1230
+ file.close()
1231
+
1232
+
1233
+ pts_file = tempfile.mktemp(".pts")
1234
+ convert = Geospatial_data(txt_file)
1235
+ convert.export_points_file(pts_file)
1236
+
1237
+ #Check that values can be set from file
1238
+ quantity.set_values_from_file(pts_file, att, 0,
1239
+ 'vertices', None)
1240
+ answer = linear_function(quantity.domain.get_vertex_coordinates())
1241
+ #print "quantity.vertex_values.flat", quantity.vertex_values.flat
1242
+ #print "answer",answer
1243
+ assert num.allclose(quantity.vertex_values.flat, answer)
1244
+
1245
+ #Check that values can be set from file
1246
+ quantity.set_values(filename=pts_file,
1247
+ attribute_name=att, alpha=0)
1248
+ answer = linear_function(quantity.domain.get_vertex_coordinates())
1249
+ #print "quantity.vertex_values.flat", quantity.vertex_values.flat
1250
+ #print "answer",answer
1251
+ assert num.allclose(quantity.vertex_values.flat, answer)
1252
+
1253
+
1254
+ #Check that values can be set from file using default attribute
1255
+ quantity.set_values(filename=txt_file, alpha=0)
1256
+ assert num.allclose(quantity.vertex_values.flat, answer)
1257
+
1258
+ #Cleanup
1259
+ import os
1260
+ os.remove(txt_file)
1261
+ os.remove(pts_file)
1262
+
1263
+ def test_set_values_from_UTM_pts_verbose(self):
1264
+ quantity = Quantity(self.mesh_onslow)
1265
+
1266
+ #Get (enough) datapoints
1267
+ data_points = [[-21.5, 114.5],[-21.4, 114.6],[-21.45,114.65],
1268
+ [-21.35, 114.65],[-21.45, 114.55],[-21.45,114.6],
1269
+ [-21.5, 114.5],[-21.4, 114.6],[-21.45,114.65],
1270
+ [-21.35, 114.65],[-21.45, 114.55],[-21.45,114.6],
1271
+ [-21.5, 114.5],[-21.4, 114.6],[-21.45,114.65],
1272
+ [-21.35, 114.65],[-21.45, 114.55],[-21.45,114.6],
1273
+ [-21.5, 114.5],[-21.4, 114.6],[-21.45,114.65],
1274
+ [-21.35, 114.65],[-21.45, 114.55],[-21.45,114.6],
1275
+ [-21.5, 114.5],[-21.4, 114.6],[-21.45,114.65],
1276
+ [-21.35, 114.65],[-21.45, 114.55],[-21.45,114.6],
1277
+ [-21.5, 114.5],[-21.4, 114.6],[-21.45,114.65],
1278
+ [-21.35, 114.65],[-21.45, 114.55],[-21.45,114.6],
1279
+ [-21.5, 114.5],[-21.4, 114.6],[-21.45,114.65],
1280
+ [-21.35, 114.65],[-21.45, 114.55],[-21.45,114.6],
1281
+ [-21.35, 114.65],[-21.45, 114.55],[-21.45,114.6],
1282
+ [-21.5, 114.5],[-21.4, 114.6],[-21.45,114.65],
1283
+ [-21.35, 114.65],[-21.45, 114.55],[-21.45,114.6],
1284
+ [-21.5, 114.5],[-21.4, 114.6],[-21.45,114.65],
1285
+ [-21.35, 114.65],[-21.45, 114.55],[-21.45,114.6],
1286
+ [-21.5, 114.5],[-21.4, 114.6],[-21.45,114.65],
1287
+ [-21.35, 114.65],[-21.45, 114.55],[-21.45,114.6],
1288
+ [-21.5, 114.5],[-21.4, 114.6],[-21.45,114.65],
1289
+ [-21.35, 114.65],[-21.45, 114.55],[-21.45,114.6],
1290
+ [-21.5, 114.5],[-21.4, 114.6],[-21.45,114.65],
1291
+ [-21.35, 114.65],[-21.45, 114.55],[-21.45,114.6],
1292
+ [-21.5, 114.5],[-21.4, 114.6],[-21.45,114.65],
1293
+ [-21.35, 114.65],[-21.45, 114.55],[-21.45,114.6],
1294
+ ]
1295
+
1296
+ data_geo_spatial = Geospatial_data(data_points,
1297
+ points_are_lats_longs=True)
1298
+ points_UTM = data_geo_spatial.get_data_points(absolute=True)
1299
+ attributes = linear_function(points_UTM)
1300
+ att = 'elevation'
1301
+
1302
+ #Create .txt file
1303
+ txt_file = tempfile.mktemp(".txt")
1304
+ file = open(txt_file,"w")
1305
+ file.write(" x,y," + att + " \n")
1306
+ for data_point, attribute in map(None, points_UTM, attributes):
1307
+ row = str(data_point[0]) + ',' + str(data_point[1]) \
1308
+ + ',' + str(attribute)
1309
+ #print "row", row
1310
+ file.write(row + "\n")
1311
+ file.close()
1312
+
1313
+
1314
+ pts_file = tempfile.mktemp(".pts")
1315
+ convert = Geospatial_data(txt_file)
1316
+ convert.export_points_file(pts_file)
1317
+
1318
+ #Check that values can be set from file
1319
+ quantity.set_values_from_file(pts_file, att, 0,
1320
+ 'vertices', None, verbose = False,
1321
+ max_read_lines=2)
1322
+ answer = linear_function(quantity.domain.get_vertex_coordinates())
1323
+ #print "quantity.vertex_values.flat", quantity.vertex_values.flat
1324
+ #print "answer",answer
1325
+ assert num.allclose(quantity.vertex_values.flat, answer)
1326
+
1327
+ #Check that values can be set from file
1328
+ quantity.set_values(filename=pts_file,
1329
+ attribute_name=att, alpha=0)
1330
+ answer = linear_function(quantity.domain.get_vertex_coordinates())
1331
+ #print "quantity.vertex_values.flat", quantity.vertex_values.flat
1332
+ #print "answer",answer
1333
+ assert num.allclose(quantity.vertex_values.flat, answer)
1334
+
1335
+
1336
+ #Check that values can be set from file using default attribute
1337
+ quantity.set_values(filename=txt_file, alpha=0)
1338
+ assert num.allclose(quantity.vertex_values.flat, answer)
1339
+
1340
+ #Cleanup
1341
+ import os
1342
+ os.remove(txt_file)
1343
+ os.remove(pts_file)
1344
+
1345
+ def test_set_values_from_file_with_georef1(self):
1346
+
1347
+ #Mesh in zone 56 (absolute coords)
1348
+
1349
+ x0 = 314036.58727982
1350
+ y0 = 6224951.2960092
1351
+
1352
+ a = [x0+0.0, y0+0.0]
1353
+ b = [x0+0.0, y0+2.0]
1354
+ c = [x0+2.0, y0+0.0]
1355
+ d = [x0+0.0, y0+4.0]
1356
+ e = [x0+2.0, y0+2.0]
1357
+ f = [x0+4.0, y0+0.0]
1358
+
1359
+ points = [a, b, c, d, e, f]
1360
+
1361
+ #bac, bce, ecf, dbe
1362
+ elements = [ [1,0,2], [1,2,4], [4,2,5], [3,1,4] ]
1363
+
1364
+ #absolute going in ..
1365
+ mesh4 = Generic_Domain(points, elements,
1366
+ geo_reference = Geo_reference(56, 0, 0))
1367
+ mesh4.check_integrity()
1368
+ quantity = Quantity(mesh4)
1369
+
1370
+ #Get (enough) datapoints (relative to georef)
1371
+ data_points_rel = [[ 0.66666667, 0.66666667],
1372
+ [ 1.33333333, 1.33333333],
1373
+ [ 2.66666667, 0.66666667],
1374
+ [ 0.66666667, 2.66666667],
1375
+ [ 0.0, 1.0],
1376
+ [ 0.0, 3.0],
1377
+ [ 1.0, 0.0],
1378
+ [ 1.0, 1.0],
1379
+ [ 1.0, 2.0],
1380
+ [ 1.0, 3.0],
1381
+ [ 2.0, 1.0],
1382
+ [ 3.0, 0.0],
1383
+ [ 3.0, 1.0]]
1384
+
1385
+ data_geo_spatial = Geospatial_data(data_points_rel,
1386
+ geo_reference = Geo_reference(56, x0, y0))
1387
+ data_points_absolute = data_geo_spatial.get_data_points(absolute=True)
1388
+ attributes = linear_function(data_points_absolute)
1389
+ att = 'spam_and_eggs'
1390
+
1391
+ #Create .txt file
1392
+ ptsfile = tempfile.mktemp(".txt")
1393
+ file = open(ptsfile,"w")
1394
+ file.write(" x,y," + att + " \n")
1395
+ for data_point, attribute in map(None, data_points_absolute
1396
+ ,attributes):
1397
+ row = str(data_point[0]) + ',' + str(data_point[1]) \
1398
+ + ',' + str(attribute)
1399
+ file.write(row + "\n")
1400
+ file.close()
1401
+
1402
+ #file = open(ptsfile, 'r')
1403
+ #lines = file.readlines()
1404
+ #file.close()
1405
+
1406
+
1407
+ #Check that values can be set from file
1408
+ quantity.set_values(filename=ptsfile,
1409
+ attribute_name=att, alpha=0)
1410
+ answer = linear_function(quantity.domain.get_vertex_coordinates())
1411
+
1412
+ assert num.allclose(quantity.vertex_values.flat, answer)
1413
+
1414
+
1415
+ #Check that values can be set from file using default attribute
1416
+ quantity.set_values(filename=ptsfile, alpha=0)
1417
+ assert num.allclose(quantity.vertex_values.flat, answer)
1418
+
1419
+ #Cleanup
1420
+ import os
1421
+ os.remove(ptsfile)
1422
+
1423
+
1424
+ def test_set_values_from_file_with_georef2(self):
1425
+
1426
+ #Mesh in zone 56 (relative coords)
1427
+
1428
+ x0 = 314036.58727982
1429
+ y0 = 6224951.2960092
1430
+ #x0 = 0.0
1431
+ #y0 = 0.0
1432
+
1433
+ a = [0.0, 0.0]
1434
+ b = [0.0, 2.0]
1435
+ c = [2.0, 0.0]
1436
+ d = [0.0, 4.0]
1437
+ e = [2.0, 2.0]
1438
+ f = [4.0, 0.0]
1439
+
1440
+ points = [a, b, c, d, e, f]
1441
+
1442
+ #bac, bce, ecf, dbe
1443
+ elements = [ [1,0,2], [1,2,4], [4,2,5], [3,1,4] ]
1444
+
1445
+ mesh4 = Generic_Domain(points, elements,
1446
+ geo_reference = Geo_reference(56, x0, y0))
1447
+ mesh4.check_integrity()
1448
+ quantity = Quantity(mesh4)
1449
+
1450
+ #Get (enough) datapoints
1451
+ data_points = [[ x0+0.66666667, y0+0.66666667],
1452
+ [ x0+1.33333333, y0+1.33333333],
1453
+ [ x0+2.66666667, y0+0.66666667],
1454
+ [ x0+0.66666667, y0+2.66666667],
1455
+ [ x0+0.0, y0+1.0],
1456
+ [ x0+0.0, y0+3.0],
1457
+ [ x0+1.0, y0+0.0],
1458
+ [ x0+1.0, y0+1.0],
1459
+ [ x0+1.0, y0+2.0],
1460
+ [ x0+1.0, y0+3.0],
1461
+ [ x0+2.0, y0+1.0],
1462
+ [ x0+3.0, y0+0.0],
1463
+ [ x0+3.0, y0+1.0]]
1464
+
1465
+
1466
+ data_geo_spatial = Geospatial_data(data_points,
1467
+ geo_reference = Geo_reference(56, 0, 0))
1468
+ data_points_absolute = data_geo_spatial.get_data_points(absolute=True)
1469
+ attributes = linear_function(data_points_absolute)
1470
+ att = 'spam_and_eggs'
1471
+
1472
+ #Create .txt file
1473
+ ptsfile = tempfile.mktemp(".txt")
1474
+ file = open(ptsfile,"w")
1475
+ file.write(" x,y," + att + " \n")
1476
+ for data_point, attribute in map(None, data_points_absolute
1477
+ ,attributes):
1478
+ row = str(data_point[0]) + ',' + str(data_point[1]) \
1479
+ + ',' + str(attribute)
1480
+ file.write(row + "\n")
1481
+ file.close()
1482
+
1483
+
1484
+ #Check that values can be set from file
1485
+ quantity.set_values(filename=ptsfile,
1486
+ attribute_name=att, alpha=0)
1487
+ answer = linear_function(quantity.domain. \
1488
+ get_vertex_coordinates(absolute=True))
1489
+
1490
+
1491
+ assert num.allclose(quantity.vertex_values.flat, answer)
1492
+
1493
+
1494
+ #Check that values can be set from file using default attribute
1495
+ quantity.set_values(filename=ptsfile, alpha=0)
1496
+ assert num.allclose(quantity.vertex_values.flat, answer)
1497
+
1498
+ #Cleanup
1499
+ import os
1500
+ os.remove(ptsfile)
1501
+
1502
+
1503
+ def test_set_values_from_utm_grid_file(self):
1504
+
1505
+
1506
+
1507
+ x0 = 0.0
1508
+ y0 = 0.0
1509
+
1510
+ a = [0.0, 0.0]
1511
+ b = [0.0, 2.0]
1512
+ c = [2.0, 0.0]
1513
+ d = [0.0, 4.0]
1514
+ e = [2.0, 2.0]
1515
+ f = [4.0, 0.0]
1516
+
1517
+ points = [a, b, c, d, e, f]
1518
+
1519
+ #bac, bce, ecf, dbe
1520
+ elements = [ [1,0,2], [1,2,4], [4,2,5], [3,1,4] ]
1521
+
1522
+ mesh4 = Generic_Domain(points, elements)
1523
+ # geo_reference = Geo_reference(56, x0, y0))
1524
+ mesh4.check_integrity()
1525
+ quantity = Quantity(mesh4)
1526
+
1527
+ """ Format of asc file
1528
+ ncols 11
1529
+ nrows 12
1530
+ xllcorner 240000
1531
+ yllcorner 7620000
1532
+ cellsize 6000
1533
+ NODATA_value -9999
1534
+ """
1535
+ ncols = 11 # Nx
1536
+ nrows = 12 # Ny
1537
+ xllcorner = x0
1538
+ yllcorner = y0
1539
+ cellsize = 1.0
1540
+ NODATA_value = -9999
1541
+
1542
+ #xllcorner = 0
1543
+ #yllcorner = 100
1544
+ #cellsize = 10
1545
+ #NODATA_value = -9999
1546
+
1547
+ #Create .asc file
1548
+ #txt_file = tempfile.mktemp(".asc")
1549
+ txt_file = 'test_asc.asc'
1550
+ datafile = open(txt_file,"w")
1551
+ datafile.write('ncols '+str(ncols)+"\n")
1552
+ datafile.write('nrows '+str(nrows)+"\n")
1553
+ datafile.write('xllcorner '+str(xllcorner)+"\n")
1554
+ datafile.write('yllcorner '+str(yllcorner)+"\n")
1555
+ datafile.write('cellsize '+str(cellsize)+"\n")
1556
+ datafile.write('NODATA_value '+str(NODATA_value)+"\n")
1557
+
1558
+ x = num.linspace(xllcorner, xllcorner+(ncols-1)*cellsize, ncols)
1559
+ y = num.linspace(yllcorner, yllcorner+(nrows-1)*cellsize, nrows)
1560
+ points = axes2points(x, y)
1561
+
1562
+ #print points
1563
+ #print x.shape, x
1564
+ #print y.shape, y
1565
+
1566
+ datavalues = linear_function(points)
1567
+ #print datavalues
1568
+
1569
+ datavalues = datavalues.reshape(nrows,ncols)
1570
+
1571
+ #print datavalues
1572
+ #print datavalues.shape
1573
+ for row in datavalues:
1574
+ #print row
1575
+ datafile.write(" ".join(str(elem) for elem in row) + "\n")
1576
+ datafile.close()
1577
+
1578
+ #print quantity.vertex_values
1579
+ #print quantity.centroid_values
1580
+
1581
+ quantity.set_values_from_utm_grid_file(txt_file,
1582
+ location='vertices',
1583
+ indices=None,
1584
+ verbose=False)
1585
+
1586
+ # check order of vertices
1587
+
1588
+ answer = [[ 6., 0., 2.],
1589
+ [ 6., 2., 8.],
1590
+ [ 8., 2., 4.],
1591
+ [ 12., 6., 8.]]
1592
+ #print quantity.vertex_values
1593
+ assert num.allclose(quantity.vertex_values, answer)
1594
+
1595
+
1596
+ #print quantity.vertex_values
1597
+ #print quantity.centroid_values
1598
+ quantity.set_values(0.0)
1599
+
1600
+
1601
+ #print quantity.vertex_values
1602
+ #print quantity.centroid_values
1603
+ quantity.set_values_from_utm_grid_file(txt_file,
1604
+ location='centroids',
1605
+ indices=None,
1606
+ verbose=False)
1607
+
1608
+ #print quantity.vertex_values
1609
+ #print quantity.centroid_values
1610
+
1611
+
1612
+ answer = [ 2.66666667, 5.33333333, 4.66666667, 8.66666667]
1613
+
1614
+ assert num.allclose(quantity.centroid_values, answer)
1615
+ #Cleanup
1616
+ #import os
1617
+ os.remove(txt_file)
1618
+
1619
+
1620
+
1621
+ def test_set_values_from_quantity(self):
1622
+
1623
+ quantity1 = Quantity(self.mesh4)
1624
+ quantity1.set_vertex_values([0,1,2,3,4,5])
1625
+
1626
+ assert num.allclose(quantity1.vertex_values,
1627
+ [[1,0,2], [1,2,4], [4,2,5], [3,1,4]])
1628
+
1629
+
1630
+ quantity2 = Quantity(self.mesh4)
1631
+ quantity2.set_values(quantity=quantity1)
1632
+ assert num.allclose(quantity2.vertex_values,
1633
+ [[1,0,2], [1,2,4], [4,2,5], [3,1,4]])
1634
+
1635
+ quantity2.set_values(quantity = 2*quantity1)
1636
+ assert num.allclose(quantity2.vertex_values,
1637
+ [[2,0,4], [2,4,8], [8,4,10], [6,2,8]])
1638
+
1639
+ quantity2.set_values(quantity = 2*quantity1 + 3)
1640
+ assert num.allclose(quantity2.vertex_values,
1641
+ [[5,3,7], [5,7,11], [11,7,13], [9,5,11]])
1642
+
1643
+
1644
+ #Check detection of quantity as first orgument
1645
+ quantity2.set_values(2*quantity1 + 3)
1646
+ assert num.allclose(quantity2.vertex_values,
1647
+ [[5,3,7], [5,7,11], [11,7,13], [9,5,11]])
1648
+
1649
+
1650
+
1651
+ def Xtest_set_values_from_quantity_using_polygon(self):
1652
+ """test_set_values_from_quantity_using_polygon(self):
1653
+
1654
+ Check that polygon can be used to restrict set_values when
1655
+ using another quantity as argument.
1656
+ """
1657
+
1658
+ # Create restricting polygon (containing node #4 (2,2) and
1659
+ # centroid of triangle #1 (bce)
1660
+ polygon = [[1.0, 1.0], [4.0, 1.0],
1661
+ [4.0, 4.0], [1.0, 4.0]]
1662
+ assert num.allclose(inside_polygon(self.mesh4.nodes, polygon), 4)
1663
+
1664
+ quantity1 = Quantity(self.mesh4)
1665
+ quantity1.set_vertex_values([0,1,2,3,4,5])
1666
+
1667
+ assert num.allclose(quantity1.vertex_values,
1668
+ [[1,0,2], [1,2,4], [4,2,5], [3,1,4]])
1669
+
1670
+
1671
+ quantity2 = Quantity(self.mesh4)
1672
+ quantity2.set_values(quantity=quantity1,
1673
+ polygon=polygon)
1674
+
1675
+ msg = 'Only node #4(e) at (2,2) should have values applied '
1676
+ assert num.allclose(quantity2.vertex_values,
1677
+ [[0,0,0], [0,0,4], [4,0,0], [0,0,4]]), msg
1678
+ #bac, bce, ecf, dbe
1679
+
1680
+
1681
+
1682
+ def test_overloading(self):
1683
+
1684
+ quantity1 = Quantity(self.mesh4)
1685
+ quantity1.set_vertex_values([0,1,2,3,4,5])
1686
+
1687
+ assert num.allclose(quantity1.vertex_values,
1688
+ [[1,0,2], [1,2,4], [4,2,5], [3,1,4]])
1689
+
1690
+
1691
+ quantity2 = Quantity(self.mesh4)
1692
+ quantity2.set_values([[1,2,3], [5,5,5], [0,0,9], [-6, 3, 3]],
1693
+ location = 'vertices')
1694
+
1695
+
1696
+
1697
+ quantity3 = Quantity(self.mesh4)
1698
+ quantity3.set_values([[2,2,2], [7,8,9], [7,6,3], [3, 8, -8]],
1699
+ location = 'vertices')
1700
+
1701
+
1702
+ # Negation
1703
+ Q = -quantity1
1704
+ assert num.allclose(Q.vertex_values, -quantity1.vertex_values)
1705
+ assert num.allclose(Q.centroid_values, -quantity1.centroid_values)
1706
+ assert num.allclose(Q.edge_values, -quantity1.edge_values)
1707
+
1708
+ # Addition
1709
+ Q = quantity1 + 7
1710
+ assert num.allclose(Q.vertex_values, quantity1.vertex_values + 7)
1711
+ assert num.allclose(Q.centroid_values, quantity1.centroid_values + 7)
1712
+ assert num.allclose(Q.edge_values, quantity1.edge_values + 7)
1713
+
1714
+ Q = 7 + quantity1
1715
+ assert num.allclose(Q.vertex_values, quantity1.vertex_values + 7)
1716
+ assert num.allclose(Q.centroid_values, quantity1.centroid_values + 7)
1717
+ assert num.allclose(Q.edge_values, quantity1.edge_values + 7)
1718
+
1719
+ Q = quantity1 + quantity2
1720
+ assert num.allclose(Q.vertex_values,
1721
+ quantity1.vertex_values + quantity2.vertex_values)
1722
+ assert num.allclose(Q.centroid_values,
1723
+ quantity1.centroid_values + quantity2.centroid_values)
1724
+ assert num.allclose(Q.edge_values,
1725
+ quantity1.edge_values + quantity2.edge_values)
1726
+
1727
+
1728
+ Q = quantity1 + quantity2 - 3
1729
+ assert num.allclose(Q.vertex_values,
1730
+ quantity1.vertex_values + quantity2.vertex_values - 3)
1731
+
1732
+ Q = quantity1 - quantity2
1733
+ assert num.allclose(Q.vertex_values,
1734
+ quantity1.vertex_values - quantity2.vertex_values)
1735
+
1736
+ #Scaling
1737
+ Q = quantity1*3
1738
+ assert num.allclose(Q.vertex_values, quantity1.vertex_values*3)
1739
+ assert num.allclose(Q.centroid_values, quantity1.centroid_values*3)
1740
+ assert num.allclose(Q.edge_values, quantity1.edge_values*3)
1741
+ Q = 3*quantity1
1742
+ assert num.allclose(Q.vertex_values, quantity1.vertex_values*3)
1743
+
1744
+ #Multiplication
1745
+ Q = quantity1 * quantity2
1746
+ #print Q.vertex_values
1747
+ #print Q.centroid_values
1748
+ #print quantity1.centroid_values
1749
+ #print quantity2.centroid_values
1750
+
1751
+ assert num.allclose(Q.vertex_values,
1752
+ quantity1.vertex_values * quantity2.vertex_values)
1753
+
1754
+ #Linear combinations
1755
+ Q = 4*quantity1 + 2
1756
+ assert num.allclose(Q.vertex_values,
1757
+ 4*quantity1.vertex_values + 2)
1758
+
1759
+ Q = quantity1*quantity2 + 2
1760
+ assert num.allclose(Q.vertex_values,
1761
+ quantity1.vertex_values * quantity2.vertex_values + 2)
1762
+
1763
+ Q = quantity1*quantity2 + quantity3
1764
+ assert num.allclose(Q.vertex_values,
1765
+ quantity1.vertex_values * quantity2.vertex_values +
1766
+ quantity3.vertex_values)
1767
+ Q = quantity1*quantity2 + 3*quantity3
1768
+ assert num.allclose(Q.vertex_values,
1769
+ quantity1.vertex_values * quantity2.vertex_values +
1770
+ 3*quantity3.vertex_values)
1771
+ Q = quantity1*quantity2 + 3*quantity3 + 5.0
1772
+ assert num.allclose(Q.vertex_values,
1773
+ quantity1.vertex_values * quantity2.vertex_values +
1774
+ 3*quantity3.vertex_values + 5)
1775
+
1776
+ Q = quantity1*quantity2 - quantity3
1777
+ assert num.allclose(Q.vertex_values,
1778
+ quantity1.vertex_values * quantity2.vertex_values -
1779
+ quantity3.vertex_values)
1780
+ Q = 1.5*quantity1*quantity2 - 3*quantity3 + 5.0
1781
+ assert num.allclose(Q.vertex_values,
1782
+ 1.5*quantity1.vertex_values * quantity2.vertex_values -
1783
+ 3*quantity3.vertex_values + 5)
1784
+
1785
+ #Try combining quantities and arrays and scalars
1786
+ Q = 1.5*quantity1*quantity2.vertex_values -\
1787
+ 3*quantity3.vertex_values + 5.0
1788
+ assert num.allclose(Q.vertex_values,
1789
+ 1.5*quantity1.vertex_values * quantity2.vertex_values -
1790
+ 3*quantity3.vertex_values + 5)
1791
+
1792
+
1793
+ #Powers
1794
+ Q = quantity1**2
1795
+ assert num.allclose(Q.vertex_values, quantity1.vertex_values**2)
1796
+
1797
+ Q = quantity1**2 +quantity2**2
1798
+ assert num.allclose(Q.vertex_values,
1799
+ quantity1.vertex_values**2 + \
1800
+ quantity2.vertex_values**2)
1801
+
1802
+ Q = (quantity1**2 +quantity2**2)**0.5
1803
+ assert num.allclose(Q.vertex_values,
1804
+ (quantity1.vertex_values**2 + \
1805
+ quantity2.vertex_values**2)**0.5)
1806
+
1807
+
1808
+
1809
+
1810
+
1811
+
1812
+
1813
+ def test_compute_gradient(self):
1814
+ quantity = Quantity(self.mesh4)
1815
+
1816
+ #Set up for a gradient of (2,0) at mid triangle
1817
+ quantity.set_values([2.0, 4.0, 6.0, 2.0],
1818
+ location = 'centroids')
1819
+
1820
+
1821
+ #Gradients
1822
+ quantity.compute_gradients()
1823
+
1824
+ a = quantity.x_gradient
1825
+ b = quantity.y_gradient
1826
+ #print self.mesh4.centroid_coordinates
1827
+ #print a, b
1828
+
1829
+ #The central triangle (1)
1830
+ #(using standard gradient based on neigbours controid values)
1831
+ assert num.allclose(a[1], 2.0)
1832
+ assert num.allclose(b[1], 0.0)
1833
+
1834
+
1835
+ #Left triangle (0) using two point gradient
1836
+ #q0 = q1 + a*(x0-x1) + b*(y0-y1) <=>
1837
+ #2 = 4 + a*(-2/3) + b*(-2/3)
1838
+ assert num.allclose(a[0] + b[0], 3)
1839
+ #From orthogonality (a*(y0-y1) + b*(x0-x1) == 0)
1840
+ assert num.allclose(a[0] - b[0], 0)
1841
+
1842
+
1843
+ #Right triangle (2) using two point gradient
1844
+ #q2 = q1 + a*(x2-x1) + b*(y2-y1) <=>
1845
+ #6 = 4 + a*(4/3) + b*(-2/3)
1846
+ assert num.allclose(2*a[2] - b[2], 3)
1847
+ #From orthogonality (a*(y1-y2) + b*(x2-x1) == 0)
1848
+ assert num.allclose(a[2] + 2*b[2], 0)
1849
+
1850
+
1851
+ #Top triangle (3) using two point gradient
1852
+ #q3 = q1 + a*(x3-x1) + b*(y3-y1) <=>
1853
+ #2 = 4 + a*(-2/3) + b*(4/3)
1854
+ assert num.allclose(a[3] - 2*b[3], 3)
1855
+ #From orthogonality (a*(y1-y3) + b*(x3-x1) == 0)
1856
+ assert num.allclose(2*a[3] + b[3], 0)
1857
+
1858
+
1859
+
1860
+ #print a, b
1861
+ quantity.extrapolate_second_order()
1862
+
1863
+ #Apply q(x,y) = qc + a*(x-xc) + b*(y-yc)
1864
+ assert num.allclose(quantity.vertex_values[0,:], [3., 0., 3.])
1865
+ assert num.allclose(quantity.vertex_values[1,:], [4./3, 16./3, 16./3])
1866
+
1867
+
1868
+ #a = 1.2, b=-0.6
1869
+ #q(4,0) = 6 + a*(4 - 8/3) + b*(-2/3)
1870
+ assert num.allclose(quantity.vertex_values[2,2], 8)
1871
+
1872
+ def test_get_gradients(self):
1873
+ quantity = Quantity(self.mesh4)
1874
+
1875
+ #Set up for a gradient of (2,0) at mid triangle
1876
+ quantity.set_values([2.0, 4.0, 6.0, 2.0],
1877
+ location = 'centroids')
1878
+
1879
+
1880
+ #Gradients
1881
+ quantity.compute_gradients()
1882
+
1883
+ a, b = quantity.get_gradients()
1884
+ #print self.mesh4.centroid_coordinates
1885
+ #print a, b
1886
+
1887
+ #The central triangle (1)
1888
+ #(using standard gradient based on neigbours controid values)
1889
+ assert num.allclose(a[1], 2.0)
1890
+ assert num.allclose(b[1], 0.0)
1891
+
1892
+
1893
+ #Left triangle (0) using two point gradient
1894
+ #q0 = q1 + a*(x0-x1) + b*(y0-y1) <=>
1895
+ #2 = 4 + a*(-2/3) + b*(-2/3)
1896
+ assert num.allclose(a[0] + b[0], 3)
1897
+ #From orthogonality (a*(y0-y1) + b*(x0-x1) == 0)
1898
+ assert num.allclose(a[0] - b[0], 0)
1899
+
1900
+
1901
+ #Right triangle (2) using two point gradient
1902
+ #q2 = q1 + a*(x2-x1) + b*(y2-y1) <=>
1903
+ #6 = 4 + a*(4/3) + b*(-2/3)
1904
+ assert num.allclose(2*a[2] - b[2], 3)
1905
+ #From orthogonality (a*(y1-y2) + b*(x2-x1) == 0)
1906
+ assert num.allclose(a[2] + 2*b[2], 0)
1907
+
1908
+
1909
+ #Top triangle (3) using two point gradient
1910
+ #q3 = q1 + a*(x3-x1) + b*(y3-y1) <=>
1911
+ #2 = 4 + a*(-2/3) + b*(4/3)
1912
+ assert num.allclose(a[3] - 2*b[3], 3)
1913
+ #From orthogonality (a*(y1-y3) + b*(x3-x1) == 0)
1914
+ assert num.allclose(2*a[3] + b[3], 0)
1915
+
1916
+
1917
+ def test_second_order_extrapolation2(self):
1918
+ quantity = Quantity(self.mesh4)
1919
+
1920
+ #Set up for a gradient of (3,1), f(x) = 3x+y
1921
+ quantity.set_values([2.0+2.0/3, 4.0+4.0/3, 8.0+2.0/3, 2.0+8.0/3],
1922
+ location = 'centroids')
1923
+
1924
+ #Gradients
1925
+ quantity.compute_gradients()
1926
+
1927
+ a = quantity.x_gradient
1928
+ b = quantity.y_gradient
1929
+
1930
+ #print a, b
1931
+
1932
+ assert num.allclose(a[1], 3.0)
1933
+ assert num.allclose(b[1], 1.0)
1934
+
1935
+ #Work out the others
1936
+
1937
+ quantity.extrapolate_second_order()
1938
+
1939
+ #print quantity.vertex_values
1940
+ assert num.allclose(quantity.vertex_values[1,0], 2.0)
1941
+ assert num.allclose(quantity.vertex_values[1,1], 6.0)
1942
+ assert num.allclose(quantity.vertex_values[1,2], 8.0)
1943
+
1944
+
1945
+
1946
+ def test_backup_saxpy_centroid_values(self):
1947
+ quantity = Quantity(self.mesh4)
1948
+
1949
+ #Set up for a gradient of (3,1), f(x) = 3x+y
1950
+ c_values = num.array([2.0+2.0/3, 4.0+4.0/3, 8.0+2.0/3, 2.0+8.0/3])
1951
+ d_values = num.array([1.0, 2.0, 3.0, 4.0])
1952
+ quantity.set_values(c_values, location = 'centroids')
1953
+
1954
+ #Backup
1955
+ quantity.backup_centroid_values()
1956
+
1957
+ #print quantity.vertex_values
1958
+ assert num.allclose(quantity.centroid_values, quantity.centroid_backup_values)
1959
+
1960
+
1961
+ quantity.set_values(d_values, location = 'centroids')
1962
+
1963
+ quantity.saxpy_centroid_values(2.0, 3.0)
1964
+
1965
+ assert num.allclose(quantity.centroid_values, 2.0*d_values + 3.0*c_values)
1966
+
1967
+
1968
+
1969
+ def test_first_order_extrapolator(self):
1970
+ quantity = Quantity(self.mesh4)
1971
+
1972
+ #Test centroids
1973
+ quantity.set_values([1.,2.,3.,4.], location = 'centroids')
1974
+ assert num.allclose(quantity.centroid_values, [1, 2, 3, 4]) #Centroid
1975
+
1976
+ #Extrapolate
1977
+ quantity.extrapolate_first_order()
1978
+
1979
+ #Check that gradient is zero
1980
+ a,b = quantity.get_gradients()
1981
+ assert num.allclose(a, [0,0,0,0])
1982
+ assert num.allclose(b, [0,0,0,0])
1983
+
1984
+ #Check vertices but not edge values
1985
+ assert num.allclose(quantity.vertex_values,
1986
+ [[1,1,1], [2,2,2], [3,3,3], [4, 4, 4]])
1987
+
1988
+
1989
+ def test_second_order_extrapolator(self):
1990
+ quantity = Quantity(self.mesh4)
1991
+
1992
+ #Set up for a gradient of (3,0) at mid triangle
1993
+ quantity.set_values([2.0, 4.0, 8.0, 2.0],
1994
+ location = 'centroids')
1995
+
1996
+
1997
+
1998
+ quantity.extrapolate_second_order()
1999
+ quantity.limit()
2000
+
2001
+
2002
+ #Assert that central triangle is limited by neighbours
2003
+ assert quantity.vertex_values[1,0] >= quantity.vertex_values[0,0]
2004
+ assert quantity.vertex_values[1,0] >= quantity.vertex_values[3,1]
2005
+
2006
+ assert quantity.vertex_values[1,1] <= quantity.vertex_values[2,1]
2007
+ assert quantity.vertex_values[1,1] >= quantity.vertex_values[0,2]
2008
+
2009
+ assert quantity.vertex_values[1,2] <= quantity.vertex_values[2,0]
2010
+ assert quantity.vertex_values[1,2] >= quantity.vertex_values[3,1]
2011
+
2012
+
2013
+ #Assert that quantities are conserved
2014
+ for k in range(quantity.centroid_values.shape[0]):
2015
+ assert num.allclose (quantity.centroid_values[k],
2016
+ num.sum(quantity.vertex_values[k,:])/3)
2017
+
2018
+
2019
+
2020
+
2021
+
2022
+ def test_limit_vertices_by_all_neighbours(self):
2023
+ quantity = Quantity(self.mesh4)
2024
+
2025
+ #Create a deliberate overshoot (e.g. from gradient computation)
2026
+ quantity.set_values([[3,0,3], [2,2,6], [5,3,8], [8,3,5]])
2027
+
2028
+
2029
+ #Limit
2030
+ quantity.limit_vertices_by_all_neighbours()
2031
+
2032
+ #Assert that central triangle is limited by neighbours
2033
+ assert quantity.vertex_values[1,0] >= quantity.vertex_values[0,0]
2034
+ assert quantity.vertex_values[1,0] <= quantity.vertex_values[3,1]
2035
+
2036
+ assert quantity.vertex_values[1,1] <= quantity.vertex_values[2,1]
2037
+ assert quantity.vertex_values[1,1] >= quantity.vertex_values[0,2]
2038
+
2039
+ assert quantity.vertex_values[1,2] <= quantity.vertex_values[2,0]
2040
+ assert quantity.vertex_values[1,2] <= quantity.vertex_values[3,1]
2041
+
2042
+
2043
+
2044
+ #Assert that quantities are conserved
2045
+ for k in range(quantity.centroid_values.shape[0]):
2046
+ assert num.allclose (quantity.centroid_values[k],
2047
+ num.sum(quantity.vertex_values[k,:])/3)
2048
+
2049
+
2050
+
2051
+ def test_limit_edges_by_all_neighbours(self):
2052
+ quantity = Quantity(self.mesh4)
2053
+
2054
+ #Create a deliberate overshoot (e.g. from gradient computation)
2055
+ quantity.set_values([[3,0,3], [2,2,6], [5,3,8], [8,3,5]])
2056
+
2057
+
2058
+ #Limit
2059
+ quantity.limit_edges_by_all_neighbours()
2060
+
2061
+ #Assert that central triangle is limited by neighbours
2062
+ assert quantity.edge_values[1,0] <= quantity.centroid_values[2]
2063
+ assert quantity.edge_values[1,0] >= quantity.centroid_values[0]
2064
+
2065
+ assert quantity.edge_values[1,1] <= quantity.centroid_values[2]
2066
+ assert quantity.edge_values[1,1] >= quantity.centroid_values[0]
2067
+
2068
+ assert quantity.edge_values[1,2] <= quantity.centroid_values[2]
2069
+ assert quantity.edge_values[1,2] >= quantity.centroid_values[0]
2070
+
2071
+
2072
+
2073
+ #Assert that quantities are conserved
2074
+ for k in range(quantity.centroid_values.shape[0]):
2075
+ assert num.allclose (quantity.centroid_values[k],
2076
+ num.sum(quantity.vertex_values[k,:])/3)
2077
+
2078
+
2079
+ def test_limit_edges_by_neighbour(self):
2080
+ quantity = Quantity(self.mesh4)
2081
+
2082
+ #Create a deliberate overshoot (e.g. from gradient computation)
2083
+ quantity.set_values([[3,0,3], [2,2,6], [5,3,8], [8,3,5]])
2084
+
2085
+
2086
+ #Limit
2087
+ quantity.limit_edges_by_neighbour()
2088
+
2089
+ #Assert that central triangle is limited by neighbours
2090
+ assert quantity.edge_values[1,0] <= quantity.centroid_values[3]
2091
+ assert quantity.edge_values[1,0] >= quantity.centroid_values[1]
2092
+
2093
+ assert quantity.edge_values[1,1] <= quantity.centroid_values[2]
2094
+ assert quantity.edge_values[1,1] >= quantity.centroid_values[1]
2095
+
2096
+ assert quantity.edge_values[1,2] <= quantity.centroid_values[1]
2097
+ assert quantity.edge_values[1,2] >= quantity.centroid_values[0]
2098
+
2099
+
2100
+
2101
+ #Assert that quantities are conserved
2102
+ for k in range(quantity.centroid_values.shape[0]):
2103
+ assert num.allclose (quantity.centroid_values[k],
2104
+ num.sum(quantity.vertex_values[k,:])/3)
2105
+
2106
+ def test_limiter2(self):
2107
+ """Taken from test_shallow_water
2108
+ """
2109
+ quantity = Quantity(self.mesh4)
2110
+ quantity.domain.beta_w = 0.9
2111
+
2112
+ #Test centroids
2113
+ quantity.set_values([2.,4.,8.,2.], location = 'centroids')
2114
+ assert num.allclose(quantity.centroid_values, [2, 4, 8, 2]) #Centroid
2115
+
2116
+
2117
+ #Extrapolate
2118
+ quantity.extrapolate_second_order()
2119
+
2120
+ assert num.allclose(quantity.vertex_values[1,:], [0.0, 6, 6])
2121
+
2122
+ #Limit
2123
+ quantity.limit()
2124
+
2125
+ # limited value for beta_w = 0.9
2126
+
2127
+ assert num.allclose(quantity.vertex_values[1,:], [2.2, 4.9, 4.9])
2128
+ # limited values for beta_w = 0.5
2129
+ #assert allclose(quantity.vertex_values[1,:], [3.0, 4.5, 4.5])
2130
+
2131
+
2132
+ #Assert that quantities are conserved
2133
+ for k in range(quantity.centroid_values.shape[0]):
2134
+ assert num.allclose (quantity.centroid_values[k],
2135
+ num.sum(quantity.vertex_values[k,:])/3)
2136
+
2137
+
2138
+
2139
+
2140
+
2141
+ def test_distribute_first_order(self):
2142
+ quantity = Quantity(self.mesh4)
2143
+
2144
+ #Test centroids
2145
+ quantity.set_values([1.,2.,3.,4.], location = 'centroids')
2146
+ assert num.allclose(quantity.centroid_values, [1, 2, 3, 4]) #Centroid
2147
+
2148
+
2149
+ #Extrapolate from centroid to vertices and edges
2150
+ quantity.extrapolate_first_order()
2151
+
2152
+ #Interpolate
2153
+ #quantity.interpolate_from_vertices_to_edges()
2154
+
2155
+ assert num.allclose(quantity.vertex_values,
2156
+ [[1,1,1], [2,2,2], [3,3,3], [4, 4, 4]])
2157
+ assert num.allclose(quantity.edge_values, [[1,1,1], [2,2,2],
2158
+ [3,3,3], [4, 4, 4]])
2159
+
2160
+
2161
+ def test_interpolate_from_vertices_to_edges(self):
2162
+ quantity = Quantity(self.mesh4)
2163
+
2164
+ quantity.vertex_values = num.array([[1,0,2], [1,2,4], [4,2,5], [3,1,4]], num.float)
2165
+
2166
+ quantity.interpolate_from_vertices_to_edges()
2167
+
2168
+ assert num.allclose(quantity.edge_values, [[1., 1.5, 0.5],
2169
+ [3., 2.5, 1.5],
2170
+ [3.5, 4.5, 3.],
2171
+ [2.5, 3.5, 2]])
2172
+
2173
+
2174
+ def test_interpolate_from_edges_to_vertices(self):
2175
+ quantity = Quantity(self.mesh4)
2176
+
2177
+ quantity.edge_values = num.array([[1., 1.5, 0.5],
2178
+ [3., 2.5, 1.5],
2179
+ [3.5, 4.5, 3.],
2180
+ [2.5, 3.5, 2]], num.float)
2181
+
2182
+ quantity.interpolate_from_edges_to_vertices()
2183
+
2184
+ assert num.allclose(quantity.vertex_values,
2185
+ [[1,0,2], [1,2,4], [4,2,5], [3,1,4]])
2186
+
2187
+
2188
+
2189
+ def test_distribute_second_order(self):
2190
+ quantity = Quantity(self.mesh4)
2191
+
2192
+ #Test centroids
2193
+ quantity.set_values([2.,4.,8.,2.], location = 'centroids')
2194
+ assert num.allclose(quantity.centroid_values, [2, 4, 8, 2]) #Centroid
2195
+
2196
+
2197
+ #Extrapolate
2198
+ quantity.extrapolate_second_order()
2199
+
2200
+ assert num.allclose(quantity.vertex_values[1,:], [0.0, 6, 6])
2201
+
2202
+
2203
+ def test_update_explicit(self):
2204
+ quantity = Quantity(self.mesh4)
2205
+
2206
+ #Test centroids
2207
+ quantity.set_values([1.,2.,3.,4.], location = 'centroids')
2208
+ assert num.allclose(quantity.centroid_values, [1, 2, 3, 4]) #Centroid
2209
+
2210
+ #Set explicit_update
2211
+ quantity.explicit_update = num.array( [1.,1.,1.,1.] )
2212
+
2213
+ #Update with given timestep
2214
+ quantity.update(0.1)
2215
+
2216
+ x = num.array([1, 2, 3, 4]) + num.array( [.1,.1,.1,.1] )
2217
+ assert num.allclose( quantity.centroid_values, x)
2218
+
2219
+ def test_update_semi_implicit(self):
2220
+ quantity = Quantity(self.mesh4)
2221
+
2222
+ #Test centroids
2223
+ quantity.set_values([1.,2.,3.,4.], location = 'centroids')
2224
+ assert num.allclose(quantity.centroid_values, [1, 2, 3, 4]) #Centroid
2225
+
2226
+ #Set semi implicit update
2227
+ quantity.semi_implicit_update = num.array([1.,1.,1.,1.])
2228
+
2229
+ #Update with given timestep
2230
+ timestep = 0.1
2231
+ quantity.update(timestep)
2232
+
2233
+ sem = num.array([1.,1.,1.,1.])/num.array([1, 2, 3, 4])
2234
+ denom = num.ones(4, num.float)-timestep*sem
2235
+
2236
+ x = num.array([1, 2, 3, 4])/denom
2237
+ assert num.allclose( quantity.centroid_values, x)
2238
+
2239
+
2240
+ def test_both_updates(self):
2241
+ quantity = Quantity(self.mesh4)
2242
+
2243
+ #Test centroids
2244
+ quantity.set_values([1.,2.,3.,4.], location = 'centroids')
2245
+ assert num.allclose(quantity.centroid_values, [1, 2, 3, 4]) #Centroid
2246
+
2247
+ #Set explicit_update
2248
+ quantity.explicit_update = num.array( [4.,3.,2.,1.] )
2249
+
2250
+ #Set semi implicit update
2251
+ quantity.semi_implicit_update = num.array( [1.,1.,1.,1.] )
2252
+
2253
+ #Update with given timestep
2254
+ timestep = 0.1
2255
+ quantity.update(0.1)
2256
+
2257
+ sem = num.array([1.,1.,1.,1.])/num.array([1, 2, 3, 4])
2258
+ denom = num.ones(4, num.float)-timestep*sem
2259
+
2260
+ x = num.array([1., 2., 3., 4.])
2261
+ x += timestep*num.array( [4.0, 3.0, 2.0, 1.0] )
2262
+ x /= denom
2263
+
2264
+
2265
+ assert num.allclose( quantity.centroid_values, x)
2266
+
2267
+
2268
+
2269
+ def set_array_values_by_index(self):
2270
+
2271
+ from anuga.abstract_2d_finite_volumes.mesh_factory import rectangular
2272
+
2273
+ #Create basic mesh
2274
+ points, vertices, boundary = rectangular(1, 1)
2275
+
2276
+ #Create shallow water domain
2277
+ domain = Generic_Domain(points, vertices, boundary)
2278
+ #print "domain.number_of_elements ",domain.number_of_elements
2279
+ quantity = Quantity(domain,[[1,1,1],[2,2,2]])
2280
+ value = [7]
2281
+ indices = [1]
2282
+ quantity.set_array_values_by_index(value,
2283
+ location = 'centroids',
2284
+ indices = indices)
2285
+ #print "quantity.centroid_values",quantity.centroid_values
2286
+
2287
+ assert num.allclose(quantity.centroid_values, [1,7])
2288
+
2289
+ quantity.set_array_values([15,20,25], indices = indices)
2290
+ assert num.allclose(quantity.centroid_values, [1,20])
2291
+
2292
+ quantity.set_array_values([15,20,25], indices = indices)
2293
+ assert num.allclose(quantity.centroid_values, [1,20])
2294
+
2295
+ def test_setting_some_vertex_values(self):
2296
+ """
2297
+ set values based on triangle lists.
2298
+ """
2299
+ from anuga.abstract_2d_finite_volumes.mesh_factory import rectangular
2300
+
2301
+ #Create basic mesh
2302
+ points, vertices, boundary = rectangular(1, 3)
2303
+ #print "vertices",vertices
2304
+ #Create shallow water domain
2305
+ domain = Generic_Domain(points, vertices, boundary)
2306
+ #print "domain.number_of_elements ",domain.number_of_elements
2307
+ quantity = Quantity(domain,[[1,1,1],[2,2,2],[3,3,3],
2308
+ [4,4,4],[5,5,5],[6,6,6]])
2309
+
2310
+
2311
+ # Check that constants work
2312
+ value = 7
2313
+ indices = [1]
2314
+ quantity.set_values(value,
2315
+ location = 'centroids',
2316
+ indices = indices)
2317
+ #print "quantity.centroid_values",quantity.centroid_values
2318
+ assert num.allclose(quantity.centroid_values, [1,7,3,4,5,6])
2319
+
2320
+ value = [7]
2321
+ indices = [1]
2322
+ quantity.set_values(value,
2323
+ location = 'centroids',
2324
+ indices = indices)
2325
+ #print "quantity.centroid_values",quantity.centroid_values
2326
+ assert num.allclose(quantity.centroid_values, [1,7,3,4,5,6])
2327
+
2328
+ value = [[15,20,25]]
2329
+ quantity.set_values(value, indices = indices)
2330
+ #print "1 quantity.vertex_values",quantity.vertex_values
2331
+ assert num.allclose(quantity.vertex_values[1], value[0])
2332
+
2333
+
2334
+ #print "quantity",quantity.vertex_values
2335
+ values = [10,100,50]
2336
+ quantity.set_values(values, indices = [0,1,5], location = 'centroids')
2337
+ #print "2 quantity.vertex_values",quantity.vertex_values
2338
+ assert num.allclose(quantity.vertex_values[0], [10,10,10])
2339
+ assert num.allclose(quantity.vertex_values[5], [50,50,50])
2340
+ #quantity.interpolate()
2341
+ #print "quantity.centroid_values",quantity.centroid_values
2342
+ assert num.allclose(quantity.centroid_values, [10,100,3,4,5,50])
2343
+
2344
+
2345
+ quantity = Quantity(domain,[[1,1,1],[2,2,2],[3,3,3],
2346
+ [4,4,4],[5,5,5],[6,6,6]])
2347
+ values = [10,100,50]
2348
+ #this will be per unique vertex, indexing the vertices
2349
+ #print "quantity.vertex_values",quantity.vertex_values
2350
+ quantity.set_values(values, indices = [0,1,5])
2351
+ #print "quantity.vertex_values",quantity.vertex_values
2352
+ assert num.allclose(quantity.vertex_values[0], [1,50,10])
2353
+ assert num.allclose(quantity.vertex_values[5], [6,6,6])
2354
+ assert num.allclose(quantity.vertex_values[1], [100,10,50])
2355
+
2356
+ quantity = Quantity(domain,[[1,1,1],[2,2,2],[3,3,3],
2357
+ [4,4,4],[5,5,5],[6,6,6]])
2358
+ values = [[31,30,29],[400,400,400],[1000,999,998]]
2359
+ quantity.set_values(values, indices = [3,3,5])
2360
+ quantity.interpolate()
2361
+ assert num.allclose(quantity.centroid_values, [1,2,3,400,5,999])
2362
+
2363
+ values = [[1,1,1],[2,2,2],[3,3,3],
2364
+ [4,4,4],[5,5,5],[6,6,6]]
2365
+ quantity.set_values(values)
2366
+
2367
+ # testing the standard set values by vertex
2368
+ # indexed by vertex_id in general_mesh.coordinates
2369
+ values = [0,1,2,3,4,5,6,7]
2370
+
2371
+ quantity.set_values(values)
2372
+ #print "1 quantity.vertex_values",quantity.vertex_values
2373
+ assert num.allclose(quantity.vertex_values,[[ 4., 5., 0.],
2374
+ [ 1., 0., 5.],
2375
+ [ 5., 6., 1.],
2376
+ [ 2., 1., 6.],
2377
+ [ 6., 7., 2.],
2378
+ [ 3., 2., 7.]])
2379
+
2380
+ def test_setting_unique_vertex_values(self):
2381
+ """
2382
+ set values based on unique_vertex lists.
2383
+ """
2384
+ from anuga.abstract_2d_finite_volumes.mesh_factory import rectangular
2385
+
2386
+ #Create basic mesh
2387
+ points, vertices, boundary = rectangular(1, 3)
2388
+ #print "vertices",vertices
2389
+ #Create shallow water domain
2390
+ domain = Generic_Domain(points, vertices, boundary)
2391
+ #print "domain.number_of_elements ",domain.number_of_elements
2392
+ quantity = Quantity(domain,[[0,0,0],[1,1,1],[2,2,2],[3,3,3],
2393
+ [4,4,4],[5,5,5]])
2394
+ value = 7
2395
+ indices = [1,5]
2396
+ quantity.set_values(value,
2397
+ location='unique vertices',
2398
+ indices=indices)
2399
+ #print "quantity.centroid_values",quantity.centroid_values
2400
+ assert num.allclose(quantity.vertex_values[0], [0,7,0])
2401
+ assert num.allclose(quantity.vertex_values[1], [7,1,7])
2402
+ assert num.allclose(quantity.vertex_values[2], [7,2,7])
2403
+
2404
+
2405
+ def test_get_values(self):
2406
+ """
2407
+ get values based on triangle lists.
2408
+ """
2409
+ from anuga.abstract_2d_finite_volumes.mesh_factory import rectangular
2410
+
2411
+ #Create basic mesh
2412
+ points, vertices, boundary = rectangular(1, 3)
2413
+
2414
+ #print "points",points
2415
+ #print "vertices",vertices
2416
+ #print "boundary",boundary
2417
+
2418
+ #Create shallow water domain
2419
+ domain = Generic_Domain(points, vertices, boundary)
2420
+ #print "domain.number_of_elements ",domain.number_of_elements
2421
+ quantity = Quantity(domain,[[0,0,0],[1,1,1],[2,2,2],[3,3,3],
2422
+ [4,4,4],[5,5,5]])
2423
+
2424
+ #print "quantity.get_values(location = 'unique vertices')", \
2425
+ # quantity.get_values(location = 'unique vertices')
2426
+
2427
+ #print "quantity.get_values(location = 'unique vertices')", \
2428
+ # quantity.get_values(indices=[0,1,2,3,4,5,6,7], \
2429
+ # location = 'unique vertices')
2430
+
2431
+ answer = [0.5,2,4,5,0,1,3,4.5]
2432
+ assert num.allclose(answer,
2433
+ quantity.get_values(location='unique vertices'))
2434
+
2435
+ indices = [0,5,3]
2436
+ answer = [0.5,1,5]
2437
+ assert num.allclose(answer,
2438
+ quantity.get_values(indices=indices,
2439
+ location='unique vertices'))
2440
+ #print "quantity.centroid_values",quantity.centroid_values
2441
+ #print "quantity.get_values(location = 'centroids') ",\
2442
+ # quantity.get_values(location = 'centroids')
2443
+
2444
+
2445
+
2446
+
2447
+ def test_get_values_2(self):
2448
+ """Different mesh (working with domain object) - also check centroids.
2449
+ """
2450
+
2451
+
2452
+ a = [0.0, 0.0]
2453
+ b = [0.0, 2.0]
2454
+ c = [2.0,0.0]
2455
+ d = [0.0, 4.0]
2456
+ e = [2.0, 2.0]
2457
+ f = [4.0,0.0]
2458
+
2459
+ points = [a, b, c, d, e, f]
2460
+ #bac, bce, ecf, dbe
2461
+ vertices = [ [1,0,2], [1,2,4], [4,2,5], [3,1,4]]
2462
+
2463
+ domain = Generic_Domain(points, vertices)
2464
+
2465
+ quantity = Quantity(domain)
2466
+ quantity.set_values(lambda x, y: x+2*y) #2 4 4 6
2467
+
2468
+ assert num.allclose(quantity.get_values(location='centroids'),
2469
+ [2,4,4,6])
2470
+
2471
+ assert num.allclose(quantity.get_values(location='centroids',
2472
+ indices=[1,3]), [4,6])
2473
+
2474
+
2475
+ assert num.allclose(quantity.get_values(location='vertices'),
2476
+ [[4,0,2],
2477
+ [4,2,6],
2478
+ [6,2,4],
2479
+ [8,4,6]])
2480
+
2481
+ assert num.allclose(quantity.get_values(location='vertices',
2482
+ indices=[1,3]), [[4,2,6],
2483
+ [8,4,6]])
2484
+
2485
+
2486
+ assert num.allclose(quantity.get_values(location='edges'),
2487
+ [[1,3,2],
2488
+ [4,5,3],
2489
+ [3,5,4],
2490
+ [5,7,6]])
2491
+ assert num.allclose(quantity.get_values(location='edges',
2492
+ indices=[1,3]),
2493
+ [[4,5,3],
2494
+ [5,7,6]])
2495
+
2496
+ # Check averaging over vertices
2497
+ #a: 0
2498
+ #b: (4+4+4)/3
2499
+ #c: (2+2+2)/3
2500
+ #d: 8
2501
+ #e: (6+6+6)/3
2502
+ #f: 4
2503
+ assert num.allclose(quantity.get_values(location='unique vertices'),
2504
+ [0, 4, 2, 8, 6, 4])
2505
+
2506
+
2507
+
2508
+ def test_get_interpolated_values(self):
2509
+
2510
+ from anuga.abstract_2d_finite_volumes.mesh_factory import rectangular
2511
+
2512
+ #Create basic mesh
2513
+ points, vertices, boundary = rectangular(1, 3)
2514
+ domain = Generic_Domain(points, vertices, boundary)
2515
+
2516
+ #Constant values
2517
+ quantity = Quantity(domain,[[0,0,0],[1,1,1],[2,2,2],[3,3,3],
2518
+ [4,4,4],[5,5,5]])
2519
+
2520
+
2521
+
2522
+ # Get interpolated values at centroids
2523
+ interpolation_points = domain.get_centroid_coordinates()
2524
+ answer = quantity.get_values(location='centroids')
2525
+
2526
+
2527
+ #print quantity.get_values(points=interpolation_points)
2528
+ assert num.allclose(answer, quantity.get_values(interpolation_points=interpolation_points))
2529
+
2530
+
2531
+ #Arbitrary values
2532
+ quantity = Quantity(domain,[[0,1,2],[3,1,7],[2,1,2],[3,3,7],
2533
+ [1,4,-9],[2,5,0]])
2534
+
2535
+
2536
+ # Get interpolated values at centroids
2537
+ interpolation_points = domain.get_centroid_coordinates()
2538
+ answer = quantity.get_values(location='centroids')
2539
+ #print answer
2540
+ #print quantity.get_values(interpolation_points=interpolation_points)
2541
+ assert num.allclose(answer,
2542
+ quantity.get_values(interpolation_points=interpolation_points,
2543
+ verbose=False))
2544
+
2545
+
2546
+ #FIXME TODO
2547
+ #indices = [0,5,3]
2548
+ #answer = [0.5,1,5]
2549
+ #assert allclose(answer,
2550
+ # quantity.get_values(indices=indices, \
2551
+ # location = 'unique vertices'))
2552
+
2553
+
2554
+
2555
+
2556
+ def test_get_interpolated_values_2(self):
2557
+ a = [0.0, 0.0]
2558
+ b = [0.0, 2.0]
2559
+ c = [2.0,0.0]
2560
+ d = [0.0, 4.0]
2561
+ e = [2.0, 2.0]
2562
+ f = [4.0,0.0]
2563
+
2564
+ points = [a, b, c, d, e, f]
2565
+ #bac, bce, ecf, dbe
2566
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
2567
+
2568
+ domain = Generic_Domain(points, vertices)
2569
+
2570
+ quantity = Quantity(domain)
2571
+ quantity.set_values(lambda x, y: x+2*y) #2 4 4 6
2572
+
2573
+ #First pick one point
2574
+ x, y = 2.0/3, 8.0/3
2575
+ v = quantity.get_values(interpolation_points = [[x,y]])
2576
+ assert num.allclose(v, 6)
2577
+
2578
+ # Then another to test that algorithm won't blindly
2579
+ # reuse interpolation matrix
2580
+ x, y = 4.0/3, 4.0/3
2581
+ v = quantity.get_values(interpolation_points = [[x,y]])
2582
+ assert num.allclose(v, 4)
2583
+
2584
+
2585
+
2586
+ def test_get_interpolated_values_with_georef(self):
2587
+
2588
+ zone = 56
2589
+ xllcorner = 308500
2590
+ yllcorner = 6189000
2591
+ a = [0.0, 0.0]
2592
+ b = [0.0, 2.0]
2593
+ c = [2.0,0.0]
2594
+ d = [0.0, 4.0]
2595
+ e = [2.0, 2.0]
2596
+ f = [4.0,0.0]
2597
+
2598
+ points = [a, b, c, d, e, f]
2599
+ #bac, bce, ecf, dbe
2600
+ vertices = [[1,0,2], [1,2,4], [4,2,5], [3,1,4]]
2601
+
2602
+ domain = Generic_Domain(points, vertices,
2603
+ geo_reference=Geo_reference(zone,xllcorner,yllcorner))
2604
+
2605
+ quantity = Quantity(domain)
2606
+ quantity.set_values(lambda x, y: x+2*y) #2 4 4 6
2607
+
2608
+ #First pick one point (and turn it into absolute coordinates)
2609
+ x, y = 2.0/3, 8.0/3
2610
+ v = quantity.get_values(interpolation_points = [[x+xllcorner,y+yllcorner]])
2611
+ assert num.allclose(v, 6)
2612
+
2613
+
2614
+ # Then another to test that algorithm won't blindly
2615
+ # reuse interpolation matrix
2616
+ x, y = 4.0/3, 4.0/3
2617
+ v = quantity.get_values(interpolation_points = [[x+xllcorner,y+yllcorner]])
2618
+ assert num.allclose(v, 4)
2619
+
2620
+ # Try two points
2621
+ pts = [[2.0/3 + xllcorner, 8.0/3 + yllcorner],
2622
+ [4.0/3 + xllcorner, 4.0/3 + yllcorner]]
2623
+ v = quantity.get_values(interpolation_points=pts)
2624
+ assert num.allclose(v, [6, 4])
2625
+
2626
+ # Test it using the geospatial data format with absolute input points and default georef
2627
+ pts = Geospatial_data(data_points=pts)
2628
+ v = quantity.get_values(interpolation_points=pts)
2629
+ assert num.allclose(v, [6, 4])
2630
+
2631
+
2632
+ # Test it using the geospatial data format with relative input points
2633
+ pts = Geospatial_data(data_points=[[2.0/3, 8.0/3], [4.0/3, 4.0/3]],
2634
+ geo_reference=Geo_reference(zone,xllcorner,yllcorner))
2635
+ v = quantity.get_values(interpolation_points=pts)
2636
+ assert num.allclose(v, [6, 4])
2637
+
2638
+
2639
+
2640
+
2641
+ def test_getting_some_vertex_values(self):
2642
+ """
2643
+ get values based on triangle lists.
2644
+ """
2645
+ from anuga.abstract_2d_finite_volumes.mesh_factory import rectangular
2646
+
2647
+ #Create basic mesh
2648
+ points, vertices, boundary = rectangular(1, 3)
2649
+
2650
+ #print "points",points
2651
+ #print "vertices",vertices
2652
+ #print "boundary",boundary
2653
+
2654
+ #Create shallow water domain
2655
+ domain = Generic_Domain(points, vertices, boundary)
2656
+ #print "domain.number_of_elements ",domain.number_of_elements
2657
+ quantity = Quantity(domain,[[1,1,1],[2,2,2],[3,3,3],
2658
+ [4,4,4],[5,5,5],[6,6,6]])
2659
+ value = [7]
2660
+ indices = [1]
2661
+ quantity.set_values(value,
2662
+ location = 'centroids',
2663
+ indices = indices)
2664
+ #print "quantity.centroid_values",quantity.centroid_values
2665
+ #print "quantity.get_values(location = 'centroids') ",\
2666
+ # quantity.get_values(location = 'centroids')
2667
+ assert num.allclose(quantity.centroid_values,
2668
+ quantity.get_values(location = 'centroids'))
2669
+
2670
+
2671
+ value = [[15,20,25]]
2672
+ quantity.set_values(value, indices = indices)
2673
+ #print "1 quantity.vertex_values",quantity.vertex_values
2674
+ assert num.allclose(quantity.vertex_values, quantity.get_values())
2675
+
2676
+ assert num.allclose(quantity.edge_values,
2677
+ quantity.get_values(location = 'edges'))
2678
+
2679
+ # get a subset of elements
2680
+ subset = quantity.get_values(location='centroids', indices=[0,5])
2681
+ answer = [quantity.centroid_values[0],quantity.centroid_values[5]]
2682
+ assert num.allclose(subset, answer)
2683
+
2684
+
2685
+ subset = quantity.get_values(location='edges', indices=[0,5])
2686
+ answer = [quantity.edge_values[0],quantity.edge_values[5]]
2687
+ #print "subset",subset
2688
+ #print "answer",answer
2689
+ assert num.allclose(subset, answer)
2690
+
2691
+ subset = quantity.get_values( indices=[1,5])
2692
+ answer = [quantity.vertex_values[1],quantity.vertex_values[5]]
2693
+ #print "subset",subset
2694
+ #print "answer",answer
2695
+ assert num.allclose(subset, answer)
2696
+
2697
+ def test_smooth_vertex_values(self):
2698
+ """
2699
+ get values based on triangle lists.
2700
+ """
2701
+ from anuga.abstract_2d_finite_volumes.mesh_factory import rectangular
2702
+ # from anuga.shallow_water.shallow_water_domain import Domain
2703
+
2704
+ #Create basic mesh
2705
+ points, vertices, boundary = rectangular(2, 2)
2706
+
2707
+ #print "points",points
2708
+ #print "vertices",vertices
2709
+ #print "boundary",boundary
2710
+
2711
+ #Create shallow water domain
2712
+ domain = Generic_Domain(points, vertices, boundary)
2713
+ #print "domain.number_of_elements ",domain.number_of_elements
2714
+ quantity = Quantity(domain,[[0,0,0],[1,1,1],[2,2,2],[3,3,3],
2715
+ [4,4,4],[5,5,5],[6,6,6],[7,7,7]])
2716
+
2717
+ #print "quantity.get_values(location = 'unique vertices')", \
2718
+ # quantity.get_values(location = 'unique vertices')
2719
+
2720
+ #print "quantity.get_values(location = 'unique vertices')", \
2721
+ # quantity.get_values(indices=[0,1,2,3,4,5,6,7], \
2722
+ # location = 'unique vertices')
2723
+
2724
+ #print quantity.get_values(location = 'unique vertices')
2725
+ #print quantity.domain.number_of_triangles_per_node
2726
+ #print quantity.vertex_values
2727
+
2728
+ #answer = [0.5, 2, 3, 3, 3.5, 4, 4, 5, 6.5]
2729
+ #assert allclose(answer,
2730
+ # quantity.get_values(location = 'unique vertices'))
2731
+
2732
+ quantity.smooth_vertex_values()
2733
+
2734
+ #print quantity.vertex_values
2735
+
2736
+
2737
+ answer_vertex_values = [[3,3.5,0.5],[2,0.5,3.5],[3.5,4,2],[3,2,4],
2738
+ [4,5,3],[3.5,3,5],[5,6.5,3.5],[4,3.5,6.5]]
2739
+
2740
+ assert num.allclose(answer_vertex_values,
2741
+ quantity.vertex_values)
2742
+
2743
+ # Just another (slightly larger) test of get_values
2744
+
2745
+ assert num.allclose(quantity.get_values(location='centroids'),
2746
+ quantity.centroid_values)
2747
+
2748
+
2749
+ assert num.allclose(quantity.get_values(location='vertices'),
2750
+ quantity.vertex_values)
2751
+
2752
+ assert num.allclose(quantity.get_values(location='edges'),
2753
+ quantity.edge_values)
2754
+
2755
+
2756
+ def test_maximum(self):
2757
+ quantity = Quantity(self.mesh4)
2758
+
2759
+ # get referece to data arrays
2760
+ centroid_values = quantity.centroid_values
2761
+ vertex_values = quantity.vertex_values
2762
+ edge_values = quantity.edge_values
2763
+
2764
+ quantity.set_values([[1,2,3], [5,5,5], [0,0,9], [-6, 3, 3]],
2765
+ location = 'vertices')
2766
+ assert num.allclose(quantity.vertex_values,
2767
+ [[1,2,3], [5,5,5], [0,0,9], [-6, 3, 3]])
2768
+
2769
+ assert id(vertex_values) == id(quantity.vertex_values)
2770
+ assert num.allclose(quantity.centroid_values, [2., 5., 3., 0.]) #Centroid
2771
+ assert num.allclose(quantity.edge_values, [[2.5, 2.0, 1.5],
2772
+ [5., 5., 5.],
2773
+ [4.5, 4.5, 0.],
2774
+ [3.0, -1.5, -1.5]])
2775
+
2776
+
2777
+
2778
+ other_quantity = Quantity(self.mesh4)
2779
+
2780
+ other_quantity.set_values([[0,0,0], [1,1,6], [10,10,10], [0,0,4]],
2781
+ location = 'vertices')
2782
+
2783
+
2784
+ #===============================
2785
+ quantity.maximum(other_quantity)
2786
+ #===============================
2787
+
2788
+ exact_vertex_values = num.array([[ 1., 2., 3.],
2789
+ [ 5., 5., 6.],
2790
+ [ 10., 10., 10.],
2791
+ [ 0., 3., 4.]])
2792
+ exact_centroid_values = num.array([ 2., 5., 10., 1.33333333])
2793
+ exact_edge_values = num.array([[ 2.5, 2., 1.5],
2794
+ [ 5., 5., 5., ],
2795
+ [ 10., 10., 10. ],
2796
+ [ 3., 2., 0. ]])
2797
+
2798
+
2799
+
2800
+ assert num.allclose(quantity.vertex_values,
2801
+ exact_vertex_values)
2802
+ assert num.allclose(quantity.centroid_values, exact_centroid_values) #Centroid
2803
+ assert num.allclose(quantity.edge_values, exact_edge_values)
2804
+
2805
+ def test_minimum(self):
2806
+ quantity = Quantity(self.mesh4)
2807
+
2808
+ # get referece to data arrays
2809
+ centroid_values = quantity.centroid_values
2810
+ vertex_values = quantity.vertex_values
2811
+ edge_values = quantity.edge_values
2812
+
2813
+ quantity.set_values([[1,2,3], [5,5,5], [0,0,9], [-6, 3, 3]],
2814
+ location = 'vertices')
2815
+ assert num.allclose(quantity.vertex_values,
2816
+ [[1,2,3], [5,5,5], [0,0,9], [-6, 3, 3]])
2817
+
2818
+ assert id(vertex_values) == id(quantity.vertex_values)
2819
+ assert num.allclose(quantity.centroid_values, [2., 5., 3., 0.]) #Centroid
2820
+ assert num.allclose(quantity.edge_values, [[2.5, 2.0, 1.5],
2821
+ [5., 5., 5.],
2822
+ [4.5, 4.5, 0.],
2823
+ [3.0, -1.5, -1.5]])
2824
+
2825
+
2826
+
2827
+ other_quantity = Quantity(self.mesh4)
2828
+
2829
+ other_quantity.set_values([[0,0,0], [1,1,6], [10,10,10], [0,0,4]],
2830
+ location = 'vertices')
2831
+
2832
+
2833
+ #===============================
2834
+ quantity.minimum(other_quantity)
2835
+ #===============================
2836
+
2837
+ exact_vertex_values = num.array([[ 0., 0., 0.],
2838
+ [ 1., 1., 5.],
2839
+ [ 0., 0., 9.],
2840
+ [ -6., 0., 3.]])
2841
+ exact_centroid_values = num.array([ 0., 2.66666667, 3., 0.])
2842
+ exact_edge_values = num.array([[ 0., 0., 0.],
2843
+ [ 3.5, 3.5, 1., ],
2844
+ [ 4.5, 4.5, 0. ],
2845
+ [ 2., -1.5, -1.5 ]])
2846
+
2847
+
2848
+ assert num.allclose(quantity.vertex_values,
2849
+ exact_vertex_values)
2850
+ assert num.allclose(quantity.centroid_values, exact_centroid_values) #Centroid
2851
+ assert num.allclose(quantity.edge_values, exact_edge_values)
2852
+
2853
+
2854
+ #-------------------------------------------------------------
2855
+
2856
+ if __name__ == "__main__":
2857
+ suite = unittest.makeSuite(Test_Quantity, 'test') #_set_values_from_asc')
2858
+ runner = unittest.TextTestRunner(verbosity=1)
2859
+ runner.run(suite)