source: anuga_core/documentation/user_manual/demos/channel2.py @ 6889

Last change on this file since 6889 was 6889, checked in by ole, 15 years ago

Made sure demos in the manual run and did some cleanup

File size: 2.5 KB
RevLine 
[3740]1"""Simple water flow example using ANUGA
2
[3753]3Water flowing down a channel with changing boundary conditions
[3740]4"""
5
6#------------------------------------------------------------------------------
7# Import necessary modules
8#------------------------------------------------------------------------------
9from anuga.abstract_2d_finite_volumes.mesh_factory import rectangular_cross
10from anuga.shallow_water import Domain
11from anuga.shallow_water import Reflective_boundary
12from anuga.shallow_water import Dirichlet_boundary
13from anuga.shallow_water import Time_boundary
14
15
16#------------------------------------------------------------------------------
17# Setup computational domain
18#------------------------------------------------------------------------------
19length = 10.
20width = 5.
21dx = dy = 1           # Resolution: Length of subdivisions on both axes
22
[3753]23points, vertices, boundary = rectangular_cross(int(length/dx), int(width/dy),
24                                               len1=length, len2=width)
[3740]25domain = Domain(points, vertices, boundary)   
[3863]26domain.set_name('channel2')                 # Output name
[3740]27
28
29#------------------------------------------------------------------------------
30# Setup initial conditions
31#------------------------------------------------------------------------------
32def topography(x,y):
33    return -x/10                             # linear bed slope
34
[3753]35domain.set_quantity('elevation', topography) # Use function for elevation
36domain.set_quantity('friction', 0.01)        # Constant friction
37domain.set_quantity('stage',
38                    expression='elevation')  # Dry initial condition
[3740]39
40
41#------------------------------------------------------------------------------
42# Setup boundary conditions
43#------------------------------------------------------------------------------
[3753]44Bi = Dirichlet_boundary([0.4, 0, 0])         # Inflow
45Br = Reflective_boundary(domain)             # Solid reflective wall
46Bo = Dirichlet_boundary([-5, 0, 0])          # Outflow
[3740]47
48domain.set_boundary({'left': Bi, 'right': Br, 'top': Br, 'bottom': Br})
49
50
51#------------------------------------------------------------------------------
52# Evolve system through time
53#------------------------------------------------------------------------------
54for t in domain.evolve(yieldstep = 0.2, finaltime = 40.0):
[6889]55    print domain.timestepping_statistics()
[3740]56
[3753]57    if domain.get_quantity('stage').\
58           get_values(interpolation_points=[[10, 2.5]]) > 0:       
59        print 'Stage > 0: Changing to outflow boundary'
[3829]60        domain.set_boundary({'right': Bo})
[3740]61
62
63
64
Note: See TracBrowser for help on using the repository browser.