anuga.Domain

class anuga.Domain(coordinates=None, vertices=None, boundary=None, tagged_elements=None, geo_reference=None, use_inscribed_circle=False, mesh_filename=None, use_cache=False, verbose=False, conserved_quantities=None, evolved_quantities=None, other_quantities=None, full_send_dict=None, ghost_recv_dict=None, starttime=0, processor=0, numproc=1, number_of_full_nodes=None, number_of_full_triangles=None, ghost_layer_width=2, **kwargs)[source]

Object which encapulates the shallow water model

This class is a specialization of class Generic_Domain from module generic_domain.py consisting of methods specific to the Shallow Water Wave Equation

Shallow Water Wave Equation

\[U_t + E_x + G_y = S\]

where

\[U = [w, uh, vh]^T\]
\[E = [uh, u^2h + gh^2/2, uvh]\]
\[G = [vh, uvh, v^2h + gh^2/2]\]

S represents source terms forcing the system (e.g. gravity, friction, wind stress, …)

and _t, _x, _y denote the derivative with respect to t, x and y respectively.

The quantities are

symbol

variable name

explanation

x

x

horizontal distance from origin [m]

y

y

vertical distance from origin [m]

z

elevation

elevation of bed on which flow is modelled [m]

h

height

water height above z [m]

w

stage

absolute water level, w = z+h [m]

u

speed in the x direction [m/s]

v

speed in the y direction [m/s]

uh

xmomentum

momentum in the x direction [m^2/s]

vh

ymomentum

momentum in the y direction [m^2/s]

eta

mannings friction coefficient [to appear]

nu

wind stress coefficient [to appear]

The conserved quantities are w, uh, vh

__init__(coordinates=None, vertices=None, boundary=None, tagged_elements=None, geo_reference=None, use_inscribed_circle=False, mesh_filename=None, use_cache=False, verbose=False, conserved_quantities=None, evolved_quantities=None, other_quantities=None, full_send_dict=None, ghost_recv_dict=None, starttime=0, processor=0, numproc=1, number_of_full_nodes=None, number_of_full_triangles=None, ghost_layer_width=2, **kwargs)[source]

Instantiate a shallow water domain.

Parameters:
  • coordinates – vertex locations for the mesh

  • vertices – vertex indices defining the triangles of the mesh

  • boundary – boundaries of the mesh

Methods

__init__([coordinates, vertices, boundary, ...])

Instantiate a shallow water domain.

add_quantity(name, *args, **kwargs)

Add values to a named quantity

apply_fractional_steps()

apply_protection_against_isolated_degenerate_timesteps()

backup_conserved_quantities()

balance_deep_and_shallow()

Compute linear combination between stage as computed by gradient-limiters limiting using w, and stage computed by gradient-limiters limiting using h (h-limiter).

boundary_statistics([quantities, tags])

Output statistics about boundary forcing at each timestep

build_tagged_elements_dictionary(*args, **kwargs)

centroid_norm(quantity, normfunc)

Calculate the norm of the centroid values of a specific quantity, using normfunc.

check_integrity()

Run integrity checks on shallow water domain.

compute_boundary_flows()

Compute boundary flows at current timestep.

compute_flux_update_frequency()

Update the 'flux_update_frequency' and 'update_extrapolate' variables Used to control updating of fluxes / extrapolation for 'local-time-stepping'

compute_fluxes()

Compute fluxes and timestep suitable for all volumes in domain.

compute_forcing_flows()

Compute flows in and out of domain due to forcing terms.

compute_forcing_terms()

If there are any forcing functions driving the system they should be defined in Domain subclass and appended to the list self.forcing_terms

compute_total_volume()

Compute total volume (m^3) of water in entire domain

conserved_values_to_evolved_values(q_cons, ...)

Needs to be overridden by Domain subclass

create_quantity_from_expression(expression)

Create new quantity from other quantities using arbitrary expression.

distribute_to_vertices_and_edges()

