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,1630 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
|
|
3
|
+
from anuga.shallow_water.forcing import Inflow, General_forcing
|
|
4
|
+
from anuga.culvert_flows.culvert_polygons import create_culvert_polygons
|
|
5
|
+
from anuga.utilities.system_tools import log_to_file
|
|
6
|
+
from anuga.geometry.polygon import inside_polygon, is_inside_polygon, plot_polygons
|
|
7
|
+
|
|
8
|
+
from anuga.utilities.numerical_tools import mean
|
|
9
|
+
from anuga.utilities.numerical_tools import ensure_numeric, sign
|
|
10
|
+
|
|
11
|
+
from anuga.config import g, epsilon
|
|
12
|
+
from anuga.config import minimum_allowed_height, velocity_protection
|
|
13
|
+
import anuga.utilities.log as log
|
|
14
|
+
|
|
15
|
+
import numpy as num
|
|
16
|
+
from math import sqrt
|
|
17
|
+
from math import sqrt
|
|
18
|
+
|
|
19
|
+
class Below_interval(Exception): pass
|
|
20
|
+
class Above_interval(Exception): pass
|
|
21
|
+
|
|
22
|
+
# FIXME(Ole): Take a good hard look at logging here
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# FIXME(Ole): Write in C and reuse this function by similar code
|
|
26
|
+
# in interpolate.py
|
|
27
|
+
def interpolate_linearly(x, xvec, yvec):
|
|
28
|
+
|
|
29
|
+
msg = 'Input to function interpolate_linearly could not be converted '
|
|
30
|
+
msg += 'to numerical scalar: x = %s' % str(x)
|
|
31
|
+
try:
|
|
32
|
+
x = float(x)
|
|
33
|
+
except:
|
|
34
|
+
raise Exception(msg)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
# Check bounds
|
|
38
|
+
if x < xvec[0]:
|
|
39
|
+
msg = 'Value provided = %.2f, interpolation minimum = %.2f.'\
|
|
40
|
+
% (x, xvec[0])
|
|
41
|
+
raise Below_interval(msg)
|
|
42
|
+
|
|
43
|
+
if x > xvec[-1]:
|
|
44
|
+
msg = 'Value provided = %.2f, interpolation maximum = %.2f.'\
|
|
45
|
+
%(x, xvec[-1])
|
|
46
|
+
raise Above_interval(msg)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
# Find appropriate slot within bounds
|
|
50
|
+
i = 0
|
|
51
|
+
while x > xvec[i]: i += 1
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
x0 = xvec[i-1]
|
|
55
|
+
x1 = xvec[i]
|
|
56
|
+
alpha = (x - x0)/(x1 - x0)
|
|
57
|
+
|
|
58
|
+
y0 = yvec[i-1]
|
|
59
|
+
y1 = yvec[i]
|
|
60
|
+
y = alpha*y1 + (1-alpha)*y0
|
|
61
|
+
|
|
62
|
+
return y
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def read_culvert_description(culvert_description_filename):
|
|
67
|
+
|
|
68
|
+
# Read description file
|
|
69
|
+
fid = open(culvert_description_filename)
|
|
70
|
+
|
|
71
|
+
read_rating_curve_data = False
|
|
72
|
+
rating_curve = []
|
|
73
|
+
for i, line in enumerate(fid.readlines()):
|
|
74
|
+
|
|
75
|
+
if read_rating_curve_data is True:
|
|
76
|
+
fields = line.split(',')
|
|
77
|
+
head_difference = float(fields[0].strip())
|
|
78
|
+
flow_rate = float(fields[1].strip())
|
|
79
|
+
barrel_velocity = float(fields[2].strip())
|
|
80
|
+
|
|
81
|
+
rating_curve.append([head_difference, flow_rate, barrel_velocity])
|
|
82
|
+
|
|
83
|
+
if i == 0:
|
|
84
|
+
# Header
|
|
85
|
+
continue
|
|
86
|
+
if i == 1:
|
|
87
|
+
# Metadata
|
|
88
|
+
fields = line.split(',')
|
|
89
|
+
label=fields[0].strip()
|
|
90
|
+
type=fields[1].strip().lower()
|
|
91
|
+
assert type in ['box', 'pipe']
|
|
92
|
+
|
|
93
|
+
width=float(fields[2].strip())
|
|
94
|
+
height=float(fields[3].strip())
|
|
95
|
+
length=float(fields[4].strip())
|
|
96
|
+
number_of_barrels=int(fields[5].strip())
|
|
97
|
+
#fields[6] refers to losses
|
|
98
|
+
description=fields[7].strip()
|
|
99
|
+
|
|
100
|
+
if line.strip() == '': continue # Skip blanks
|
|
101
|
+
|
|
102
|
+
if line.startswith('Rating'):
|
|
103
|
+
read_rating_curve_data = True
|
|
104
|
+
# Flow data follows
|
|
105
|
+
|
|
106
|
+
fid.close()
|
|
107
|
+
|
|
108
|
+
return label, type, width, height, length, number_of_barrels, description, rating_curve
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
class Culvert_flow_general:
|
|
114
|
+
"""Culvert flow - transfer water from one hole to another
|
|
115
|
+
|
|
116
|
+
This version will work with either rating curve file or with culvert
|
|
117
|
+
routine.
|
|
118
|
+
|
|
119
|
+
Input: Two points, pipe_size (either diameter or width, height),
|
|
120
|
+
mannings_rougness,
|
|
121
|
+
"""
|
|
122
|
+
|
|
123
|
+
def __init__(self,
|
|
124
|
+
domain,
|
|
125
|
+
culvert_description_filename=None,
|
|
126
|
+
culvert_routine=None,
|
|
127
|
+
end_point0=None,
|
|
128
|
+
end_point1=None,
|
|
129
|
+
enquiry_point0=None,
|
|
130
|
+
enquiry_point1=None,
|
|
131
|
+
type='box',
|
|
132
|
+
width=None,
|
|
133
|
+
height=None,
|
|
134
|
+
length=None,
|
|
135
|
+
number_of_barrels=1,
|
|
136
|
+
number_of_smoothing_steps=2000,
|
|
137
|
+
trigger_depth=0.01, # Depth below which no flow happens
|
|
138
|
+
manning=None, # Mannings Roughness for Culvert
|
|
139
|
+
sum_loss=None,
|
|
140
|
+
use_velocity_head=False, # FIXME(Ole): Get rid of - always True
|
|
141
|
+
use_momentum_jet=False, # FIXME(Ole): Not yet implemented
|
|
142
|
+
label=None,
|
|
143
|
+
description=None,
|
|
144
|
+
update_interval=None,
|
|
145
|
+
log_file=False,
|
|
146
|
+
discharge_hydrograph=False,
|
|
147
|
+
verbose=False):
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
# Input check
|
|
152
|
+
|
|
153
|
+
if height is None: height = width
|
|
154
|
+
|
|
155
|
+
assert number_of_barrels >= 1
|
|
156
|
+
assert use_velocity_head is True or use_velocity_head is False
|
|
157
|
+
|
|
158
|
+
#msg = 'Momentum jet not yet moved to general culvert'
|
|
159
|
+
#assert use_momentum_jet is False, msg
|
|
160
|
+
self.use_momentum_jet = use_momentum_jet
|
|
161
|
+
|
|
162
|
+
self.culvert_routine = culvert_routine
|
|
163
|
+
self.culvert_description_filename = culvert_description_filename
|
|
164
|
+
if culvert_description_filename is not None:
|
|
165
|
+
label, type, width, height, length, number_of_barrels, description, rating_curve = read_culvert_description(culvert_description_filename)
|
|
166
|
+
self.rating_curve = ensure_numeric(rating_curve)
|
|
167
|
+
|
|
168
|
+
self.height = height
|
|
169
|
+
self.width = width
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
self.domain = domain
|
|
173
|
+
self.trigger_depth = trigger_depth
|
|
174
|
+
|
|
175
|
+
if manning is None:
|
|
176
|
+
self.manning = 0.012 # Default roughness for pipe
|
|
177
|
+
|
|
178
|
+
if sum_loss is None:
|
|
179
|
+
self.sum_loss = 0.0
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
# Store culvert information
|
|
184
|
+
self.label = label
|
|
185
|
+
self.description = description
|
|
186
|
+
self.culvert_type = type
|
|
187
|
+
self.number_of_barrels = number_of_barrels
|
|
188
|
+
|
|
189
|
+
# Store options
|
|
190
|
+
self.use_velocity_head = use_velocity_head
|
|
191
|
+
|
|
192
|
+
if label is None: label = 'culvert_flow'
|
|
193
|
+
label += '_' + str(id(self))
|
|
194
|
+
self.label = label
|
|
195
|
+
|
|
196
|
+
# File for storing discharge_hydrograph
|
|
197
|
+
if discharge_hydrograph is True:
|
|
198
|
+
self.timeseries_filename = label + '_timeseries.csv'
|
|
199
|
+
fid = open(self.timeseries_filename, 'w')
|
|
200
|
+
fid.write('time, discharge\n')
|
|
201
|
+
fid.close()
|
|
202
|
+
|
|
203
|
+
# Log file for storing general textual output
|
|
204
|
+
if log_file is True:
|
|
205
|
+
self.log_filename = label + '.log'
|
|
206
|
+
log_to_file(self.log_filename, self.label)
|
|
207
|
+
log_to_file(self.log_filename, description)
|
|
208
|
+
log_to_file(self.log_filename, self.culvert_type)
|
|
209
|
+
else:
|
|
210
|
+
self.log_filename = None
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
# Create the fundamental culvert polygons from polygon
|
|
214
|
+
P = create_culvert_polygons(end_point0,
|
|
215
|
+
end_point1,
|
|
216
|
+
width=width,
|
|
217
|
+
height=height,
|
|
218
|
+
number_of_barrels=number_of_barrels)
|
|
219
|
+
self.culvert_polygons = P
|
|
220
|
+
|
|
221
|
+
# Select enquiry points
|
|
222
|
+
if enquiry_point0 is None:
|
|
223
|
+
enquiry_point0 = P['enquiry_point0']
|
|
224
|
+
|
|
225
|
+
if enquiry_point1 is None:
|
|
226
|
+
enquiry_point1 = P['enquiry_point1']
|
|
227
|
+
|
|
228
|
+
if verbose is True:
|
|
229
|
+
pass
|
|
230
|
+
#plot_polygons([[end_point0, end_point1],
|
|
231
|
+
# P['exchange_polygon0'],
|
|
232
|
+
# P['exchange_polygon1'],
|
|
233
|
+
# [enquiry_point0, 1.005*enquiry_point0],
|
|
234
|
+
# [enquiry_point1, 1.005*enquiry_point1]],
|
|
235
|
+
# figname='culvert_polygon_output')
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
self.enquiry_points = [enquiry_point0, enquiry_point1]
|
|
240
|
+
self.enquiry_indices = self.get_enquiry_indices()
|
|
241
|
+
self.check_culvert_inside_domain()
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
# Create inflow object at each end of the culvert.
|
|
245
|
+
self.openings = []
|
|
246
|
+
self.openings.append(Inflow(domain,
|
|
247
|
+
polygon=P['exchange_polygon0']))
|
|
248
|
+
self.openings.append(Inflow(domain,
|
|
249
|
+
polygon=P['exchange_polygon1']))
|
|
250
|
+
|
|
251
|
+
# Assume two openings for now: Referred to as 0 and 1
|
|
252
|
+
assert len(self.openings) == 2
|
|
253
|
+
|
|
254
|
+
# Establish initial values at each enquiry point
|
|
255
|
+
dq = domain.quantities
|
|
256
|
+
for i, opening in enumerate(self.openings):
|
|
257
|
+
idx = self.enquiry_indices[i]
|
|
258
|
+
elevation = dq['elevation'].get_values(location='centroids',
|
|
259
|
+
indices=[idx])[0]
|
|
260
|
+
stage = dq['stage'].get_values(location='centroids',
|
|
261
|
+
indices=[idx])[0]
|
|
262
|
+
opening.elevation = elevation
|
|
263
|
+
opening.stage = stage
|
|
264
|
+
opening.depth = stage-elevation
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
# Determine initial pipe direction.
|
|
269
|
+
# This may change dynamically based on the total energy difference
|
|
270
|
+
# Consequently, this may be superfluous
|
|
271
|
+
delta_z = self.openings[0].elevation - self.openings[1].elevation
|
|
272
|
+
if delta_z > 0.0:
|
|
273
|
+
self.inlet = self.openings[0]
|
|
274
|
+
self.outlet = self.openings[1]
|
|
275
|
+
else:
|
|
276
|
+
self.outlet = self.openings[0]
|
|
277
|
+
self.inlet = self.openings[1]
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
# Store basic geometry
|
|
281
|
+
self.end_points = [end_point0, end_point1]
|
|
282
|
+
self.vector = P['vector']
|
|
283
|
+
self.length = P['length']; assert self.length > 0.0
|
|
284
|
+
if culvert_description_filename is not None:
|
|
285
|
+
if not num.allclose(self.length, length, rtol=1.0e-2, atol=1.0e-2):
|
|
286
|
+
msg = 'WARNING: barrel length specified in "%s" (%.2f m)'\
|
|
287
|
+
% (culvert_description_filename,
|
|
288
|
+
length)
|
|
289
|
+
msg += ' does not match distance between specified'
|
|
290
|
+
msg += ' end points (%.2f m)' %self.length
|
|
291
|
+
log.critical(msg)
|
|
292
|
+
|
|
293
|
+
self.verbose = verbose
|
|
294
|
+
|
|
295
|
+
# Circular index for flow averaging in culvert
|
|
296
|
+
self.N = N = number_of_smoothing_steps
|
|
297
|
+
self.Q_list = [0]*N
|
|
298
|
+
self.i = i
|
|
299
|
+
|
|
300
|
+
# For use with update_interval
|
|
301
|
+
self.last_update = 0.0
|
|
302
|
+
self.update_interval = update_interval
|
|
303
|
+
|
|
304
|
+
# Create objects to update momentum (a bit crude at this stage). This is used with the momentum jet.
|
|
305
|
+
xmom0 = General_forcing(domain, 'xmomentum',
|
|
306
|
+
polygon=P['exchange_polygon0'])
|
|
307
|
+
|
|
308
|
+
xmom1 = General_forcing(domain, 'xmomentum',
|
|
309
|
+
polygon=P['exchange_polygon1'])
|
|
310
|
+
|
|
311
|
+
ymom0 = General_forcing(domain, 'ymomentum',
|
|
312
|
+
polygon=P['exchange_polygon0'])
|
|
313
|
+
|
|
314
|
+
ymom1 = General_forcing(domain, 'ymomentum',
|
|
315
|
+
polygon=P['exchange_polygon1'])
|
|
316
|
+
|
|
317
|
+
self.opening_momentum = [[xmom0, ymom0], [xmom1, ymom1]]
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
# Print some diagnostics to log if requested
|
|
322
|
+
if self.log_filename is not None:
|
|
323
|
+
s = 'Culvert Effective Length = %.2f m' %(self.length)
|
|
324
|
+
log_to_file(self.log_filename, s)
|
|
325
|
+
|
|
326
|
+
s = 'Culvert Direction is %s\n' %str(self.vector)
|
|
327
|
+
log_to_file(self.log_filename, s)
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
def __call__(self, domain):
|
|
334
|
+
|
|
335
|
+
# Time stuff
|
|
336
|
+
time = domain.get_time()
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
update = False
|
|
340
|
+
if self.update_interval is None:
|
|
341
|
+
# Use next timestep as has been computed in domain.py
|
|
342
|
+
delta_t = domain.timestep
|
|
343
|
+
update = True
|
|
344
|
+
else:
|
|
345
|
+
# Use update interval
|
|
346
|
+
delta_t = self.update_interval
|
|
347
|
+
if time - self.last_update > self.update_interval or time == 0.0:
|
|
348
|
+
update = True
|
|
349
|
+
|
|
350
|
+
if self.log_filename is not None:
|
|
351
|
+
s = '\nTime = %.2f, delta_t = %f' %(time, delta_t)
|
|
352
|
+
log_to_file(self.log_filename, s)
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
if update is True:
|
|
356
|
+
self.compute_rates(delta_t)
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
# Execute flow term for each opening
|
|
360
|
+
# This is where Inflow objects are evaluated using the last rate
|
|
361
|
+
# that has been calculated
|
|
362
|
+
#
|
|
363
|
+
# This will take place at every internal timestep and update the domain
|
|
364
|
+
stable_timestep = domain.get_evolve_max_timestep()
|
|
365
|
+
for opening in self.openings:
|
|
366
|
+
stable_timestep = min(opening(domain), stable_timestep)
|
|
367
|
+
|
|
368
|
+
return stable_timestep
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
def get_enquiry_indices(self):
|
|
373
|
+
"""Get indices for nearest centroids to self.enquiry_points
|
|
374
|
+
"""
|
|
375
|
+
|
|
376
|
+
domain = self.domain
|
|
377
|
+
|
|
378
|
+
enquiry_indices = []
|
|
379
|
+
for point in self.enquiry_points:
|
|
380
|
+
# Find nearest centroid
|
|
381
|
+
N = len(domain)
|
|
382
|
+
points = domain.get_centroid_coordinates(absolute=True)
|
|
383
|
+
|
|
384
|
+
# Calculate indices in exchange area for this forcing term
|
|
385
|
+
|
|
386
|
+
triangle_id = min_dist = sys.maxint
|
|
387
|
+
for k in range(N):
|
|
388
|
+
x, y = points[k,:] # Centroid
|
|
389
|
+
|
|
390
|
+
c = point
|
|
391
|
+
distance = (x-c[0])**2+(y-c[1])**2
|
|
392
|
+
if distance < min_dist:
|
|
393
|
+
min_dist = distance
|
|
394
|
+
triangle_id = k
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
if triangle_id < sys.maxint:
|
|
398
|
+
msg = 'found triangle with centroid (%f, %f)'\
|
|
399
|
+
%tuple(points[triangle_id, :])
|
|
400
|
+
msg += ' for point (%f, %f)' %tuple(point)
|
|
401
|
+
|
|
402
|
+
enquiry_indices.append(triangle_id)
|
|
403
|
+
else:
|
|
404
|
+
msg = 'Triangle not found for point (%f, %f)' %point
|
|
405
|
+
raise Exception(msg)
|
|
406
|
+
|
|
407
|
+
return enquiry_indices
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
def check_culvert_inside_domain(self):
|
|
411
|
+
"""Check that all polygons and enquiry points lie within the mesh.
|
|
412
|
+
"""
|
|
413
|
+
bounding_polygon = self.domain.get_boundary_polygon()
|
|
414
|
+
P = self.culvert_polygons
|
|
415
|
+
for key in P.keys():
|
|
416
|
+
if key in ['exchange_polygon0',
|
|
417
|
+
'exchange_polygon1']:
|
|
418
|
+
for point in list(P[key]) + self.enquiry_points:
|
|
419
|
+
msg = 'Point %s in polygon %s for culvert %s did not'\
|
|
420
|
+
%(str(point), key, self.label)
|
|
421
|
+
msg += 'fall within the domain boundary.'
|
|
422
|
+
assert is_inside_polygon(point, bounding_polygon), msg
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
def adjust_flow_for_available_water_at_inlet(self, Q, delta_t):
|
|
426
|
+
"""Adjust Q downwards depending on available water at inlet
|
|
427
|
+
|
|
428
|
+
This is a critical step in modelling bridges and Culverts
|
|
429
|
+
the predicted flow through a structure based on an abstract
|
|
430
|
+
algorithm can at times request for water that is simply not
|
|
431
|
+
available due to any number of constrictions that limit the
|
|
432
|
+
flow approaching the structure In order to ensure that
|
|
433
|
+
there is adequate flow available certain checks are
|
|
434
|
+
required There needs to be a check using the Static Water
|
|
435
|
+
Volume sitting infront of the structure, In addition if the
|
|
436
|
+
water is moving the available water will be larger than the
|
|
437
|
+
static volume
|
|
438
|
+
|
|
439
|
+
NOTE To temporarily switch this off for Debugging purposes
|
|
440
|
+
rem out line in function def compute_rates below
|
|
441
|
+
"""
|
|
442
|
+
|
|
443
|
+
if delta_t < epsilon:
|
|
444
|
+
# No need to adjust if time step is very small or zero
|
|
445
|
+
# In this case the possible flow will be very large
|
|
446
|
+
# anyway.
|
|
447
|
+
return Q
|
|
448
|
+
|
|
449
|
+
# Short hands
|
|
450
|
+
domain = self.domain
|
|
451
|
+
dq = domain.quantities
|
|
452
|
+
time = domain.get_time()
|
|
453
|
+
I = self.inlet
|
|
454
|
+
idx = I.exchange_indices
|
|
455
|
+
|
|
456
|
+
# Find triangle with the smallest depth
|
|
457
|
+
stage = dq['stage'].get_values(location='centroids',
|
|
458
|
+
indices=[idx])
|
|
459
|
+
elevation = dq['elevation'].get_values(location='centroids',
|
|
460
|
+
indices=[idx])
|
|
461
|
+
depth = stage-elevation
|
|
462
|
+
min_depth = min(depth.flat) # This may lead to errors if edge of area is at a higher level !!!!
|
|
463
|
+
avg_depth = mean(depth.flat) # Yes, but this one violates the conservation unit tests
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
# FIXME (Ole): If you want these, use log.critical() and
|
|
468
|
+
# make the statements depend on verbose
|
|
469
|
+
#print I.depth
|
|
470
|
+
#print I.velocity
|
|
471
|
+
#print self.width
|
|
472
|
+
|
|
473
|
+
# max_Q Based on Volume Calcs
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
depth_term = min_depth*I.exchange_area/delta_t
|
|
477
|
+
if min_depth < 0.2:
|
|
478
|
+
# Only add velocity term in shallow waters (< 20 cm)
|
|
479
|
+
# This is a little ad hoc, but maybe it is reasonable
|
|
480
|
+
velocity_term = self.width*min_depth*I.velocity
|
|
481
|
+
else:
|
|
482
|
+
velocity_term = 0.0
|
|
483
|
+
|
|
484
|
+
# This one takes approaching water into account
|
|
485
|
+
max_Q = max(velocity_term, depth_term)
|
|
486
|
+
|
|
487
|
+
# This one preserves Volume
|
|
488
|
+
#max_Q = depth_term
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
if self.verbose is True:
|
|
492
|
+
log.critical('Max_Q = %f' % max_Q)
|
|
493
|
+
msg = 'Width = %.2fm, Depth at inlet = %.2f m, Velocity = %.2f m/s. ' % (self.width, I.depth, I.velocity)
|
|
494
|
+
msg += 'Max Q = %.2f m^3/s' %(max_Q)
|
|
495
|
+
log.critical(msg)
|
|
496
|
+
|
|
497
|
+
if self.log_filename is not None:
|
|
498
|
+
log_to_file(self.log_filename, msg)
|
|
499
|
+
# New Procedure for assessing the flow available to the Culvert
|
|
500
|
+
# This routine uses the GET FLOW THROUGH CROSS SECTION
|
|
501
|
+
# Need to check Several Polyline however
|
|
502
|
+
# Firstly 3 sides of the exchange Poly
|
|
503
|
+
# then only the Line Directly infront of the Polygon
|
|
504
|
+
# Access polygon Points from self.inlet.polygon
|
|
505
|
+
|
|
506
|
+
# The Following computes the flow crossing over 3 sides of the exchange polygon for the structure
|
|
507
|
+
# Clearly the flow in the culvert can not be more than that flowing toward it through the exhange polygon
|
|
508
|
+
|
|
509
|
+
#q1 = domain.get_flow_through_cross_section(self.culvert_polygons['exchange_polygon0'][1:3]) # First Side Segment
|
|
510
|
+
#q2 = domain.get_flow_through_cross_section(self.culvert_polygons['exchange_polygon0'][2:]) # Second Face Segment
|
|
511
|
+
#q3 =domain.get_flow_through_cross_section(self.culvert_polygons['exchange_polygon0'].take([3,0], axis=0)) # Third Side Segment
|
|
512
|
+
# q4 = domain.get_flow_through_cross_section([self.culvert_polygons['exchange_polygon0'][1:4]][0])
|
|
513
|
+
#q4=max(q1,0.0)+max(q2,0.0)+max(q3,0.0)
|
|
514
|
+
# To use only the Flow crossing the 3 sides of the Exchange Polygon use the following Line Only
|
|
515
|
+
#max_Q=max(q1,q2,q3,q4)
|
|
516
|
+
# Try Simple Smoothing using Average of 2 approaches
|
|
517
|
+
#max_Q=(max(q1,q2,q3,q4)+max_Q)/2.0
|
|
518
|
+
# Calculate the minimum in absolute terms of
|
|
519
|
+
# the requsted flow and the possible flow
|
|
520
|
+
Q_reduced = sign(Q)*min(abs(Q), abs(max_Q))
|
|
521
|
+
if self.verbose is True:
|
|
522
|
+
msg = 'Initial Q Reduced = %.2f m3/s. ' % (Q_reduced)
|
|
523
|
+
log.critical(msg)
|
|
524
|
+
|
|
525
|
+
if self.log_filename is not None:
|
|
526
|
+
log_to_file(self.log_filename, msg)
|
|
527
|
+
# Now Keep Rolling Average of Computed Discharge to Reduce / Remove Oscillations
|
|
528
|
+
# can use delta_t if we want to averageover a time frame for example
|
|
529
|
+
# N = 5.0/delta_t Will provide the average over 5 seconds
|
|
530
|
+
|
|
531
|
+
self.i=(self.i+1)%self.N
|
|
532
|
+
self.Q_list[self.i]=Q_reduced
|
|
533
|
+
Q_reduced = sum(self.Q_list)/len(self.Q_list)
|
|
534
|
+
|
|
535
|
+
if self.verbose is True:
|
|
536
|
+
msg = 'Final Q Reduced = %.2f m3/s. ' % (Q_reduced)
|
|
537
|
+
log.critical(msg)
|
|
538
|
+
|
|
539
|
+
if self.log_filename is not None:
|
|
540
|
+
log_to_file(self.log_filename, msg)
|
|
541
|
+
|
|
542
|
+
|
|
543
|
+
if abs(Q_reduced) < abs(Q):
|
|
544
|
+
msg = '%.2fs: Requested flow is ' % time
|
|
545
|
+
msg += 'greater than what is supported by the smallest '
|
|
546
|
+
msg += 'depth at inlet exchange area:\n '
|
|
547
|
+
msg += 'inlet exchange area: %.2f '% (I.exchange_area)
|
|
548
|
+
msg += 'velocity at inlet :%.2f '% (I.velocity)
|
|
549
|
+
msg += 'Vel* Exch Area = : %.2f '% (I.velocity*avg_depth*self.width)
|
|
550
|
+
msg += 'h_min*inlet_area/delta_t = %.2f*%.2f/%.2f '\
|
|
551
|
+
% (avg_depth, I.exchange_area, delta_t)
|
|
552
|
+
msg += ' = %.2f m^3/s\n ' % Q_reduced
|
|
553
|
+
msg += 'Q will be reduced from %.2f m^3/s to %.2f m^3/s.' % (Q, Q_reduced)
|
|
554
|
+
msg += 'Note calculate max_Q from V %.2f m^3/s ' % (max_Q)
|
|
555
|
+
if self.verbose is True:
|
|
556
|
+
log.critical(msg)
|
|
557
|
+
|
|
558
|
+
if self.log_filename is not None:
|
|
559
|
+
log_to_file(self.log_filename, msg)
|
|
560
|
+
|
|
561
|
+
return Q_reduced
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
def compute_rates(self, delta_t):
|
|
565
|
+
"""Compute new rates for inlet and outlet
|
|
566
|
+
"""
|
|
567
|
+
|
|
568
|
+
# Short hands
|
|
569
|
+
domain = self.domain
|
|
570
|
+
dq = domain.quantities
|
|
571
|
+
|
|
572
|
+
# Time stuff
|
|
573
|
+
time = domain.get_time()
|
|
574
|
+
self.last_update = time
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
if hasattr(self, 'log_filename'):
|
|
578
|
+
log_filename = self.log_filename
|
|
579
|
+
|
|
580
|
+
# Compute stage, energy and velocity at the
|
|
581
|
+
# enquiry points at each end of the culvert
|
|
582
|
+
openings = self.openings
|
|
583
|
+
for i, opening in enumerate(openings):
|
|
584
|
+
idx = self.enquiry_indices[i]
|
|
585
|
+
|
|
586
|
+
stage = dq['stage'].get_values(location='centroids',
|
|
587
|
+
indices=[idx])[0]
|
|
588
|
+
depth = h = stage-opening.elevation
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
# Get velocity
|
|
592
|
+
xmomentum = dq['xmomentum'].get_values(location='centroids',
|
|
593
|
+
indices=[idx])[0]
|
|
594
|
+
ymomentum = dq['xmomentum'].get_values(location='centroids',
|
|
595
|
+
indices=[idx])[0]
|
|
596
|
+
|
|
597
|
+
if h > minimum_allowed_height:
|
|
598
|
+
u = xmomentum/(h + velocity_protection/h)
|
|
599
|
+
v = ymomentum/(h + velocity_protection/h)
|
|
600
|
+
else:
|
|
601
|
+
u = v = 0.0
|
|
602
|
+
|
|
603
|
+
v_squared = u*u + v*v
|
|
604
|
+
|
|
605
|
+
if self.use_velocity_head is True:
|
|
606
|
+
velocity_head = 0.5*v_squared/g
|
|
607
|
+
else:
|
|
608
|
+
velocity_head = 0.0
|
|
609
|
+
|
|
610
|
+
opening.total_energy = velocity_head + stage
|
|
611
|
+
opening.specific_energy = velocity_head + depth
|
|
612
|
+
opening.stage = stage
|
|
613
|
+
opening.depth = depth
|
|
614
|
+
opening.velocity = sqrt(v_squared)
|
|
615
|
+
|
|
616
|
+
|
|
617
|
+
# We now need to deal with each opening individually
|
|
618
|
+
# Determine flow direction based on total energy difference
|
|
619
|
+
delta_total_energy = openings[0].total_energy - openings[1].total_energy
|
|
620
|
+
if delta_total_energy > 0:
|
|
621
|
+
inlet = openings[0]
|
|
622
|
+
outlet = openings[1]
|
|
623
|
+
|
|
624
|
+
# FIXME: I think this whole momentum jet thing could be a bit more elegant
|
|
625
|
+
inlet.momentum = self.opening_momentum[0]
|
|
626
|
+
outlet.momentum = self.opening_momentum[1]
|
|
627
|
+
else:
|
|
628
|
+
inlet = openings[1]
|
|
629
|
+
outlet = openings[0]
|
|
630
|
+
|
|
631
|
+
inlet.momentum = self.opening_momentum[1]
|
|
632
|
+
outlet.momentum = self.opening_momentum[0]
|
|
633
|
+
|
|
634
|
+
delta_total_energy = -delta_total_energy
|
|
635
|
+
|
|
636
|
+
self.inlet = inlet
|
|
637
|
+
self.outlet = outlet
|
|
638
|
+
|
|
639
|
+
msg = 'Total energy difference is negative'
|
|
640
|
+
assert delta_total_energy >= 0.0, msg
|
|
641
|
+
|
|
642
|
+
# Recompute slope and issue warning if flow is uphill
|
|
643
|
+
# These values do not enter the computation
|
|
644
|
+
delta_z = inlet.elevation - outlet.elevation
|
|
645
|
+
culvert_slope = (delta_z/self.length)
|
|
646
|
+
if culvert_slope < 0.0:
|
|
647
|
+
# Adverse gradient - flow is running uphill
|
|
648
|
+
# Flow will be purely controlled by uphill outlet face
|
|
649
|
+
if self.verbose is True:
|
|
650
|
+
log.critical('%.2fs - WARNING: Flow is running uphill.' % time)
|
|
651
|
+
|
|
652
|
+
if self.log_filename is not None:
|
|
653
|
+
s = 'Time=%.2f, inlet stage = %.2f, outlet stage = %.2f'\
|
|
654
|
+
%(time, self.inlet.stage, self.outlet.stage)
|
|
655
|
+
log_to_file(self.log_filename, s)
|
|
656
|
+
s = 'Delta total energy = %.3f' %(delta_total_energy)
|
|
657
|
+
log_to_file(log_filename, s)
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
# Determine controlling energy (driving head) for culvert
|
|
661
|
+
if inlet.specific_energy > delta_total_energy:
|
|
662
|
+
# Outlet control
|
|
663
|
+
driving_head = delta_total_energy
|
|
664
|
+
else:
|
|
665
|
+
# Inlet control
|
|
666
|
+
driving_head = inlet.specific_energy
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+
|
|
670
|
+
if self.inlet.depth <= self.trigger_depth:
|
|
671
|
+
Q = 0.0
|
|
672
|
+
else:
|
|
673
|
+
# Calculate discharge for one barrel and
|
|
674
|
+
# set inlet.rate and outlet.rate
|
|
675
|
+
|
|
676
|
+
if self.culvert_description_filename is not None:
|
|
677
|
+
try:
|
|
678
|
+
Q = interpolate_linearly(driving_head,
|
|
679
|
+
self.rating_curve[:,0],
|
|
680
|
+
self.rating_curve[:,1])
|
|
681
|
+
except Below_interval, e:
|
|
682
|
+
Q = self.rating_curve[0,1]
|
|
683
|
+
msg = '%.2fs: ' % time
|
|
684
|
+
msg += 'Delta head smaller than rating curve minimum: '
|
|
685
|
+
msg += str(e)
|
|
686
|
+
msg += '\n '
|
|
687
|
+
msg += 'I will use minimum discharge %.2f m^3/s ' % Q
|
|
688
|
+
msg += 'for culvert "%s"' % self.label
|
|
689
|
+
|
|
690
|
+
if hasattr(self, 'log_filename'):
|
|
691
|
+
log_to_file(self.log_filename, msg)
|
|
692
|
+
except Above_interval, e:
|
|
693
|
+
Q = self.rating_curve[-1,1]
|
|
694
|
+
msg = '%.2fs: ' % time
|
|
695
|
+
msg += 'Delta head greater than rating curve maximum: '
|
|
696
|
+
msg += str(e)
|
|
697
|
+
msg += '\n '
|
|
698
|
+
msg += 'I will use maximum discharge %.2f m^3/s ' % Q
|
|
699
|
+
msg += 'for culvert "%s"' % self.label
|
|
700
|
+
|
|
701
|
+
if self.log_filename is not None:
|
|
702
|
+
log_to_file(self.log_filename, msg)
|
|
703
|
+
else:
|
|
704
|
+
# User culvert routine
|
|
705
|
+
Q, barrel_velocity, culvert_outlet_depth =\
|
|
706
|
+
self.culvert_routine(inlet.depth,
|
|
707
|
+
outlet.depth,
|
|
708
|
+
inlet.velocity,
|
|
709
|
+
outlet.velocity,
|
|
710
|
+
inlet.specific_energy,
|
|
711
|
+
delta_total_energy,
|
|
712
|
+
g,
|
|
713
|
+
culvert_length=self.length,
|
|
714
|
+
culvert_width=self.width,
|
|
715
|
+
culvert_height=self.height,
|
|
716
|
+
culvert_type=self.culvert_type,
|
|
717
|
+
manning=self.manning,
|
|
718
|
+
sum_loss=self.sum_loss,
|
|
719
|
+
log_filename=self.log_filename)
|
|
720
|
+
|
|
721
|
+
|
|
722
|
+
|
|
723
|
+
# Adjust discharge for multiple barrels
|
|
724
|
+
Q *= self.number_of_barrels
|
|
725
|
+
|
|
726
|
+
# Adjust discharge for available water at the inlet
|
|
727
|
+
Q = self.adjust_flow_for_available_water_at_inlet(Q, delta_t)
|
|
728
|
+
|
|
729
|
+
self.inlet.rate = -Q
|
|
730
|
+
self.outlet.rate = Q
|
|
731
|
+
|
|
732
|
+
|
|
733
|
+
# Momentum jet stuff
|
|
734
|
+
if self.use_momentum_jet is True:
|
|
735
|
+
|
|
736
|
+
|
|
737
|
+
# Compute barrel momentum
|
|
738
|
+
barrel_momentum = barrel_velocity*culvert_outlet_depth
|
|
739
|
+
|
|
740
|
+
if self.log_filename is not None:
|
|
741
|
+
s = 'Barrel velocity = %f' %barrel_velocity
|
|
742
|
+
log_to_file(self.log_filename, s)
|
|
743
|
+
|
|
744
|
+
# Compute momentum vector at outlet
|
|
745
|
+
outlet_mom_x, outlet_mom_y = self.vector * barrel_momentum
|
|
746
|
+
|
|
747
|
+
if self.log_filename is not None:
|
|
748
|
+
s = 'Directional momentum = (%f, %f)' %(outlet_mom_x, outlet_mom_y)
|
|
749
|
+
log_to_file(self.log_filename, s)
|
|
750
|
+
|
|
751
|
+
|
|
752
|
+
# Update momentum
|
|
753
|
+
if delta_t > 0.0:
|
|
754
|
+
xmomentum_rate = outlet_mom_x - outlet.momentum[0].value
|
|
755
|
+
xmomentum_rate /= delta_t
|
|
756
|
+
|
|
757
|
+
ymomentum_rate = outlet_mom_y - outlet.momentum[1].value
|
|
758
|
+
ymomentum_rate /= delta_t
|
|
759
|
+
|
|
760
|
+
if self.log_filename is not None:
|
|
761
|
+
s = 'X Y MOM_RATE = (%f, %f) ' %(xmomentum_rate, ymomentum_rate)
|
|
762
|
+
log_to_file(self.log_filename, s)
|
|
763
|
+
else:
|
|
764
|
+
xmomentum_rate = ymomentum_rate = 0.0
|
|
765
|
+
|
|
766
|
+
|
|
767
|
+
# Set momentum rates for outlet jet
|
|
768
|
+
outlet.momentum[0].rate = xmomentum_rate
|
|
769
|
+
outlet.momentum[1].rate = ymomentum_rate
|
|
770
|
+
|
|
771
|
+
# Remember this value for next step (IMPORTANT)
|
|
772
|
+
outlet.momentum[0].value = outlet_mom_x
|
|
773
|
+
outlet.momentum[1].value = outlet_mom_y
|
|
774
|
+
|
|
775
|
+
if int(domain.time*100) % 100 == 0:
|
|
776
|
+
|
|
777
|
+
if self.log_filename is not None:
|
|
778
|
+
s = 'T=%.5f, Culvert Discharge = %.3f f'\
|
|
779
|
+
%(time, Q)
|
|
780
|
+
s += ' Depth= %0.3f Momentum = (%0.3f, %0.3f)'\
|
|
781
|
+
%(culvert_outlet_depth, outlet_mom_x,outlet_mom_y)
|
|
782
|
+
s += ' Momentum rate: (%.4f, %.4f)'\
|
|
783
|
+
%(xmomentum_rate, ymomentum_rate)
|
|
784
|
+
s+='Outlet Vel= %.3f'\
|
|
785
|
+
%(barrel_velocity)
|
|
786
|
+
log_to_file(self.log_filename, s)
|
|
787
|
+
|
|
788
|
+
|
|
789
|
+
# Execute momentum terms
|
|
790
|
+
# This is where Inflow objects are evaluated and update the domain
|
|
791
|
+
self.outlet.momentum[0](domain)
|
|
792
|
+
self.outlet.momentum[1](domain)
|
|
793
|
+
|
|
794
|
+
|
|
795
|
+
|
|
796
|
+
# Log timeseries to file
|
|
797
|
+
try:
|
|
798
|
+
fid = open(self.timeseries_filename, 'a')
|
|
799
|
+
except:
|
|
800
|
+
pass
|
|
801
|
+
else:
|
|
802
|
+
fid.write('%.2f, %.2f\n' %(time, Q))
|
|
803
|
+
fid.close()
|
|
804
|
+
|
|
805
|
+
# Store value of time
|
|
806
|
+
self.last_time = time
|
|
807
|
+
|
|
808
|
+
|
|
809
|
+
|
|
810
|
+
|
|
811
|
+
|
|
812
|
+
|
|
813
|
+
|
|
814
|
+
# OBSOLETE (Except for momentum jet in Culvert_flow_energy)
|
|
815
|
+
class Culvert_flow_rating:
|
|
816
|
+
"""Culvert flow - transfer water from one hole to another
|
|
817
|
+
|
|
818
|
+
|
|
819
|
+
Input: Two points, pipe_size (either diameter or width, height),
|
|
820
|
+
mannings_rougness,
|
|
821
|
+
inlet/outlet energy_loss_coefficients, internal_bend_coefficent,
|
|
822
|
+
top-down_blockage_factor and bottom_up_blockage_factor
|
|
823
|
+
|
|
824
|
+
"""
|
|
825
|
+
|
|
826
|
+
def __init__(self,
|
|
827
|
+
domain,
|
|
828
|
+
culvert_description_filename=None,
|
|
829
|
+
end_point0=None,
|
|
830
|
+
end_point1=None,
|
|
831
|
+
enquiry_point0=None,
|
|
832
|
+
enquiry_point1=None,
|
|
833
|
+
update_interval=None,
|
|
834
|
+
log_file=False,
|
|
835
|
+
discharge_hydrograph=False,
|
|
836
|
+
verbose=False):
|
|
837
|
+
|
|
838
|
+
|
|
839
|
+
|
|
840
|
+
label, type, width, height, length, number_of_barrels, description, rating_curve = read_culvert_description(culvert_description_filename)
|
|
841
|
+
|
|
842
|
+
|
|
843
|
+
# Store culvert information
|
|
844
|
+
self.label = label
|
|
845
|
+
self.description = description
|
|
846
|
+
self.culvert_type = type
|
|
847
|
+
self.rating_curve = ensure_numeric(rating_curve)
|
|
848
|
+
self.number_of_barrels = number_of_barrels
|
|
849
|
+
|
|
850
|
+
if label is None: label = 'culvert_flow'
|
|
851
|
+
label += '_' + str(id(self))
|
|
852
|
+
self.label = label
|
|
853
|
+
|
|
854
|
+
# File for storing discharge_hydrograph
|
|
855
|
+
if discharge_hydrograph is True:
|
|
856
|
+
self.timeseries_filename = label + '_timeseries.csv'
|
|
857
|
+
fid = open(self.timeseries_filename, 'w')
|
|
858
|
+
fid.write('time, discharge\n')
|
|
859
|
+
fid.close()
|
|
860
|
+
|
|
861
|
+
# Log file for storing general textual output
|
|
862
|
+
if log_file is True:
|
|
863
|
+
self.log_filename = label + '.log'
|
|
864
|
+
log_to_file(self.log_filename, self.label)
|
|
865
|
+
log_to_file(self.log_filename, description)
|
|
866
|
+
log_to_file(self.log_filename, self.culvert_type)
|
|
867
|
+
|
|
868
|
+
|
|
869
|
+
# Create the fundamental culvert polygons from POLYGON
|
|
870
|
+
#if self.culvert_type == 'circle':
|
|
871
|
+
# # Redefine width and height for use with create_culvert_polygons
|
|
872
|
+
# width = height = diameter
|
|
873
|
+
|
|
874
|
+
P = create_culvert_polygons(end_point0,
|
|
875
|
+
end_point1,
|
|
876
|
+
width=width,
|
|
877
|
+
height=height,
|
|
878
|
+
number_of_barrels=number_of_barrels)
|
|
879
|
+
|
|
880
|
+
# Select enquiry points
|
|
881
|
+
if enquiry_point0 is None:
|
|
882
|
+
enquiry_point0 = P['enquiry_point0']
|
|
883
|
+
|
|
884
|
+
if enquiry_point1 is None:
|
|
885
|
+
enquiry_point1 = P['enquiry_point1']
|
|
886
|
+
|
|
887
|
+
if verbose is True:
|
|
888
|
+
pass
|
|
889
|
+
#plot_polygons([[end_point0, end_point1],
|
|
890
|
+
# P['exchange_polygon0'],
|
|
891
|
+
# P['exchange_polygon1'],
|
|
892
|
+
# [enquiry_point0, 1.005*enquiry_point0],
|
|
893
|
+
# [enquiry_point1, 1.005*enquiry_point1]],
|
|
894
|
+
# figname='culvert_polygon_output')
|
|
895
|
+
|
|
896
|
+
|
|
897
|
+
|
|
898
|
+
self.enquiry_points = [enquiry_point0, enquiry_point1]
|
|
899
|
+
|
|
900
|
+
self.enquiry_indices = []
|
|
901
|
+
for point in self.enquiry_points:
|
|
902
|
+
# Find nearest centroid
|
|
903
|
+
N = len(domain)
|
|
904
|
+
points = domain.get_centroid_coordinates(absolute=True)
|
|
905
|
+
|
|
906
|
+
# Calculate indices in exchange area for this forcing term
|
|
907
|
+
|
|
908
|
+
triangle_id = min_dist = sys.maxint
|
|
909
|
+
for k in range(N):
|
|
910
|
+
x, y = points[k,:] # Centroid
|
|
911
|
+
|
|
912
|
+
c = point
|
|
913
|
+
distance = (x-c[0])**2+(y-c[1])**2
|
|
914
|
+
if distance < min_dist:
|
|
915
|
+
min_dist = distance
|
|
916
|
+
triangle_id = k
|
|
917
|
+
|
|
918
|
+
|
|
919
|
+
if triangle_id < sys.maxint:
|
|
920
|
+
msg = 'found triangle with centroid (%f, %f)'\
|
|
921
|
+
%tuple(points[triangle_id, :])
|
|
922
|
+
msg += ' for point (%f, %f)' %tuple(point)
|
|
923
|
+
|
|
924
|
+
self.enquiry_indices.append(triangle_id)
|
|
925
|
+
else:
|
|
926
|
+
msg = 'Triangle not found for point (%f, %f)' %point
|
|
927
|
+
raise Exception(msg)
|
|
928
|
+
|
|
929
|
+
|
|
930
|
+
|
|
931
|
+
# Check that all polygons lie within the mesh.
|
|
932
|
+
bounding_polygon = domain.get_boundary_polygon()
|
|
933
|
+
for key in P.keys():
|
|
934
|
+
if key in ['exchange_polygon0',
|
|
935
|
+
'exchange_polygon1']:
|
|
936
|
+
for point in list(P[key]) + self.enquiry_points:
|
|
937
|
+
msg = 'Point %s in polygon %s for culvert %s did not'\
|
|
938
|
+
%(str(point), key, self.label)
|
|
939
|
+
msg += 'fall within the domain boundary.'
|
|
940
|
+
assert is_inside_polygon(point, bounding_polygon), msg
|
|
941
|
+
|
|
942
|
+
|
|
943
|
+
# Create inflow object at each end of the culvert.
|
|
944
|
+
self.openings = []
|
|
945
|
+
self.openings.append(Inflow(domain,
|
|
946
|
+
polygon=P['exchange_polygon0']))
|
|
947
|
+
|
|
948
|
+
self.openings.append(Inflow(domain,
|
|
949
|
+
polygon=P['exchange_polygon1']))
|
|
950
|
+
|
|
951
|
+
|
|
952
|
+
|
|
953
|
+
dq = domain.quantities
|
|
954
|
+
for i, opening in enumerate(self.openings):
|
|
955
|
+
elevation = dq['elevation'].get_values(location='centroids',
|
|
956
|
+
indices=[self.enquiry_indices[i]])
|
|
957
|
+
opening.elevation = elevation
|
|
958
|
+
opening.stage = elevation # Simple assumption that culvert is dry initially
|
|
959
|
+
|
|
960
|
+
# Assume two openings for now: Referred to as 0 and 1
|
|
961
|
+
assert len(self.openings) == 2
|
|
962
|
+
|
|
963
|
+
# Determine pipe direction
|
|
964
|
+
self.delta_z = delta_z = self.openings[0].elevation - self.openings[1].elevation
|
|
965
|
+
if delta_z > 0.0:
|
|
966
|
+
self.inlet = self.openings[0]
|
|
967
|
+
self.outlet = self.openings[1]
|
|
968
|
+
else:
|
|
969
|
+
self.outlet = self.openings[0]
|
|
970
|
+
self.inlet = self.openings[1]
|
|
971
|
+
|
|
972
|
+
|
|
973
|
+
# Store basic geometry
|
|
974
|
+
self.end_points = [end_point0, end_point1]
|
|
975
|
+
self.vector = P['vector']
|
|
976
|
+
self.length = P['length']; assert self.length > 0.0
|
|
977
|
+
if not num.allclose(self.length, length, rtol=1.0e-2, atol=1.0e-2):
|
|
978
|
+
msg = 'WARNING: barrel length specified in "%s" (%.2f m)' %(culvert_description_filename, length)
|
|
979
|
+
msg += ' does not match distance between specified'
|
|
980
|
+
msg += ' end points (%.2f m)' %self.length
|
|
981
|
+
log.critical(msg)
|
|
982
|
+
|
|
983
|
+
self.verbose = verbose
|
|
984
|
+
self.last_update = 0.0 # For use with update_interval
|
|
985
|
+
self.last_time = 0.0
|
|
986
|
+
self.update_interval = update_interval
|
|
987
|
+
|
|
988
|
+
|
|
989
|
+
# Print something
|
|
990
|
+
if hasattr(self, 'log_filename'):
|
|
991
|
+
s = 'Culvert Effective Length = %.2f m' %(self.length)
|
|
992
|
+
log_to_file(self.log_filename, s)
|
|
993
|
+
|
|
994
|
+
s = 'Culvert Direction is %s\n' %str(self.vector)
|
|
995
|
+
log_to_file(self.log_filename, s)
|
|
996
|
+
|
|
997
|
+
|
|
998
|
+
|
|
999
|
+
|
|
1000
|
+
|
|
1001
|
+
def __call__(self, domain):
|
|
1002
|
+
|
|
1003
|
+
# Time stuff
|
|
1004
|
+
time = domain.get_time()
|
|
1005
|
+
|
|
1006
|
+
|
|
1007
|
+
update = False
|
|
1008
|
+
if self.update_interval is None:
|
|
1009
|
+
update = True
|
|
1010
|
+
delta_t = domain.timestep # Next timestep has been computed in domain.py
|
|
1011
|
+
else:
|
|
1012
|
+
if time - self.last_update > self.update_interval or time == 0.0:
|
|
1013
|
+
update = True
|
|
1014
|
+
delta_t = self.update_interval
|
|
1015
|
+
|
|
1016
|
+
s = '\nTime = %.2f, delta_t = %f' %(time, delta_t)
|
|
1017
|
+
if hasattr(self, 'log_filename'):
|
|
1018
|
+
log_to_file(self.log_filename, s)
|
|
1019
|
+
|
|
1020
|
+
|
|
1021
|
+
if update is True:
|
|
1022
|
+
self.last_update = time
|
|
1023
|
+
|
|
1024
|
+
dq = domain.quantities
|
|
1025
|
+
|
|
1026
|
+
# Get average water depths at each opening
|
|
1027
|
+
openings = self.openings # There are two Opening [0] and [1]
|
|
1028
|
+
for i, opening in enumerate(openings):
|
|
1029
|
+
|
|
1030
|
+
# Compute mean values of selected quantitites in the
|
|
1031
|
+
# enquiry area in front of the culvert
|
|
1032
|
+
|
|
1033
|
+
stage = dq['stage'].get_values(location='centroids',
|
|
1034
|
+
indices=[self.enquiry_indices[i]])
|
|
1035
|
+
|
|
1036
|
+
# Store current average stage and depth with each opening object
|
|
1037
|
+
opening.depth = stage - opening.elevation
|
|
1038
|
+
opening.stage = stage
|
|
1039
|
+
|
|
1040
|
+
|
|
1041
|
+
|
|
1042
|
+
################# End of the FOR loop ################################################
|
|
1043
|
+
|
|
1044
|
+
# We now need to deal with each opening individually
|
|
1045
|
+
|
|
1046
|
+
# Determine flow direction based on total energy difference
|
|
1047
|
+
|
|
1048
|
+
delta_w = self.inlet.stage - self.outlet.stage
|
|
1049
|
+
|
|
1050
|
+
if hasattr(self, 'log_filename'):
|
|
1051
|
+
s = 'Time=%.2f, inlet stage = %.2f, outlet stage = %.2f' %(time,
|
|
1052
|
+
self.inlet.stage,
|
|
1053
|
+
self.outlet.stage)
|
|
1054
|
+
log_to_file(self.log_filename, s)
|
|
1055
|
+
|
|
1056
|
+
|
|
1057
|
+
if self.inlet.depth <= 0.01:
|
|
1058
|
+
Q = 0.0
|
|
1059
|
+
else:
|
|
1060
|
+
# Calculate discharge for one barrel and set inlet.rate and outlet.rate
|
|
1061
|
+
|
|
1062
|
+
try:
|
|
1063
|
+
Q = interpolate_linearly(delta_w, self.rating_curve[:,0], self.rating_curve[:,1])
|
|
1064
|
+
except Below_interval, e:
|
|
1065
|
+
Q = self.rating_curve[0,1]
|
|
1066
|
+
msg = '%.2fs: Delta head smaller than rating curve minimum: ' %time
|
|
1067
|
+
msg += str(e)
|
|
1068
|
+
msg += '\n I will use minimum discharge %.2f m^3/s for culvert "%s"'\
|
|
1069
|
+
%(Q, self.label)
|
|
1070
|
+
if hasattr(self, 'log_filename'):
|
|
1071
|
+
log_to_file(self.log_filename, msg)
|
|
1072
|
+
except Above_interval, e:
|
|
1073
|
+
Q = self.rating_curve[-1,1]
|
|
1074
|
+
msg = '%.2fs: Delta head greater than rating curve maximum: ' %time
|
|
1075
|
+
msg += str(e)
|
|
1076
|
+
msg += '\n I will use maximum discharge %.2f m^3/s for culvert "%s"'\
|
|
1077
|
+
%(Q, self.label)
|
|
1078
|
+
if hasattr(self, 'log_filename'):
|
|
1079
|
+
log_to_file(self.log_filename, msg)
|
|
1080
|
+
|
|
1081
|
+
|
|
1082
|
+
|
|
1083
|
+
|
|
1084
|
+
# Adjust discharge for multiple barrels
|
|
1085
|
+
Q *= self.number_of_barrels
|
|
1086
|
+
|
|
1087
|
+
|
|
1088
|
+
# Adjust Q downwards depending on available water at inlet
|
|
1089
|
+
stage = self.inlet.get_quantity_values(quantity_name='stage')
|
|
1090
|
+
elevation = self.inlet.get_quantity_values(quantity_name='elevation')
|
|
1091
|
+
depth = stage-elevation
|
|
1092
|
+
|
|
1093
|
+
|
|
1094
|
+
V = 0
|
|
1095
|
+
for i, d in enumerate(depth):
|
|
1096
|
+
V += d * domain.areas[i]
|
|
1097
|
+
|
|
1098
|
+
dt = delta_t
|
|
1099
|
+
if Q*dt > V:
|
|
1100
|
+
|
|
1101
|
+
Q_reduced = 0.9*V/dt # Reduce with safety factor
|
|
1102
|
+
|
|
1103
|
+
msg = '%.2fs: Computed extraction for this time interval (Q*dt) is ' % time
|
|
1104
|
+
msg += 'greater than current volume (V) at inlet.\n'
|
|
1105
|
+
msg += ' Q will be reduced from %.2f m^3/s to %.2f m^3/s.' % (Q, Q_reduced)
|
|
1106
|
+
|
|
1107
|
+
if self.verbose is True:
|
|
1108
|
+
log.critical(msg)
|
|
1109
|
+
if hasattr(self, 'log_filename'):
|
|
1110
|
+
log_to_file(self.log_filename, msg)
|
|
1111
|
+
|
|
1112
|
+
Q = Q_reduced
|
|
1113
|
+
|
|
1114
|
+
self.inlet.rate = -Q
|
|
1115
|
+
self.outlet.rate = Q
|
|
1116
|
+
|
|
1117
|
+
# Log timeseries to file
|
|
1118
|
+
try:
|
|
1119
|
+
fid = open(self.timeseries_filename, 'a')
|
|
1120
|
+
except:
|
|
1121
|
+
pass
|
|
1122
|
+
else:
|
|
1123
|
+
fid.write('%.2f, %.2f\n' %(time, Q))
|
|
1124
|
+
fid.close()
|
|
1125
|
+
|
|
1126
|
+
# Store value of time
|
|
1127
|
+
self.last_time = time
|
|
1128
|
+
|
|
1129
|
+
|
|
1130
|
+
|
|
1131
|
+
# Execute flow term for each opening
|
|
1132
|
+
# This is where Inflow objects are evaluated using the last rate that has been calculated
|
|
1133
|
+
#
|
|
1134
|
+
# This will take place at every internal timestep and update the domain
|
|
1135
|
+
for opening in self.openings:
|
|
1136
|
+
opening(domain)
|
|
1137
|
+
|
|
1138
|
+
|
|
1139
|
+
|
|
1140
|
+
|
|
1141
|
+
|
|
1142
|
+
|
|
1143
|
+
class Culvert_flow_energy:
|
|
1144
|
+
"""Culvert flow - transfer water from one hole to another
|
|
1145
|
+
|
|
1146
|
+
Using Momentum as Calculated by Culvert Flow !!
|
|
1147
|
+
Could be Several Methods Investigated to do This !!!
|
|
1148
|
+
|
|
1149
|
+
2008_May_08
|
|
1150
|
+
To Ole:
|
|
1151
|
+
OK so here we need to get the Polygon Creating code to create
|
|
1152
|
+
polygons for the culvert Based on
|
|
1153
|
+
the two input Points (X0,Y0) and (X1,Y1) - need to be passed
|
|
1154
|
+
to create polygon
|
|
1155
|
+
|
|
1156
|
+
The two centers are now passed on to create_polygon.
|
|
1157
|
+
|
|
1158
|
+
|
|
1159
|
+
Input: Two points, pipe_size (either diameter or width, height),
|
|
1160
|
+
mannings_rougness,
|
|
1161
|
+
inlet/outlet energy_loss_coefficients, internal_bend_coefficent,
|
|
1162
|
+
top-down_blockage_factor and bottom_up_blockage_factor
|
|
1163
|
+
|
|
1164
|
+
|
|
1165
|
+
And the Delta H enquiry should be change from Openings in line 412
|
|
1166
|
+
to the enquiry Polygons infront of the culvert
|
|
1167
|
+
At the moment this script uses only Depth, later we can change it to
|
|
1168
|
+
Energy...
|
|
1169
|
+
|
|
1170
|
+
Once we have Delta H can calculate a Flow Rate and from Flow Rate
|
|
1171
|
+
an Outlet Velocity
|
|
1172
|
+
The Outlet Velocity x Outlet Depth = Momentum to be applied at the Outlet...
|
|
1173
|
+
|
|
1174
|
+
Invert levels are optional. If left out they will default to the
|
|
1175
|
+
elevation at the opening.
|
|
1176
|
+
|
|
1177
|
+
"""
|
|
1178
|
+
|
|
1179
|
+
def __init__(self,
|
|
1180
|
+
domain,
|
|
1181
|
+
label=None,
|
|
1182
|
+
description=None,
|
|
1183
|
+
end_point0=None,
|
|
1184
|
+
end_point1=None,
|
|
1185
|
+
width=None,
|
|
1186
|
+
height=None,
|
|
1187
|
+
diameter=None,
|
|
1188
|
+
manning=None, # Mannings Roughness for Culvert
|
|
1189
|
+
invert_level0=None, # Invert level at opening 0
|
|
1190
|
+
invert_level1=None, # Invert level at opening 1
|
|
1191
|
+
loss_exit=None,
|
|
1192
|
+
loss_entry=None,
|
|
1193
|
+
loss_bend=None,
|
|
1194
|
+
loss_special=None,
|
|
1195
|
+
blockage_topdwn=None,
|
|
1196
|
+
blockage_bottup=None,
|
|
1197
|
+
culvert_routine=None,
|
|
1198
|
+
number_of_barrels=1,
|
|
1199
|
+
enquiry_point0=None,
|
|
1200
|
+
enquiry_point1=None,
|
|
1201
|
+
update_interval=None,
|
|
1202
|
+
verbose=False):
|
|
1203
|
+
|
|
1204
|
+
# Input check
|
|
1205
|
+
if diameter is not None:
|
|
1206
|
+
self.culvert_type = 'circle'
|
|
1207
|
+
self.diameter = diameter
|
|
1208
|
+
if height is not None or width is not None:
|
|
1209
|
+
msg = 'Either diameter or width&height must be specified, '
|
|
1210
|
+
msg += 'but not both.'
|
|
1211
|
+
raise Exception(msg)
|
|
1212
|
+
else:
|
|
1213
|
+
if height is not None:
|
|
1214
|
+
if width is None:
|
|
1215
|
+
self.culvert_type = 'square'
|
|
1216
|
+
width = height
|
|
1217
|
+
else:
|
|
1218
|
+
self.culvert_type = 'rectangle'
|
|
1219
|
+
elif width is not None:
|
|
1220
|
+
if height is None:
|
|
1221
|
+
self.culvert_type = 'square'
|
|
1222
|
+
height = width
|
|
1223
|
+
else:
|
|
1224
|
+
msg = 'Either diameter or width&height must be specified.'
|
|
1225
|
+
raise Exception(msg)
|
|
1226
|
+
|
|
1227
|
+
if height == width:
|
|
1228
|
+
self.culvert_type = 'square'
|
|
1229
|
+
|
|
1230
|
+
self.height = height
|
|
1231
|
+
self.width = width
|
|
1232
|
+
|
|
1233
|
+
|
|
1234
|
+
assert self.culvert_type in ['circle', 'square', 'rectangle']
|
|
1235
|
+
|
|
1236
|
+
assert number_of_barrels >= 1
|
|
1237
|
+
self.number_of_barrels = number_of_barrels
|
|
1238
|
+
|
|
1239
|
+
|
|
1240
|
+
# Set defaults
|
|
1241
|
+
if manning is None: manning = 0.012 # Default roughness for pipe
|
|
1242
|
+
if loss_exit is None: loss_exit = 1.00
|
|
1243
|
+
if loss_entry is None: loss_entry = 0.50
|
|
1244
|
+
if loss_bend is None: loss_bend=0.00
|
|
1245
|
+
if loss_special is None: loss_special=0.00
|
|
1246
|
+
if blockage_topdwn is None: blockage_topdwn=0.00
|
|
1247
|
+
if blockage_bottup is None: blockage_bottup=0.00
|
|
1248
|
+
if culvert_routine is None:
|
|
1249
|
+
culvert_routine=boyd_generalised_culvert_model
|
|
1250
|
+
|
|
1251
|
+
if label is None: label = 'culvert_flow'
|
|
1252
|
+
label += '_' + str(id(self))
|
|
1253
|
+
self.label = label
|
|
1254
|
+
|
|
1255
|
+
# File for storing culvert quantities
|
|
1256
|
+
self.timeseries_filename = label + '_timeseries.csv'
|
|
1257
|
+
fid = open(self.timeseries_filename, 'w')
|
|
1258
|
+
fid.write('time, E0, E1, Velocity, Discharge\n')
|
|
1259
|
+
fid.close()
|
|
1260
|
+
|
|
1261
|
+
# Log file for storing general textual output
|
|
1262
|
+
self.log_filename = label + '.log'
|
|
1263
|
+
log_to_file(self.log_filename, self.label)
|
|
1264
|
+
log_to_file(self.log_filename, description)
|
|
1265
|
+
log_to_file(self.log_filename, self.culvert_type)
|
|
1266
|
+
|
|
1267
|
+
|
|
1268
|
+
# Create the fundamental culvert polygons from POLYGON
|
|
1269
|
+
if self.culvert_type == 'circle':
|
|
1270
|
+
# Redefine width and height for use with create_culvert_polygons
|
|
1271
|
+
width = height = diameter
|
|
1272
|
+
|
|
1273
|
+
P = create_culvert_polygons(end_point0,
|
|
1274
|
+
end_point1,
|
|
1275
|
+
width=width,
|
|
1276
|
+
height=height,
|
|
1277
|
+
number_of_barrels=number_of_barrels)
|
|
1278
|
+
|
|
1279
|
+
# Select enquiry points
|
|
1280
|
+
if enquiry_point0 is None:
|
|
1281
|
+
enquiry_point0 = P['enquiry_point0']
|
|
1282
|
+
|
|
1283
|
+
if enquiry_point1 is None:
|
|
1284
|
+
enquiry_point1 = P['enquiry_point1']
|
|
1285
|
+
|
|
1286
|
+
if verbose is True:
|
|
1287
|
+
pass
|
|
1288
|
+
#plot_polygons([[end_point0, end_point1],
|
|
1289
|
+
# P['exchange_polygon0'],
|
|
1290
|
+
# P['exchange_polygon1'],
|
|
1291
|
+
# [enquiry_point0, 1.005*enquiry_point0],
|
|
1292
|
+
# [enquiry_point1, 1.005*enquiry_point1]],
|
|
1293
|
+
# figname='culvert_polygon_output')
|
|
1294
|
+
|
|
1295
|
+
|
|
1296
|
+
self.enquiry_points = [enquiry_point0, enquiry_point1]
|
|
1297
|
+
|
|
1298
|
+
|
|
1299
|
+
self.enquiry_indices = []
|
|
1300
|
+
for point in self.enquiry_points:
|
|
1301
|
+
# Find nearest centroid
|
|
1302
|
+
N = len(domain)
|
|
1303
|
+
points = domain.get_centroid_coordinates(absolute=True)
|
|
1304
|
+
|
|
1305
|
+
# Calculate indices in exchange area for this forcing term
|
|
1306
|
+
|
|
1307
|
+
triangle_id = min_dist = sys.maxint
|
|
1308
|
+
for k in range(N):
|
|
1309
|
+
x, y = points[k,:] # Centroid
|
|
1310
|
+
|
|
1311
|
+
c = point
|
|
1312
|
+
distance = (x-c[0])**2+(y-c[1])**2
|
|
1313
|
+
if distance < min_dist:
|
|
1314
|
+
min_dist = distance
|
|
1315
|
+
triangle_id = k
|
|
1316
|
+
|
|
1317
|
+
|
|
1318
|
+
if triangle_id < sys.maxint:
|
|
1319
|
+
msg = 'found triangle with centroid (%f, %f)'\
|
|
1320
|
+
%tuple(points[triangle_id, :])
|
|
1321
|
+
msg += ' for point (%f, %f)' %tuple(point)
|
|
1322
|
+
|
|
1323
|
+
self.enquiry_indices.append(triangle_id)
|
|
1324
|
+
else:
|
|
1325
|
+
msg = 'Triangle not found for point (%f, %f)' %point
|
|
1326
|
+
raise Exception(msg)
|
|
1327
|
+
|
|
1328
|
+
|
|
1329
|
+
|
|
1330
|
+
|
|
1331
|
+
|
|
1332
|
+
|
|
1333
|
+
# Check that all polygons lie within the mesh.
|
|
1334
|
+
bounding_polygon = domain.get_boundary_polygon()
|
|
1335
|
+
for key in P.keys():
|
|
1336
|
+
if key in ['exchange_polygon0',
|
|
1337
|
+
'exchange_polygon1']:
|
|
1338
|
+
for point in P[key]:
|
|
1339
|
+
|
|
1340
|
+
msg = 'Point %s in polygon %s for culvert %s did not'\
|
|
1341
|
+
%(str(point), key, self.label)
|
|
1342
|
+
msg += 'fall within the domain boundary.'
|
|
1343
|
+
assert is_inside_polygon(point, bounding_polygon), msg
|
|
1344
|
+
|
|
1345
|
+
|
|
1346
|
+
# Create inflow object at each end of the culvert.
|
|
1347
|
+
self.openings = []
|
|
1348
|
+
self.openings.append(Inflow(domain,
|
|
1349
|
+
polygon=P['exchange_polygon0']))
|
|
1350
|
+
|
|
1351
|
+
self.openings.append(Inflow(domain,
|
|
1352
|
+
polygon=P['exchange_polygon1']))
|
|
1353
|
+
|
|
1354
|
+
|
|
1355
|
+
# Assume two openings for now: Referred to as 0 and 1
|
|
1356
|
+
assert len(self.openings) == 2
|
|
1357
|
+
|
|
1358
|
+
# Store basic geometry
|
|
1359
|
+
self.end_points = [end_point0, end_point1]
|
|
1360
|
+
self.invert_levels = [invert_level0, invert_level1]
|
|
1361
|
+
#self.enquiry_polygons = [P['enquiry_polygon0'], P['enquiry_polygon1']]
|
|
1362
|
+
#self.enquiry_polylines = [P['enquiry_polygon0'][:2],
|
|
1363
|
+
# P['enquiry_polygon1'][:2]]
|
|
1364
|
+
self.vector = P['vector']
|
|
1365
|
+
self.length = P['length']; assert self.length > 0.0
|
|
1366
|
+
self.verbose = verbose
|
|
1367
|
+
self.last_time = 0.0
|
|
1368
|
+
self.last_update = 0.0 # For use with update_interval
|
|
1369
|
+
self.update_interval = update_interval
|
|
1370
|
+
|
|
1371
|
+
|
|
1372
|
+
# Store hydraulic parameters
|
|
1373
|
+
self.manning = manning
|
|
1374
|
+
self.loss_exit = loss_exit
|
|
1375
|
+
self.loss_entry = loss_entry
|
|
1376
|
+
self.loss_bend = loss_bend
|
|
1377
|
+
self.loss_special = loss_special
|
|
1378
|
+
self.sum_loss = loss_exit + loss_entry + loss_bend + loss_special
|
|
1379
|
+
self.blockage_topdwn = blockage_topdwn
|
|
1380
|
+
self.blockage_bottup = blockage_bottup
|
|
1381
|
+
|
|
1382
|
+
# Store culvert routine
|
|
1383
|
+
self.culvert_routine = culvert_routine
|
|
1384
|
+
|
|
1385
|
+
|
|
1386
|
+
# Create objects to update momentum (a bit crude at this stage)
|
|
1387
|
+
xmom0 = General_forcing(domain, 'xmomentum',
|
|
1388
|
+
polygon=P['exchange_polygon0'])
|
|
1389
|
+
|
|
1390
|
+
xmom1 = General_forcing(domain, 'xmomentum',
|
|
1391
|
+
polygon=P['exchange_polygon1'])
|
|
1392
|
+
|
|
1393
|
+
ymom0 = General_forcing(domain, 'ymomentum',
|
|
1394
|
+
polygon=P['exchange_polygon0'])
|
|
1395
|
+
|
|
1396
|
+
ymom1 = General_forcing(domain, 'ymomentum',
|
|
1397
|
+
polygon=P['exchange_polygon1'])
|
|
1398
|
+
|
|
1399
|
+
self.opening_momentum = [ [xmom0, ymom0], [xmom1, ymom1] ]
|
|
1400
|
+
|
|
1401
|
+
|
|
1402
|
+
# Print something
|
|
1403
|
+
s = 'Culvert Effective Length = %.2f m' %(self.length)
|
|
1404
|
+
log_to_file(self.log_filename, s)
|
|
1405
|
+
|
|
1406
|
+
s = 'Culvert Direction is %s\n' %str(self.vector)
|
|
1407
|
+
log_to_file(self.log_filename, s)
|
|
1408
|
+
|
|
1409
|
+
|
|
1410
|
+
def __call__(self, domain):
|
|
1411
|
+
|
|
1412
|
+
log_filename = self.log_filename
|
|
1413
|
+
|
|
1414
|
+
# Time stuff
|
|
1415
|
+
time = domain.get_time()
|
|
1416
|
+
|
|
1417
|
+
# Short hand
|
|
1418
|
+
dq = domain.quantities
|
|
1419
|
+
|
|
1420
|
+
|
|
1421
|
+
update = False
|
|
1422
|
+
if self.update_interval is None:
|
|
1423
|
+
update = True
|
|
1424
|
+
delta_t = domain.timestep # Next timestep has been computed in domain.py
|
|
1425
|
+
else:
|
|
1426
|
+
if time - self.last_update > self.update_interval or time == 0.0:
|
|
1427
|
+
update = True
|
|
1428
|
+
delta_t = self.update_interval
|
|
1429
|
+
|
|
1430
|
+
s = '\nTime = %.2f, delta_t = %f' %(time, delta_t)
|
|
1431
|
+
if hasattr(self, 'log_filename'):
|
|
1432
|
+
log_to_file(log_filename, s)
|
|
1433
|
+
|
|
1434
|
+
|
|
1435
|
+
if update is True:
|
|
1436
|
+
self.last_update = time
|
|
1437
|
+
|
|
1438
|
+
msg = 'Time did not advance'
|
|
1439
|
+
if time > 0.0: assert delta_t > 0.0, msg
|
|
1440
|
+
|
|
1441
|
+
|
|
1442
|
+
# Get average water depths at each opening
|
|
1443
|
+
openings = self.openings # There are two Opening [0] and [1]
|
|
1444
|
+
for i, opening in enumerate(openings):
|
|
1445
|
+
|
|
1446
|
+
# Compute mean values of selected quantitites in the
|
|
1447
|
+
# exchange area in front of the culvert
|
|
1448
|
+
|
|
1449
|
+
stage = opening.get_quantity_values(quantity_name='stage')
|
|
1450
|
+
w = mean(stage) # Average stage
|
|
1451
|
+
|
|
1452
|
+
# Use invert level instead of elevation if specified
|
|
1453
|
+
invert_level = self.invert_levels[i]
|
|
1454
|
+
if invert_level is not None:
|
|
1455
|
+
z = invert_level
|
|
1456
|
+
else:
|
|
1457
|
+
elevation = opening.get_quantity_values(quantity_name='elevation')
|
|
1458
|
+
z = mean(elevation) # Average elevation
|
|
1459
|
+
|
|
1460
|
+
# Estimated depth above the culvert inlet
|
|
1461
|
+
d = w - z # Used for calculations involving depth
|
|
1462
|
+
if d < 0.0:
|
|
1463
|
+
# This is possible since w and z are taken at different locations
|
|
1464
|
+
#msg = 'D < 0.0: %f' %d
|
|
1465
|
+
#raise Exception(msg)
|
|
1466
|
+
d = 0.0
|
|
1467
|
+
|
|
1468
|
+
|
|
1469
|
+
# Ratio of depth to culvert height.
|
|
1470
|
+
# If ratio > 1 then culvert is running full
|
|
1471
|
+
if self.culvert_type == 'circle':
|
|
1472
|
+
ratio = d/self.diameter
|
|
1473
|
+
else:
|
|
1474
|
+
ratio = d/self.height
|
|
1475
|
+
opening.ratio = ratio
|
|
1476
|
+
|
|
1477
|
+
|
|
1478
|
+
# Average measures of energy in front of this opening
|
|
1479
|
+
|
|
1480
|
+
id = [self.enquiry_indices[i]]
|
|
1481
|
+
stage = dq['stage'].get_values(location='centroids',
|
|
1482
|
+
indices=id)
|
|
1483
|
+
elevation = dq['elevation'].get_values(location='centroids',
|
|
1484
|
+
indices=id)
|
|
1485
|
+
xmomentum = dq['xmomentum'].get_values(location='centroids',
|
|
1486
|
+
indices=id)
|
|
1487
|
+
ymomentum = dq['xmomentum'].get_values(location='centroids',
|
|
1488
|
+
indices=id)
|
|
1489
|
+
depth = stage-elevation
|
|
1490
|
+
if depth > 0.0:
|
|
1491
|
+
u = xmomentum/(depth + velocity_protection/depth)
|
|
1492
|
+
v = ymomentum/(depth + velocity_protection/depth)
|
|
1493
|
+
else:
|
|
1494
|
+
u = v = 0.0
|
|
1495
|
+
|
|
1496
|
+
|
|
1497
|
+
opening.total_energy = 0.5*(u*u + v*v)/g + stage
|
|
1498
|
+
|
|
1499
|
+
# Store current average stage and depth with each opening object
|
|
1500
|
+
opening.depth = d
|
|
1501
|
+
opening.depth_trigger = d # Use this for now
|
|
1502
|
+
opening.stage = w
|
|
1503
|
+
opening.elevation = z
|
|
1504
|
+
|
|
1505
|
+
|
|
1506
|
+
################# End of the FOR loop ################################################
|
|
1507
|
+
|
|
1508
|
+
# We now need to deal with each opening individually
|
|
1509
|
+
|
|
1510
|
+
# Determine flow direction based on total energy difference
|
|
1511
|
+
delta_Et = openings[0].total_energy - openings[1].total_energy
|
|
1512
|
+
|
|
1513
|
+
if delta_Et > 0:
|
|
1514
|
+
inlet = openings[0]
|
|
1515
|
+
outlet = openings[1]
|
|
1516
|
+
|
|
1517
|
+
inlet.momentum = self.opening_momentum[0]
|
|
1518
|
+
outlet.momentum = self.opening_momentum[1]
|
|
1519
|
+
|
|
1520
|
+
else:
|
|
1521
|
+
inlet = openings[1]
|
|
1522
|
+
outlet = openings[0]
|
|
1523
|
+
|
|
1524
|
+
inlet.momentum = self.opening_momentum[1]
|
|
1525
|
+
outlet.momentum = self.opening_momentum[0]
|
|
1526
|
+
|
|
1527
|
+
delta_Et = -delta_Et
|
|
1528
|
+
|
|
1529
|
+
self.inlet = inlet
|
|
1530
|
+
self.outlet = outlet
|
|
1531
|
+
|
|
1532
|
+
msg = 'Total energy difference is negative'
|
|
1533
|
+
assert delta_Et > 0.0, msg
|
|
1534
|
+
|
|
1535
|
+
delta_h = inlet.stage - outlet.stage
|
|
1536
|
+
delta_z = inlet.elevation - outlet.elevation
|
|
1537
|
+
culvert_slope = (delta_z/self.length)
|
|
1538
|
+
|
|
1539
|
+
if culvert_slope < 0.0:
|
|
1540
|
+
# Adverse gradient - flow is running uphill
|
|
1541
|
+
# Flow will be purely controlled by uphill outlet face
|
|
1542
|
+
if self.verbose is True:
|
|
1543
|
+
log.critical('WARNING: Flow is running uphill. Watch Out! '
|
|
1544
|
+
'inlet.elevation=%s, outlet.elevation%s'
|
|
1545
|
+
% (str(inlet.elevation), str(outlet.elevation)))
|
|
1546
|
+
|
|
1547
|
+
|
|
1548
|
+
s = 'Delta total energy = %.3f' %(delta_Et)
|
|
1549
|
+
log_to_file(log_filename, s)
|
|
1550
|
+
|
|
1551
|
+
|
|
1552
|
+
# Calculate discharge for one barrel and set inlet.rate and outlet.rate
|
|
1553
|
+
Q, barrel_velocity, culvert_outlet_depth = self.culvert_routine(self, inlet, outlet, delta_Et, g)
|
|
1554
|
+
|
|
1555
|
+
# Adjust discharge for multiple barrels
|
|
1556
|
+
Q *= self.number_of_barrels
|
|
1557
|
+
|
|
1558
|
+
# Compute barrel momentum
|
|
1559
|
+
barrel_momentum = barrel_velocity*culvert_outlet_depth
|
|
1560
|
+
|
|
1561
|
+
s = 'Barrel velocity = %f' %barrel_velocity
|
|
1562
|
+
log_to_file(log_filename, s)
|
|
1563
|
+
|
|
1564
|
+
# Compute momentum vector at outlet
|
|
1565
|
+
outlet_mom_x, outlet_mom_y = self.vector * barrel_momentum
|
|
1566
|
+
|
|
1567
|
+
s = 'Directional momentum = (%f, %f)' %(outlet_mom_x, outlet_mom_y)
|
|
1568
|
+
log_to_file(log_filename, s)
|
|
1569
|
+
|
|
1570
|
+
# Log timeseries to file
|
|
1571
|
+
fid = open(self.timeseries_filename, 'a')
|
|
1572
|
+
fid.write('%f, %f, %f, %f, %f\n'\
|
|
1573
|
+
%(time,
|
|
1574
|
+
openings[0].total_energy,
|
|
1575
|
+
openings[1].total_energy,
|
|
1576
|
+
barrel_velocity,
|
|
1577
|
+
Q))
|
|
1578
|
+
fid.close()
|
|
1579
|
+
|
|
1580
|
+
# Update momentum
|
|
1581
|
+
if delta_t > 0.0:
|
|
1582
|
+
xmomentum_rate = outlet_mom_x - outlet.momentum[0].value
|
|
1583
|
+
xmomentum_rate /= delta_t
|
|
1584
|
+
|
|
1585
|
+
ymomentum_rate = outlet_mom_y - outlet.momentum[1].value
|
|
1586
|
+
ymomentum_rate /= delta_t
|
|
1587
|
+
|
|
1588
|
+
s = 'X Y MOM_RATE = (%f, %f) ' %(xmomentum_rate, ymomentum_rate)
|
|
1589
|
+
log_to_file(log_filename, s)
|
|
1590
|
+
else:
|
|
1591
|
+
xmomentum_rate = ymomentum_rate = 0.0
|
|
1592
|
+
|
|
1593
|
+
|
|
1594
|
+
# Set momentum rates for outlet jet
|
|
1595
|
+
outlet.momentum[0].rate = xmomentum_rate
|
|
1596
|
+
outlet.momentum[1].rate = ymomentum_rate
|
|
1597
|
+
|
|
1598
|
+
# Remember this value for next step (IMPORTANT)
|
|
1599
|
+
outlet.momentum[0].value = outlet_mom_x
|
|
1600
|
+
outlet.momentum[1].value = outlet_mom_y
|
|
1601
|
+
|
|
1602
|
+
if int(domain.time*100) % 100 == 0:
|
|
1603
|
+
s = 'T=%.5f, Culvert Discharge = %.3f f'\
|
|
1604
|
+
%(time, Q)
|
|
1605
|
+
s += ' Depth= %0.3f Momentum = (%0.3f, %0.3f)'\
|
|
1606
|
+
%(culvert_outlet_depth, outlet_mom_x,outlet_mom_y)
|
|
1607
|
+
s += ' Momentum rate: (%.4f, %.4f)'\
|
|
1608
|
+
%(xmomentum_rate, ymomentum_rate)
|
|
1609
|
+
s+='Outlet Vel= %.3f'\
|
|
1610
|
+
%(barrel_velocity)
|
|
1611
|
+
log_to_file(log_filename, s)
|
|
1612
|
+
|
|
1613
|
+
# Store value of time
|
|
1614
|
+
self.last_time = time
|
|
1615
|
+
|
|
1616
|
+
|
|
1617
|
+
|
|
1618
|
+
# Execute flow term for each opening
|
|
1619
|
+
# This is where Inflow objects are evaluated and update the domain
|
|
1620
|
+
for opening in self.openings:
|
|
1621
|
+
opening(domain)
|
|
1622
|
+
|
|
1623
|
+
# Execute momentum terms
|
|
1624
|
+
# This is where Inflow objects are evaluated and update the domain
|
|
1625
|
+
self.outlet.momentum[0](domain)
|
|
1626
|
+
self.outlet.momentum[1](domain)
|
|
1627
|
+
|
|
1628
|
+
|
|
1629
|
+
|
|
1630
|
+
Culvert_flow = Culvert_flow_general
|