forked from GeoscienceAustralia/anuga_core
-
Notifications
You must be signed in to change notification settings - Fork 4
/
__init__.py
338 lines (268 loc) · 13.8 KB
/
__init__.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
""" ANUGA models the effect of tsunamis and flooding upon a terrain mesh.
In typical usage, a Domain class is created for a particular piece of
terrain. Boundary conditions are specified for the domain, such as inflow
and outflow, and then the simulation is run.
This is the public API to ANUGA. It provides a toolkit of often-used
modules, which can be used directly by including the following line in
the user's code:
import anuga
This usage pattern abstracts away the internal heirarchy of the ANUGA
system, allowing the user to concentrate on writing simulations without
searching through the ANUGA source tree for the functions that they need.
Also, it isolates the user from "under-the-hood" refactorings.
"""
# -----------------------------------------------------
# Make selected classes available directly
# -----------------------------------------------------
from builtins import filter
__version__ = '2.0.3'
__svn_revision__ = ''.join(filter(str.isdigit, "$Revision: 9737 $"))
__svn_revision_date__ = "$Date: 2016-10-04 16:13:00 +1100 (Tue, 04 Oct 2016) $"[7:-1]
# We first need to detect if we're being called as part of the anuga setup
# procedure itself in a reliable manner.
try:
__ANUGA_SETUP__
except NameError:
__ANUGA_SETUP__ = False
if __ANUGA_SETUP__:
import sys as _sys
_sys.stderr.write('Running from anuga source directory.\n')
del _sys
else:
# ----------------------------------
# NetCDF changes stdout to terminal
# Causes trouble when using jupyter
# ---------------------------------
import sys
_stdout = sys.stdout
# ---------------------------------
# Setup the nose tester from numpy
# ---------------------------------
from numpy.testing import Tester
test = Tester().test
from anuga.__config__ import show as show_config
# --------------------------------
# Important basic classes
# --------------------------------
from anuga.shallow_water.shallow_water_domain import Domain
from anuga.abstract_2d_finite_volumes.quantity import Quantity
from anuga.abstract_2d_finite_volumes.region import Region
from anuga.geospatial_data.geospatial_data import Geospatial_data
from anuga.coordinate_transforms.geo_reference import Geo_reference
from anuga.operators.base_operator import Operator
from anuga.structures.structure_operator import Structure_operator
from anuga.utilities.animate import SWW_plotter
from anuga.utilities.animate import Domain_plotter
from anuga.abstract_2d_finite_volumes.generic_domain import Generic_Domain
from anuga.abstract_2d_finite_volumes.neighbour_mesh import Mesh
# ------------------------------------------------------------------------------
# Miscellaneous
# ------------------------------------------------------------------------------
from anuga.abstract_2d_finite_volumes.util import file_function, \
sww2timeseries, sww2csv_gauges, \
csv2timeseries_graphs
from anuga.abstract_2d_finite_volumes.mesh_factory import rectangular_cross, \
rectangular
from anuga.file.csv_file import load_csv_as_building_polygons, \
load_csv_as_polygons
from anuga.file.sts import create_sts_boundary
from anuga.file.ungenerate import load_ungenerate
from anuga.geometry.polygon import read_polygon
from anuga.geometry.polygon import plot_polygons
from anuga.geometry.polygon import inside_polygon
from anuga.geometry.polygon import polygon_area
from anuga.geometry.polygon_function import Polygon_function
from anuga.coordinate_transforms.lat_long_UTM_conversion import LLtoUTM, UTMtoLL
from anuga.abstract_2d_finite_volumes.pmesh2domain import \
pmesh_to_domain_instance
from anuga.fit_interpolate.fit import fit_to_mesh_file
from anuga.fit_interpolate.fit import fit_to_mesh
from anuga.utilities.system_tools import file_length
from anuga.utilities.sww_merge import sww_merge_parallel as sww_merge
from anuga.utilities.file_utils import copy_code_files
from anuga.utilities.numerical_tools import safe_acos as acos
import anuga.utilities.plot_utils as plot_utils
from anuga.caching import cache
from os.path import join
from anuga.config import indent
from anuga.utilities.parse_time import parse_time
# ----------------------------
# Parallel api
# ----------------------------
## from anuga_parallel.parallel_api import distribute
## from anuga_parallel.parallel_api import myid, numprocs, get_processor_name
## from anuga_parallel.parallel_api import send, receive
## from anuga_parallel.parallel_api import pypar_available, barrier, finalize
## if pypar_available:
## from anuga_parallel.parallel_api import sequential_distribute_dump
## from anuga_parallel.parallel_api import sequential_distribute_load
from anuga.parallel.parallel_api import distribute
from anuga.parallel.parallel_api import myid, numprocs, get_processor_name
from anuga.parallel.parallel_api import send, receive
from anuga.parallel.parallel_api import pypar_available, barrier, finalize
from anuga.parallel.parallel_api import collect_value
if pypar_available:
from anuga.parallel.parallel_api import sequential_distribute_dump
from anuga.parallel.parallel_api import sequential_distribute_load
# -----------------------------
# Checkpointing
# -----------------------------
from anuga.shallow_water.checkpoint import load_checkpoint_file
# -----------------------------
# SwW Standard Boundaries
# -----------------------------
from anuga.shallow_water.boundaries import File_boundary
from anuga.shallow_water.boundaries import Reflective_boundary
from anuga.shallow_water.boundaries import Field_boundary
from anuga.shallow_water.boundaries import \
Time_stage_zero_momentum_boundary
from anuga.shallow_water.boundaries import \
Transmissive_stage_zero_momentum_boundary
from anuga.shallow_water.boundaries import \
Transmissive_momentum_set_stage_boundary
from anuga.shallow_water.boundaries import \
Transmissive_n_momentum_zero_t_momentum_set_stage_boundary
from anuga.shallow_water.boundaries import \
Flather_external_stage_zero_velocity_boundary
from anuga.abstract_2d_finite_volumes.generic_boundary_conditions import \
Compute_fluxes_boundary
# -----------------------------
# General Boundaries
# -----------------------------
from anuga.abstract_2d_finite_volumes.generic_boundary_conditions \
import Dirichlet_boundary
from anuga.abstract_2d_finite_volumes.generic_boundary_conditions \
import Time_boundary
from anuga.abstract_2d_finite_volumes.generic_boundary_conditions \
import Time_space_boundary
from anuga.abstract_2d_finite_volumes.generic_boundary_conditions \
import Transmissive_boundary
# -----------------------------
# Shallow Water Tsunamis
# -----------------------------
from anuga.tsunami_source.smf import slide_tsunami, slump_tsunami
# -----------------------------
# Forcing
# These are old, should use operators
# -----------------------------
from anuga.shallow_water.forcing import Inflow, Rainfall, Wind_stress
# -----------------------------
# File conversion utilities
# -----------------------------
from anuga.file_conversion.file_conversion import sww2obj
from anuga.file_conversion.file_conversion import timefile2netcdf
from anuga.file_conversion.file_conversion import tsh2sww
from anuga.file_conversion.urs2nc import urs2nc
from anuga.file_conversion.urs2sww import urs2sww
from anuga.file_conversion.urs2sts import urs2sts
from anuga.file_conversion.dem2pts import dem2pts
from anuga.file_conversion.esri2sww import esri2sww
from anuga.file_conversion.sww2dem import sww2dem, sww2dem_batch
from anuga.file_conversion.asc2dem import asc2dem
from anuga.file_conversion.xya2pts import xya2pts
from anuga.file_conversion.ferret2sww import ferret2sww
from anuga.file_conversion.dem2dem import dem2dem
from anuga.file_conversion.sww2array import sww2array
# -----------------------------
# Parsing arguments
# -----------------------------
from anuga.utilities.argparsing import create_standard_parser
from anuga.utilities.argparsing import parse_standard_args
def get_args():
""" Explicitly parse the argument list using standard anuga arguments
Don't use this if you want to setup your own parser
"""
parser = create_standard_parser()
return parser.parse_args()
# -----------------------------
# Running Script
# -----------------------------
from anuga.utilities.run_anuga_script import run_script as run_anuga_script
# ---------------------------
# Simulation and Excel mesh_interface
# ---------------------------
from anuga.simulation.simulation import Simulation
# -----------------------------
# Mesh API
# -----------------------------
from anuga.pmesh.mesh_interface import create_mesh_from_regions
# -----------------------------
# SWW file access
# -----------------------------
from anuga.shallow_water.sww_interrogate import get_flow_through_cross_section
# ---------------------------
# Operators
# ---------------------------
from anuga.operators.kinematic_viscosity_operator import Kinematic_viscosity_operator
from anuga.operators.rate_operators import Rate_operator
from anuga.operators.set_friction_operators import Depth_friction_operator
from anuga.operators.set_elevation_operator import Set_elevation_operator
from anuga.operators.set_quantity_operator import Set_quantity_operator
from anuga.operators.set_stage_operator import Set_stage_operator
from anuga.operators.set_elevation import Set_elevation
from anuga.operators.set_quantity import Set_quantity
from anuga.operators.set_stage import Set_stage
from anuga.operators.sanddune_erosion_operator import Sanddune_erosion_operator
from anuga.operators.erosion_operators import Bed_shear_erosion_operator
from anuga.operators.erosion_operators import Flat_slice_erosion_operator
from anuga.operators.erosion_operators import Flat_fill_slice_erosion_operator
# ---------------------------
# Structure Operators
# ---------------------------
if pypar_available:
from anuga.parallel.parallel_operator_factory import Inlet_operator
from anuga.parallel.parallel_operator_factory import Boyd_box_operator
from anuga.parallel.parallel_operator_factory import Boyd_pipe_operator
from anuga.parallel.parallel_operator_factory import Weir_orifice_trapezoid_operator
from anuga.parallel.parallel_operator_factory import Internal_boundary_operator
else:
from anuga.structures.inlet_operator import Inlet_operator
from anuga.structures.boyd_box_operator import Boyd_box_operator
from anuga.structures.boyd_pipe_operator import Boyd_pipe_operator
from anuga.structures.weir_orifice_trapezoid_operator import Weir_orifice_trapezoid_operator
from anuga.structures.internal_boundary_operator import Internal_boundary_operator
from anuga.structures.internal_boundary_functions import pumping_station_function
# ----------------------------
# Parallel distribute
# ----------------------------
# ----------------------------
#
# Added by Petar Milevski 10/09/2013
from anuga.utilities.model_tools import get_polygon_from_single_file
from anuga.utilities.model_tools import get_polygons_from_Mid_Mif
from anuga.utilities.model_tools import get_polygon_list_from_files
from anuga.utilities.model_tools import get_polygon_dictionary
from anuga.utilities.model_tools import get_polygon_value_list
from anuga.utilities.model_tools import read_polygon_dir
from anuga.utilities.model_tools import read_hole_dir_multi_files_with_single_poly
from anuga.utilities.model_tools import read_multi_poly_file
from anuga.utilities.model_tools import read_hole_dir_single_file_with_multi_poly
from anuga.utilities.model_tools import read_multi_poly_file_value
from anuga.utilities.model_tools import Create_culvert_bridge_Operator
from anuga.utilities.model_tools import get_WCC_2002_Blockage_factor
from anuga.utilities.model_tools import get_WCC_2016_Blockage_factor
# ---------------------------
# User Access Functions
# ---------------------------
from anuga.utilities.system_tools import get_user_name
from anuga.utilities.system_tools import get_host_name
from anuga.utilities.system_tools import get_version
from anuga.utilities.system_tools import get_revision_number
from anuga.utilities.system_tools import get_revision_date
from anuga.utilities.mem_time_equation import estimate_time_mem
# -------------------------
# create domain functions
# -------------------------
from anuga.extras import create_domain_from_regions
from anuga.extras import create_domain_from_file
from anuga.extras import rectangular_cross_domain
#import logging as log
from anuga.utilities import log as log
from anuga.config import g
from anuga.config import velocity_protection
# --------------------------------------
# NetCDF changes stdout to the terminal
# This resets it
# --------------------------------------
reload(sys)
sys.stdout = _stdout