Call correct module function

distribute_using_edge_limiter()

Distribution from centroids to edges specific to the SWW eqn.

distribute_using_vertex_limiter()

Distribution from centroids to vertices specific to the SWW equation.

dump_triangulation([filename])

Get vertex coordinates, partition full and ghost triangles based on self.tri_full_flag

evolve([yieldstep, outputstep, finaltime, ...])

Evolve method from Domain class.

evolve_one_euler_step(yieldstep, finaltime)

One Euler Time Step Q^{n+1} = E(h) Q^n

evolve_one_rk2_step(yieldstep, finaltime)

One 2nd order RK timestep Q^{n+1} = 0.5 Q^n + 0.5 E(h)^2 Q^n

evolve_one_rk3_step(yieldstep, finaltime)

One 3rd order RK timestep Q^(1) = 3/4 Q^n + 1/4 E(h)^2 Q^n (at time t^n + h/2) Q^{n+1} = 1/3 Q^n + 2/3 E(h) Q^(1) (at time t^{n+1})

evolve_to_end([finaltime])

Iterate evolve all the way to the end.

extrapolate_second_order_sw()

Fast version of extrapolation from centroids to edges

get_CFL()

get CFL

get_algorithm_parameters()

Get the standard parameter that are currently set (as a dictionary)

get_area(*args, **kwargs)

get_areas(*args, **kwargs)

get_beta()

Get default beta for limiting.

get_boundary_flux_integral()

Compute the boundary flux integral.

get_boundary_polygon(*args, **kwargs)

get_boundary_tags(*args, **kwargs)

get_centroid_coordinates(*args, **kwargs)

get_centroid_transmissive_bc()

Get value of centroid_transmissive_bc flag.

get_cfl()

get CFL

get_compute_fluxes_method()

Get method for computing fluxes.

get_conserved_quantities(vol_id[, vertex, edge])

Get conserved quantities at volume vol_id.

get_datadir()

get_datetime([timestamp])

Retrieve datetime corresponding to current timestamp wrt to domain timezone

get_disconnected_triangles(*args, **kwargs)

get_distribute_to_vertices_and_edges_method()

Get method for distribute_to_vertices_and_edges.

get_edge_midpoint_coordinate(*args, **kwargs)

get_edge_midpoint_coordinates(*args, **kwargs)

get_energy_through_cross_section(polyline[, ...])

Obtain average energy head [m] across specified cross section.

get_evolve_max_timestep()

Set default max_timestep for evolving.

get_evolve_min_timestep()

Set default max_timestep for evolving.

get_evolve_starttime()

get_evolved_quantities(vol_id[, vertex, edge])

Get evolved quantities at volume vol_id.

get_extent(*args, **kwargs)

get_flow_algorithm()

Get method used for timestepping and spatial discretisation

get_flow_through_cross_section(polyline[, ...])

Get the total flow through an arbitrary poly line.

get_fractional_step_volume_integral()

Compute the integrated flows from fractional steps.

get_full_centroid_coordinates(*args, **kwargs)

get_full_nodes(*args, **kwargs)

get_full_triangles(*args, **kwargs)

get_full_vertex_coordinates(*args, **kwargs)

get_georeference(*args, **kwargs)

get_global_name()

get_hemisphere()

get_interpolation_object(*args, **kwargs)

get_intersecting_segments(*args, **kwargs)

get_inv_tri_map()

get_lone_vertices(*args, **kwargs)

get_maximum_inundation_elevation([indices, ...])

Return highest elevation where h > 0

get_maximum_inundation_location([indices])

Return location of highest elevation where h > 0

get_minimum_allowed_height()

get_minimum_storable_height()

get_name()

get_nodes(*args, **kwargs)

get_normal(*args, **kwargs)

get_number_of_full_triangles(*args, **kwargs)

get_number_of_nodes(*args, **kwargs)

get_number_of_triangles(*args, **kwargs)

