Changeset 8484


Ignore:
Timestamp:
Jul 30, 2012, 9:57:15 PM (13 years ago)
Author:
steve
Message:

slight improvement to erosion operator

Location:
trunk/anuga_core/source/anuga/operators
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/anuga_core/source/anuga/operators/erosion_operators.py

    r8483 r8484  
    99
    1010
    11 from anuga import Domain
    12 from anuga import Quantity
     11
    1312import numpy as num
    14 import anuga.utilities.log as log
    15 
    1613from anuga.geometry.polygon import inside_polygon
    17 
    1814from anuga.operators.base_operator import Operator
    19 
    2015from anuga import indent
    21 
    2216
    2317
     
    2822    indices: None == all triangles, Empty list [] no triangles
    2923
    30     rate can be a function of time.
     24    threshold: Impose erosion if || momentum || > threshold
     25    base: Allow erosion down to base level
    3126
    3227    """
     
    3530                 domain,
    3631                 threshold= 0.0,
     32                 base=0.0,
    3733                 indices=None,
    3834                 description = None,
     
    4844        #------------------------------------------
    4945        self.threshold = threshold
     46        self.base = base
    5047        self.indices = indices
    5148
    52 
    53 
     49        #------------------------------------------
     50        # Extra aliases for changing elevation at
     51        # vertices and edges
     52        #------------------------------------------
    5453        self.elev_v  = self.domain.quantities['elevation'].vertex_values
    5554        self.elev_e = self.domain.quantities['elevation'].edge_values
    56         self.stage_v = self.domain.quantities['stage'].vertex_values
    5755
    5856        #------------------------------------------
     
    9694            m = num.vstack((m,m,m)).T
    9795            m = num.where(m>self.threshold, m, 0.0)
    98             self.elev_v[ind] = num.maximum(self.elev_v[ind] - m*dt, 0.0)
     96            self.elev_v[ind] = num.maximum(self.elev_v[ind] - m*dt, self.base)
    9997             #num.maximum(self.elev_v[ind] - momentum*dt, Z)
    10098
     
    402400    def __init__(self, domain,
    403401                 threshold=0.0,
     402                 base=0.0,
    404403                 center=None,
    405404                 radius=None,
     
    445444                                  domain,
    446445                                  threshold,
     446                                  base,
    447447                                  indices=indices,
    448448                                  verbose=verbose)
     
    463463    def __init__(self, domain,
    464464                 threshold=0.0,
     465                 base=0.0,
    465466                 polygon=None,
    466467                 verbose=False):
     
    482483                                  domain,
    483484                                  threshold=threshold,
     485                                  base=base,
    484486                                  indices=indices,
    485487                                  verbose=verbose)
  • trunk/anuga_core/source/anuga/operators/run_polygon_erosion.py

    r8483 r8484  
    7676#------------------------------------------------------------------------------
    7777
    78 polygon1 = [ [12., 2.0], [13., 2.0], [13., 3.0], [12., 3.0] ]
    79 op1 = Polygonal_erosion_operator(domain, threshold=0.0, polygon=polygon1)
     78polygon1 = [ [12., 0.0], [13., 0.0], [13., 5.0], [12., 5.0] ]
     79op1 = Polygonal_erosion_operator(domain, threshold=0.0, base=-0.1, polygon=polygon1)
    8080
    8181
     
    8383# Evolve system through time
    8484#------------------------------------------------------------------------------
    85 
    86 for t in domain.evolve(yieldstep=0.2, finaltime=30.0):
     85for t in domain.evolve(yieldstep=0.2, finaltime=40.0):
    8786    domain.print_timestepping_statistics()
    8887    domain.print_operator_timestepping_statistics()
    89 
    90 #    elev_v = domain.get_quantity('elevation').vertex_values
    91 #    stage_v = domain.get_quantity('stage').vertex_values
    92 #    elev_c = domain.get_quantity('elevation').centroid_values
    93 #    stage_c = domain.get_quantity('stage').centroid_values
    94 #    ind = op1.indices
    95 #    from pprint import pprint
    96 #    pprint(ind)
    97 #    print elev_v[ind]
    98 #    print stage_v[ind]
    99 #    print elev_c[ind]
    100 #    print stage_c[ind]
    10188
    10289
     
    10794
    10895
     96
     97
Note: See TracChangeset for help on using the changeset viewer.