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,2162 @@
1
+
2
+ """Class Quantity - Implements values at each triangular element
3
+
4
+ To create:
5
+
6
+ Quantity(domain, vertex_values)
7
+
8
+ domain: Associated domain structure. Required.
9
+
10
+ vertex_values: N x 3 array of values at each vertex for each element.
11
+ Default None
12
+
13
+ If vertex_values are None Create array of zeros compatible with domain.
14
+ Otherwise check that it is compatible with dimensions of domain.
15
+ Otherwise raise an exception
16
+
17
+ For Quantities that need to be saved during checkpointing, set register=True. Registered
18
+ Quantities can be found in the dictionary domain.quantities (note, other Quantities can
19
+ exist).
20
+ """
21
+
22
+ import types
23
+ import os.path
24
+
25
+ from anuga.utilities.numerical_tools import ensure_numeric, is_scalar
26
+ from anuga.geometry.polygon import inside_polygon
27
+ from anuga.geospatial_data.geospatial_data import Geospatial_data
28
+ from anuga.fit_interpolate.fit import fit_to_mesh
29
+ from anuga.config import points_file_block_line_size as default_block_line_size
30
+ from anuga.config import epsilon
31
+ from anuga.caching import cache
32
+ import anuga.utilities.log as log
33
+
34
+
35
+ import numpy as num
36
+
37
+
38
+ class Quantity:
39
+
40
+
41
+ counter = 0
42
+
43
+ def __init__(self, domain, vertex_values=None, name=None, register=False):
44
+ from anuga.abstract_2d_finite_volumes.generic_domain \
45
+ import Generic_Domain
46
+
47
+ msg = ('First argument in Quantity.__init__() must be of class %s '
48
+ '(or a subclass thereof). I got %s.'
49
+ % (str(Generic_Domain.__name__),str(domain.__class__)))
50
+ assert isinstance(domain, Generic_Domain), msg
51
+
52
+ if vertex_values is None:
53
+ N = len(domain) # number_of_elements
54
+ self.vertex_values = num.zeros((N, 3), num.float)
55
+ else:
56
+ self.vertex_values = num.array(vertex_values, num.float)
57
+
58
+ N, V = self.vertex_values.shape
59
+ assert V == 3, 'Three vertex values per element must be specified'
60
+
61
+ msg = 'Number of vertex values (%d) must be consistent with' % N
62
+ msg += 'number of elements in specified domain (%d).' % len(domain)
63
+ assert N == len(domain), msg
64
+
65
+ self.domain = domain
66
+
67
+ # Allocate space for other quantities
68
+ self.centroid_values = num.zeros(N, num.float)
69
+ self.edge_values = num.zeros((N, 3), num.float)
70
+
71
+ # Allocate space for Gradient
72
+ self.x_gradient = num.zeros(N, num.float)
73
+ self.y_gradient = num.zeros(N, num.float)
74
+
75
+ # Allocate space for Limiter Phi
76
+ self.phi = num.zeros(N, num.float)
77
+
78
+ # Intialise centroid and edge_values
79
+ self.interpolate()
80
+
81
+ # Allocate space for boundary values
82
+ #self.boundary_length = domain.boundary_length
83
+ self.boundary_length = L = self.domain.boundary_length
84
+ self.boundary_values = num.zeros(L, num.float)
85
+
86
+ # Allocate space for updates of conserved quantities by
87
+ # flux calculations and forcing functions
88
+
89
+ # Allocate space for update fields
90
+ self.explicit_update = num.zeros(N, num.float )
91
+ self.semi_implicit_update = num.zeros(N, num.float )
92
+ self.centroid_backup_values = num.zeros(N, num.float)
93
+
94
+ self.set_beta(1.0)
95
+
96
+ # Keep count of quantities
97
+ Quantity.counter += 1
98
+
99
+ self.set_name(name)
100
+
101
+ # Lets register the quantity with the quantity (useful for checkpointing)
102
+ if register:
103
+ self.domain.quantities[self.name] = self
104
+
105
+ ############################################################################
106
+ # Methods for operator overloading
107
+ ############################################################################
108
+
109
+ def __len__(self):
110
+ return self.centroid_values.shape[0]
111
+
112
+ def __neg__(self):
113
+ """Negate all values in this quantity giving meaning to the
114
+ expression -Q where Q is an instance of class Quantity
115
+ """
116
+
117
+ Q = Quantity(self.domain)
118
+ Q.set_values(-self.vertex_values)
119
+ return Q
120
+
121
+ def __add__(self, other):
122
+ """Add to self anything that could populate a quantity
123
+
124
+ E.g other can be a constant, an array, a function, another quantity
125
+ (except for a filename or points, attributes (for now))
126
+ - see set_values for details
127
+ """
128
+
129
+ Q = Quantity(self.domain)
130
+ Q.set_values(other)
131
+
132
+ result = Quantity(self.domain)
133
+ result.set_values(self.vertex_values + Q.vertex_values)
134
+ return result
135
+
136
+ def __radd__(self, other):
137
+ """Handle cases like 7+Q, where Q is an instance of class Quantity
138
+ """
139
+
140
+ return self + other
141
+
142
+ def __sub__(self, other):
143
+ return self + -other # Invoke self.__neg__()
144
+
145
+ def __mul__(self, other):
146
+ """Multiply self with anything that could populate a quantity
147
+
148
+ E.g other can be a constant, an array, a function, another quantity
149
+ (except for a filename or points, attributes (for now))
150
+ - see set_values for details
151
+ """
152
+
153
+ if isinstance(other, Quantity):
154
+ Q = other
155
+ else:
156
+ Q = Quantity(self.domain)
157
+ Q.set_values(other)
158
+
159
+ result = Quantity(self.domain)
160
+
161
+ # The product of vertex_values, edge_values and centroid_values
162
+ # are calculated and assigned directly without using
163
+ # set_values (which calls interpolate). Otherwise
164
+ # edge and centroid values wouldn't be products from q1 and q2
165
+ result.vertex_values = self.vertex_values * Q.vertex_values
166
+ result.edge_values = self.edge_values * Q.edge_values
167
+ result.centroid_values = self.centroid_values * Q.centroid_values
168
+
169
+ return result
170
+
171
+ def __rmul__(self, other):
172
+ """Handle cases like 3*Q, where Q is an instance of class Quantity
173
+ """
174
+
175
+ return self * other
176
+
177
+ def __div__(self, other):
178
+ """Divide self with anything that could populate a quantity
179
+
180
+ E.g other can be a constant, an array, a function, another quantity
181
+ (except for a filename or points, attributes (for now))
182
+ - see set_values for details
183
+
184
+ Zero division is dealt with by adding an epsilon to the divisore
185
+ FIXME (Ole): Replace this with native INF once we migrate to NumPy
186
+ """
187
+
188
+ if isinstance(other, Quantity):
189
+ Q = other
190
+ else:
191
+ Q = Quantity(self.domain)
192
+ Q.set_values(other)
193
+
194
+ result = Quantity(self.domain)
195
+
196
+ # The quotient of vertex_values, edge_values and centroid_values
197
+ # are calculated and assigned directly without using
198
+ # set_values (which calls interpolate). Otherwise
199
+ # edge and centroid values wouldn't be quotient of q1 and q2
200
+ result.vertex_values = self.vertex_values/(Q.vertex_values + epsilon)
201
+ result.edge_values = self.edge_values/(Q.edge_values + epsilon)
202
+ result.centroid_values = self.centroid_values/(Q.centroid_values + epsilon)
203
+
204
+ return result
205
+
206
+ def __rdiv__(self, other):
207
+ """Handle cases like 3/Q, where Q is an instance of class Quantity
208
+ """
209
+
210
+ return self / other
211
+
212
+ def __pow__(self, other):
213
+ """Raise quantity to (numerical) power
214
+
215
+ As with __mul__ vertex values are processed entry by entry
216
+ while centroid and edge values are re-interpolated.
217
+
218
+ Example using __pow__:
219
+ Q = (Q1**2 + Q2**2)**0.5
220
+ """
221
+
222
+ if isinstance(other, Quantity):
223
+ Q = other
224
+ else:
225
+ Q = Quantity(self.domain)
226
+ Q.set_values(other)
227
+
228
+ result = Quantity(self.domain)
229
+
230
+ # The power of vertex_values, edge_values and centroid_values
231
+ # are calculated and assigned directly without using
232
+ # set_values (which calls interpolate). Otherwise
233
+ # edge and centroid values wouldn't be correct
234
+ result.vertex_values = self.vertex_values ** other
235
+ result.edge_values = self.edge_values ** other
236
+ result.centroid_values = self.centroid_values ** other
237
+
238
+ return result
239
+
240
+
241
+
242
+
243
+
244
+ def maximum(self, other):
245
+ """Max of self with anything that could populate a quantity
246
+
247
+ E.g other can be a constant, an array, a function, another quantity
248
+ (except for a filename or points, attributes (for now))
249
+ - see set_values for details
250
+ """
251
+
252
+ if isinstance(other, Quantity):
253
+ Q = other
254
+ else:
255
+ Q = Quantity(self.domain)
256
+ Q.set_values(other)
257
+
258
+
259
+ # The maximum of vertex_values, edge_values and centroid_values
260
+ # are calculated and assigned directly without using
261
+ # set_values (which calls interpolate). Otherwise
262
+ # edge and centroid values wouldn't be max from q1 and q2
263
+ self.vertex_values[:] = num.maximum(self.vertex_values, Q.vertex_values)
264
+ self.edge_values[:] = num.maximum(self.edge_values, Q.edge_values)
265
+ self.centroid_values[:] = num.maximum(self.centroid_values, Q.centroid_values)
266
+
267
+ return self
268
+
269
+
270
+
271
+
272
+ def minimum(self, other):
273
+ """Max of self with anything that could populate a quantity
274
+
275
+ E.g other can be a constant, an array, a function, another quantity
276
+ (except for a filename or points, attributes (for now))
277
+ - see set_values for details
278
+ """
279
+
280
+ if isinstance(other, Quantity):
281
+ Q = other
282
+ else:
283
+ Q = Quantity(self.domain)
284
+ Q.set_values(other)
285
+
286
+
287
+ # The minimum of vertex_values, edge_values and centroid_values
288
+ # are calculated and assigned directly without using
289
+ # set_values (which calls interpolate). Otherwise
290
+ self.vertex_values[:]= num.minimum(self.vertex_values, Q.vertex_values)
291
+ self.edge_values[:] = num.minimum(self.edge_values, Q.edge_values)
292
+ self.centroid_values[:] = num.minimum(self.centroid_values, Q.centroid_values)
293
+
294
+ return self
295
+
296
+
297
+ ############################################################################
298
+ # Setters/Getters
299
+ ############################################################################
300
+
301
+ def save_centroid_data_to_csv(self,filename=None):
302
+
303
+
304
+ #FIXME SR: Should add code to deal with parallel
305
+
306
+ ids = self.domain.tri_full_flag == 1
307
+ c_v = self.centroid_values[ids].reshape((-1,1))
308
+ c_x = self.domain.centroid_coordinates[ids,0].reshape((-1,1))
309
+ c_y = self.domain.centroid_coordinates[ids,1].reshape((-1,1))
310
+
311
+ import numpy
312
+
313
+ c_xyv = numpy.hstack((c_x, c_y, c_v))
314
+
315
+ if filename is None:
316
+ filename= self.name
317
+
318
+ if self.domain.parallel:
319
+ fullfilename = filename+'_centroid_data_P%g_%g.csv'% \
320
+ ( self.domain.numproc, self.domain.processor)
321
+ else:
322
+ fullfilename = filename+'_centroid_data.csv'
323
+
324
+ numpy.savetxt(fullfilename, c_xyv, delimiter=',', fmt = ['%.15e', '%.15e', '%.15e' ])
325
+
326
+
327
+ if self.domain.parallel:
328
+ import pypar
329
+ pypar.barrier()
330
+
331
+ # On processor 0 catenate the files
332
+ if self.domain.processor == 0:
333
+ import shutil
334
+ import os
335
+ destination = open(filename+'_centroid_data.csv','wb')
336
+ np = self.domain.numproc
337
+ files = [ filename+'_centroid_data'+"_P"+str(np)+"_"+str(v)+".csv" for v in range(np)]
338
+ for file in files:
339
+ shutil.copyfileobj(open(file,'rb'), destination)
340
+ destination.close()
341
+ for file in files:
342
+ os.remove(file)
343
+
344
+
345
+ def save_data_to_dem(self,filename=None):
346
+
347
+
348
+ #FIXME SR: Should add code to deal with parallel
349
+
350
+ ids = self.domain.tri_full_flag == 1
351
+ c_v = self.centroid_values[ids].reshape((-1,1))
352
+ c_x = self.domain.centroid_coordinates[ids,0].reshape((-1,1))
353
+ c_y = self.domain.centroid_coordinates[ids,1].reshape((-1,1))
354
+
355
+ import numpy
356
+
357
+ c_xyv = numpy.hstack((c_x, c_y, c_v))
358
+
359
+ if filename is None:
360
+ filename= self.name
361
+
362
+ if self.domain.parallel:
363
+ fullfilename = filename+'_centroid_data_P%g_%g.csv'% \
364
+ ( self.domain.numproc, self.domain.processor)
365
+ else:
366
+ fullfilename = filename+'_centroid_data.csv'
367
+
368
+ numpy.savetxt(fullfilename, c_xyv, delimiter=',', fmt = ['%.15e', '%.15e', '%.15e' ])
369
+
370
+
371
+ if self.domain.parallel:
372
+ import pypar
373
+ pypar.barrier()
374
+
375
+ # On processor 0 catenate the files
376
+ if self.domain.processor == 0:
377
+ import shutil
378
+ import os
379
+ destination = open(filename+'_centroid_data.csv','wb')
380
+ np = self.domain.numproc
381
+ files = [ filename+'_centroid_data'+"_P"+str(np)+"_"+str(v)+".csv" for v in range(np)]
382
+ for file in files:
383
+ shutil.copyfileobj(open(file,'rb'), destination)
384
+ destination.close()
385
+ for file in files:
386
+ os.remove(file)
387
+
388
+
389
+
390
+
391
+ def plot_quantity(self, filename=None, show=True):
392
+
393
+ X, Y, A, V = self.get_vertex_values(smooth=True)
394
+
395
+ import matplotlib.pyplot as plt
396
+ import numpy as np
397
+
398
+ plt.clf()
399
+ plt.tripcolor(X, Y, V, A)
400
+ plt.colorbar()
401
+
402
+ if filename is None:
403
+ filename = self.name+'.png'
404
+
405
+ plt.savefig(filename)
406
+
407
+ if show:
408
+ plt.show()
409
+
410
+
411
+ def save_to_array(self,
412
+ cellsize=None,
413
+ NODATA_value=-9999.0,
414
+ smooth=None,
415
+ easting_min=None,
416
+ easting_max=None,
417
+ northing_min=None,
418
+ northing_max=None,
419
+ origin=None,
420
+ verbose=False):
421
+
422
+ """Interpolate quantity to an array
423
+ """
424
+
425
+
426
+ verbose = False
427
+
428
+
429
+ #Get extent and reference
430
+
431
+ domain = self.domain
432
+
433
+ volumes = domain.triangles
434
+
435
+ #smooth = True
436
+
437
+ x,y,a,v= self.get_vertex_values(xy=True, smooth=smooth)
438
+
439
+
440
+ false_easting = 500000
441
+ false_northing = 10000000
442
+
443
+
444
+
445
+ geo_ref = self.domain.geo_reference
446
+
447
+ xllcorner = geo_ref.get_xllcorner()
448
+ yllcorner = geo_ref.get_yllcorner()
449
+
450
+ if verbose:
451
+ print
452
+ print xllcorner
453
+ print yllcorner
454
+ print x
455
+ print y
456
+ print node_coordinates[:,0]
457
+ print node_coordinates[:,1]
458
+
459
+
460
+
461
+ # Create grid and update xll/yll corner and x,y
462
+ # Relative extent
463
+ if easting_min is None:
464
+ xmin = min(x)
465
+ else:
466
+ xmin = easting_min - xllcorner
467
+
468
+ if easting_max is None:
469
+ xmax = max(x)
470
+ else:
471
+ xmax = easting_max - xllcorner
472
+
473
+ if northing_min is None:
474
+ ymin = min(y)
475
+ else:
476
+ ymin = northing_min - yllcorner
477
+
478
+ if northing_max is None:
479
+ ymax = max(y)
480
+ else:
481
+ ymax = northing_max - yllcorner
482
+
483
+ msg = 'Implementation of Quantity.save_to_array() is not completed'
484
+ #raise Exception, msg
485
+
486
+
487
+ msg = 'xmax must be greater than or equal to xmin.\n'
488
+ msg += 'I got xmin = %f, xmax = %f' %(xmin, xmax)
489
+ assert xmax >= xmin, msg
490
+
491
+ msg = 'ymax must be greater than or equal to xmin.\n'
492
+ msg += 'I got ymin = %f, ymax = %f' %(ymin, ymax)
493
+ assert ymax >= ymin, msg
494
+
495
+
496
+ if verbose: log.critical('Creating grid')
497
+
498
+ xrange = xmax-xmin
499
+ yrange = ymax-ymin
500
+
501
+ if cellsize == None:
502
+ cellsize = max(xrange,yrange)/10.0
503
+
504
+
505
+ ncols = int(xrange/cellsize) + 1
506
+ nrows = int(yrange/cellsize) + 1
507
+
508
+ # New absolute reference and coordinates
509
+ newxllcorner = xmin + xllcorner
510
+ newyllcorner = ymin + yllcorner
511
+
512
+ x = x + xllcorner - newxllcorner
513
+ y = y + yllcorner - newyllcorner
514
+
515
+
516
+ grid_values = num.zeros( (nrows*ncols, ), num.float)
517
+
518
+
519
+ num_tri = len(v)
520
+ norms = num.zeros(6*num_tri, num.float)
521
+
522
+
523
+ #Use fast method to calc grid values
524
+ from anuga.file_conversion.calc_grid_values_ext import calc_grid_values
525
+
526
+ calc_grid_values(nrows, ncols, cellsize, NODATA_value,
527
+ x,y, norms, v, a, grid_values)
528
+
529
+
530
+ y_g = num.arange(nrows)*cellsize + yllcorner - newyllcorner
531
+ x_g = num.arange(ncols)*cellsize + xllcorner - newxllcorner
532
+ #print outside_indices
533
+
534
+ if verbose:
535
+ log.critical('Interpolated values are in [%f, %f]'
536
+ % (num.min(grid_values), num.max(grid_values)))
537
+
538
+
539
+ return x_g,y_g, grid_values.reshape(nrows,ncols)#[::-1,:]
540
+
541
+
542
+
543
+ def set_name(self, name=None):
544
+
545
+ if name is not None:
546
+ self.name = name
547
+ else:
548
+ self.name = 'quantity_%g' % Quantity.counter
549
+
550
+
551
+
552
+ def get_name(self):
553
+
554
+ return self.name
555
+
556
+
557
+ def set_beta(self, beta):
558
+ """Set default beta value for limiting """
559
+
560
+ if beta < 0.0:
561
+ log.critical('WARNING: setting beta < 0.0')
562
+ if beta > 2.0:
563
+ log.critical('WARNING: setting beta > 2.0')
564
+
565
+ self.beta = beta
566
+
567
+ ##
568
+ # @brief Get the current beta value.
569
+ # @return The current beta value.
570
+ def get_beta(self):
571
+ """Get default beta value for limiting"""
572
+
573
+ return self.beta
574
+
575
+
576
+
577
+ ##
578
+ # @brief Set boundary values using a function or array or scalar
579
+ # @param numeric: function or array or scalar
580
+ def set_boundary_values(self, numeric = 0.0):
581
+ """Set boundary values """
582
+
583
+ if isinstance(numeric, (list, num.ndarray)):
584
+ self._set_boundary_values_from_array(numeric)
585
+ elif callable(numeric):
586
+ self._set_boundary_values_from_function(numeric)
587
+ else: # see if it's coercible to a float (float, int or long, etc)
588
+ try:
589
+ numeric = float(numeric)
590
+ except ValueError:
591
+ msg = ("Illegal type for variable 'numeric': %s"
592
+ % type(numeric))
593
+ raise Exception(msg)
594
+ self._set_boundary_values_from_constant(numeric)
595
+
596
+ def set_boundary_values_from_edges(self):
597
+ """Set boundary values by simply extrapolating
598
+ from the cells
599
+ """
600
+
601
+ # for j in range(self.boundary_length):
602
+ # vol_id = self.domain.boundary_cells[j]
603
+ # edge_id = self.domain.boundary_edges[j]
604
+ # self.boundary_values[j] = self.edge_values[vol_id,edge_id]
605
+
606
+ vol_id = self.domain.boundary_cells
607
+ edge_id = self.domain.boundary_edges
608
+ self.boundary_values = (self.edge_values.flat)[3*vol_id+edge_id]
609
+
610
+ ##
611
+ # @brief Set boundary values using a function
612
+ # @param numeric: function
613
+ def _set_boundary_values_from_function(self, function):
614
+ """Set boundary values from function of x,y """
615
+
616
+ for j in range(self.boundary_length):
617
+ vol_id = self.domain.boundary_cells[j]
618
+ edge_id = self.domain.boundary_edges[j]
619
+ [x,y] = self.domain.get_edge_midpoint_coordinates(vol_id)[edge_id]
620
+ self.boundary_values[j] = function(x,y)
621
+
622
+ ##
623
+ # @brief Set boundary values using a scalar
624
+ # @param numeric: scalar
625
+ def _set_boundary_values_from_constant(self, scalar):
626
+ """Set boundary values from scalar """
627
+
628
+ #for (vol_id, edge_id) , j in self.domain.boundary_enumeration.items():
629
+ #[x,y] = self.domain.get_edge_midpoint_coordinates(vol_id)[edge_id]
630
+ self.boundary_values[:] = scalar
631
+
632
+ ##
633
+ # @brief Set boundary values using a scalar
634
+ # @param numeric: scalar
635
+ def _set_boundary_values_from_array(self, array):
636
+ """Set boundary values from array """
637
+
638
+ assert len(array) == len(self.domain.boundary_enumeration)
639
+
640
+ #for (vol_id, edge_id) , j in self.domain.boundary_enumeration.items():
641
+ #[x,y] = self.domain.get_edge_midpoint_coordinates(vol_id)[edge_id]
642
+ self.boundary_values[:] = array
643
+
644
+ ##
645
+ # @brief Compute interpolated values at edges and centroid.
646
+ # @note vertex_values must be set before calling this.
647
+ def interpolate_old(self):
648
+ """Compute interpolated values at edges and centroid
649
+ Pre-condition: vertex_values have been set
650
+ """
651
+
652
+ # FIXME (Ole): Maybe this function
653
+ # should move to the C-interface?
654
+ # However, it isn't called by validate_all.py, so it
655
+ # may not be that important to optimise it?
656
+
657
+ # N = self.vertex_values.shape[0]
658
+ # for i in range(N):
659
+ # v0 = self.vertex_values[i, 0]
660
+ # v1 = self.vertex_values[i, 1]
661
+ # v2 = self.vertex_values[i, 2]
662
+ #
663
+ # self.centroid_values[i] = (v0 + v1 + v2)/3
664
+
665
+ v0 = self.vertex_values[:, 0]
666
+ v1 = self.vertex_values[:, 1]
667
+ v2 = self.vertex_values[:, 2]
668
+
669
+ self.centroid_values[:] = (v0 + v1 + v2)/3
670
+
671
+ self.interpolate_from_vertices_to_edges()
672
+
673
+
674
+ ##
675
+ # @brief Compute interpolated values at edges and centroid.
676
+ # @note vertex_values must be set before calling this.
677
+ def interpolate(self):
678
+ """Compute interpolated values at edges and centroid
679
+ Pre-condition: vertex_values have been set
680
+ """
681
+ from quantity_ext import interpolate
682
+ interpolate(self)
683
+
684
+
685
+ def interpolate_from_vertices_to_edges(self):
686
+ # Call correct module function (either from this module or C-extension)
687
+
688
+ from quantity_ext import interpolate_from_vertices_to_edges
689
+ interpolate_from_vertices_to_edges(self)
690
+
691
+ def interpolate_from_edges_to_vertices(self):
692
+ # Call correct module function (either from this module or C-extension)
693
+
694
+ from quantity_ext import interpolate_from_edges_to_vertices
695
+ interpolate_from_edges_to_vertices(self)
696
+
697
+ #---------------------------------------------
698
+ # Public interface for setting quantity values
699
+ #---------------------------------------------
700
+
701
+ def set_values(self, numeric=None, # List, numeric array or constant
702
+ quantity=None, # Another quantity
703
+ function=None, # Callable object: f(x,y)
704
+ geospatial_data=None, # Arbitrary dataset
705
+ filename=None,
706
+ attribute_name=None, # Input from file
707
+ alpha=None,
708
+ location='vertices',
709
+ polygon=None,
710
+ indices=None,
711
+ smooth=False,
712
+ verbose=False,
713
+ use_cache=False):
714
+ """Set values for quantity based on different sources.
715
+
716
+ numeric:
717
+ Compatible list, numeric array (see below) or constant.
718
+ If callable it will treated as a function (see below)
719
+ If instance of another Quantity it will be treated as such.
720
+ If geo_spatial object it will be treated as such
721
+
722
+ quantity:
723
+ Another quantity (compatible quantity, e.g. obtained as a
724
+ linear combination of quantities)
725
+
726
+ function:
727
+ Any callable object that takes two 1d arrays x and y
728
+ each of length N and returns an array also of length N.
729
+ The function will be evaluated at points determined by
730
+ location and indices in the underlying mesh.
731
+
732
+ geospatial_data:
733
+ Arbitrary geo spatial dataset in the form of the class
734
+ Geospatial_data. Mesh points are populated using
735
+ fit_interpolate.fit fitting
736
+
737
+ filename:
738
+ Name of a points file containing data points and attributes for
739
+ use with fit_interpolate.fit.
740
+
741
+ attribute_name:
742
+ If specified, any array matching that name
743
+ will be used. from file or geospatial_data.
744
+ Otherwise a default will be used.
745
+
746
+ alpha:
747
+ Smoothing parameter to be used with fit_interpolate.fit.
748
+ See module fit_interpolate.fit for further details about alpha.
749
+ Alpha will only be used with points, values or filename.
750
+ Otherwise it will be ignored.
751
+
752
+
753
+ location: Where values are to be stored.
754
+ Permissible options are: vertices, edges, centroids
755
+ Default is 'vertices'
756
+
757
+ In case of location == 'centroids' the dimension values must
758
+ be a list of a numerical array of length N,
759
+ N being the number of elements.
760
+ Otherwise it must be of dimension Nx3
761
+
762
+
763
+ The values will be stored in elements following their
764
+ internal ordering.
765
+
766
+ If location is 'unique vertices' indices refers the set
767
+ of node ids that the operation applies to.
768
+ If location is not 'unique vertices' indices refers the
769
+ set of triangle ids that the operation applies to.
770
+
771
+
772
+ If selected location is vertices, values for
773
+ centroid and edges will be assigned interpolated
774
+ values. In any other case, only values for the
775
+ specified locations will be assigned and the others
776
+ will be left undefined.
777
+
778
+
779
+ polygon: Restrict update of quantity to locations that fall
780
+ inside polygon. Polygon works by selecting indices
781
+ and calling set_values recursively.
782
+ Polygon mode has only been implemented for
783
+ constant values so far.
784
+
785
+ indices: Restrict update of quantity to locations that are
786
+ identified by indices (e.g. node ids if location
787
+ is 'unique vertices' or triangle ids otherwise).
788
+
789
+ verbose: True means that output to stdout is generated
790
+
791
+ use_cache: True means that caching of intermediate results is
792
+ attempted for fit_interpolate.fit.
793
+
794
+
795
+
796
+
797
+ Exactly one of the arguments
798
+ numeric, quantity, function, filename
799
+ must be present.
800
+ """
801
+
802
+ from anuga.geospatial_data.geospatial_data import Geospatial_data
803
+
804
+ # Treat special case: Polygon situation
805
+ # Location will be ignored and set to 'centroids'
806
+ # FIXME (Ole): This needs to be generalised and
807
+ # perhaps the notion of location and indices simplified
808
+
809
+ # FIXME (Ole): Need to compute indices based on polygon
810
+ # (and location) and use existing code after that.
811
+
812
+ # See ticket:275, ticket:250, ticeket:254 for refactoring plan
813
+
814
+ if polygon is not None:
815
+ if indices is not None:
816
+ msg = 'Only one of polygon and indices can be specified'
817
+ raise Exception(msg)
818
+
819
+ msg = 'With polygon selected, set_quantity must provide '
820
+ msg += 'the keyword numeric and it must (currently) be '
821
+ msg += 'a constant.'
822
+ if numeric is None:
823
+ raise Exception(msg)
824
+ else:
825
+ # Check that numeric is as constant
826
+ assert isinstance(numeric, (float, int, long)), msg
827
+
828
+ location = 'centroids'
829
+
830
+ points = self.domain.get_centroid_coordinates(absolute=True)
831
+ indices = inside_polygon(points, polygon)
832
+
833
+ self.set_values_from_constant(numeric, location, indices, verbose)
834
+
835
+ self.extrapolate_first_order()
836
+
837
+ if smooth:
838
+ self.smooth_vertex_values(use_cache=use_cache,
839
+ verbose=verbose)
840
+
841
+ return
842
+
843
+ # General input checks
844
+ L = [numeric, quantity, function, geospatial_data, filename]
845
+ msg = ('Exactly one of the arguments numeric, quantity, function, '
846
+ 'geospatial_data, or filename must be present.')
847
+
848
+ count = 0
849
+ for entry in L:
850
+ if entry is None:
851
+ count = count + 1
852
+
853
+ assert count == len(L)-1, msg
854
+
855
+ if location == 'edges':
856
+ msg = 'edges has been deprecated as valid location'
857
+ raise Exception(msg)
858
+
859
+ if location not in ['vertices', 'centroids', 'unique vertices']:
860
+ msg = 'Invalid location: %s' % location
861
+ raise Exception(msg)
862
+
863
+ msg = 'Indices must be a list, array or None'
864
+ assert isinstance(indices, (types.NoneType, list, num.ndarray)), msg
865
+
866
+ # Determine which 'set_values_from_...' to use
867
+ if numeric is not None:
868
+ if isinstance(numeric, (list, num.ndarray)):
869
+ self.set_values_from_array(numeric, location, indices,
870
+ use_cache=use_cache, verbose=verbose)
871
+ elif callable(numeric):
872
+ self.set_values_from_function(numeric, location, indices,
873
+ use_cache=use_cache,
874
+ verbose=verbose)
875
+ elif isinstance(numeric, Quantity):
876
+ self.set_values_from_quantity(numeric, location, indices,
877
+ verbose=verbose)
878
+ elif isinstance(numeric, Geospatial_data):
879
+ self.set_values_from_geospatial_data(numeric, alpha, location,
880
+ indices, verbose=verbose,
881
+ use_cache=use_cache)
882
+ else: # see if it's coercible to a float (float, int or long, etc)
883
+ try:
884
+ numeric = float(numeric)
885
+ except ValueError:
886
+ msg = ("Illegal type for variable 'numeric': %s"
887
+ % type(numeric))
888
+ raise Exception(msg)
889
+ self.set_values_from_constant(numeric, location,
890
+ indices, verbose)
891
+ elif quantity is not None:
892
+ self.set_values_from_quantity(quantity, location, indices, verbose)
893
+ elif function is not None:
894
+ msg = 'Argument function must be callable'
895
+ assert callable(function), msg
896
+ self.set_values_from_function(function, location, indices,
897
+ use_cache=use_cache, verbose=verbose)
898
+ elif geospatial_data is not None:
899
+ self.set_values_from_geospatial_data(geospatial_data, alpha,
900
+ location, indices,
901
+ verbose=verbose,
902
+ use_cache=use_cache)
903
+ elif filename is not None:
904
+
905
+ if hasattr(self.domain, 'points_file_block_line_size'):
906
+ max_read_lines = self.domain.points_file_block_line_size
907
+ else:
908
+ max_read_lines = default_block_line_size
909
+ self.set_values_from_file(filename, attribute_name, alpha, location,
910
+ indices, verbose=verbose,
911
+ max_read_lines=max_read_lines,
912
+ use_cache=use_cache)
913
+ else:
914
+ raise Exception("This can't happen :-)")
915
+
916
+ # Update all locations in triangles
917
+ if location == 'vertices' or location == 'unique vertices':
918
+ # Intialise centroid and edge_values
919
+ self.interpolate()
920
+
921
+ if location == 'centroids':
922
+ # Extrapolate 1st order - to capture notion of area being specified
923
+ self.extrapolate_first_order()
924
+
925
+ ############################################################################
926
+ # Specific internal functions for setting values based on type
927
+ ############################################################################
928
+
929
+ def set_values_from_constant(self, X, location, indices, verbose):
930
+ """Set quantity values from specified constant X"""
931
+
932
+ # FIXME (Ole): Somehow indices refer to centroids
933
+ # rather than vertices as default. See unit test
934
+ # test_set_vertex_values_using_general_interface_with_subset(self):
935
+
936
+ if location == 'centroids':
937
+ if indices is None:
938
+ self.centroid_values[:] = X
939
+ else:
940
+ # Brute force
941
+ for i in indices:
942
+ self.centroid_values[i] = X
943
+ elif location == 'unique vertices':
944
+ if indices is None:
945
+ self.edge_values[:] = X #FIXME (Ole): Shouldn't this be vertex_values?
946
+ else:
947
+ # Go through list of unique vertices
948
+ for unique_vert_id in indices:
949
+ triangles = \
950
+ self.domain.get_triangles_and_vertices_per_node(node=unique_vert_id)
951
+
952
+ # In case there are unused points
953
+ if len(triangles) == 0:
954
+ continue
955
+
956
+ # Go through all triangle, vertex pairs
957
+ # and set corresponding vertex value
958
+ for triangle_id, vertex_id in triangles:
959
+ self.vertex_values[triangle_id, vertex_id] = X
960
+
961
+ # Intialise centroid and edge_values
962
+ self.interpolate()
963
+ else:
964
+ if indices is None:
965
+ self.vertex_values[:] = X
966
+ else:
967
+ # Brute force
968
+ for i_vertex in indices:
969
+ self.vertex_values[i_vertex] = X
970
+
971
+ def set_values_from_array(self, values,
972
+ location='vertices',
973
+ indices=None,
974
+ use_cache=False,
975
+ verbose=False):
976
+ """Set values for quantity
977
+
978
+ values: numeric array
979
+ location: Where values are to be stored.
980
+ Permissible options are: vertices, centroid, unique vertices
981
+ Default is 'vertices'
982
+
983
+ indices - if this action is carried out on a subset of
984
+ elements or unique vertices
985
+ The element/unique vertex indices are specified here.
986
+
987
+ In case of location == 'centroid' the dimension values must
988
+ be a list of a numerical array of length N, N being the number
989
+ of elements.
990
+
991
+ Otherwise it must be of dimension Nx3
992
+
993
+ The values will be stored in elements following their
994
+ internal ordering.
995
+
996
+ If selected location is vertices, values for centroid and edges
997
+ will be assigned interpolated values.
998
+ In any other case, only values for the specified locations
999
+ will be assigned and the others will be left undefined.
1000
+ """
1001
+
1002
+ values = num.array(values, num.float)
1003
+
1004
+ if indices is not None:
1005
+ indices = num.array(indices, num.int)
1006
+ msg = ('Number of values must match number of indices: You '
1007
+ 'specified %d values and %d indices'
1008
+ % (values.shape[0], indices.shape[0]))
1009
+ assert values.shape[0] == indices.shape[0], msg
1010
+
1011
+ N = self.centroid_values.shape[0]
1012
+
1013
+ if location == 'centroids':
1014
+ assert len(values.shape) == 1, 'Values array must be 1d'
1015
+
1016
+ if indices is None:
1017
+ msg = 'Number of values must match number of elements'
1018
+ assert values.shape[0] == N, msg
1019
+
1020
+ self.centroid_values[:] = values
1021
+ else:
1022
+ msg = 'Number of values must match number of indices'
1023
+ assert values.shape[0] == indices.shape[0], msg
1024
+
1025
+ # Brute force
1026
+ self.centroid_values[indices] = values
1027
+ #for i in range(len(indices)):
1028
+ # self.centroid_values[indices[i]] = values[i]
1029
+ elif location == 'unique vertices':
1030
+ msg = 'Values array must be 1d'
1031
+ assert len(values.shape) == 1 or num.allclose(values.shape[1:], 1), msg
1032
+
1033
+ self.set_vertex_values(values.flat, indices=indices,
1034
+ use_cache=use_cache, verbose=verbose)
1035
+ else:
1036
+ # Location vertices
1037
+ if len(values.shape) == 1:
1038
+ # This is the common case arising from fitted
1039
+ # values (e.g. from pts file).
1040
+ self.set_vertex_values(values, indices=indices,
1041
+ use_cache=use_cache, verbose=verbose)
1042
+ elif len(values.shape) == 2:
1043
+ # Vertex values are given as a triplet for each triangle
1044
+ msg = 'Array must be N x 3'
1045
+ assert values.shape[1] == 3, msg
1046
+
1047
+ if indices is None:
1048
+ self.vertex_values[:] = values
1049
+ else:
1050
+ self.vertex_values[indices] = values
1051
+ #for element_index, value in map(None, indices, values):
1052
+ # self.vertex_values[element_index] = value
1053
+ else:
1054
+ msg = 'Values array must be 1d or 2d'
1055
+ raise Exception(msg)
1056
+
1057
+ def set_values_from_quantity(self, q, location, indices, verbose):
1058
+ """Set quantity values from specified quantity instance q
1059
+
1060
+ Location is ignored - vertices will always be used here.
1061
+ """
1062
+
1063
+
1064
+ A = q.vertex_values
1065
+
1066
+ msg = 'Quantities are defined on different meshes. '+\
1067
+ 'This might be a case for implementing interpolation '+\
1068
+ 'between different meshes.'
1069
+ assert num.allclose(A.shape, self.vertex_values.shape), msg
1070
+
1071
+ self.set_values(A, location='vertices',
1072
+ indices=indices, verbose=verbose)
1073
+
1074
+ def set_values_from_function(self,
1075
+ f,
1076
+ location='vertices',
1077
+ indices=None,
1078
+ use_cache=False,
1079
+ verbose=False):
1080
+ """Set values for quantity using specified function
1081
+
1082
+ Input
1083
+ f: x, y -> z Function where x, y and z are arrays
1084
+ location: Where values are to be stored.
1085
+ Permissible options are: vertices, centroid,
1086
+ unique vertices
1087
+ Default is "vertices"
1088
+ indices:
1089
+ """
1090
+
1091
+ # FIXME: Should check that function returns something sensible and
1092
+ # raise a meaningful exception if it returns None for example
1093
+
1094
+ # FIXME: Should supply absolute coordinates
1095
+
1096
+ # Compute the function values and call set_values again
1097
+ if location == 'centroids':
1098
+ if indices is None:
1099
+ indices = range(len(self))
1100
+
1101
+ V = num.take(self.domain.get_centroid_coordinates(), indices, axis=0)
1102
+ x = V[:,0]; y = V[:,1]
1103
+ if use_cache is True:
1104
+ res = cache(f, (x, y), verbose=verbose)
1105
+ else:
1106
+ res = f(x, y)
1107
+
1108
+ self.set_values(res, location=location, indices=indices)
1109
+ elif location == 'vertices':
1110
+ # This is the default branch taken by set_quantity
1111
+ M = self.domain.number_of_triangles
1112
+ V = self.domain.get_vertex_coordinates()
1113
+
1114
+ x = V[:,0];
1115
+ y = V[:,1]
1116
+ if use_cache is True:
1117
+ values = cache(f, (x, y), verbose=verbose)
1118
+ else:
1119
+ if verbose is True:
1120
+ log.critical('Evaluating function in set_values')
1121
+ values = f(x, y)
1122
+
1123
+ # FIXME (Ole): This code should replace all the
1124
+ # rest of this function and it would work, except
1125
+ # one unit test in test_region fails.
1126
+ # If that could be resolved this one will be
1127
+ # more robust and simple.
1128
+
1129
+ # This should be removed
1130
+ if is_scalar(values):
1131
+ # Function returned a constant value
1132
+ self.set_values_from_constant(values, location,
1133
+ indices, verbose)
1134
+ return
1135
+
1136
+ # This should be removed
1137
+ if indices is None:
1138
+ for j in range(3):
1139
+ self.vertex_values[:, j] = values[j::3]
1140
+ else:
1141
+ # Brute force
1142
+ for i in indices:
1143
+ for j in range(3):
1144
+ self.vertex_values[i, j] = values[3*i + j]
1145
+ else:
1146
+ raise Exception('Not implemented: %s' % location)
1147
+
1148
+ def set_values_from_geospatial_data(self,
1149
+ geospatial_data,
1150
+ alpha,
1151
+ location,
1152
+ indices,
1153
+ verbose=False,
1154
+ use_cache=False):
1155
+ """Set values based on geo referenced geospatial data object."""
1156
+
1157
+ from anuga.coordinate_transforms.geo_reference import Geo_reference
1158
+
1159
+ points = geospatial_data.get_data_points(absolute=False)
1160
+ values = geospatial_data.get_attributes()
1161
+ data_georef = geospatial_data.get_geo_reference()
1162
+
1163
+ from anuga.coordinate_transforms.geo_reference import Geo_reference
1164
+
1165
+ points = ensure_numeric(points, num.float)
1166
+ values = ensure_numeric(values, num.float)
1167
+
1168
+ if location != 'vertices':
1169
+ msg = ("set_values_from_points is only defined for "
1170
+ "location='vertices'")
1171
+ raise Exception(msg)
1172
+
1173
+ # Take care of georeferencing
1174
+ if data_georef is None:
1175
+ data_georef = Geo_reference()
1176
+
1177
+ mesh_georef = self.domain.geo_reference
1178
+
1179
+ # Call fit_interpolate.fit function
1180
+ args = (points, )
1181
+ kwargs = {'vertex_coordinates': None,
1182
+ 'triangles': None,
1183
+ 'mesh': self.domain.mesh,
1184
+ 'point_attributes': values,
1185
+ 'data_origin': data_georef.get_origin(),
1186
+ 'mesh_origin': mesh_georef.get_origin(),
1187
+ 'alpha': alpha,
1188
+ 'verbose': verbose}
1189
+
1190
+ vertex_attributes = apply(fit_to_mesh, args, kwargs)
1191
+
1192
+ # Call underlying method using array values
1193
+ self.set_values_from_array(vertex_attributes, location, indices,
1194
+ use_cache=use_cache, verbose=verbose)
1195
+
1196
+ def set_values_from_points(self,
1197
+ points,
1198
+ values,
1199
+ alpha,
1200
+ location,
1201
+ indices,
1202
+ data_georef=None,
1203
+ verbose=False,
1204
+ use_cache=False):
1205
+ """Set quantity values from arbitray data points using fit_interpolate.fit"""
1206
+
1207
+ raise Exception('set_values_from_points is obsolete, use geospatial data object instead')
1208
+
1209
+ def set_values_from_file(self,
1210
+ filename,
1211
+ attribute_name,
1212
+ alpha,
1213
+ location,
1214
+ indices,
1215
+ verbose=False,
1216
+ use_cache=False,
1217
+ max_read_lines=None):
1218
+ """Set quantity based on arbitrary points in a points file using
1219
+ attribute_name selects name of attribute present in file.
1220
+ If attribute_name is not specified, use first available attribute
1221
+ as defined in geospatial_data.
1222
+ """
1223
+
1224
+
1225
+ msg = 'Filename must be a text string'
1226
+ assert isinstance(filename, basestring), msg
1227
+
1228
+ msg = 'Extension should be .pts .dem, .csv, or txt'
1229
+ assert os.path.splitext(filename)[1] in ['.pts', '.dem', '.csv', '.txt'], msg
1230
+
1231
+
1232
+ if location != 'vertices':
1233
+ msg = "set_values_from_file is only defined for location='vertices'"
1234
+ raise Exception(msg)
1235
+
1236
+
1237
+ if True:
1238
+ # Use mesh as defined by domain
1239
+ # This used to cause problems for caching due to quantities
1240
+ # changing, but it now works using the appropriate Mesh object.
1241
+ # This addressed ticket:242 and was made to work when bug
1242
+ # in ticket:314 was fixed 18 March 2009.
1243
+ vertex_attributes = fit_to_mesh(filename,
1244
+ mesh=self.domain.mesh,
1245
+ alpha=alpha,
1246
+ attribute_name=attribute_name,
1247
+ use_cache=use_cache,
1248
+ verbose=verbose,
1249
+ max_read_lines=max_read_lines)
1250
+ else:
1251
+ # This variant will cause Mesh object to be recreated
1252
+ # in fit_to_mesh thus doubling up on the neighbour structure
1253
+ # FIXME(Ole): This is now obsolete 19 Jan 2009 except for bug
1254
+ # (ticket:314) which was fixed 18 March 2009.
1255
+ nodes = self.domain.get_nodes(absolute=True)
1256
+ triangles = self.domain.get_triangles()
1257
+ vertex_attributes = fit_to_mesh(filename,
1258
+ nodes, triangles,
1259
+ mesh=None,
1260
+ alpha=alpha,
1261
+ attribute_name=attribute_name,
1262
+ use_cache=use_cache,
1263
+ verbose=verbose,
1264
+ max_read_lines=max_read_lines)
1265
+
1266
+ # Call underlying method using array values
1267
+ if verbose:
1268
+ log.critical('Applying fitted data to domain')
1269
+ self.set_values_from_array(vertex_attributes, location,
1270
+ indices, use_cache=use_cache,
1271
+ verbose=verbose)
1272
+
1273
+
1274
+
1275
+
1276
+
1277
+ def set_values_from_utm_grid_file(self,
1278
+ filename,
1279
+ location='vertices',
1280
+ indices=None,
1281
+ verbose=False):
1282
+
1283
+ """Read Digital Elevation model from the following ASCII format (.asc or .grd)
1284
+
1285
+ Example:
1286
+ ncols 3121
1287
+ nrows 1800
1288
+ xllcorner 722000
1289
+ yllcorner 5893000
1290
+ cellsize 25
1291
+ NODATA_value -9999
1292
+ 138.3698 137.4194 136.5062 135.5558 ..........
1293
+
1294
+
1295
+ An accompanying file with same basename but extension .prj must exist
1296
+ and is used to fix the UTM zone, datum, false northings and eastings.
1297
+
1298
+ The prj format is assumed to be as
1299
+
1300
+ Projection UTM
1301
+ Zone 56
1302
+ Datum WGS84
1303
+ Zunits NO
1304
+ Units METERS
1305
+ Spheroid WGS84
1306
+ Xshift 0.0000000000
1307
+ Yshift 10000000.0000000000
1308
+ Parameters
1309
+ """
1310
+
1311
+
1312
+
1313
+ from anuga.file_conversion.grd2array import grd2array
1314
+
1315
+ x,y,Z = grd2array(filename)
1316
+
1317
+
1318
+ if location == 'centroids':
1319
+ points = self.domain.centroid_coordinates
1320
+ else:
1321
+ points = self.domain.vertex_coordinates
1322
+
1323
+ from anuga.geospatial_data.geospatial_data import Geospatial_data, ensure_absolute
1324
+
1325
+ points = ensure_absolute(points, geo_reference=self.domain.geo_reference)
1326
+
1327
+ from anuga.fit_interpolate.interpolate2d import interpolate2d
1328
+
1329
+ #print points
1330
+ values = interpolate2d(x, y, Z, points, mode='linear', bounds_error=False)
1331
+
1332
+ #print values
1333
+
1334
+ # Call underlying method using array values
1335
+ if verbose:
1336
+ log.critical('Applying fitted data to quantity')
1337
+
1338
+
1339
+ if location == 'centroids':
1340
+ if indices is None:
1341
+ msg = 'Number of values must match number of elements'
1342
+ #assert values.shape[0] == N, msg
1343
+
1344
+ self.centroid_values[:] = values
1345
+ else:
1346
+ msg = 'Number of values must match number of indices'
1347
+ assert values.shape[0] == indices.shape[0], msg
1348
+
1349
+ # Brute force
1350
+ self.centroid_values[indices] = values
1351
+ else:
1352
+ if indices is None:
1353
+ msg = 'Number of values must match number of elements'
1354
+ #assert values.shape[0] == N, msg
1355
+
1356
+ #print values.shape
1357
+ #print self.vertex_values.shape
1358
+ self.vertex_values[:] = values.reshape((-1,3))
1359
+ else:
1360
+ msg = 'Number of values must match number of indices'
1361
+ assert values.shape[0] == indices.shape[0], msg
1362
+
1363
+ # Brute force
1364
+ self.vertex_values[indices] = values.reshape((-1,3))
1365
+ # Cleanup centroid values
1366
+ self.interpolate()
1367
+
1368
+
1369
+
1370
+
1371
+ def set_values_from_lat_long_grid_file(self,
1372
+ filename,
1373
+ location='vertices',
1374
+ indices=None,
1375
+ verbose=False):
1376
+
1377
+ """Read Digital Elevation model from the following ASCII format (.asc or .grd)
1378
+
1379
+ Example:
1380
+ ncols 3121
1381
+ nrows 1800
1382
+ xllcorner 722000
1383
+ yllcorner 5893000
1384
+ cellsize 25
1385
+ NODATA_value -9999
1386
+ 138.3698 137.4194 136.5062 135.5558 ..........
1387
+
1388
+
1389
+ An accompanying file with same basename but extension .prj must exist
1390
+ and is used to fix the UTM zone, datum, false northings and eastings.
1391
+
1392
+ The prj format is assumed to be as
1393
+
1394
+ Projection UTM
1395
+ Zone 56
1396
+ Datum WGS84
1397
+ Zunits NO
1398
+ Units METERS
1399
+ Spheroid WGS84
1400
+ Xshift 0.0000000000
1401
+ Yshift 10000000.0000000000
1402
+ Parameters
1403
+ """
1404
+
1405
+
1406
+ msg = "Function not implemented yet"
1407
+ raise Exception, msg
1408
+
1409
+ msg = 'Filename must be a text string'
1410
+ assert isinstance(filename, basestring), msg
1411
+
1412
+ msg = 'Extension should be .grd or asc'
1413
+ assert os.path.splitext(filename)[1] in ['.grd', '.asc'], msg
1414
+
1415
+
1416
+ msg = "set_values_from_grd_file is only defined for location='vertices' or 'centroids'"
1417
+ assert location in ['vertices', 'centroids'], msg
1418
+
1419
+
1420
+ root = filename[:-4]
1421
+
1422
+
1423
+ #Read DEM data
1424
+ datafile = open(filename)
1425
+
1426
+ if verbose: log.critical('Reading data from %s' % (filename))
1427
+
1428
+ lines = datafile.readlines()
1429
+ datafile.close()
1430
+
1431
+
1432
+ if verbose: log.critical('Got %d lines' % len(lines))
1433
+
1434
+ # Parse the line data
1435
+ ncols = int(lines[0].split()[1].strip())
1436
+ nrows = int(lines[1].split()[1].strip())
1437
+
1438
+
1439
+ # Do cellsize (line 4) before line 2 and 3
1440
+ cellsize = float(lines[4].split()[1].strip())
1441
+
1442
+ # Checks suggested by Joaquim Luis
1443
+ # Our internal representation of xllcorner
1444
+ # and yllcorner is non-standard.
1445
+ xref = lines[2].split()
1446
+ if xref[0].strip() == 'xllcorner':
1447
+ xllcorner = float(xref[1].strip()) # + 0.5*cellsize # Correct offset
1448
+ elif xref[0].strip() == 'xllcenter':
1449
+ xllcorner = float(xref[1].strip())
1450
+ else:
1451
+ msg = 'Unknown keyword: %s' % xref[0].strip()
1452
+ raise Exception, msg
1453
+
1454
+ yref = lines[3].split()
1455
+ if yref[0].strip() == 'yllcorner':
1456
+ yllcorner = float(yref[1].strip()) # + 0.5*cellsize # Correct offset
1457
+ elif yref[0].strip() == 'yllcenter':
1458
+ yllcorner = float(yref[1].strip())
1459
+ else:
1460
+ msg = 'Unknown keyword: %s' % yref[0].strip()
1461
+ raise Exception, msg
1462
+
1463
+ NODATA_value = int(float(lines[5].split()[1].strip()))
1464
+
1465
+ assert len(lines) == nrows + 6
1466
+
1467
+
1468
+ #Store data
1469
+ import numpy
1470
+
1471
+ datafile = open(filename)
1472
+ Z = numpy.loadtxt(datafile, skiprows=6)
1473
+ datafile.close()
1474
+
1475
+ #print Z.shape
1476
+ #print Z
1477
+
1478
+ # For raster data we need to a flip and transpose
1479
+ Z = numpy.flipud(Z)
1480
+
1481
+ # Transpose z to have y coordinates along the first axis and x coordinates
1482
+ # along the second axis
1483
+ Z = Z.transpose()
1484
+
1485
+ x = num.linspace(xllcorner, xllcorner+cellsize*(ncols-1), ncols)
1486
+ y = num.linspace(yllcorner, yllcorner+cellsize*(nrows-1), nrows)
1487
+
1488
+
1489
+ if location == 'centroids':
1490
+ points = self.domain.centroid_coordinates
1491
+ else:
1492
+ points = self.domain.vertex_coordinates
1493
+
1494
+ from anuga.geospatial_data.geospatial_data import Geospatial_data, ensure_absolute
1495
+ points = ensure_absolute(points, geo_reference=self.domain.geo_reference)
1496
+
1497
+ # print numpy.max(points[:,0])
1498
+ # print numpy.min(points[:,0])
1499
+ # print numpy.max(points[:,1])
1500
+ # print numpy.min(points[:,1])
1501
+ #
1502
+ # print numpy.max(x)
1503
+ # print numpy.min(x)
1504
+ # print numpy.max(y)
1505
+ # print numpy.min(y)
1506
+
1507
+
1508
+ #print x.shape, x
1509
+ #print y.shape, y
1510
+
1511
+
1512
+
1513
+ from anuga.fit_interpolate.interpolate2d import interpolate2d
1514
+
1515
+ #print points
1516
+ values = interpolate2d(x, y, Z, points, mode='linear', bounds_error=False)
1517
+
1518
+ #print values
1519
+
1520
+ # Call underlying method using array values
1521
+ if verbose:
1522
+ log.critical('Applying fitted data to quantity')
1523
+
1524
+
1525
+ if location == 'centroids':
1526
+ if indices is None:
1527
+ msg = 'Number of values must match number of elements'
1528
+ #assert values.shape[0] == N, msg
1529
+
1530
+ self.centroid_values[:] = values
1531
+ else:
1532
+ msg = 'Number of values must match number of indices'
1533
+ assert values.shape[0] == indices.shape[0], msg
1534
+
1535
+ # Brute force
1536
+ self.centroid_values[indices] = values
1537
+ else:
1538
+ if indices is None:
1539
+ msg = 'Number of values must match number of elements'
1540
+ #assert values.shape[0] == N, msg
1541
+
1542
+ #print values.shape
1543
+ #print self.vertex_values.shape
1544
+ self.vertex_values[:] = values.reshape((-1,3))
1545
+ else:
1546
+ msg = 'Number of values must match number of indices'
1547
+ assert values.shape[0] == indices.shape[0], msg
1548
+
1549
+ # Brute force
1550
+ self.vertex_values[indices] = values.reshape((-1,3))
1551
+ # Cleanup centroid values
1552
+ self.interpolate()
1553
+
1554
+ def get_extremum_index(self, mode=None, indices=None):
1555
+ """Return index for maximum or minimum value of quantity (on centroids)
1556
+
1557
+ Optional arguments:
1558
+ mode is either 'max'(default) or 'min'.
1559
+ indices is the set of element ids that the operation applies to.
1560
+
1561
+ Usage:
1562
+ i = Q.get_extreme_index()
1563
+
1564
+ Notes:
1565
+ We do not seek the extremum at vertices as each vertex can
1566
+ have multiple values - one for each triangle sharing it.
1567
+
1568
+ If there are multiple cells with same maximum value, the
1569
+ first cell encountered in the triangle array is returned.
1570
+ """
1571
+
1572
+ V = self.get_values(location='centroids', indices=indices)
1573
+
1574
+ # Always return absolute indices
1575
+ if mode is None or mode == 'max':
1576
+ i = num.argmax(V)
1577
+ elif mode == 'min':
1578
+ i = num.argmin(V)
1579
+ else:
1580
+ raise ValueError('Bad mode value, got: %s' % str(mode))
1581
+
1582
+ if indices is None:
1583
+ return i
1584
+ else:
1585
+ return indices[i]
1586
+
1587
+ def get_maximum_index(self, indices=None):
1588
+ """See get extreme index for details"""
1589
+
1590
+ return self.get_extremum_index(mode='max', indices=indices)
1591
+
1592
+ def get_maximum_value(self, indices=None):
1593
+ """Return maximum value of quantity (on centroids)
1594
+
1595
+ Optional argument:
1596
+ indices is the set of element ids that the operation applies to.
1597
+
1598
+ Usage:
1599
+ v = get_maximum_value()
1600
+
1601
+ Note, we do not seek the maximum at vertices as each vertex can
1602
+ have multiple values - one for each triangle sharing it
1603
+ """
1604
+
1605
+ i = self.get_maximum_index(indices)
1606
+ V = self.get_values(location='centroids') #, indices=indices)
1607
+
1608
+ return V[i]
1609
+
1610
+ def get_maximum_location(self, indices=None):
1611
+ """Return location of maximum value of quantity (on centroids)
1612
+
1613
+ Optional argument:
1614
+ indices is the set of element ids that the operation applies to.
1615
+
1616
+ Usage:
1617
+ x, y = get_maximum_location()
1618
+
1619
+ Notes:
1620
+ We do not seek the maximum at vertices as each vertex can
1621
+ have multiple values - one for each triangle sharing it.
1622
+
1623
+ If there are multiple cells with same maximum value, the
1624
+ first cell encountered in the triangle array is returned.
1625
+ """
1626
+
1627
+ i = self.get_maximum_index(indices)
1628
+ x, y = self.domain.get_centroid_coordinates()[i]
1629
+
1630
+ return x, y
1631
+
1632
+ def get_minimum_index(self, indices=None):
1633
+ """See get extreme index for details"""
1634
+
1635
+ return self.get_extremum_index(mode='min', indices=indices)
1636
+
1637
+ def get_minimum_value(self, indices=None):
1638
+ """Return minimum value of quantity (on centroids)
1639
+
1640
+ Optional argument:
1641
+ indices is the set of element ids that the operation applies to.
1642
+
1643
+ Usage:
1644
+ v = get_minimum_value()
1645
+
1646
+ See get_maximum_value for more details.
1647
+ """
1648
+
1649
+ i = self.get_minimum_index(indices)
1650
+ V = self.get_values(location='centroids')
1651
+
1652
+ return V[i]
1653
+
1654
+
1655
+ def get_minimum_location(self, indices=None):
1656
+ """Return location of minimum value of quantity (on centroids)
1657
+
1658
+ Optional argument:
1659
+ indices is the set of element ids that the operation applies to.
1660
+
1661
+ Usage:
1662
+ x, y = get_minimum_location()
1663
+
1664
+ Notes:
1665
+ We do not seek the maximum at vertices as each vertex can
1666
+ have multiple values - one for each triangle sharing it.
1667
+
1668
+ If there are multiple cells with same maximum value, the
1669
+ first cell encountered in the triangle array is returned.
1670
+ """
1671
+
1672
+ i = self.get_minimum_index(indices)
1673
+ x, y = self.domain.get_centroid_coordinates()[i]
1674
+
1675
+ return x, y
1676
+
1677
+ def get_interpolated_values(self,
1678
+ interpolation_points,
1679
+ use_cache=False,
1680
+ verbose=False):
1681
+ """Get values at interpolation points
1682
+
1683
+ The argument interpolation points must be given as either a
1684
+ list of absolute UTM coordinates or a geospatial data object.
1685
+ """
1686
+
1687
+ # FIXME (Ole): Points might be converted to coordinates relative to mesh origin
1688
+ # This could all be refactored using the
1689
+ # 'change_points_geo_ref' method of Class geo_reference.
1690
+ # The purpose is to make interpolation points relative
1691
+ # to the mesh origin.
1692
+ #
1693
+ # Speed is also a consideration here.
1694
+
1695
+ # Ensure that interpolation points is either a list of
1696
+ # points, Nx2 array, or geospatial and convert to numeric array
1697
+ if isinstance(interpolation_points, Geospatial_data):
1698
+ # Ensure interpolation points are in absolute UTM coordinates
1699
+ interpolation_points = \
1700
+ interpolation_points.get_data_points(absolute=True)
1701
+
1702
+ # Reconcile interpolation points with georeference of domain
1703
+ interpolation_points = \
1704
+ self.domain.geo_reference.get_relative(interpolation_points)
1705
+ interpolation_points = ensure_numeric(interpolation_points)
1706
+
1707
+
1708
+ # Get internal representation (disconnected) of vertex values
1709
+ vertex_values, triangles = self.get_vertex_values(xy=False,
1710
+ smooth=False)
1711
+
1712
+ # Get possibly precomputed interpolation object
1713
+ I = self.domain.get_interpolation_object()
1714
+
1715
+ # Call interpolate method with interpolation points
1716
+ result = I.interpolate_block(vertex_values, interpolation_points,
1717
+ use_cache=use_cache, verbose=verbose)
1718
+
1719
+ return result
1720
+
1721
+ def get_values(self,
1722
+ interpolation_points=None,
1723
+ location='vertices',
1724
+ indices=None,
1725
+ use_cache=False,
1726
+ verbose=False):
1727
+ """Get values for quantity
1728
+
1729
+ Extract values for quantity as a numeric array.
1730
+
1731
+ Inputs:
1732
+ interpolation_points: List of x, y coordinates where value is
1733
+ sought (using interpolation). If points
1734
+ are given, values of location and indices
1735
+ are ignored. Assume either absolute UTM
1736
+ coordinates or geospatial data object.
1737
+
1738
+ location: Where values are to be stored.
1739
+ Permissible options are: vertices, edges, centroids
1740
+ and unique vertices. Default is 'vertices'
1741
+
1742
+
1743
+ The returned values will have the leading dimension equal to
1744
+ length of the indices list or N (all values) if indices is None.
1745
+
1746
+ In case of location == 'centroids' the dimension of returned
1747
+ values will be a list or a numerical array of length N, N being
1748
+ the number of elements.
1749
+
1750
+ In case of location == 'vertices' or 'edges' the dimension of
1751
+ returned values will be of dimension Nx3
1752
+
1753
+ In case of location == 'unique vertices' the average value at
1754
+ each vertex will be returned and the dimension of returned values
1755
+ will be a 1d array of length "number of vertices"
1756
+
1757
+ Indices is the set of element ids that the operation applies to.
1758
+ If indices is None (or omitted) all elements are returned as
1759
+ a copy of the relevant array. If performance is critical,
1760
+ use arrays domain.centroid_values, domain.vertex_values and
1761
+ domain.edge_values directly.
1762
+
1763
+ The values will be stored in elements following their
1764
+ internal ordering.
1765
+ """
1766
+
1767
+ # FIXME (Ole): I reckon we should have the option of passing a
1768
+ # polygon into get_values. The question becomes how
1769
+ # resulting values should be ordered.
1770
+
1771
+ if verbose is True:
1772
+ log.critical('Getting values from %s' % location)
1773
+
1774
+ if interpolation_points is not None:
1775
+ return self.get_interpolated_values(interpolation_points,
1776
+ use_cache=use_cache,
1777
+ verbose=verbose)
1778
+
1779
+ # FIXME (Ole): Consider deprecating 'edges' - but not if it is used
1780
+ # elsewhere in ANUGA.
1781
+ # Edges have already been deprecated in set_values, see changeset:5521,
1782
+ # but *might* be useful in get_values. Any thoughts anyone?
1783
+ # YES (Ole): Edge values are necessary for volumetric balance
1784
+ # check and inflow boundary. Keep them!
1785
+
1786
+ if location not in ['vertices', 'centroids',
1787
+ 'edges', 'unique vertices']:
1788
+ msg = 'Invalid location: %s' % location
1789
+ raise Exception(msg)
1790
+
1791
+
1792
+ msg = '\'indices\' must be a list, array or None'
1793
+ assert isinstance(indices, (types.NoneType, list, num.ndarray)), msg
1794
+
1795
+ if location == 'centroids':
1796
+ if indices is None:
1797
+ return self.centroid_values.copy()
1798
+ else:
1799
+ return num.take(self.centroid_values, indices, axis=0)
1800
+ elif location == 'edges':
1801
+ if indices is None:
1802
+ return self.edge_values.copy()
1803
+ else:
1804
+ return num.take(self.edge_values, indices, axis=0)
1805
+ elif location == 'unique vertices':
1806
+ if indices is None:
1807
+ indices=range(self.domain.get_number_of_nodes())
1808
+ vert_values = []
1809
+
1810
+ # Go through list of unique vertices
1811
+ for unique_vert_id in indices:
1812
+ triangles = self.domain.get_triangles_and_vertices_per_node(node=unique_vert_id)
1813
+
1814
+ # In case there are unused points
1815
+ if len(triangles) == 0:
1816
+ msg = 'Unique vertex not associated with triangles'
1817
+ raise Exception(msg)
1818
+
1819
+ # Go through all triangle, vertex pairs
1820
+ # Average the values
1821
+ # FIXME (Ole): Should we merge this with get_vertex_values
1822
+ sum = 0
1823
+ for triangle_id, vertex_id in triangles:
1824
+ sum += self.vertex_values[triangle_id, vertex_id]
1825
+ vert_values.append(sum / len(triangles))
1826
+ return num.array(vert_values, num.float)
1827
+ else:
1828
+ if indices is None:
1829
+ return self.vertex_values.copy()
1830
+ else:
1831
+ return num.take(self.vertex_values, indices, axis=0)
1832
+
1833
+ def set_vertex_values(self,
1834
+ A,
1835
+ indices=None,
1836
+ use_cache=False,
1837
+ verbose=False):
1838
+ """Set vertex values for all unique vertices based on input array A
1839
+ which has one entry per unique vertex, i.e. one value for each row in
1840
+ array self.domain.nodes.
1841
+
1842
+ indices is the list of vertex_id's that will be set.
1843
+
1844
+ This function is used by set_values_from_array
1845
+ """
1846
+
1847
+ # Check that A can be converted to array and is of appropriate dim
1848
+ A = ensure_numeric(A, num.float)
1849
+ assert len(A.shape) == 1
1850
+
1851
+ if indices is None:
1852
+ assert A.shape[0] == self.domain.get_nodes().shape[0]
1853
+ vertex_list = range(A.shape[0])
1854
+ else:
1855
+ assert A.shape[0] == len(indices)
1856
+ vertex_list = indices
1857
+
1858
+ #FIXME(Ole): This function ought to be faster.
1859
+ # We need to get the triangles_and_vertices list
1860
+ # from domain in one hit, then cache the computation of the
1861
+ # Nx3 array of vertex values that can then be assigned using
1862
+ # set_values_from_array.
1863
+ #
1864
+ # Alternatively, some C code would be handy
1865
+ #
1866
+ self._set_vertex_values(vertex_list, A)
1867
+
1868
+
1869
+
1870
+ # Note Padarn 27/11/12:
1871
+ # This function has been changed and now uses an external c function
1872
+ # to set the 'vertex_values' instead of a python for loop. The function
1873
+ # 'get_triangles_and_vertices_per_node' has been removed and replaced by
1874
+ # 'build_inverted_triangle_structure. This now adds extra stored array to
1875
+ # the mesh object - this could be removed after the c function below uses
1876
+ #them.
1877
+ # Note, the naming of this function seems confusing - it seems to actually
1878
+ # update the 'node values' given a list of vertices.
1879
+ def _set_vertex_values(self, vertex_list, A):
1880
+ """Go through list of unique vertices
1881
+ This is the common case e.g. when values
1882
+ are obtained from a pts file through fitting
1883
+ """
1884
+ # If required, set up required arrays storing information about the triangle
1885
+ # vertex structure of the mesh.
1886
+ if not (hasattr(self.domain.mesh, 'number_of_triangles_per_node') and \
1887
+ hasattr(self.domain.mesh, 'vertex_value_indices') and \
1888
+ hasattr(self.domain.mesh, 'node_index')):
1889
+ self.build_inverted_triangle_structure()
1890
+
1891
+ set_vertex_values_c(self, num.array(vertex_list), A)
1892
+ self.interpolate()
1893
+
1894
+ def smooth_vertex_values(self, use_cache=False, verbose=False):
1895
+ """Smooths vertex values."""
1896
+
1897
+ A, V = self.get_vertex_values(xy=False, smooth=True)
1898
+ self.set_vertex_values(A, use_cache=use_cache, verbose=verbose)
1899
+
1900
+
1901
+
1902
+ ############################################################################
1903
+ # Methods for outputting model results
1904
+ ############################################################################
1905
+
1906
+ def get_vertex_values(self, xy=True, smooth=None, precision=None):
1907
+ """Return vertex values like an OBJ format i.e. one value per node.
1908
+
1909
+ The vertex values are returned as one sequence in the 1D float array A.
1910
+ If requested the coordinates will be returned in 1D arrays X and Y.
1911
+
1912
+ The connectivity is represented as an integer array, V, of dimension
1913
+ Mx3, where M is the number of triangles. Each row has three indices
1914
+ defining the triangle and they correspond to elements in the arrays
1915
+ X, Y and A.
1916
+
1917
+ If smooth is True, vertex values corresponding to one common coordinate
1918
+ set will be smoothed by taking the average of vertex values for each
1919
+ node. In this case vertex coordinates will be de-duplicated
1920
+ corresponding to the original nodes as obtained from the method
1921
+ general_mesh.get_nodes()
1922
+
1923
+ If no smoothings is required, vertex coordinates and values will be
1924
+ aggregated as a concatenation of values at vertices 0, vertices 1 and
1925
+ vertices 2. This corresponds to the node coordinates obtained from the
1926
+ method general_mesh.get_vertex_coordinates()
1927
+
1928
+ Calling convention
1929
+ if xy is True:
1930
+ X, Y, A, V = get_vertex_values
1931
+ else:
1932
+ A, V = get_vertex_values
1933
+ """
1934
+
1935
+ if smooth is None:
1936
+ # Take default from domain
1937
+ try:
1938
+ smooth = self.domain.smooth
1939
+ except:
1940
+ smooth = False
1941
+
1942
+ if precision is None:
1943
+ precision = num.float
1944
+
1945
+ if smooth is True:
1946
+ # Ensure continuous vertex values by averaging values at each node
1947
+ V = self.domain.get_triangles()
1948
+ N = self.domain.number_of_full_nodes # Ignore ghost nodes if any
1949
+ A = num.zeros(N, num.float)
1950
+ points = self.domain.get_nodes()
1951
+
1952
+ if 1:
1953
+ # Fast C version
1954
+ average_vertex_values(ensure_numeric(self.domain.vertex_value_indices),
1955
+ ensure_numeric(self.domain.number_of_triangles_per_node),
1956
+ ensure_numeric(self.vertex_values),
1957
+ A)
1958
+ A = A.astype(precision)
1959
+ else:
1960
+ # Slow Python version
1961
+ current_node = 0
1962
+ k = 0 # Track triangles touching on node
1963
+ total = 0.0
1964
+ for index in self.domain.vertex_value_indices:
1965
+ if current_node == N:
1966
+ msg = 'Current node exceeding number of nodes (%d) ' % N
1967
+ raise Exception(msg)
1968
+
1969
+ k += 1
1970
+
1971
+ volume_id = index / 3
1972
+ vertex_id = index % 3
1973
+
1974
+ v = self.vertex_values[volume_id, vertex_id]
1975
+ total += v
1976
+
1977
+ if self.domain.number_of_triangles_per_node[current_node] == k:
1978
+ A[current_node] = total/k
1979
+
1980
+ # Move on to next node
1981
+ total = 0.0
1982
+ k = 0
1983
+ current_node += 1
1984
+ else:
1985
+ # Return disconnected internal vertex values
1986
+ V = self.domain.get_disconnected_triangles()
1987
+ points = self.domain.get_vertex_coordinates()
1988
+ A = self.vertex_values.flatten().astype(precision)
1989
+
1990
+ # Return
1991
+ if xy is True:
1992
+ X = points[:,0].astype(precision)
1993
+ Y = points[:,1].astype(precision)
1994
+
1995
+ return X, Y, A, V
1996
+ else:
1997
+ return A, V
1998
+
1999
+ def extrapolate_first_order(self):
2000
+ """Extrapolate conserved quantities from centroid to vertices and edges
2001
+ for each volume using first order scheme.
2002
+ """
2003
+
2004
+ qc = self.centroid_values
2005
+ qv = self.vertex_values
2006
+ qe = self.edge_values
2007
+
2008
+ #for i in range(3):
2009
+ # qe[:,i] = qc
2010
+
2011
+ qe[:] = qc[:,num.newaxis]
2012
+ qv[:] = qe
2013
+
2014
+ self.x_gradient[:] = 0.0
2015
+ self.y_gradient[:] = 0.0
2016
+
2017
+ def get_integral(self, full_only=True, region=None, indices=None):
2018
+
2019
+ """Compute the integral of quantity across entire domain,
2020
+ or over a region. Eg
2021
+ my_region = anuga.Region(polygon = user_polygon)
2022
+
2023
+ Q.get_integral(region = my_region)"""
2024
+
2025
+ assert region is None or indices is None
2026
+
2027
+
2028
+ areas = self.domain.get_areas()
2029
+
2030
+ if region is None and indices is None:
2031
+ if full_only:
2032
+ indices = num.where(self.domain.tri_full_flag ==1)[0]
2033
+ return num.sum(areas[indices]*self.centroid_values[indices])
2034
+ else:
2035
+ return num.sum(areas*self.centroid_values)
2036
+
2037
+ if indices is None:
2038
+ indices = region.get_indices(full_only)
2039
+
2040
+ if indices == []:
2041
+ return 0.0
2042
+ elif indices is None:
2043
+ return num.sum(areas*self.centroid_values)
2044
+ else:
2045
+ return num.sum(areas[indices]*self.centroid_values[indices])
2046
+
2047
+
2048
+ def get_gradients(self):
2049
+ """Provide gradients. Use compute_gradients first."""
2050
+
2051
+ return self.x_gradient, self.y_gradient
2052
+
2053
+ def update(self, timestep):
2054
+ # Call correct module function
2055
+ # (either from this module or C-extension)
2056
+ return update(self, timestep)
2057
+
2058
+ def compute_gradients(self):
2059
+ # Call correct module function
2060
+ # (either from this module or C-extension)
2061
+ return compute_gradients(self)
2062
+
2063
+
2064
+ def compute_local_gradients(self):
2065
+ # Call correct module function
2066
+ # (either from this module or C-extension)
2067
+ return compute_local_gradients(self)
2068
+
2069
+
2070
+
2071
+
2072
+ def limit(self):
2073
+ # Call correct module depending on whether
2074
+ # basing limit calculations on edges or vertices
2075
+ limit_old(self)
2076
+
2077
+ def limit_vertices_by_all_neighbours(self):
2078
+ # Call correct module function
2079
+ # (either from this module or C-extension)
2080
+ limit_vertices_by_all_neighbours(self)
2081
+
2082
+ def limit_edges_by_all_neighbours(self):
2083
+ # Call correct module function
2084
+ # (either from this module or C-extension)
2085
+ limit_edges_by_all_neighbours(self)
2086
+
2087
+ def limit_edges_by_neighbour(self):
2088
+ # Call correct module function
2089
+ # (either from this module or C-extension)
2090
+ limit_edges_by_neighbour(self)
2091
+
2092
+ def extrapolate_second_order(self):
2093
+ # Call correct module function
2094
+ # (either from this module or C-extension)
2095
+ compute_gradients(self)
2096
+ extrapolate_from_gradient(self)
2097
+
2098
+ def extrapolate_second_order_and_limit_by_edge(self):
2099
+ # Call correct module function
2100
+ # (either from this module or C-extension)
2101
+ extrapolate_second_order_and_limit_by_edge(self)
2102
+
2103
+ def extrapolate_second_order_and_limit_by_vertex(self):
2104
+ # Call correct module function
2105
+ # (either from this module or C-extension)
2106
+ extrapolate_second_order_and_limit_by_vertex(self)
2107
+
2108
+ def bound_vertices_below_by_constant(self, bound):
2109
+ # Call correct module function
2110
+ # (either from this module or C-extension)
2111
+ bound_vertices_below_by_constant(self, bound)
2112
+
2113
+ def bound_vertices_below_by_quantity(self, quantity):
2114
+ # Call correct module function
2115
+ # (either from this module or C-extension)
2116
+
2117
+ # check consistency
2118
+ assert self.domain == quantity.domain
2119
+ bound_vertices_below_by_quantity(self, quantity)
2120
+
2121
+ def backup_centroid_values(self):
2122
+ # Call correct module function
2123
+ # (either from this module or C-extension)
2124
+ backup_centroid_values(self)
2125
+
2126
+ def saxpy_centroid_values(self, a, b):
2127
+ # Call correct module function
2128
+ # (either from this module or C-extension)
2129
+ saxpy_centroid_values(self, a, b)
2130
+
2131
+
2132
+ class Conserved_quantity(Quantity):
2133
+ """Class conserved quantity being removed, use Quantity."""
2134
+
2135
+ def __init__(self, domain, vertex_values=None):
2136
+ msg = 'ERROR: Use Quantity instead of Conserved_quantity'
2137
+ raise Exception(msg)
2138
+
2139
+
2140
+ ######
2141
+ # Prepare the C extensions.
2142
+ ######
2143
+ from quantity_ext import \
2144
+ average_vertex_values,\
2145
+ backup_centroid_values,\
2146
+ saxpy_centroid_values,\
2147
+ compute_gradients,\
2148
+ compute_local_gradients,\
2149
+ limit_old,\
2150
+ limit_vertices_by_all_neighbours,\
2151
+ limit_edges_by_all_neighbours,\
2152
+ limit_edges_by_neighbour,\
2153
+ limit_gradient_by_neighbour,\
2154
+ extrapolate_from_gradient,\
2155
+ extrapolate_second_order_and_limit_by_edge,\
2156
+ extrapolate_second_order_and_limit_by_vertex,\
2157
+ bound_vertices_below_by_constant,\
2158
+ bound_vertices_below_by_quantity,\
2159
+ interpolate_from_vertices_to_edges,\
2160
+ interpolate_from_edges_to_vertices,\
2161
+ set_vertex_values_c, \
2162
+ update