get_number_of_triangles_per_node(*args, **kwargs)

get_quantity(name[, location, indices])

Get pointer to quantity object.

get_quantity_names()

Get a list of all the quantity names that this domain is aware of.

get_radii(*args, **kwargs)

get_relative_time()

Set internal relative time

get_starttime([datetime])

return starttime, either as timestamp, or as a datetime

get_store()

Get whether data saved to sww file.

get_store_centroids()

Get whether data saved to sww file.

get_tagged_elements(*args, **kwargs)

get_time()

Get the absolute model time (seconds).

get_timestep()

get current timestep (seconds).

get_timestepping_method()

get_timezone()

Retrieve current domain timezone

get_tri_map()

get_triangle_containing_point(*args, **kwargs)

get_triangles(*args, **kwargs)

get_triangles_and_vertices_per_node(*args, ...)

get_triangles_inside_polygon(*args, **kwargs)

get_unique_vertices(*args, **kwargs)

get_using_discontinuous_elevation()

Return boolean indicating whether algorithm is using dicontinuous elevation

get_vertex_coordinate(*args, **kwargs)

get_vertex_coordinates(*args, **kwargs)

get_water_volume()

get_wet_elements([indices, minimum_height])

Return indices for elements where h > minimum_allowed_height

get_zone()

get zone for domain Geo_reference

initialise_storage()

Create and initialise self.writer object for storing data.

log_operator_timestepping_statistics()

maximum_quantity(name, *args, **kwargs)

max of values to a named quantity

minimum_quantity(name, *args, **kwargs)

min of values to a named quantity

print_algorithm_parameters()

Print the standard parameters that are curently set (as a dictionary)

print_boundary_statistics([quantities, tags])

print_operator_statistics()

print_operator_timestepping_statistics()

print_statistics(*args, **kwargs)

print_timestepping_statistics(*args, **kwargs)

Print time stepping statistics

print_volumetric_balance_statistics()

protect_against_infinitesimal_and_negative_heights()

Clean up the stage and momentum values to ensure non-negative heights

quantity_statistics([precision])

Return string with statistics about quantities for printing or logging

report_cells_with_small_local_timestep([...])

Convenience function to print the locations of cells with a small local timestep.

report_water_volume_statistics([verbose, ...])

Compute the volume, boundary flux integral, fractional step volume integral, and their difference

saxpy_conserved_quantities(a, b)

set_CFL([cfl])

Set CFL parameter, warn if greater than 2.0

set_beta(beta)

Shorthand to assign one constant value [0,2] to all limiters.

set_betas(beta_w, beta_w_dry, beta_uh, ...)

Assign beta values in the range [0,2] to all limiters.

set_boundary(boundary_map)

Associate boundary objects with tagged boundary segments.

set_centroid_transmissive_bc(flag)

Set behaviour of the transmissive boundary condition, namely calculate the BC using the centroid value of neighbouring cell or the calculated edge value.

set_cfl([cfl])

Set CFL parameter, warn if greater than 2.0

set_checkpointing([checkpoint, ...])

Set up checkpointing.

set_compute_fluxes_method([flag])

Set method for computing fluxes.

set_datadir(name)

set_default_order(n)

Set default (spatial) order to either 1 or 2.

set_distribute_to_vertices_and_edges_method([flag])

Set method for computing fluxes.

set_evolve_max_timestep(max_timestep)

Set default max_timestep for evolving.

set_evolve_min_timestep(min_timestep)

Set default min_timestep for evolving.

set_evolve_starttime(time)

set_extrapolate_velocity([flag])

Extrapolation routine uses momentum by default, can change to velocity extrapolation which seems to work better.

set_fixed_flux_timestep([flux_timestep])

Disable variable timestepping and manually set a fixed flux_timestep

set_flow_algorithm([flag])

Set combination of slope limiting and time stepping

set_fractional_step_operator(operator)

set_georeference(*args, **kwargs)

