Changeset 1593


Ignore:
Timestamp:
Jul 11, 2005, 12:15:13 PM (19 years ago)
Author:
chris
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • inundation/ga/storm_surge/pyvolution/shallow_water.py

    r1591 r1593  
    5656
    5757from domain import *
    58 from region import *#
    59 
     58from region import *
    6059Generic_domain = Domain #Rename
    6160
     
    8180
    8281        #Realtime visualisation
    83         self.visualiser = None
    84         self.visualise  = False
     82        self.visualise = False
    8583        self.visualise_color_stage = False
    8684        self.visualise_stage_range = 1.0
     
    108106        #self.eta = self.quantities['friction']
    109107
    110     def initialise_visualiser(self,scale_z=1.0,rect=None):
    111         #Realtime visualisation
    112         if self.visualiser is None:
    113             from realtime_visualisation_new import Visualiser
    114             self.visualiser = Visualiser(self,scale_z,rect)
    115         self.visualise = True
    116 
    117108    def check_integrity(self):
    118109        Generic_domain.check_integrity(self)
     
    127118        assert self.conserved_quantities[2] == 'ymomentum', msg
    128119
    129     def extrapolate_second_order_sw(self):
    130         #Call correct module function
    131         #(either from this module or C-extension)
    132         extrapolate_second_order_sw(self)
    133120
    134121    def compute_fluxes(self):
     
    204191        if self.visualise is True and self.time == 0.0:
    205192            import realtime_visualisation_new as visualise
    206             #import realtime_visualisation as visualise
    207193            visualise.create_surface(self)
    208194
     
    257243        self.writer.store_timestep(name)
    258244
    259 ####################MH 090605 new extrapolation function belonging to domain class
    260 def extrapolate_second_order_sw(domain):
    261     """extrapolate conserved quntities to the vertices of the triangles
    262     Python version to be written after the C version
    263     """
    264     msg = 'Method extrapolate_second_order_sw should be implemented in C'
    265     raise msg
    266 ####################MH 090605 ###########################################
    267245
    268246#Rotation of momentum vector
     
    438416
    439417    flux = zeros(3, Float) #Work array for summing up fluxes
    440 
    441418
    442419    #Loop
     
    485462    domain.timestep = timestep
    486463
    487 #MH090605 The following method belongs to the shallow_water domain class
    488 #see comments in the corresponding method in shallow_water_ext.c
    489 def extrapolate_second_order_sw_c(domain):
    490     """Wrapper calling C version of extrapolate_second_order_sw
    491     """
    492     import sys
    493     from Numeric import zeros, Float
    494 
    495     N = domain.number_of_elements
    496 
    497     #Shortcuts
    498     Stage = domain.quantities['stage']
    499     Xmom = domain.quantities['xmomentum']
    500     Ymom = domain.quantities['ymomentum']
    501     from shallow_water_ext import extrapolate_second_order_sw
    502     extrapolate_second_order_sw(domain,domain.surrogate_neighbours,
    503                                 domain.number_of_boundaries,
    504                                 domain.centroid_coordinates,
    505                                 Stage.centroid_values,
    506                                 Xmom.centroid_values,
    507                                 Ymom.centroid_values,
    508                                 domain.vertex_coordinates,
    509                                 Stage.vertex_values,
    510                                 Xmom.vertex_values,
    511                                 Ymom.vertex_values)
    512464
    513465def compute_fluxes_c(domain):
     
    544496                                     Stage.explicit_update,
    545497                                     Xmom.explicit_update,
    546                                      Ymom.explicit_update,
    547                                      domain.already_computed_flux)
     498                                     Ymom.explicit_update)
    548499
    549500
     
    574525    """
    575526
    576     from config import optimised_gradient_limiter
    577 
    578527    #Remove very thin layers of water
    579528    protect_against_infinitesimal_and_negative_heights(domain)
    580529
    581530    #Extrapolate all conserved quantities
    582     if optimised_gradient_limiter:
    583         #MH090605 if second order,
    584         #perform the extrapolation and limiting on
    585         #all of the conserved quantitie
    586        
    587         if (domain.order == 1):
    588             for name in domain.conserved_quantities:
    589                 Q = domain.quantities[name]
    590                 Q.extrapolate_first_order()
     531    for name in domain.conserved_quantities:
     532        Q = domain.quantities[name]
     533        if domain.order == 1:
     534            Q.extrapolate_first_order()
    591535        elif domain.order == 2:
    592             domain.extrapolate_second_order_sw()
     536            Q.extrapolate_second_order()
     537            Q.limit()
    593538        else:
    594539            raise 'Unknown order'
    595     else:   
    596         #old code:
    597         for name in domain.conserved_quantities:
    598             Q = domain.quantities[name]
    599             if domain.order == 1:
    600                 Q.extrapolate_first_order()
    601             elif domain.order == 2:
    602                 Q.extrapolate_second_order()
    603                 Q.limit()
    604             else:
    605                 raise 'Unknown order'
    606            
    607540
    608541    #Take bed elevation into account when water heights are small
     
    783716
    784717    #Call C-extension
    785     from shallow_water_ext import h_limiter_sw as h_limiter
     718    from shallow_water_ext import h_limiter
    786719    hvbar = h_limiter(domain, hc, hv)
    787720
     
    954887            raise msg
    955888
    956         #Handy shorthands
    957         self.stage  = domain.quantities['stage'].edge_values
    958         self.xmom    = domain.quantities['xmomentum'].edge_values
    959         self.ymom    = domain.quantities['ymomentum'].edge_values
    960         self.normals = domain.normals
    961 
    962         from Numeric import zeros, Float
    963         self.conserved_quantities = zeros(3, Float)
     889        #Handy shorthands
     890        self.stage = domain.quantities['stage'].edge_values
     891        self.xmom = domain.quantities['xmomentum'].edge_values
     892        self.ymom = domain.quantities['ymomentum'].edge_values
     893        self.normals = domain.normals
     894
     895        from Numeric import zeros, Float
     896        self.conserved_quantities = zeros(3, Float)
    964897
    965898    def __repr__(self):
     
    972905        """
    973906
    974         q = self.conserved_quantities
    975         q[0] = self.stage[vol_id, edge_id]
    976         q[1] = self.xmom[vol_id, edge_id]
    977         q[2] = self.ymom[vol_id, edge_id]
    978 
    979         normal = self.normals[vol_id, 2*edge_id:2*edge_id+2]
     907        q = self.conserved_quantities
     908        q[0] = self.stage[vol_id, edge_id]
     909        q[1] = self.xmom[vol_id, edge_id]
     910        q[2] = self.ymom[vol_id, edge_id]
     911
     912        normal = self.normals[vol_id, 2*edge_id:2*edge_id+2]
    980913
    981914
     
    16921625    from shallow_water_ext import rotate, assign_windfield_values
    16931626    compute_fluxes = compute_fluxes_c
    1694     extrapolate_second_order_sw=extrapolate_second_order_sw_c
    16951627    gravity = gravity_c
    16961628    manning_friction = manning_friction_c
Note: See TracChangeset for help on using the changeset viewer.