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.
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/__config__.py +21 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/__config__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/__init__.py +363 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/__metadata__.py +6 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/__metadata__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/__init__.py +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/ermapper_grids.py +251 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/ermapper_grids.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/file_function.py +483 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/file_function.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/gauge.py +1080 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/gauge.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/general_mesh.py +865 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/general_mesh.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/generic_boundary_conditions.py +862 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/generic_boundary_conditions.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/generic_domain.py +2274 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/generic_domain.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/mesh_factory.py +1011 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/mesh_factory.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/mesh_factory_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/neighbour_mesh.py +1488 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/neighbour_mesh.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/neighbour_mesh_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/neighbour_table_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/pmesh2domain.py +299 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/pmesh2domain.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/pmesh2domain_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/quantity.py +2162 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/quantity.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/quantity_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/region.py +321 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/region.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/setup.py +48 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tag_region.py +167 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tag_region.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/show_balanced_limiters.py +87 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_ermapper.py +189 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_gauge.py +539 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_general_mesh.py +517 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_generic_boundary_conditions.py +439 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_generic_domain.py +907 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_ghost.py +52 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_neighbour_mesh.py +1854 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_pmesh2domain.py +219 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_quantity.py +2859 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_region.py +99 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_tag_region.py +258 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/tests/test_util.py +1632 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/util.py +928 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/abstract_2d_finite_volumes/util.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/__init__.py +12 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/advection.py +298 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/advection.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/advection_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/setup.py +27 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/advection/tests/test_advection.py +183 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/__init__.py +4 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/alpha_shape.py +654 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/alpha_shape.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/setup.py +21 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/alpha_shape/tests/test_alpha_shape.py +402 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/anuga_exceptions.py +46 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/anuga_exceptions.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/__init__.py +18 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/caching.py +2531 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/caching.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/dummy_classes_for_testing.py +20 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/dummy_classes_for_testing.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/setup.py +21 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/caching/tests/test_caching.py +895 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/compile_all.py +82 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/compile_all.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/config.py +273 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/config.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/__init__.py +6 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/geo_reference.py +478 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/geo_reference.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/lat_long_UTM_conversion.py +250 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/lat_long_UTM_conversion.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/point.py +128 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/point.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/redfearn.py +233 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/redfearn.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/setup.py +21 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/projection_test_points.csv +11 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/projection_test_points.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/projection_test_points_z53.csv +11 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/projection_test_points_z53.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/projection_test_points_z54.csv +11 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/projection_test_points_z54.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/redfearn.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/data/redfearn.xls +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/test_geo_reference.py +716 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/test_lat_long_UTM_conversion.py +126 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/test_point.py +125 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/coordinate_transforms/tests/test_redfearn.py +508 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/__init__.py +9 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/culvert_class.py +1627 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/culvert_class.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/culvert_polygons.py +114 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/culvert_polygons.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/culvert_routines.py +362 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/culvert_routines.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/new_culvert_class.py +1630 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/new_culvert_class.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/setup.py +21 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/culvert_polygons_example.py +38 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/data/example_rating_curve.csv +20 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/data/example_rating_curve.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/data/example_rating_curve2.csv +20 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/data/example_rating_curve2.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/data/unittests.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/data/unittests.xls +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/run_culvert_flat_water_lev.py +173 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_culvert_class.py +812 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_culvert_polygons.py +84 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_culvert_routines.py +586 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_culvert_routines_box_10pct.py +342 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_culvert_routines_box_1pct.py +342 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_culvert_routines_pipe_10pct.py +338 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_culvert_routines_pipe_1pct.py +338 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/culvert_flows/tests/test_new_culvert_class.py +810 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/__init__.py +9 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/exposure.py +223 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/exposure.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/inundation_damage.py +467 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/inundation_damage.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/setup.py +21 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/tests/test_exposure.py +325 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/damage_modelling/tests/test_inundation_damage.py +610 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/error_api.py +130 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/error_api.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/extras.py +193 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/extras.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/__init__.py +54 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/csv_file.py +399 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/csv_file.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/mux.py +120 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/mux.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/netcdf.py +266 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/netcdf.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/pts.py +29 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/pts.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/setup.py +27 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/sts.py +293 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/sts.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/sww.py +1552 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/sww.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/tests/test_csv.py +413 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/tests/test_mux.py +1539 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/tests/test_read_sww.py +350 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/tests/test_sww.py +560 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/tests/test_ungenerate.py +283 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/tests/test_urs.py +217 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/ungenerate.py +92 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/ungenerate.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/urs.py +323 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/urs.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file/urs_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/__init__.py +20 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/asc2dem.py +213 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/asc2dem.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/calc_grid_values_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/csv2sts.py +165 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/csv2sts.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/dem2array.py +90 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/dem2array.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/dem2dem.py +145 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/dem2dem.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/dem2pts.py +357 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/dem2pts.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/esri2sww.py +327 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/esri2sww.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/ferret2sww.py +436 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/ferret2sww.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/file_conversion.py +367 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/file_conversion.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/grd2array.py +122 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/grd2array.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sdf2pts.py +181 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sdf2pts.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/setup.py +29 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sts2sww_mesh.py +141 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sts2sww_mesh.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2array.py +321 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2array.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2dem.py +550 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2dem.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2dem_new.py +547 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2dem_new.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2pts.py +175 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/sww2pts.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_2pts.py +249 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_csv2sts.py +118 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_dem2array.py +121 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_dem2dem.py +220 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_dem2pts.py +411 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_file_conversion.py +953 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_grd2array.py +270 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_sww2dem.py +1882 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_urs2sts.py +2127 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/tests/test_urs2sww.py +628 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2nc.py +202 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2nc.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2sts.py +316 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2sts.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2sww.py +306 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2sww.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2txt.py +71 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/urs2txt.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/xya2pts.py +39 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/file_conversion/xya2pts.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/__init__.py +12 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/benchmark_least_squares.py +367 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/benchmark_least_squares.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/fit.py +611 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/fit.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/fitsmooth.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/general_fit_interpolate.py +127 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/general_fit_interpolate.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/interpolate.py +1144 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/interpolate.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/interpolate2d.py +305 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/interpolate2d.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/profile_long_benchmark.py +79 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/profile_long_benchmark.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/run_long_benchmark.py +131 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/run_long_benchmark.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/setup.py +37 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/tests/test_fit.py +1150 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/tests/test_interpolate.py +1952 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/tests/test_interpolate2d.py +469 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/tests/test_search_functions.py +236 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/ticket178_benchmark.py +66 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/fit_interpolate/ticket178_benchmark.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/__init__.py +11 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/aabb.py +133 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/aabb.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/polygon.py +1138 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/polygon.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/polygon_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/polygon_function.py +133 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/polygon_function.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/quad.py +190 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/quad.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/setup.py +27 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/tests/test_geometry.py +110 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geometry/tests/test_polygon.py +1994 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geospatial_data/__init__.py +9 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geospatial_data/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geospatial_data/geospatial_data.py +1698 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geospatial_data/geospatial_data.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geospatial_data/setup.py +21 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geospatial_data/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/geospatial_data/tests/test_geospatial_data.py +1853 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/__init__.py +11 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/add_csv_header.py +136 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/add_csv_header.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/file_length.py +14 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/file_length.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/maxasc.py +96 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/maxasc.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/order_boundary.py +109 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/order_boundary.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/setup.py +22 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/perthAll_stage_250m.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/perthAll_stage_250m_all.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/perthAll_stage_original.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1.asc +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1_bad_num_lines.asc +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1_bad_num_lines.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1_header_differs.asc +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1_header_differs.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1_wrong_num_columns.asc +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test1_wrong_num_columns.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test2.asc +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test2.expected.asc +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test2.expected.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test2.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test3.asc +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test3.expected.asc +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test3.expected.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test3.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test_maxasc.py +150 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/lib/tests/test_order_boundary.py +397 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/load_mesh/__init__.py +4 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/load_mesh/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/load_mesh/loadASCII.py +1073 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/load_mesh/loadASCII.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/load_mesh/setup.py +21 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/load_mesh/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/load_mesh/tests/test_loadASCII.py +544 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/__init__.py +4 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/compile.py +9 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/compile.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/mesh_engine.py +221 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/mesh_engine.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/mesh_engine_c_layer.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/setup.py +29 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/mesh_engine/tests/test_generate_mesh.py +470 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/__init__.py +11 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/base_operator.py +125 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/base_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/boundary_flux_integral_operator.py +79 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/boundary_flux_integral_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/change_friction_operator.py +240 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/change_friction_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/collect_max_quantities_operator.py +142 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/collect_max_quantities_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/collect_max_stage_operator.py +85 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/collect_max_stage_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/compile_all.py +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/compile_all.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/elliptic_operator.py +495 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/elliptic_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/erosion_operators.py +859 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/erosion_operators.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/kinematic_viscosity_operator.py +563 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/kinematic_viscosity_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/kinematic_viscosity_operator_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/mannings_operator.py +87 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/mannings_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/mannings_operator_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/rate_operators.py +431 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/rate_operators.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_elevation.py +290 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_elevation.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_elevation_operator.py +148 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_elevation_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_friction_operators.py +159 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_friction_operators.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_quantity.py +172 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_quantity.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_quantity_operator.py +158 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_quantity_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_stage.py +131 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_stage.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_stage_operator.py +135 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_stage_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_w_uh_vh_operator.py +170 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/set_w_uh_vh_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/setup.py +33 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_base_operator.py +51 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_boundary_flux_integral_operator.py +98 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_erosion_operators.py +344 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_kinematic_viscosity_operator.py +1366 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_rate_operators.py +888 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_set_elevation_operator.py +1034 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_set_quantity.py +511 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_set_stage_operator.py +491 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/operators/tests/test_set_w_uh_vh_operators.py +211 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/__init__.py +31 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/config.py +14 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/config.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/distribute_mesh.py +1682 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/distribute_mesh.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_advection.py +205 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_advection.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_api.py +467 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_api.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_boyd_box_operator.py +332 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_boyd_box_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_boyd_pipe_operator.py +283 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_boyd_pipe_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_generic_communications.py +207 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_generic_communications.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_inlet.py +605 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_inlet.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_inlet_enquiry.py +228 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_inlet_enquiry.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_inlet_operator.py +281 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_inlet_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_internal_boundary_operator.py +230 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_internal_boundary_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_meshes.py +445 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_meshes.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_operator_factory.py +959 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_operator_factory.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_shallow_water.py +282 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_shallow_water.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_structure_operator.py +1241 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_structure_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_weir_orifice_trapezoid_operator.py +281 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/parallel_weir_orifice_trapezoid_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/print_stats.py +205 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/print_stats.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/pypar_ext.py +528 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/pypar_ext.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/sequential_distribute.py +309 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/sequential_distribute.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/setup.py +100 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/parallel/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/AppShell.py +345 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/AppShell.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/Pmw.py +9253 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/Pmw.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/PmwBlt.py +671 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/PmwBlt.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/PmwColor.py +389 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/PmwColor.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/ProgressBar.py +80 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/ProgressBar.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/__init__.py +4 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/compile.py +24 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/compile.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/cursornames.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/cursornames.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/exesetup.py +24 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/exesetup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/graphical_mesh_generator.py +1519 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/graphical_mesh_generator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/addVertex.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/addVertex.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/autoSegGiveAlpha.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/autoSegGiveAlpha.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/default.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/default.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/edit.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/edit.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/hole.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/hole.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/joinVer.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/joinVer.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/meshGen.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/meshGen.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/no_see.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/no_see.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/pointer.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/pointer.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/region.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/region.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/see.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/see.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/segment.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/segment.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/sep.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/sep.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/vertex.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/vertex.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/zoom0.5.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/zoom0.5.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/zoom2.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/zoom2.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/zoomToMesh.gif +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/icons/zoomToMesh.lic +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/mesh.py +2416 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/mesh.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/mesh_interface.py +373 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/mesh_interface.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/mesh_quadtree.py +130 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/mesh_quadtree.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/run_setup.py +43 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/run_setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/setup.py +22 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/tests/test_mesh.py +2129 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/tests/test_mesh_interface.py +988 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/tests/test_meshquad.py +189 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/timing.py +150 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/timing.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/toolbarbutton.py +80 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/toolbarbutton.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/ungen_example.py +69 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/ungen_example.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/view_tsh.py +47 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/view_tsh.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/visualmesh.py +302 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pmesh/visualmesh.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pymetis/__init__.py +6 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pymetis/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pymetis/metis_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pymetis/setup.py +54 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pymetis/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pymetis/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/pymetis/tests/test_metis.py +141 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/setup.py +49 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/__init__.py +12 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/boundaries.py +1028 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/boundaries.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/checkpoint.py +118 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/checkpoint.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/forcing.py +1339 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/forcing.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/most2nc.py +101 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/most2nc.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/setup.py +37 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/shallow_water_domain.py +3114 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/shallow_water_domain.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/shallow_water_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/swDE1_domain_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/swb2_domain.py +576 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/swb2_domain.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/swb2_domain_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/sww_interrogate.py +652 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/sww_interrogate.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/__init__.py +8 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/data/polygon_values_example.csv +46 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/data/polygon_values_example.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/data/test_points_large.csv +7855 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/data/test_points_large.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/data/test_points_small.csv +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/data/test_points_small.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_DE1_domain.py +111 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_data_manager.py +879 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_forcing.py +2271 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_loadsave.py +212 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_local_extrapolation_and_flux_updating.py +114 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_most2nc.py +52 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_shallow_water_domain.py +8670 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_swb2_domain.py +106 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_sww_interrogate.py +888 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/test_system.py +193 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/1-z.grd-e-mux2 +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/1-z.grd-n-mux2 +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/1-z.grd-z-mux2 +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/1-z.lic +55 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/2-z.grd-e-mux2 +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/2-z.grd-n-mux2 +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/2-z.grd-z-mux2 +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/2-z.lic +55 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/3-z.grd-e-mux2 +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/3-z.grd-n-mux2 +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/3-z.grd-z-mux2 +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/3-z.lic +55 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_1_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_2_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_3_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/e_combined_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_1_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_2_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_3_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/n_combined_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/thinned_bound_order_test.lic +18 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/thinned_bound_order_test.txt +6 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_1_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_2_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_3_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_0.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_0.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_1.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_1.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_2.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_2.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_3.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_3.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_4.csv +252 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tests/urs_test_data/z_combined_4.lic +25 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tsh2sww.py +65 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/shallow_water/tsh2sww.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/__init__.py +5 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/boyd_box_operator.py +380 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/boyd_box_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/boyd_box_operator_Amended3.py +245 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/boyd_box_operator_Amended3.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/boyd_pipe_operator.py +305 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/boyd_pipe_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/inlet.py +289 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/inlet.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/inlet_enquiry.py +146 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/inlet_enquiry.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/inlet_operator.py +229 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/inlet_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/internal_boundary_functions.py +431 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/internal_boundary_functions.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/internal_boundary_operator.py +169 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/internal_boundary_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/riverwall.py +738 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/riverwall.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/setup.py +24 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/structure_operator.py +757 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/structure_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/data/hecras_bridge_table.csv +105 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/data/inlet_operator_test1.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/data/inlet_operator_test1.tms +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/data/inlet_operator_test2.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/data/inlet_operator_test2.tms +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/data/test_hydrograph.tms +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/test_boyd_box_operator.py +2623 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/test_boyd_pipe_operator.py +482 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/test_inlet_operator.py +311 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/test_internal_boundary_functions.py +96 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/test_riverwall_structure.py +619 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/tests/test_weir_orifice_trapezoid_operator.py +650 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/weir_orifice_trapezoid_operator.py +387 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/structures/weir_orifice_trapezoid_operator.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/test_all.py +282 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/test_all.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/__init__.py +13 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/eqf.py +147 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/eqf.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/eqf_v2.py +559 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/eqf_v2.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/okada_tsunami.py +347 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/okada_tsunami.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/setup.py +27 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/smf.py +467 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/smf.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/data/fullokada_MS.lic +23 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/data/fullokada_MS.txt +36 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/data/fullokada_SP.lic +23 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/data/fullokada_SP.txt +36 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/data/fullokada_SS.lic +23 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/data/fullokada_SS.txt +36 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/okada_tsunami_octave_95.txt +101 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/test_eq.py +67 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/test_okada_tsunami.py +439 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/test_smf.py +143 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tests/test_tsunami_okada.py +303 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tsunami_okada.py +1885 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/tsunami_source/tsunami_okada.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/__init__.py +11 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/argparsing.py +76 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/argparsing.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/cg_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/cg_solve.py +327 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/cg_solve.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/compile.py +497 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/compile.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/csv_tools.py +121 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/csv_tools.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/data_audit.py +404 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/data_audit.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/data_audit_wrapper.py +52 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/data_audit_wrapper.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/file_utils.py +308 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/file_utils.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/function_utils.py +117 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/function_utils.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/interp.py +318 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/interp.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/log.py +414 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/log.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/log_analyser.py +77 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/log_analyser.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/mem_time_equation.py +106 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/mem_time_equation.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/model_tools.py +457 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/model_tools.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/norms.py +16 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/norms.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/numerical_tools.py +397 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/numerical_tools.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/parallel_abstraction.py +67 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/parallel_abstraction.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/parse.py +26 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/parse.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/plot_utils.py +1237 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/plot_utils.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/quad_tree_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/quantity_setting_functions.py +612 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/quantity_setting_functions.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/quickPlots.py +164 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/quickPlots.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/run_anuga_script.py +70 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/run_anuga_script.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/setup.py +39 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/sparse.py +398 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/sparse.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/sparse_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/sparse_matrix_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/spatialInputUtil.py +1394 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/spatialInputUtil.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/sww_merge.py +820 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/sww_merge.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/system_tools.py +646 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/system_tools.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/terminal_width.py +60 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/terminal_width.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/complex_polygon.csv +4 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/complex_polygon.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/crc_test_file.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/crc_test_file.png +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/mainland_only.csv +669 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/mainland_only.lic +33 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/non_complex_polygon.csv +5 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/data/non_complex_polygon.lic +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_cg_solve.py +569 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_csv_tools.py +435 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_data_audit.py +393 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_file_utils.py +157 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_function_utils.py +65 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_log_analyser.py +89 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_mem_time_equation.py +47 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_numerical_tools.py +616 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_plot_utils.py +455 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_quantity_setting_functions.py +369 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_sparse.py +215 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_spatialInputUtil.py +418 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_system_tools.py +483 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/tests/test_xml_tools.py +316 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/util_ext.pyd +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/where_close.py +219 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/where_close.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/xml_tools.py +326 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/utilities/xml_tools.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/__init__.py +15 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/__init__.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/fabricate.py +1429 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/fabricate.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/parameters.py +24 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/parameters.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/produce_report.py +38 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/produce_report.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/run_validation.py +51 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/run_validation.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/save_parameters_tex.py +17 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/save_parameters_tex.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/setup.py +22 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/setup.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/typeset_report.py +55 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/validation_utilities/typeset_report.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/version.py +11 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga/version.pyc +0 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga-1.3.5-py2.7.egg-info/PKG-INFO +117 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga-1.3.5-py2.7.egg-info/SOURCES.txt +1329 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga-1.3.5-py2.7.egg-info/dependency_links.txt +1 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga-1.3.5-py2.7.egg-info/not-zip-safe +1 -0
- Users/steve/Miniconda/envs/anuga/Lib/site-packages/anuga-1.3.5-py2.7.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,1394 @@
|
|
|
1
|
+
"""
|
|
2
|
+
|
|
3
|
+
Routines to ease the import of spatial data to ANUGA
|
|
4
|
+
|
|
5
|
+
Key routines:
|
|
6
|
+
readShp_1PolyGeo, readShp_1LineGeo -- read SIMPLE shapefile geometries into ANUGA as a list of points.
|
|
7
|
+
The supported geometries are quite restricted, see help
|
|
8
|
+
read_polygon -- Reads either a polygon or line shapefile or a csv as a polygon
|
|
9
|
+
readShpPointsAndAttributes -- read a multi-point shapefile with its attributes into ANUGA
|
|
10
|
+
|
|
11
|
+
ListPts2Wkb -- (Probably for internal use) Convert a list of points to a
|
|
12
|
+
Wkb geometry, allowing us to use GDALs geometry tools
|
|
13
|
+
Wbk2ListPts -- reverse of ListPts2Wkb
|
|
14
|
+
|
|
15
|
+
addIntersectionPtsToLines -- (Probably for internal use, see add_intersections_to_domain_features)
|
|
16
|
+
Given 2 intersecting lines, add their intersection points to them, or
|
|
17
|
+
move existing points if they are within a given distance of the intersection.
|
|
18
|
+
|
|
19
|
+
add_intersections_to_domain_features -- Add intersections to bounding_polygon, breaklines, riverwalls
|
|
20
|
+
This sets them up for being passed to the mesh generator.
|
|
21
|
+
Points within a given distance of an intersection can be replaced
|
|
22
|
+
with the intersection point if desired
|
|
23
|
+
|
|
24
|
+
rasterValuesAtPoints -- (Probably for internal use, see quantityRasterFun in quantity_setting_functions)
|
|
25
|
+
Quite efficiently get raster cell values at points in any gdal-compatible raster
|
|
26
|
+
[gridPointsInPolygon could in future be linked with this to get raster values in a region,
|
|
27
|
+
if we develop a version of ANUGA with sub-grid topography]
|
|
28
|
+
|
|
29
|
+
readRegionPtAreas -- read a shapefile containing regionPtAreas -- xy coordinates + 1 attribute, which is
|
|
30
|
+
the mesh triangle side length (or area) limit. Can be passed as regionPtAreas in
|
|
31
|
+
the mesh generation stage.
|
|
32
|
+
|
|
33
|
+
readListOfBreakLines -- takes a list of shapefile names, each containing a single line geometry, and reads
|
|
34
|
+
it in as a dictionary of breaklines.
|
|
35
|
+
|
|
36
|
+
readListOfRiverWalls -- takes a list of csv names, each containing a xyz polylines defining riverwalls, with
|
|
37
|
+
an optional first line defining the non-default riverwall par, and returns a dictionary
|
|
38
|
+
of the riverwalls and the riverwall_Par
|
|
39
|
+
|
|
40
|
+
polygon_from_matching_breaklines -- given a pattern (string) matching exactly 2 breaklines in a directory,
|
|
41
|
+
convert them to a single polygon. This is useful to e.g. make
|
|
42
|
+
a polygon defining the extent of a channel that is defined from 2 breaklines
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
"""
|
|
46
|
+
import sys
|
|
47
|
+
import os
|
|
48
|
+
import os.path
|
|
49
|
+
import copy
|
|
50
|
+
import struct
|
|
51
|
+
import numpy
|
|
52
|
+
#from matplotlib import path
|
|
53
|
+
import anuga
|
|
54
|
+
from anuga.geometry.polygon import inside_polygon
|
|
55
|
+
|
|
56
|
+
try:
|
|
57
|
+
import gdal
|
|
58
|
+
import ogr
|
|
59
|
+
gdal_available = True
|
|
60
|
+
#import osr # Not needed here but important in general
|
|
61
|
+
except ImportError, err:
|
|
62
|
+
gdal_available = False
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
#####################################
|
|
66
|
+
if gdal_available:
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def readShp_1PolyGeo(shapefile, dropLast=True):
|
|
70
|
+
"""
|
|
71
|
+
Read a "single polygon" shapefile into an ANUGA_polygon object
|
|
72
|
+
(a list of lists, each containing a polygon coordinate)
|
|
73
|
+
|
|
74
|
+
The attribute table is ignored, and there can only be a single geometry in the shapefile
|
|
75
|
+
|
|
76
|
+
INPUTS: shapefile -- full path to shapefile name
|
|
77
|
+
dropLast -- Logical. If so, cut the last point (which closes
|
|
78
|
+
the polygon). ANUGA uses this by default for e.g.
|
|
79
|
+
bounding polygons
|
|
80
|
+
"""
|
|
81
|
+
|
|
82
|
+
# Get the data
|
|
83
|
+
driver=ogr.GetDriverByName("ESRI Shapefile")
|
|
84
|
+
dataSrc=driver.Open(shapefile, 0)
|
|
85
|
+
#dataSrc=ogr.Open(shapefile)
|
|
86
|
+
layer=dataSrc.GetLayer()
|
|
87
|
+
|
|
88
|
+
# Check it is a polygon
|
|
89
|
+
layerType=ogr.GeometryTypeToName(layer.GetGeomType())
|
|
90
|
+
if not layerType=='Polygon':
|
|
91
|
+
msg= shapefile +' is not a polygon shapefile'
|
|
92
|
+
raise Exception, msg
|
|
93
|
+
|
|
94
|
+
# Need a single polygon
|
|
95
|
+
try:
|
|
96
|
+
assert(len(layer)==1)
|
|
97
|
+
except:
|
|
98
|
+
print shapefile
|
|
99
|
+
|
|
100
|
+
boundary_poly=[]
|
|
101
|
+
for feature in layer:
|
|
102
|
+
#geom=feature.GetGeometryReg()
|
|
103
|
+
boundary=feature.GetGeometryRef().Boundary().GetPoints()
|
|
104
|
+
boundary=[list(pts) for pts in boundary]
|
|
105
|
+
boundary_poly.extend(boundary)
|
|
106
|
+
|
|
107
|
+
if(dropLast):
|
|
108
|
+
# Return a list of points, without last point [= first point]
|
|
109
|
+
return boundary_poly[:-1]
|
|
110
|
+
else:
|
|
111
|
+
return boundary_poly
|
|
112
|
+
|
|
113
|
+
####################
|
|
114
|
+
|
|
115
|
+
def readShp_1LineGeo(shapefile):
|
|
116
|
+
"""
|
|
117
|
+
Read a "single-line" shapefile into a list of lists (each containing a point),
|
|
118
|
+
resembling an ANUGA polygon object
|
|
119
|
+
|
|
120
|
+
The attribute table is ignored, and there can only be a single geometry in the shapefile
|
|
121
|
+
|
|
122
|
+
INPUTS: shapefile -- full path to shapefile name
|
|
123
|
+
"""
|
|
124
|
+
|
|
125
|
+
driver=ogr.GetDriverByName("ESRI Shapefile")
|
|
126
|
+
dataSrc=driver.Open(shapefile, 0)
|
|
127
|
+
#dataSrc=ogr.Open(shapefile)
|
|
128
|
+
layer=dataSrc.GetLayer()
|
|
129
|
+
|
|
130
|
+
# Check it is a line
|
|
131
|
+
layerType=ogr.GeometryTypeToName(layer.GetGeomType())
|
|
132
|
+
if not layerType=='Line String':
|
|
133
|
+
msg= shapefile +' is not a line shapefile'
|
|
134
|
+
raise Exception, msg
|
|
135
|
+
|
|
136
|
+
# Need a single line
|
|
137
|
+
try:
|
|
138
|
+
assert len(layer)==1
|
|
139
|
+
except:
|
|
140
|
+
print shapefile
|
|
141
|
+
|
|
142
|
+
line_all=[]
|
|
143
|
+
for feature in layer:
|
|
144
|
+
line=feature.GetGeometryRef().GetPoints()
|
|
145
|
+
line=[list(pts) for pts in line]
|
|
146
|
+
line_all.extend(line)
|
|
147
|
+
|
|
148
|
+
return line_all
|
|
149
|
+
|
|
150
|
+
###########################################################################
|
|
151
|
+
def read_csv_optional_header(filename):
|
|
152
|
+
"""Read a csv file of numbers, which optionally has a single header
|
|
153
|
+
row containing alphabetical characters (which is ignored if it
|
|
154
|
+
exists)
|
|
155
|
+
|
|
156
|
+
INPUT:
|
|
157
|
+
@param filename -- name of appropriate file with ',' delimiter
|
|
158
|
+
|
|
159
|
+
OUTPUT:
|
|
160
|
+
A numpy array with the numeric data
|
|
161
|
+
"""
|
|
162
|
+
|
|
163
|
+
f=open(filename)
|
|
164
|
+
firstLine=f.readline()
|
|
165
|
+
f.close()
|
|
166
|
+
hasLetters=any(c.isalpha() for c in firstLine)
|
|
167
|
+
outPol = numpy.genfromtxt(
|
|
168
|
+
filename, delimiter=',',skip_header=int(hasLetters))
|
|
169
|
+
|
|
170
|
+
return outPol
|
|
171
|
+
|
|
172
|
+
###########################################################################
|
|
173
|
+
def read_polygon(filename, close_polygon_shapefiles=False):
|
|
174
|
+
"""
|
|
175
|
+
|
|
176
|
+
Read a shapefile (polygon or line) or a csv file as an anuga polygon
|
|
177
|
+
|
|
178
|
+
In the case of a csv file, we permit either 1 or 0 header rows, and
|
|
179
|
+
the file can have > 2 columns [but only the first 2 are used]
|
|
180
|
+
|
|
181
|
+
Try to automatically do the correct thing based on the filename
|
|
182
|
+
|
|
183
|
+
"""
|
|
184
|
+
# Check the file exists
|
|
185
|
+
msg= 'Could not read '+ filename
|
|
186
|
+
assert os.path.isfile(filename), msg
|
|
187
|
+
|
|
188
|
+
# Get the file extension type
|
|
189
|
+
fileNameNoExtension , fileExtension = os.path.splitext(filename)
|
|
190
|
+
|
|
191
|
+
if fileExtension == '.shp':
|
|
192
|
+
# Read as either a polygon or line shapefile
|
|
193
|
+
try:
|
|
194
|
+
outPol=readShp_1PolyGeo(filename, dropLast = (not close_polygon_shapefiles))
|
|
195
|
+
assert len(outPol)>1
|
|
196
|
+
except:
|
|
197
|
+
try:
|
|
198
|
+
outPol= readShp_1LineGeo(filename)
|
|
199
|
+
assert len(outPol)>1
|
|
200
|
+
except:
|
|
201
|
+
msg= 'Could not read '+ filename +\
|
|
202
|
+
' as either polygon or line shapefile'
|
|
203
|
+
raise Exception(msg)
|
|
204
|
+
else:
|
|
205
|
+
try:
|
|
206
|
+
outPol = read_csv_optional_header(filename)
|
|
207
|
+
# Only take the first 2 columns
|
|
208
|
+
outPol = outPol[:,0:2].tolist()
|
|
209
|
+
except:
|
|
210
|
+
msg = 'Failed reading polygon '+ filename +\
|
|
211
|
+
' with anuga.utilities.spatialInputUtils.read_polygon'
|
|
212
|
+
raise Exception(msg)
|
|
213
|
+
|
|
214
|
+
return outPol
|
|
215
|
+
|
|
216
|
+
####################
|
|
217
|
+
|
|
218
|
+
def readShpPtsAndAttributes(shapefile):
|
|
219
|
+
"""
|
|
220
|
+
Read a point shapefile with an attribute table into a list
|
|
221
|
+
|
|
222
|
+
INPUT: shapefile -- name of shapefile to read
|
|
223
|
+
|
|
224
|
+
OUTPUT: List with
|
|
225
|
+
[ list_of_points, list_of_attributes, names_of_attributes]
|
|
226
|
+
"""
|
|
227
|
+
|
|
228
|
+
driver=ogr.GetDriverByName("ESRI Shapefile")
|
|
229
|
+
dataSrc=driver.Open(shapefile, 0)
|
|
230
|
+
#dataSrc=ogr.Open(shapefile)
|
|
231
|
+
layer=dataSrc.GetLayer()
|
|
232
|
+
|
|
233
|
+
pts=[]
|
|
234
|
+
attribute=[]
|
|
235
|
+
for i, feature in enumerate(layer):
|
|
236
|
+
if(i==0):
|
|
237
|
+
attributeNames=feature.keys()
|
|
238
|
+
pt=feature.GetGeometryRef().GetPoints()
|
|
239
|
+
pt=[list(p) for p in pt]
|
|
240
|
+
pts.extend(pt)
|
|
241
|
+
att=[feature[i] for i in attributeNames]
|
|
242
|
+
attribute.extend(att)
|
|
243
|
+
|
|
244
|
+
return [pts, attribute, attributeNames]
|
|
245
|
+
|
|
246
|
+
########################################
|
|
247
|
+
def readShpPts(shapefile):
|
|
248
|
+
"""
|
|
249
|
+
Wrapper around readShpPtsAndAttributes
|
|
250
|
+
Only get the points
|
|
251
|
+
"""
|
|
252
|
+
|
|
253
|
+
out=readShpPtsAndAttributes(shapefile)[0]
|
|
254
|
+
return out
|
|
255
|
+
|
|
256
|
+
########################################
|
|
257
|
+
def read_points(filename):
|
|
258
|
+
"""
|
|
259
|
+
Reads x,y geometries from a point shapefile or csv file (anuga polygon type format),
|
|
260
|
+
and returns as a list of lists
|
|
261
|
+
"""
|
|
262
|
+
# Check the file exists
|
|
263
|
+
msg= 'Could not read '+ filename
|
|
264
|
+
assert os.path.isfile(filename), msg
|
|
265
|
+
|
|
266
|
+
# Get the file extension type
|
|
267
|
+
fileNameNoExtension , fileExtension = os.path.splitext(filename)
|
|
268
|
+
|
|
269
|
+
if fileExtension=='.shp':
|
|
270
|
+
try:
|
|
271
|
+
points = readShpPts(filename)
|
|
272
|
+
except:
|
|
273
|
+
msg = 'Could not read points from ' + filename
|
|
274
|
+
raise Exception, msg
|
|
275
|
+
else:
|
|
276
|
+
# Assume txt format
|
|
277
|
+
try:
|
|
278
|
+
#points=numpy.genfromtxt(filename,delimiter=',',skip_header=1)
|
|
279
|
+
#points=points[:,0:2].tolist()
|
|
280
|
+
points=anuga.read_polygon(filename)
|
|
281
|
+
except:
|
|
282
|
+
msg = 'Could not read points from ' + filename +\
|
|
283
|
+
'. Make sure it has a single header row, ' +\
|
|
284
|
+
'with comma separator, and the first 2 columns are x,y'
|
|
285
|
+
raise Exception, msg
|
|
286
|
+
return points
|
|
287
|
+
|
|
288
|
+
########################################
|
|
289
|
+
def ListPts2Wkb( ptsIn, geometry_type='line', appendFirstOnEnd=None):
|
|
290
|
+
"""
|
|
291
|
+
Convert list of points to a GDAl Wkb format
|
|
292
|
+
Can be either points, lines, or polygon
|
|
293
|
+
|
|
294
|
+
Purpose is that once data in in Wkb format, we can use GDAL's geometric operations
|
|
295
|
+
(e.g. to test for intersections, etc)
|
|
296
|
+
|
|
297
|
+
INPUT: ptsIn -- list of points in the format [[x0,y0], [x1, y1], ..., [xn, yn]]
|
|
298
|
+
Actually it is also ok if [x0,y0], .. is a tuple instead
|
|
299
|
+
geometry_type -- 'point' or 'line' or 'polygon'
|
|
300
|
+
|
|
301
|
+
appendFirstOnEnd -- logical. If true, add the first point to the
|
|
302
|
+
end. Probably wanted for polygons when they are unclosed in ANUGA
|
|
303
|
+
|
|
304
|
+
OUTPUT:
|
|
305
|
+
The points as a Wkb Geometry.
|
|
306
|
+
geometry_type='point' produces a MULTIPOINT Geometry
|
|
307
|
+
='line' produces a LINESTRING Geometry
|
|
308
|
+
='polygon' produces a POLYGON Geometry
|
|
309
|
+
|
|
310
|
+
FIXME: This might not sensibly-use the gdal geometry types (although it
|
|
311
|
+
passes our tests) -- consider revising
|
|
312
|
+
"""
|
|
313
|
+
# Avoid modifying ptsIn
|
|
314
|
+
pts=copy.copy(ptsIn)
|
|
315
|
+
|
|
316
|
+
if appendFirstOnEnd is None:
|
|
317
|
+
if(geometry_type=='polygon'):
|
|
318
|
+
appendFirstOnEnd=True
|
|
319
|
+
else:
|
|
320
|
+
appendFirstOnEnd=False
|
|
321
|
+
|
|
322
|
+
if appendFirstOnEnd:
|
|
323
|
+
pts.append(pts[0])
|
|
324
|
+
|
|
325
|
+
if(geometry_type=='point'):
|
|
326
|
+
data=ogr.Geometry(ogr.wkbMultiPoint)
|
|
327
|
+
elif(geometry_type=='line'):
|
|
328
|
+
data=ogr.Geometry(ogr.wkbLineString)
|
|
329
|
+
elif(geometry_type=='polygon'):
|
|
330
|
+
data=ogr.Geometry(ogr.wkbLinearRing)
|
|
331
|
+
else:
|
|
332
|
+
raise Exception, "Type must be either 'point' or 'line' or 'polygon'"
|
|
333
|
+
|
|
334
|
+
for i in range(len(pts)):
|
|
335
|
+
if(len(pts[i])==2):
|
|
336
|
+
if(geometry_type=='point'):
|
|
337
|
+
newPt=ogr.Geometry(ogr.wkbPoint)
|
|
338
|
+
newPt.AddPoint(pts[i][0], pts[i][1])
|
|
339
|
+
data.AddGeometryDirectly(newPt)
|
|
340
|
+
else:
|
|
341
|
+
data.AddPoint(pts[i][0], pts[i][1])
|
|
342
|
+
elif(len(pts[i])==3):
|
|
343
|
+
if(geometry_type=='point'):
|
|
344
|
+
newPt=ogr.Geometry(ogr.wkbPoint)
|
|
345
|
+
newPt.AddPoint(pts[i][0], pts[i][1], pts[i][2])
|
|
346
|
+
data.AddGeometryDirectly(newPt)
|
|
347
|
+
else:
|
|
348
|
+
data.AddPoint(pts[i][0], pts[i][1], pts[i][2])
|
|
349
|
+
else:
|
|
350
|
+
raise Exception, 'Points must be either 2 or 3 dimensional'
|
|
351
|
+
|
|
352
|
+
if(geometry_type=='polygon'):
|
|
353
|
+
poly = ogr.Geometry(ogr.wkbPolygon)
|
|
354
|
+
poly.AddGeometry(data)
|
|
355
|
+
data=poly
|
|
356
|
+
|
|
357
|
+
return(data)
|
|
358
|
+
|
|
359
|
+
############################################################################
|
|
360
|
+
def Wkb2ListPts(wkb_geo, removeLast=False, drop_third_dimension=False):
|
|
361
|
+
"""
|
|
362
|
+
Reverse of ListPts2Wkb
|
|
363
|
+
"""
|
|
364
|
+
if(wkb_geo.GetGeometryName()=='POLYGON'):
|
|
365
|
+
X=wkb_geo.GetBoundary()
|
|
366
|
+
new=[ list(X.GetPoints()[i]) for i in range(len(X.GetPoints())) ]
|
|
367
|
+
elif(wkb_geo.GetGeometryName()=='MULTIPOINT'):
|
|
368
|
+
new=[ [feature.GetX(), feature.GetY(),feature.GetZ()] for feature in wkb_geo]
|
|
369
|
+
elif(wkb_geo.GetGeometryName()=='LINESTRING'):
|
|
370
|
+
new=[ list(wkb_geo.GetPoints()[i]) for i in range(len(wkb_geo.GetPoints())) ]
|
|
371
|
+
else:
|
|
372
|
+
raise Exception, 'Geometry type not supported'
|
|
373
|
+
|
|
374
|
+
if(removeLast):
|
|
375
|
+
new=new[:-1]
|
|
376
|
+
if(drop_third_dimension):
|
|
377
|
+
new = [new[i][0:2] for i in range(len(new))]
|
|
378
|
+
return new
|
|
379
|
+
|
|
380
|
+
############################################################################
|
|
381
|
+
def compute_squared_distance_to_segment(pt, line):
|
|
382
|
+
"""
|
|
383
|
+
Compute the squared distance between a point and a [finite] line segment
|
|
384
|
+
|
|
385
|
+
INPUT: pt -- [x,y]
|
|
386
|
+
line -- [[x0,y0],[x1,y1]] -- 2 points defining a line segment
|
|
387
|
+
|
|
388
|
+
OUTPUT: The distance^2 of pt to the line segment
|
|
389
|
+
|
|
390
|
+
"""
|
|
391
|
+
p0 = line[0]
|
|
392
|
+
p1 = line[1]
|
|
393
|
+
#
|
|
394
|
+
# Get unit vector along segment
|
|
395
|
+
seg_unitVec_x = float(p1[0]-p0[0])
|
|
396
|
+
seg_unitVec_y = float(p1[1]-p0[1])
|
|
397
|
+
segLen = (seg_unitVec_x**2+seg_unitVec_y**2)**0.5
|
|
398
|
+
if(segLen == 0.):
|
|
399
|
+
raise Exception, 'Line has repeated points: Line %s Pt %s' % (str(line),str(pt))
|
|
400
|
+
|
|
401
|
+
seg_unitVec_x = seg_unitVec_x/segLen
|
|
402
|
+
seg_unitVec_y = seg_unitVec_y/segLen
|
|
403
|
+
|
|
404
|
+
# Get vector from pt to p0
|
|
405
|
+
pt_p0_vec_x = float(pt[0]-p0[0])
|
|
406
|
+
pt_p0_vec_y = float(pt[1]-p0[1])
|
|
407
|
+
pt_p0_vec_len_squared = (pt_p0_vec_x**2 + pt_p0_vec_y**2)
|
|
408
|
+
|
|
409
|
+
# Get dot product of above vector with unit vector
|
|
410
|
+
pt_dot_segUnitVec = (pt_p0_vec_x)*seg_unitVec_x + (pt_p0_vec_y)*seg_unitVec_y
|
|
411
|
+
|
|
412
|
+
if( (pt_dot_segUnitVec < segLen) and (pt_dot_segUnitVec > 0.)):
|
|
413
|
+
# The nearest point on the line is actually between p0 and p1, so we have a 'real' candidate
|
|
414
|
+
# Get distance^2
|
|
415
|
+
output = pt_p0_vec_len_squared - pt_dot_segUnitVec**2.
|
|
416
|
+
else:
|
|
417
|
+
# Distance is the min distance from p0 and p1.
|
|
418
|
+
output = min( pt_p0_vec_len_squared, (float(pt[0]-p1[0])**2+float(pt[1]-p1[1])**2))
|
|
419
|
+
|
|
420
|
+
if(output < -1.0e-06):
|
|
421
|
+
print 'Diagnostic numbers follow: '
|
|
422
|
+
print output
|
|
423
|
+
print pt_p0_vec_len_squared
|
|
424
|
+
print pt_dot_segUnitVec
|
|
425
|
+
print pt
|
|
426
|
+
print p1
|
|
427
|
+
print p0
|
|
428
|
+
raise Exception, 'round-off in compute_squared_distance_to_segment'
|
|
429
|
+
if(output < 0.):
|
|
430
|
+
output=0.
|
|
431
|
+
return output
|
|
432
|
+
|
|
433
|
+
############################################################################
|
|
434
|
+
|
|
435
|
+
def find_nearest_segment(pt, segments):
|
|
436
|
+
"""
|
|
437
|
+
Given a point and a line, find the line segment nearest to the line
|
|
438
|
+
|
|
439
|
+
NOTE: The answer can be ambiguous if one of the segment endpoints is
|
|
440
|
+
the nearest point. In that case, the behaviour is determined by the behaviour
|
|
441
|
+
of numpy.argmin. Won't be a problem for this application
|
|
442
|
+
|
|
443
|
+
INPUT: pt -- [x,y]
|
|
444
|
+
segments -- [[x0,y0], [x1,y1], ...]
|
|
445
|
+
A list of points, consecutive points are interpreted
|
|
446
|
+
as joined and so defining line segments
|
|
447
|
+
|
|
448
|
+
OUTPUT: The squared distance, and the index i of the segment
|
|
449
|
+
[x_i,y_i],[x_i+1,y_i+1] in segments which is closest to pt
|
|
450
|
+
"""
|
|
451
|
+
ll=len(segments)
|
|
452
|
+
if(ll<=1):
|
|
453
|
+
raise Exception, 'Segments must have length > 1 in find_nearest_segment'
|
|
454
|
+
|
|
455
|
+
ptDist_sq=numpy.zeros(ll-1) # Hold the squared distance from the point to the line segment
|
|
456
|
+
for i in range(len(segments)-1):
|
|
457
|
+
# Compute distance from segment
|
|
458
|
+
ptDist_sq[i]=compute_squared_distance_to_segment(pt, [segments[i],segments[i+1]])
|
|
459
|
+
|
|
460
|
+
return [ptDist_sq.min(), ptDist_sq.argmin()]
|
|
461
|
+
|
|
462
|
+
######################################################
|
|
463
|
+
|
|
464
|
+
def shift_point_on_line(pt, lineIn, nearest_segment_index):
|
|
465
|
+
"""
|
|
466
|
+
Support pt is a point, which is near to the 'nearest_segment_index'
|
|
467
|
+
segment of the line 'lineIn'
|
|
468
|
+
|
|
469
|
+
This routine moves the nearest end point of that segment on line to pt.
|
|
470
|
+
|
|
471
|
+
INPUTS: pt -- [x,y] point
|
|
472
|
+
lineIn -- [ [x0, y0], [x1, y1], ..., [xN,yN]]
|
|
473
|
+
nearest_segment_index = index where the distance of pt to
|
|
474
|
+
the line from [x_i,y_i] to [x_i+1,y_i+1] is minimum
|
|
475
|
+
|
|
476
|
+
OUTPUT: The new line
|
|
477
|
+
"""
|
|
478
|
+
# Avoid Changing line
|
|
479
|
+
line=copy.copy(lineIn)
|
|
480
|
+
|
|
481
|
+
# Replace the nearest point on L1 with the intersection point
|
|
482
|
+
p0 = line[nearest_segment_index]
|
|
483
|
+
p1 = line[nearest_segment_index+1]
|
|
484
|
+
d_p0 = ( (pt[0]-p0[0])**2 + (pt[1]-p0[1])**2)
|
|
485
|
+
d_p1 = ( (pt[0]-p1[0])**2 + (pt[1]-p1[1])**2)
|
|
486
|
+
changeP1=(d_p1<d_p0)
|
|
487
|
+
line[nearest_segment_index+changeP1][0] = pt[0]
|
|
488
|
+
line[nearest_segment_index+changeP1][1] = pt[1]
|
|
489
|
+
|
|
490
|
+
return line
|
|
491
|
+
|
|
492
|
+
#################################################################################
|
|
493
|
+
def insert_intersection_point(intersectionPt, line_pts, point_movement_threshold, verbose=False):
|
|
494
|
+
"""
|
|
495
|
+
Add intersectionPt to line_pts, either by inserting it, or if a point on line_pts is
|
|
496
|
+
closer than point_movement_threshold, then by moving that point to the intersection point
|
|
497
|
+
|
|
498
|
+
INPUTS:
|
|
499
|
+
intersectionPt -- the intersection point [known to lie on line_pts]
|
|
500
|
+
line_pts -- ordered list of [x,y] points making a line.
|
|
501
|
+
point_movement_threshold -- used to decide to move or add intersectionPt
|
|
502
|
+
|
|
503
|
+
OUTPUT:
|
|
504
|
+
new version of lint_pts with the point added
|
|
505
|
+
"""
|
|
506
|
+
# Avoid pointer/copy issues
|
|
507
|
+
L1_pts = copy.copy(line_pts)
|
|
508
|
+
iP=copy.copy(intersectionPt)
|
|
509
|
+
|
|
510
|
+
# Adjust L1
|
|
511
|
+
tmp = find_nearest_segment(intersectionPt, L1_pts)
|
|
512
|
+
# Compute the distance from the end points of the segment to the
|
|
513
|
+
# intersection point. Based on this we decide to add or move the point
|
|
514
|
+
p0 = L1_pts[tmp[1]]
|
|
515
|
+
p1 = L1_pts[tmp[1]+1]
|
|
516
|
+
endPt_Dist_Sq=min( ( (p0[0]-iP[0])**2 + (p0[1]-iP[1])**2),
|
|
517
|
+
( (p1[0]-iP[0])**2 + (p1[1]-iP[1])**2))
|
|
518
|
+
#
|
|
519
|
+
if(endPt_Dist_Sq>point_movement_threshold**2):
|
|
520
|
+
# Insert the intersection point. We do this in a tricky way to
|
|
521
|
+
# account for the possibility of L1_pts having > 2 coordinates
|
|
522
|
+
# (riverWalls)
|
|
523
|
+
if verbose:
|
|
524
|
+
print ' Inserting new point'
|
|
525
|
+
dummyPt=copy.copy(L1_pts[tmp[1]])
|
|
526
|
+
L1_pts.insert(tmp[1]+1,dummyPt)
|
|
527
|
+
L1_pts[tmp[1]+1][0]=iP[0]
|
|
528
|
+
L1_pts[tmp[1]+1][1]=iP[1]
|
|
529
|
+
if(len(L1_pts[tmp[1]+1])==3):
|
|
530
|
+
# Treat 3rd coordinate
|
|
531
|
+
# Find distance of inserted point from neighbours, and
|
|
532
|
+
# Set 3rd coordinate as distance-weighted average of the others
|
|
533
|
+
d0=((L1_pts[tmp[1]][0]-L1_pts[tmp[1]+1][0])**2.+\
|
|
534
|
+
(L1_pts[tmp[1]][1]-L1_pts[tmp[1]+1][1])**2.)**0.5
|
|
535
|
+
d1=((L1_pts[tmp[1]+2][0]-L1_pts[tmp[1]+1][0])**2.+\
|
|
536
|
+
(L1_pts[tmp[1]+2][1]-L1_pts[tmp[1]+1][1])**2.)**0.5
|
|
537
|
+
L1_pts[tmp[1]+1][2] = (d0*L1_pts[tmp[1]+2][2] + d1*L1_pts[tmp[1]][2])/(d0+d1)
|
|
538
|
+
|
|
539
|
+
else:
|
|
540
|
+
if verbose:
|
|
541
|
+
print ' Shifting existing point'
|
|
542
|
+
# Move a point already on L1
|
|
543
|
+
L1_pts=shift_point_on_line(iP, L1_pts, tmp[1])
|
|
544
|
+
|
|
545
|
+
return L1_pts
|
|
546
|
+
|
|
547
|
+
#######################################################################################################
|
|
548
|
+
def check_polygon_is_small(intersection, buf, tol2=100.):
|
|
549
|
+
"""
|
|
550
|
+
|
|
551
|
+
Elsewhere in the code, we check whether lines intersect by buffering them
|
|
552
|
+
to polygons with a small buffer = buf, then getting the intersection.
|
|
553
|
+
[since intersection with polygons is supported by gdal, but apparently
|
|
554
|
+
not directly with lines].
|
|
555
|
+
|
|
556
|
+
The logic of our code only works with point intersections,
|
|
557
|
+
and it will fails if 2 lines overlap in a line.
|
|
558
|
+
|
|
559
|
+
We crudely check for this situation here, by ensuring that the intersection polygon is 'small'
|
|
560
|
+
|
|
561
|
+
WARNING: The gdal geometry routines may be a bit rough (?)
|
|
562
|
+
Intersections not very precise, etc (?)
|
|
563
|
+
|
|
564
|
+
INPUT: intersection -- intersection of the 2 lines [gdal geometry]
|
|
565
|
+
buf -- a length scale giving the size of the intersection extent that we expect for a point
|
|
566
|
+
tol2 -- Throw an error if the x or y extent is greater than buf*tol2. Seems this needs to be
|
|
567
|
+
large sometimes -- this might reflect the stated weaknesses of GDALs geometry routines?
|
|
568
|
+
OUTPUT: True/False
|
|
569
|
+
False should suggest that the intersection is not describing a point
|
|
570
|
+
"""
|
|
571
|
+
|
|
572
|
+
extent=intersection.GetEnvelope()
|
|
573
|
+
assert(len(extent)==4) # Make sure this assumption is valid
|
|
574
|
+
if( (abs(extent[0]-extent[1])>buf*tol2) or (abs(extent[2]-extent[3]) > buf*tol2)):
|
|
575
|
+
return False
|
|
576
|
+
else:
|
|
577
|
+
return True
|
|
578
|
+
|
|
579
|
+
#######################################################################################################
|
|
580
|
+
|
|
581
|
+
def addIntersectionPtsToLines(L1,L2, point_movement_threshold=0.0, buf=1.0e-05, tol2 = 100,
|
|
582
|
+
verbose=True, nameFlag=''):
|
|
583
|
+
"""
|
|
584
|
+
Add intersection points to lines L1 and L2 if they intersect each other
|
|
585
|
+
|
|
586
|
+
This is useful e.g. so that intersections can be exact (important for
|
|
587
|
+
mesh generation in ANUGA)
|
|
588
|
+
|
|
589
|
+
It currently only supports point intersection of 2 lines.
|
|
590
|
+
Line intersections should fail gracefully
|
|
591
|
+
|
|
592
|
+
INPUTS: L1, L2 = Wkb LineString geometries
|
|
593
|
+
|
|
594
|
+
point_movement_threshold -- if the distance from the nearest
|
|
595
|
+
point on L1 or L2 to the intersection is < point_movement_threshold, then the
|
|
596
|
+
nearest point has its coordinates replaced with the intersection point. This is
|
|
597
|
+
to prevent points being too close to each other
|
|
598
|
+
|
|
599
|
+
buf = tolerence that is used to buffer lines to find
|
|
600
|
+
intersections. Probably doesn't need modification
|
|
601
|
+
|
|
602
|
+
tol2 = [see check_polygon_is_small] Probably doesn't need to change
|
|
603
|
+
|
|
604
|
+
nameFlag = This will be printed if intersection occurs.
|
|
605
|
+
Convenient way to display intersecting filenames
|
|
606
|
+
|
|
607
|
+
OUTPUTS: L1,L2 with intersection points added in the right places
|
|
608
|
+
"""
|
|
609
|
+
|
|
610
|
+
if(L1.Intersects(L2)):
|
|
611
|
+
# Get points on the lines
|
|
612
|
+
L1_pts=Wkb2ListPts(L1)
|
|
613
|
+
L2_pts=Wkb2ListPts(L2)
|
|
614
|
+
|
|
615
|
+
# Buffer lines by a small amount
|
|
616
|
+
L1_buf=L1.Buffer(buf)
|
|
617
|
+
L2_buf=L2.Buffer(buf)
|
|
618
|
+
|
|
619
|
+
# Get intersection point[s]
|
|
620
|
+
L1_L2_intersect=L1_buf.Intersection(L2_buf)
|
|
621
|
+
if(L1_L2_intersect.GetGeometryCount()==1):
|
|
622
|
+
if(not check_polygon_is_small(L1_L2_intersect, buf, tol2)):
|
|
623
|
+
msg = 'line intersection is not allowed. ' + \
|
|
624
|
+
'Envelope %s '% str(L1_L2_intersect.GetEnvelope())
|
|
625
|
+
raise Exception(msg)
|
|
626
|
+
# Seems to need special treatment with only 1 intersection point
|
|
627
|
+
intersectionPts=[L1_L2_intersect.Centroid().GetPoint()]
|
|
628
|
+
else:
|
|
629
|
+
intersectionPts=[]
|
|
630
|
+
for feature in L1_L2_intersect:
|
|
631
|
+
if(not check_polygon_is_small(feature, buf, tol2)):
|
|
632
|
+
print feature.GetEnvelope()
|
|
633
|
+
raise Exception, 'line intersection is not allowed'
|
|
634
|
+
intersectionPts.append(feature.Centroid().GetPoint())
|
|
635
|
+
|
|
636
|
+
if(verbose):
|
|
637
|
+
print nameFlag
|
|
638
|
+
print ' Treating intersections in ', len(intersectionPts) , ' locations'
|
|
639
|
+
print intersectionPts
|
|
640
|
+
|
|
641
|
+
# Insert the points into the line segments
|
|
642
|
+
for i in range(len(intersectionPts)):
|
|
643
|
+
L1_pts = insert_intersection_point(intersectionPts[i], L1_pts,
|
|
644
|
+
point_movement_threshold, verbose=verbose)
|
|
645
|
+
L2_pts = insert_intersection_point(intersectionPts[i], L2_pts,
|
|
646
|
+
point_movement_threshold, verbose=verbose)
|
|
647
|
+
|
|
648
|
+
# Convert to the input format
|
|
649
|
+
L1_pts=ListPts2Wkb(L1_pts,geometry_type='line')
|
|
650
|
+
L2_pts=ListPts2Wkb(L2_pts,geometry_type='line')
|
|
651
|
+
|
|
652
|
+
return [L1_pts, L2_pts]
|
|
653
|
+
else:
|
|
654
|
+
return [L1, L2]
|
|
655
|
+
|
|
656
|
+
###########################################################
|
|
657
|
+
def getRasterExtent(rasterFile, asPolygon=False):
|
|
658
|
+
"""
|
|
659
|
+
Sometimes we need to know the extent of a raster
|
|
660
|
+
i.e. the minimum x, maximum x, minimum y, and maximum y values
|
|
661
|
+
|
|
662
|
+
INPUT:
|
|
663
|
+
rasterFile -- a gdal compatible rasterfile
|
|
664
|
+
asPolygon -- if False, return [xmin,xmax,ymin,ymax].
|
|
665
|
+
If True, return [ [xmin,ymin],[xmax,ymin],[xmax,ymax],[xmin,ymax]]
|
|
666
|
+
OUTPUT
|
|
667
|
+
The extent as defined above
|
|
668
|
+
|
|
669
|
+
"""
|
|
670
|
+
raster = gdal.Open(rasterFile)
|
|
671
|
+
transform=raster.GetGeoTransform()
|
|
672
|
+
xOrigin = transform[0]
|
|
673
|
+
yOrigin = transform[3]
|
|
674
|
+
xPixels=raster.RasterXSize
|
|
675
|
+
yPixels=raster.RasterYSize
|
|
676
|
+
|
|
677
|
+
# Compute the other extreme corner
|
|
678
|
+
x2=xOrigin + xPixels*transform[1]+yPixels*transform[2]
|
|
679
|
+
y2=yOrigin + xPixels*transform[4]+yPixels*transform[5]
|
|
680
|
+
|
|
681
|
+
xmin=min(xOrigin,x2)
|
|
682
|
+
xmax=max(xOrigin,x2)
|
|
683
|
+
|
|
684
|
+
ymin=min(yOrigin,y2)
|
|
685
|
+
ymax=max(yOrigin,y2)
|
|
686
|
+
|
|
687
|
+
if(asPolygon):
|
|
688
|
+
return [ [xmin,ymin], [xmax,ymin], [xmax,ymax], [xmin,ymax]]
|
|
689
|
+
else:
|
|
690
|
+
return [xmin,xmax,ymin,ymax]
|
|
691
|
+
|
|
692
|
+
|
|
693
|
+
###########################################################
|
|
694
|
+
def rasterValuesAtPoints(
|
|
695
|
+
xy,
|
|
696
|
+
rasterFile,
|
|
697
|
+
band=1,
|
|
698
|
+
nodata_rel_tol = 1.0e-08,
|
|
699
|
+
interpolation = 'pixel'):
|
|
700
|
+
"""
|
|
701
|
+
Get raster values at point locations.
|
|
702
|
+
Can be used to e.g. set quantity values
|
|
703
|
+
|
|
704
|
+
INPUT:
|
|
705
|
+
@param xy = numpy array with point locations
|
|
706
|
+
|
|
707
|
+
@param rasterFile = Filename of the gdal-compatible raster
|
|
708
|
+
|
|
709
|
+
@param band = band of the raster to get
|
|
710
|
+
|
|
711
|
+
@param nodata_rel_tol = Values are treated as nodata if
|
|
712
|
+
( abs(elev - nodataval) < nodata_rel_tol*abs(nodataval) )
|
|
713
|
+
This allows for truncation errors in nodata values which seem
|
|
714
|
+
to be introduced by some file-type conversions
|
|
715
|
+
|
|
716
|
+
@param interpolation 'pixel' or 'bilinear' determines how the
|
|
717
|
+
raster cell values are used to set the point value
|
|
718
|
+
|
|
719
|
+
OUTPUT:
|
|
720
|
+
1d numpy array with raster values at xy
|
|
721
|
+
|
|
722
|
+
"""
|
|
723
|
+
# Raster info
|
|
724
|
+
raster = gdal.Open(rasterFile)
|
|
725
|
+
rasterBand=raster.GetRasterBand(band)
|
|
726
|
+
rasterBandType=gdal.GetDataTypeName(rasterBand.DataType)
|
|
727
|
+
nodataval = rasterBand.GetNoDataValue()
|
|
728
|
+
|
|
729
|
+
# Projection info
|
|
730
|
+
transform=raster.GetGeoTransform()
|
|
731
|
+
xOrigin = transform[0]
|
|
732
|
+
yOrigin = transform[3]
|
|
733
|
+
pixelWidth = transform[1]
|
|
734
|
+
pixelHeight = transform[5] # Negative
|
|
735
|
+
|
|
736
|
+
# Get coordinates in pixel values
|
|
737
|
+
px = (xy[:,0] - xOrigin) / pixelWidth
|
|
738
|
+
py = (xy[:,1] - yOrigin) / pixelHeight
|
|
739
|
+
|
|
740
|
+
# Hold elevation
|
|
741
|
+
elev = px*0.
|
|
742
|
+
|
|
743
|
+
# Get the right character for struct.unpack
|
|
744
|
+
if (rasterBandType == 'Int16'):
|
|
745
|
+
CtypeName='h'
|
|
746
|
+
elif (rasterBandType == 'Float32'):
|
|
747
|
+
CtypeName='f'
|
|
748
|
+
elif (rasterBandType == 'Float64'):
|
|
749
|
+
CtypeName='d'
|
|
750
|
+
elif (rasterBandType == 'Byte'):
|
|
751
|
+
CtypeName='B'
|
|
752
|
+
elif (rasterBandType == 'Int32'):
|
|
753
|
+
CtypeName='i'
|
|
754
|
+
else:
|
|
755
|
+
print 'unrecognized DataType:', rasterBandType
|
|
756
|
+
print 'You might need to edit this code to read the data type'
|
|
757
|
+
raise Exception, 'Stopping'
|
|
758
|
+
|
|
759
|
+
# Upper bounds for pixel values, so we can fail gracefully
|
|
760
|
+
xMax = raster.RasterXSize
|
|
761
|
+
yMax = raster.RasterYSize
|
|
762
|
+
if(px.max()<xMax and px.min()>=0 and py.max()<yMax and py.min()>=0):
|
|
763
|
+
pass
|
|
764
|
+
else:
|
|
765
|
+
msg = 'Trying to extract point values that exceed the raster extent'
|
|
766
|
+
raise Exception, msg
|
|
767
|
+
|
|
768
|
+
# Get values -- seems we have to loop, but it is efficient enough
|
|
769
|
+
for i in range(len(px)):
|
|
770
|
+
|
|
771
|
+
if(interpolation=='pixel'):
|
|
772
|
+
# Pixel coordinates
|
|
773
|
+
xC=int(numpy.floor(px[i]))
|
|
774
|
+
yC=int(numpy.floor(py[i]))
|
|
775
|
+
|
|
776
|
+
structval = rasterBand.ReadRaster(xC,yC,1,1,
|
|
777
|
+
buf_type=rasterBand.DataType)
|
|
778
|
+
elev[i] = struct.unpack(CtypeName, structval)[0]
|
|
779
|
+
|
|
780
|
+
elif(interpolation=='bilinear'):
|
|
781
|
+
# Pixel coordinates
|
|
782
|
+
xl = int(numpy.floor(px[i]))
|
|
783
|
+
yl = int(numpy.floor(py[i]))
|
|
784
|
+
|
|
785
|
+
# Find neighbours required for bilinear interpolation
|
|
786
|
+
# l = lower, u = upper
|
|
787
|
+
if(px[i] - xl > 0.5):
|
|
788
|
+
xu = min(xl + 1, xMax - 1)
|
|
789
|
+
else:
|
|
790
|
+
# Swap xl for xu
|
|
791
|
+
xu = xl + 0
|
|
792
|
+
xl = max(xu - 1, 0)
|
|
793
|
+
|
|
794
|
+
if(py[i] - yl > 0.5):
|
|
795
|
+
yu = min(yl + 1, yMax - 1)
|
|
796
|
+
else:
|
|
797
|
+
yu = yl + 0
|
|
798
|
+
yl = max(yu - 1, 0)
|
|
799
|
+
|
|
800
|
+
# Map x,y to unit square
|
|
801
|
+
if(xu > xl):
|
|
802
|
+
x = px[i] - (xl + 0.5)
|
|
803
|
+
else:
|
|
804
|
+
x = 0.
|
|
805
|
+
|
|
806
|
+
if(yu > yl):
|
|
807
|
+
y = py[i] - (yl + 0.5)
|
|
808
|
+
else:
|
|
809
|
+
y = 0.
|
|
810
|
+
|
|
811
|
+
if not ( (x>=0.) & (x<=1.)):
|
|
812
|
+
print 'x-values error: ', x, xl, xu, px[i], xMax
|
|
813
|
+
raise Exception('x out of bounds')
|
|
814
|
+
|
|
815
|
+
if not ( (y>=0.) & (y<=1.)):
|
|
816
|
+
print 'y-values error: ', y, yl, yu, py[i]
|
|
817
|
+
raise Exception('y out of bounds')
|
|
818
|
+
|
|
819
|
+
# Lower-left
|
|
820
|
+
structval = rasterBand.ReadRaster(xl,yl,1,1,
|
|
821
|
+
buf_type=rasterBand.DataType)
|
|
822
|
+
r00 = struct.unpack(CtypeName, structval)[0]
|
|
823
|
+
# Upper left
|
|
824
|
+
structval = rasterBand.ReadRaster(xl,yu,1,1,
|
|
825
|
+
buf_type=rasterBand.DataType)
|
|
826
|
+
r01 = struct.unpack(CtypeName, structval)[0]
|
|
827
|
+
# Lower-right
|
|
828
|
+
structval = rasterBand.ReadRaster(xu,yl,1,1,
|
|
829
|
+
buf_type=rasterBand.DataType)
|
|
830
|
+
r10 = struct.unpack(CtypeName, structval)[0]
|
|
831
|
+
# Upper right
|
|
832
|
+
structval = rasterBand.ReadRaster(xu,yu,1,1,
|
|
833
|
+
buf_type=rasterBand.DataType)
|
|
834
|
+
r11 = struct.unpack(CtypeName, structval)[0]
|
|
835
|
+
|
|
836
|
+
# Bilinear interpolation
|
|
837
|
+
elev[i] = r00*(1.-x)*(1.-y) + r01*(1.-x)*y +\
|
|
838
|
+
r10*x*(1.-y) + r11*x*y
|
|
839
|
+
|
|
840
|
+
# Deal with nodata. This needs to be in the loop
|
|
841
|
+
# Just check if any of the pixels are nodata
|
|
842
|
+
if nodataval is not None:
|
|
843
|
+
if numpy.isfinite(nodataval):
|
|
844
|
+
rij = numpy.array([r00, r01, r10, r11])
|
|
845
|
+
rel_tol = ( abs(rij - nodataval) < nodata_rel_tol*abs(nodataval) )
|
|
846
|
+
missing = (rel_tol).nonzero()[0]
|
|
847
|
+
if len(missing) > 0:
|
|
848
|
+
elev[i] = numpy.nan
|
|
849
|
+
else:
|
|
850
|
+
raise Exception('Unknown value of "interpolation"')
|
|
851
|
+
|
|
852
|
+
# Deal with nodata for pixel based interpolation [efficient treatment
|
|
853
|
+
# outside of loop]
|
|
854
|
+
if (interpolation == 'pixel'):
|
|
855
|
+
if nodataval is not None:
|
|
856
|
+
if numpy.isfinite(nodataval):
|
|
857
|
+
rel_tol = ( abs(elev - nodataval) < nodata_rel_tol*abs(nodataval) )
|
|
858
|
+
missing = (rel_tol).nonzero()[0]
|
|
859
|
+
if len(missing) > 0:
|
|
860
|
+
elev[missing] = numpy.nan
|
|
861
|
+
|
|
862
|
+
return elev
|
|
863
|
+
|
|
864
|
+
|
|
865
|
+
def gridPointsInPolygon(polygon, approx_grid_spacing=[1.,1.], eps=1.0e-06):
|
|
866
|
+
"""
|
|
867
|
+
Get a 'grid' of points inside a polygon. Could be used with rasterValuesAtPoints to
|
|
868
|
+
get a range of raster values inside a polygon
|
|
869
|
+
|
|
870
|
+
Approach: A 'trial-grid' of points is created which is 'almost'
|
|
871
|
+
covering the range of the polygon (xmin-xmax,ymin-ymax).
|
|
872
|
+
|
|
873
|
+
(Actually it is just inside this region, to avoid polygon-boundary issues, see below)
|
|
874
|
+
|
|
875
|
+
Then we find those points which are actually inside the polygon.
|
|
876
|
+
|
|
877
|
+
The x/y point spacing on the trial-grid will be close to
|
|
878
|
+
approx_grid_spacing, but we ensure there are at least 4x4 points on the trial grid.
|
|
879
|
+
Also, we reduce the spacing so that the min_x+R and max_x-R
|
|
880
|
+
are both similarly close to the polygon extents [see definition of R below]
|
|
881
|
+
|
|
882
|
+
INPUTS:
|
|
883
|
+
polygon -- the polygon in ANUGA format (list of lists of ordered xy points)
|
|
884
|
+
|
|
885
|
+
approx_grid_spacing -- the approximate x,y grid spacing
|
|
886
|
+
|
|
887
|
+
eps -- 'trial-grid' of points has x range from min_polygon_x+R to
|
|
888
|
+
max_polygon_x - R, where R = (max_polygon_x-min_polygon_x)*eps
|
|
889
|
+
( and similarly for y).
|
|
890
|
+
|
|
891
|
+
This makes it more likely that points are inside the
|
|
892
|
+
polygon, not on the boundaries. Points on the boundaries can confuse the
|
|
893
|
+
point-in-polygon routine
|
|
894
|
+
|
|
895
|
+
OUTPUTS: A n x 2 numpy array of points in the polygon
|
|
896
|
+
"""
|
|
897
|
+
|
|
898
|
+
# Get polygon extent
|
|
899
|
+
polygonArr=numpy.array(polygon)
|
|
900
|
+
poly_xmin=polygonArr[:,0].min()
|
|
901
|
+
poly_xmax=polygonArr[:,0].max()
|
|
902
|
+
poly_ymin=polygonArr[:,1].min()
|
|
903
|
+
poly_ymax=polygonArr[:,1].max()
|
|
904
|
+
|
|
905
|
+
# Make a 'grid' of points which covers the polygon
|
|
906
|
+
xGridCount=max( numpy.ceil( (poly_xmax-poly_xmin)/approx_grid_spacing[0]+1. ).astype(int), 4)
|
|
907
|
+
R=(poly_xmax-poly_xmin)*eps
|
|
908
|
+
Xvals=numpy.linspace(poly_xmin+R,poly_xmax-R, xGridCount)
|
|
909
|
+
yGridCount=max( numpy.ceil( (poly_ymax-poly_ymin)/approx_grid_spacing[1]+1. ).astype(int), 4)
|
|
910
|
+
R=(poly_ymax-poly_ymin)*eps
|
|
911
|
+
Yvals=numpy.linspace(poly_ymin+R,poly_ymax-R, yGridCount)
|
|
912
|
+
|
|
913
|
+
xGrid,yGrid=numpy.meshgrid(Xvals,Yvals)
|
|
914
|
+
Grid=numpy.vstack([xGrid.flatten(),yGrid.flatten()]).transpose()
|
|
915
|
+
|
|
916
|
+
keepers = inside_polygon(Grid, polygon)
|
|
917
|
+
if(len(keepers)==0):
|
|
918
|
+
raise Exception('No points extracted from polygon')
|
|
919
|
+
xyInside=Grid[keepers,:]
|
|
920
|
+
|
|
921
|
+
return(xyInside)
|
|
922
|
+
|
|
923
|
+
#########################################################################
|
|
924
|
+
# Function to search for pattern matches in a string (turns out to be useful)
|
|
925
|
+
def matchInds(pattern, stringList):
|
|
926
|
+
"""
|
|
927
|
+
Find indices in stringList which match pattern
|
|
928
|
+
"""
|
|
929
|
+
#matches=[ (pattern in stringList[i]) for i in range(len(stringList))]
|
|
930
|
+
matches=[]
|
|
931
|
+
for i in range(len(stringList)):
|
|
932
|
+
if pattern in stringList[i]:
|
|
933
|
+
matches.append(i)
|
|
934
|
+
return matches
|
|
935
|
+
|
|
936
|
+
|
|
937
|
+
###########################################################################
|
|
938
|
+
#
|
|
939
|
+
# Less generic utilities below
|
|
940
|
+
#
|
|
941
|
+
# These are more 'anuga-specific' than above, aiming to make nice interfaces
|
|
942
|
+
# in ANUGA scripts
|
|
943
|
+
#
|
|
944
|
+
############################################################################
|
|
945
|
+
|
|
946
|
+
|
|
947
|
+
def add_intersections_to_domain_features(
|
|
948
|
+
bounding_polygonIn,
|
|
949
|
+
breakLinesIn={ },
|
|
950
|
+
riverWallsIn={ },
|
|
951
|
+
point_movement_threshold=0.,
|
|
952
|
+
verbose=True):
|
|
953
|
+
"""
|
|
954
|
+
If bounding polygon / breaklines /riverwalls intersect with each
|
|
955
|
+
other, then add intersection points.
|
|
956
|
+
|
|
957
|
+
INPUTS:
|
|
958
|
+
bounding_polygonIn -- the bounding polygon in ANUGA format
|
|
959
|
+
breakLinesIn -- the breaklines dictionary
|
|
960
|
+
riverWallsIn -- the riverWalls dictionary
|
|
961
|
+
point_movement_threshold -- if points on lines
|
|
962
|
+
are < this distance from intersection points, then they are
|
|
963
|
+
replaced with the intersection point. This can prevent
|
|
964
|
+
overly close points from breaking the mesh generation
|
|
965
|
+
|
|
966
|
+
OUTPUT:
|
|
967
|
+
List with bounding_polygon,breakLines,riverwalls
|
|
968
|
+
"""
|
|
969
|
+
|
|
970
|
+
bounding_polygon = copy.copy(bounding_polygonIn)
|
|
971
|
+
breakLines = copy.copy(breakLinesIn)
|
|
972
|
+
riverWalls = copy.copy(riverWallsIn)
|
|
973
|
+
|
|
974
|
+
# Quick exit
|
|
975
|
+
if (breakLines == {}) and (riverWalls == {}):
|
|
976
|
+
return [bounding_polygon, breakLines, riverWalls]
|
|
977
|
+
|
|
978
|
+
# Clean intersections of breakLines with itself
|
|
979
|
+
if(verbose):
|
|
980
|
+
print 'Cleaning breakline intersections'
|
|
981
|
+
if(len(breakLines)>0):
|
|
982
|
+
kbl = breakLines.keys()
|
|
983
|
+
for i in range(len(kbl)):
|
|
984
|
+
n1 = kbl[i]
|
|
985
|
+
for j in range(len(kbl)):
|
|
986
|
+
if(i >= j):
|
|
987
|
+
continue
|
|
988
|
+
n2 = kbl[j]
|
|
989
|
+
# Convert breaklines to wkb format
|
|
990
|
+
bl1 = ListPts2Wkb(breakLines[n1],geometry_type='line')
|
|
991
|
+
bl2 = ListPts2Wkb(breakLines[n2],geometry_type='line')
|
|
992
|
+
# Add intersection points
|
|
993
|
+
bl1, bl2 = addIntersectionPtsToLines(
|
|
994
|
+
bl1, bl2,
|
|
995
|
+
point_movement_threshold=point_movement_threshold,
|
|
996
|
+
verbose=verbose, nameFlag=n1+' intersects '+ n2)
|
|
997
|
+
breakLines[n1] = Wkb2ListPts(bl1)
|
|
998
|
+
breakLines[n2] = Wkb2ListPts(bl2)
|
|
999
|
+
|
|
1000
|
+
|
|
1001
|
+
# Clean intersections of riverWalls with itself
|
|
1002
|
+
if(verbose):
|
|
1003
|
+
print 'Cleaning riverWall intersections'
|
|
1004
|
+
if(len(riverWalls)>0):
|
|
1005
|
+
krw=riverWalls.keys()
|
|
1006
|
+
for i in range(len(krw)):
|
|
1007
|
+
n1=krw[i]
|
|
1008
|
+
for j in range(len(krw)):
|
|
1009
|
+
if(i>=j):
|
|
1010
|
+
continue
|
|
1011
|
+
n2=krw[j]
|
|
1012
|
+
# Convert breaklines to wkb format
|
|
1013
|
+
rw1=ListPts2Wkb(riverWalls[n1],geometry_type='line')
|
|
1014
|
+
rw2=ListPts2Wkb(riverWalls[n2],geometry_type='line')
|
|
1015
|
+
# Add intersection points
|
|
1016
|
+
rw1, rw2 =addIntersectionPtsToLines(rw1, rw2,\
|
|
1017
|
+
point_movement_threshold=point_movement_threshold,\
|
|
1018
|
+
verbose=verbose, nameFlag=n1+' intersects '+ n2)
|
|
1019
|
+
riverWalls[n1]=Wkb2ListPts(rw1)
|
|
1020
|
+
riverWalls[n2]=Wkb2ListPts(rw2)
|
|
1021
|
+
|
|
1022
|
+
# Clean intersections of breaklines with riverwalls
|
|
1023
|
+
if(verbose):
|
|
1024
|
+
print 'Cleaning breakLine-riverWall intersections'
|
|
1025
|
+
if( (len(riverWalls)>0) and (len(breakLines)>0)):
|
|
1026
|
+
krw=riverWalls.keys()
|
|
1027
|
+
kbl=breakLines.keys()
|
|
1028
|
+
for i in range(len(krw)):
|
|
1029
|
+
n1=krw[i]
|
|
1030
|
+
for j in range(len(kbl)):
|
|
1031
|
+
n2=kbl[j]
|
|
1032
|
+
# Convert breaklines to wkb format
|
|
1033
|
+
rw1=ListPts2Wkb(riverWalls[n1],geometry_type='line')
|
|
1034
|
+
bw2=ListPts2Wkb(breakLines[n2],geometry_type='line')
|
|
1035
|
+
# Add intersection points
|
|
1036
|
+
rw1, bw2 =addIntersectionPtsToLines(rw1, bw2,\
|
|
1037
|
+
point_movement_threshold=point_movement_threshold,\
|
|
1038
|
+
verbose=verbose, nameFlag=n1+' intersects '+ n2)
|
|
1039
|
+
riverWalls[n1]=Wkb2ListPts(rw1)
|
|
1040
|
+
breakLines[n2]=Wkb2ListPts(bw2)
|
|
1041
|
+
|
|
1042
|
+
|
|
1043
|
+
# Clean intersections of bounding polygon and riverwalls
|
|
1044
|
+
if(verbose):
|
|
1045
|
+
print 'Cleaning bounding_poly-riverWall intersections'
|
|
1046
|
+
if( (len(riverWalls)>0)):
|
|
1047
|
+
krw=riverWalls.keys()
|
|
1048
|
+
for i in range(len(krw)):
|
|
1049
|
+
n1=krw[i]
|
|
1050
|
+
# Convert breaklines to wkb format
|
|
1051
|
+
rw1=ListPts2Wkb(riverWalls[n1],geometry_type='line')
|
|
1052
|
+
bp2=ListPts2Wkb(bounding_polygon,geometry_type='line', appendFirstOnEnd=True)
|
|
1053
|
+
# Add intersection points
|
|
1054
|
+
rw1, bp2 =addIntersectionPtsToLines(rw1, bp2,\
|
|
1055
|
+
point_movement_threshold=point_movement_threshold,\
|
|
1056
|
+
verbose=verbose, nameFlag='Bounding Pol intersects '+ n1)
|
|
1057
|
+
riverWalls[n1]=Wkb2ListPts(rw1)
|
|
1058
|
+
# Since the bounding polygon is a loop, the first/last points are the same
|
|
1059
|
+
# If one of these was moved, the other should be moved too. Since we
|
|
1060
|
+
# will drop the last bounding_polygon point, we only need to worry about the first
|
|
1061
|
+
bounding_polygon=Wkb2ListPts(bp2,removeLast=False)
|
|
1062
|
+
if(bounding_polygon[-1] is not bounding_polygon[0]):
|
|
1063
|
+
bounding_polygon[0]=bounding_polygon[-1]
|
|
1064
|
+
# Drop the last point
|
|
1065
|
+
bounding_polygon=bounding_polygon[:-1]
|
|
1066
|
+
|
|
1067
|
+
# Clean intersections of bounding polygon and breaklines
|
|
1068
|
+
if(verbose):
|
|
1069
|
+
print 'Cleaning bounding_poly-breaklines intersections'
|
|
1070
|
+
if( (len(breakLines)>0)):
|
|
1071
|
+
kbl=breakLines.keys()
|
|
1072
|
+
for i in range(len(kbl)):
|
|
1073
|
+
n1=kbl[i]
|
|
1074
|
+
# Convert breaklines to wkb format
|
|
1075
|
+
bl1=ListPts2Wkb(breakLines[n1],geometry_type='line')
|
|
1076
|
+
bp2=ListPts2Wkb(bounding_polygon,geometry_type='line', appendFirstOnEnd=True)
|
|
1077
|
+
# Add intersection points
|
|
1078
|
+
bl1, bp2 =addIntersectionPtsToLines(bl1, bp2,\
|
|
1079
|
+
point_movement_threshold=point_movement_threshold,
|
|
1080
|
+
verbose=verbose, nameFlag='Bounding Pol intersects '+n1)
|
|
1081
|
+
breakLines[n1]=Wkb2ListPts(bl1)
|
|
1082
|
+
# Since the bounding polygon is a loop, the first/last points are the same
|
|
1083
|
+
# If one of these was moved, the other should be moved too. Since we
|
|
1084
|
+
# will drop the last bp2 point, we only need to worry about the first
|
|
1085
|
+
bounding_polygon=Wkb2ListPts(bp2,removeLast=False)
|
|
1086
|
+
if(bounding_polygon[-1] is not bounding_polygon[0]):
|
|
1087
|
+
bounding_polygon[0]=bounding_polygon[-1]
|
|
1088
|
+
# Drop the last point
|
|
1089
|
+
bounding_polygon=bounding_polygon[:-1]
|
|
1090
|
+
|
|
1091
|
+
# Remove the extra 0.0 from bounding polygon [this cannot have 3 coordinates]
|
|
1092
|
+
bounding_polygon = [ bounding_polygon[i][0:2] for i in range(len(bounding_polygon))]
|
|
1093
|
+
# Same for breaklines [although might not matter]
|
|
1094
|
+
for n1 in breakLines.keys():
|
|
1095
|
+
breakLines[n1] = [breakLines[n1][i][0:2] for i in range(len(breakLines[n1]))]
|
|
1096
|
+
|
|
1097
|
+
# Check that all mesh-boundary points are inside the bounding polygon
|
|
1098
|
+
from anuga.geometry.polygon import outside_polygon
|
|
1099
|
+
for blCat in [riverWalls, breakLines]:
|
|
1100
|
+
for n1 in blCat.keys():
|
|
1101
|
+
l=len(blCat[n1])
|
|
1102
|
+
# Test every point -- means we can strip 3rd coordinate if needed
|
|
1103
|
+
for j in range(l):
|
|
1104
|
+
isOut=outside_polygon(blCat[n1][j][0:2], bounding_polygon)
|
|
1105
|
+
if(len(isOut)>0):
|
|
1106
|
+
msg='Breakline/riverwall point '+str(blCat[n1][j][0:2]) +' on '+ n1+\
|
|
1107
|
+
' is outside the bounding polygon.\n'+\
|
|
1108
|
+
'Check that it exceeds the bounding polygon'+\
|
|
1109
|
+
' by a distance < point_movement_threshold \n'+\
|
|
1110
|
+
' so it can be moved back onto the polygon'
|
|
1111
|
+
print 'Polygon\n '
|
|
1112
|
+
print bounding_polygon
|
|
1113
|
+
print 'Line \n'
|
|
1114
|
+
print blCat[n1]
|
|
1115
|
+
raise Exception, msg
|
|
1116
|
+
|
|
1117
|
+
return [bounding_polygon, breakLines, riverWalls]
|
|
1118
|
+
|
|
1119
|
+
###################################################################
|
|
1120
|
+
|
|
1121
|
+
def readRegionPtAreas(shapefile, convert_length_to_area=False):
|
|
1122
|
+
"""
|
|
1123
|
+
Read a point shapefile to define the ANUGA mesh resoutions.
|
|
1124
|
+
|
|
1125
|
+
MUST HAVE A SINGLE ATTRIBUTE REPRESENTING THE LENGTHS OF TRIANGLES IN
|
|
1126
|
+
REGIONS
|
|
1127
|
+
|
|
1128
|
+
INPUT: shapefile -- name of the input shapefile
|
|
1129
|
+
convert_length_to_area -- if True, res values are assumed to
|
|
1130
|
+
represent triangle side lengths, and are converted to areas with 0.5*res0*res0
|
|
1131
|
+
Note that this might not ensure that the max triangle side length really is res0, but
|
|
1132
|
+
it will be of similar magnitude
|
|
1133
|
+
If False, attribute values are assumed to represent triangle areas
|
|
1134
|
+
|
|
1135
|
+
OUTPUT: list of the form [ [x0,y0,res0], [x1, y1, res1], ...]
|
|
1136
|
+
"""
|
|
1137
|
+
|
|
1138
|
+
ptData=readShpPtsAndAttributes(shapefile)
|
|
1139
|
+
|
|
1140
|
+
# Must have only 1 attribute
|
|
1141
|
+
assert len(ptData[2])==1
|
|
1142
|
+
|
|
1143
|
+
numPts=len(ptData[0])
|
|
1144
|
+
outData=[]
|
|
1145
|
+
for i in range(numPts):
|
|
1146
|
+
if(convert_length_to_area):
|
|
1147
|
+
newDat=[ptData[0][i][0], ptData[0][i][1], 0.5*float(ptData[1][i])**2]
|
|
1148
|
+
else:
|
|
1149
|
+
newDat=[ptData[0][i][0], ptData[0][i][1], float(ptData[1][i])]
|
|
1150
|
+
outData.append(newDat)
|
|
1151
|
+
|
|
1152
|
+
return outData
|
|
1153
|
+
|
|
1154
|
+
#########################################
|
|
1155
|
+
def readListOfBreakLines(fileList):
|
|
1156
|
+
"""
|
|
1157
|
+
Take a list with the names of shapefiles or anuga_polygon csv files
|
|
1158
|
+
|
|
1159
|
+
They are assumed to be '2D breaklines', so we just read their
|
|
1160
|
+
coordinates into a dict with their names
|
|
1161
|
+
|
|
1162
|
+
Read them in
|
|
1163
|
+
|
|
1164
|
+
INPUT: fileList -- a list of shapefile and/or anuga_polygon csv filenames
|
|
1165
|
+
[e.g. from glob.glob('GIS/Breaklines/*.shp')]
|
|
1166
|
+
|
|
1167
|
+
OUTPUT: dictionary with breaklines [filenames are keys]
|
|
1168
|
+
"""
|
|
1169
|
+
|
|
1170
|
+
allBreakLines = {}
|
|
1171
|
+
for shapefile in fileList:
|
|
1172
|
+
allBreakLines[shapefile] = read_polygon(shapefile,
|
|
1173
|
+
close_polygon_shapefiles=True)
|
|
1174
|
+
|
|
1175
|
+
return allBreakLines
|
|
1176
|
+
|
|
1177
|
+
#########################################
|
|
1178
|
+
def readListOfRiverWalls(rwfileList):
|
|
1179
|
+
"""
|
|
1180
|
+
Take a list with the names of riverwall input files
|
|
1181
|
+
[should be comma-separated x,y,elevation files]
|
|
1182
|
+
|
|
1183
|
+
The input file can OPTIONALLY have a first line defining some
|
|
1184
|
+
hydraulic parameters. A valid example is
|
|
1185
|
+
|
|
1186
|
+
Qfactor: 1.5, s1: 0.94
|
|
1187
|
+
200., 300., 0.5
|
|
1188
|
+
300., 400., 0.7
|
|
1189
|
+
....and so on..
|
|
1190
|
+
|
|
1191
|
+
Read their coordinates into a dict with their names, read for use by ANUGA
|
|
1192
|
+
|
|
1193
|
+
INPUT: rwfileList -- a list of riverwall filenames
|
|
1194
|
+
[e.g. from glob.glob('GIS/RiverWalls/*.csv')]
|
|
1195
|
+
|
|
1196
|
+
OUTPUT:
|
|
1197
|
+
dictionary with riverwalls [filenames are keys] AND
|
|
1198
|
+
dictionary with hydraulic parameters [filenames are keys]
|
|
1199
|
+
"""
|
|
1200
|
+
import numpy
|
|
1201
|
+
|
|
1202
|
+
allRiverWalls = {}
|
|
1203
|
+
allRiverWallPar = {}
|
|
1204
|
+
for rwfile in rwfileList:
|
|
1205
|
+
f = open(rwfile)
|
|
1206
|
+
firstLine = f.readline()
|
|
1207
|
+
f.close()
|
|
1208
|
+
# If the top line has any letters, assume it is a hydraulic
|
|
1209
|
+
# variables line
|
|
1210
|
+
hasLetters = any(c.isalpha() for c in firstLine)
|
|
1211
|
+
if(not hasLetters):
|
|
1212
|
+
allRiverWalls[rwfile] = \
|
|
1213
|
+
numpy.genfromtxt(rwfile,delimiter=",").tolist()
|
|
1214
|
+
allRiverWallPar[rwfile] = {}
|
|
1215
|
+
else:
|
|
1216
|
+
# Get the wall geometry
|
|
1217
|
+
allRiverWalls[rwfile] = \
|
|
1218
|
+
numpy.genfromtxt(rwfile,delimiter=",",skip_header=1).tolist()
|
|
1219
|
+
# Get the hydraulic par
|
|
1220
|
+
firstLine = firstLine.replace(' ', '') # No whitespace
|
|
1221
|
+
wallPar = firstLine.split(',')
|
|
1222
|
+
allRiverWallPar[rwfile] = {}
|
|
1223
|
+
for wp in wallPar:
|
|
1224
|
+
keyNameValue = wp.split(':')
|
|
1225
|
+
allRiverWallPar[rwfile][keyNameValue[0]] = \
|
|
1226
|
+
float(keyNameValue[1])
|
|
1227
|
+
|
|
1228
|
+
return allRiverWalls, allRiverWallPar
|
|
1229
|
+
|
|
1230
|
+
############################################################################
|
|
1231
|
+
|
|
1232
|
+
def combine_breakLines_and_riverWalls_for_mesh(breakLines, riverWalls):
|
|
1233
|
+
"""
|
|
1234
|
+
Combine breaklines and riverwalls for input in mesh generation,
|
|
1235
|
+
ensuring both have 2 coordinates only
|
|
1236
|
+
"""
|
|
1237
|
+
mesh_breakLines=riverWalls.values()+breakLines.values()
|
|
1238
|
+
for i in range(len(mesh_breakLines)):
|
|
1239
|
+
mesh_breakLines[i] =\
|
|
1240
|
+
[mesh_breakLines[i][j][0:2] for j in range(len(mesh_breakLines[i]))]
|
|
1241
|
+
return mesh_breakLines
|
|
1242
|
+
|
|
1243
|
+
############################################################################
|
|
1244
|
+
def polygon_from_matching_breaklines(pattern,breakLinesIn, reverse2nd=None):
|
|
1245
|
+
""" We sometimes have breaklines defining 2 edges of a channel,
|
|
1246
|
+
and wish to make a polygon from them
|
|
1247
|
+
|
|
1248
|
+
Can do this with the current function
|
|
1249
|
+
|
|
1250
|
+
INPUTS: pattern == character string containing pattern which
|
|
1251
|
+
is inside exactly 2 keys in breaklines
|
|
1252
|
+
|
|
1253
|
+
breakLinesIn = the breakLines dictionary
|
|
1254
|
+
|
|
1255
|
+
reverse2nd = True/False or None. Reverse the order of the
|
|
1256
|
+
2nd set of edges before making the polygon.
|
|
1257
|
+
If None, then we compute the distance between the
|
|
1258
|
+
first point on breakline1 and the first/last
|
|
1259
|
+
points on breakline2, and reverse2nd if the
|
|
1260
|
+
'distance from the first point' <
|
|
1261
|
+
'distance from the last point'
|
|
1262
|
+
|
|
1263
|
+
OUTPUT: Polygon made with the 2 breaklines
|
|
1264
|
+
"""
|
|
1265
|
+
|
|
1266
|
+
breakLines=copy.copy(breakLinesIn)
|
|
1267
|
+
bk=breakLines.keys()
|
|
1268
|
+
|
|
1269
|
+
# They can be pathnames from glob, and sometimes / and \\ get mixed up
|
|
1270
|
+
# Fix that here
|
|
1271
|
+
pattern_norm = os.path.normpath(pattern)
|
|
1272
|
+
bk_norm = [ os.path.normpath(bk_i) for bk_i in bk ]
|
|
1273
|
+
|
|
1274
|
+
matchers=matchInds(pattern_norm, bk_norm)
|
|
1275
|
+
|
|
1276
|
+
if(len(matchers)==0):
|
|
1277
|
+
msg = 'Cannot match ' + pattern + ' in breaklines file names'
|
|
1278
|
+
raise Exception, msg
|
|
1279
|
+
|
|
1280
|
+
if(len(matchers)!=2):
|
|
1281
|
+
print 'Need exactly 2 matches, but pattern matched these', bk[matchers]
|
|
1282
|
+
|
|
1283
|
+
# There are 2 matches
|
|
1284
|
+
|
|
1285
|
+
if(reverse2nd is None):
|
|
1286
|
+
# Automatically compute whether we should reverse the 2nd breakline
|
|
1287
|
+
bl1_0=breakLines[bk[matchers[0]]][0]
|
|
1288
|
+
bl2_0=breakLines[bk[matchers[1]]][0]
|
|
1289
|
+
bl2_N=breakLines[bk[matchers[1]]][-1]
|
|
1290
|
+
d0 = ((bl1_0[0]-bl2_0[0])**2 + (bl1_0[1]-bl2_0[1])**2)
|
|
1291
|
+
dN = ((bl1_0[0]-bl2_N[0])**2 + (bl1_0[1]-bl2_N[1])**2)
|
|
1292
|
+
if(d0<dN):
|
|
1293
|
+
reverse2nd = True
|
|
1294
|
+
else:
|
|
1295
|
+
reverse2nd = False
|
|
1296
|
+
|
|
1297
|
+
if(reverse2nd):
|
|
1298
|
+
breakLines[bk[matchers[1]]].reverse()
|
|
1299
|
+
polyOut=breakLines[bk[matchers[0]]] + breakLines[bk[matchers[1]]]
|
|
1300
|
+
|
|
1301
|
+
# If the breakLines values have > 2 entries (i.e. like for riverwalls),
|
|
1302
|
+
# remove the third
|
|
1303
|
+
if(len(polyOut[0])>2):
|
|
1304
|
+
polyOut=[polyOut[i][0:2] for i in range(len(polyOut))]
|
|
1305
|
+
|
|
1306
|
+
return polyOut
|
|
1307
|
+
###################
|
|
1308
|
+
|
|
1309
|
+
else: # gdal_available == False
|
|
1310
|
+
msg='Failed to import gdal/ogr modules --'\
|
|
1311
|
+
+ 'perhaps gdal python interface is not installed.'
|
|
1312
|
+
|
|
1313
|
+
|
|
1314
|
+
|
|
1315
|
+
def readShp_1PolyGeo(shapefile, dropLast=True):
|
|
1316
|
+
raise ImportError, msg
|
|
1317
|
+
|
|
1318
|
+
def readShp_1LineGeo(shapefile):
|
|
1319
|
+
raise ImportError, msg
|
|
1320
|
+
|
|
1321
|
+
def read_csv_optional_header(filename):
|
|
1322
|
+
raise ImportError, msg
|
|
1323
|
+
|
|
1324
|
+
def read_polygon(filename):
|
|
1325
|
+
raise ImportError, msg
|
|
1326
|
+
|
|
1327
|
+
def readShpPtsAndAttributes(shapefile):
|
|
1328
|
+
raise ImportError, msg
|
|
1329
|
+
|
|
1330
|
+
def read_points(filename):
|
|
1331
|
+
raise ImportError, msg
|
|
1332
|
+
|
|
1333
|
+
def ListPts2Wkb( ptsIn, geometry_type='line', appendFirstOnEnd=None):
|
|
1334
|
+
raise ImportError, msg
|
|
1335
|
+
|
|
1336
|
+
def Wkb2ListPts(wkb_geo, removeLast=False, drop_third_dimension=False):
|
|
1337
|
+
raise ImportError, msg
|
|
1338
|
+
|
|
1339
|
+
def compute_squared_distance_to_segment(pt, line):
|
|
1340
|
+
raise ImportError, msg
|
|
1341
|
+
|
|
1342
|
+
def find_nearest_segment(pt, segments):
|
|
1343
|
+
raise ImportError, msg
|
|
1344
|
+
|
|
1345
|
+
def shift_point_on_line(pt, lineIn, nearest_segment_index):
|
|
1346
|
+
raise ImportError, msg
|
|
1347
|
+
|
|
1348
|
+
def insert_intersection_point(intersectionPt, line_pts,
|
|
1349
|
+
point_movement_threshold,verbose=False):
|
|
1350
|
+
raise ImportError, msg
|
|
1351
|
+
|
|
1352
|
+
def check_polygon_is_small(intersection, buf, tol2=100.):
|
|
1353
|
+
raise ImportError, msg
|
|
1354
|
+
|
|
1355
|
+
def addIntersectionPtsToLines(L1,L2, point_movement_threshold=0.0,
|
|
1356
|
+
buf=1.0e-06, tol2 = 100,
|
|
1357
|
+
verbose=True, nameFlag=''):
|
|
1358
|
+
raise ImportError, msg
|
|
1359
|
+
|
|
1360
|
+
def getRasterExtent(rasterFile, asPolygon=False):
|
|
1361
|
+
raise ImportError, msg
|
|
1362
|
+
|
|
1363
|
+
def rasterValuesAtPoints(xy, rasterFile, band=1):
|
|
1364
|
+
raise ImportError, msg
|
|
1365
|
+
|
|
1366
|
+
|
|
1367
|
+
def gridPointsInPolygon(polygon, approx_grid_spacing=[1.,1.], eps=1.0e-06):
|
|
1368
|
+
raise ImportError, msg
|
|
1369
|
+
|
|
1370
|
+
|
|
1371
|
+
def matchInds(pattern, stringList):
|
|
1372
|
+
raise ImportError, msg
|
|
1373
|
+
|
|
1374
|
+
|
|
1375
|
+
def add_intersections_to_domain_features(bounding_polygonIn,
|
|
1376
|
+
breakLinesIn={ }, riverWallsIn={ }, point_movement_threshold=0.,
|
|
1377
|
+
verbose=True):
|
|
1378
|
+
raise ImportError, msg
|
|
1379
|
+
|
|
1380
|
+
|
|
1381
|
+
def readRegionPtAreas(shapefile, convert_length_to_area=False):
|
|
1382
|
+
raise ImportError, msg
|
|
1383
|
+
|
|
1384
|
+
def readListOfBreakLines(shapefileList):
|
|
1385
|
+
raise ImportError, msg
|
|
1386
|
+
|
|
1387
|
+
def combine_breakLines_and_riverwalls_for_mesh(breakLines, riverWalls):
|
|
1388
|
+
raise ImportError, msg
|
|
1389
|
+
|
|
1390
|
+
def polygon_from_matching_breaklines(pattern,breakLinesIn, reverse2nd=None):
|
|
1391
|
+
raise ImportError, msg
|
|
1392
|
+
###################
|
|
1393
|
+
|
|
1394
|
+
|