set_gravity_method()

Gravity method is determined by the compute_fluxes_method This is now not used, as gravity is combine in the compute_fluxes method

set_hemisphere(hemisphere)

set_institution(institution)

set_local_extrapolation_and_flux_updating([...])

Use local flux and extrapolation updating

set_low_froude([low_froude])

For low Froude problems the standard flux calculations can lead to excessive damping.

set_maximum_allowed_speed(maximum_allowed_speed)

Set the maximum particle speed that is allowed in water shallower than minimum_allowed_height.

set_minimum_allowed_height(...)

Set minimum depth that will be recognised in the numerical scheme.

set_minimum_storable_height(...)

Set the minimum depth that will be written to an SWW file.

set_name([name, timestamp])

Assign a name to this simulation.

set_points_file_block_line_size(...)

set_quantities_to_be_monitored(q[, polygon, ...])

Specify which quantities will be monitored for extrema.

set_quantities_to_be_stored(q)

Specify which quantities will be stored in the SWW file.

set_quantity(name, *args, **kwargs)

Set values for named quantity

set_quantity_vertices_dict(quantity_dict)

Set values for named quantities.

set_relative_time([time])

Set internal relative time

set_sloped_mannings_function([flag])

Set mannings friction function to use the sloped wetted area.

set_starttime([timestamp])

Set the starttime for the evolution

set_store([flag])

Set whether data saved to sww file.

set_store_centroids([flag])

Set whether centroid data is saved to sww file.

set_store_vertices_smoothly([flag, reduction])

Decide whether vertex values should be stored smoothly (one value per vertex) or uniquely as computed in the model (False).

set_store_vertices_uniquely([flag, reduction])

Decide whether vertex values should be stored uniquely as computed in the model (True) or whether they should be reduced to one value per vertex using self.reduction (False).

set_tag_region(*args, **kwargs)

Set quantities based on a regional tag.

set_time([time])

Set the model time (seconds).

set_timestepping_method(timestepping_method)

set_timezone([tz])

Set timezone for domain

set_use_edge_limiter([flag])

Extrapolation routine uses vertex values by default, for limiting, can change to edge limiting which seems to work better in some cases.

set_use_kinematic_viscosity([flag])

set_use_optimise_dry_cells([flag])

Try to optimize calculations where region is dry

set_using_discontinuous_elevation([flag])

Set flag to show whether compute flux algorithm is allowing discontinuous elevation.

set_zone(zone)

Set zone for domain.

statistics(*args, **kwargs)

store_timestep()

Store time dependent quantities and time.

sww_merge(*args, **kwargs)

Merge all the sub domain sww files into a global sww file

timestepping_statistics([track_speeds, ...])

Return string with time stepping statistics for printing or logging

update_boundary()

Go through list of boundary objects and update boundary values for all conserved quantities on boundary.

update_boundary_old()

Go through list of boundary objects and update boundary values for all conserved quantities on boundary.

update_boundary_old_2()

Go through list of boundary objects and update boundary values for all conserved quantities on boundary.

update_centroids_of_momentum_from_velocity()

Calculate the centroid value of x and y momentum from height and velocities

update_centroids_of_velocities_and_height()

Calculate the centroid values of velocities and height based on the values of the quantities stage and x and y momentum

update_conserved_quantities()

Update vectors of conserved quantities using previously computed fluxes and specified forcing functions.

update_extrema()

Update extrema if requested by set_quantities_to_be_monitored.

update_ghosts([quantities])

We must send the information from the full cells and receive the information for the ghost cells We have a list with ghosts expecting updates

update_other_quantities()

There may be a need to calculates some of the other quantities based on the new values of conserved quantities

update_special_conditions()

update_timestep(yieldstep, finaltime)

Calculate the next timestep to take

volumetric_balance_statistics()

Create volumetric balance report suitable for printing or logging.

write_boundary_statistics([quantities, tags])

write_time([track_speeds])