Ignore:
Timestamp:
Aug 27, 2004, 1:35:01 PM (20 years ago)
Author:
ole
Message:

Fixed flux_function to match c-version
More testing

File:
1 edited

Legend:

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

    r229 r232  
    9898    """
    9999
    100     from config import g
     100    from config import g, epsilon
    101101    from math import sqrt
    102102    from Numeric import array
     
    114114    uh_left = q_left[1]
    115115
    116     try:
     116    if h_left < epsilon:
     117        u_left = 0.0  #Could have been negative
     118        h_left = 0.0
     119    else:   
    117120        u_left  = uh_left/h_left
    118     except:
    119         u_left = 0.0
    120         h_left = 0.0
    121121
    122122
     
    126126
    127127
    128     try:
     128    if h_right < epsilon:
     129        u_right = 0.0  #Could have been negative
     130        h_right = 0.0
     131    else:   
    129132        u_right  = uh_right/h_right
    130     except:
    131         u_right = 0.0
    132         h_right = 0.0
    133 
    134        
     133
    135134    vh_left  = q_left[2]
    136135    vh_right = q_right[2]       
     
    146145
    147146    #Flux computation
    148     flux_left  = array([uh_left,
    149                         u_left**2*h_left + 0.5*g*h_left**2,
    150                         vh_left*u_left])
    151     flux_right = array([uh_right,
    152                         u_right**2*h_right + 0.5*g*h_right**2,
    153                         vh_right*u_right])   
     147    flux_left  = array([u_left*h_left,
     148                        u_left*uh_left + 0.5*g*h_left**2,
     149                        u_left*vh_left])
     150    flux_right = array([u_right*h_right,
     151                        u_right*uh_right + 0.5*g*h_right**2,
     152                        u_right*vh_right])   
    154153
    155154    denom = s_max-s_min
    156155    if denom == 0.0:
    157         flux = array([0.0, 0.0, 0.0])
     156        edgeflux = array([0.0, 0.0, 0.0])
    158157        max_speed = 0.0
    159158    else:   
    160         flux = (s_max*flux_left - s_min*flux_right)/denom
    161         flux += s_max*s_min*(q_right-q_left)/denom
    162 
    163         flux = rotate(flux, normal, direction=-1)
     159        edgeflux = (s_max*flux_left - s_min*flux_right)/denom
     160        edgeflux += s_max*s_min*(q_right-q_left)/denom
     161
     162        edgeflux = rotate(edgeflux, normal, direction=-1)
    164163        max_speed = max(abs(s_max), abs(s_min))
    165164
    166     return flux, max_speed       
     165    return edgeflux, max_speed       
    167166
    168167
Note: See TracChangeset for help on using the changeset viewer.