source: production/sydney_2006/smf_volume_conservation.py @ 3190

Last change on this file since 3190 was 3190, checked in by sexton, 18 years ago

MOST and ANUGA comparisons and updates

File size: 2.3 KB
Line 
1"""
2Determining volume conservation for SMF slump formulation.
3Jane Sexton, GA 2006
4"""
5
6from math import sqrt, atan, degrees, exp, cosh, pi, radians
7from Numeric import ones
8from pylab import *
9#import scipy
10#from scipy.special import erf
11
12ion()
13hold(False)
14
15
16x = arange(-20,25,0.1)
17y = arange(-10,10,0.1)
18X,Y = meshgrid(x,y)
19
20# Grilli and Watts 2005 example
21dx = 2.0
22x0 = 10.0
23y0 = 0.0
24w = 2.0
25kappa = 3
26g = 9.8
27d = 0.259
28T = 0.052
29theta = 15.0 #acos(radians(-d/T)) 
30lam0 = 5.0 #sqrt(g*d)
31   
32def func(x,y,kappad):
33   
34    numerator = exp(-((x-x0)/lam0)**2) - kappad*exp(-((x-dx-x0)/lam0)**2)
35    denominator = cosh(kappa*(y-y0)/(w+lam0))**2
36    return -numerator/denominator
37
38eta1 = func(X,0,0.83)
39eta2 = func(X,0,1)
40
41#import sys; sys.exit()
42#eta = func(X,Y,kappad)
43#im1 = imshow(eta, cmap=cm.jet, interpolation='nearest')
44#plot(X/lam0,eta)
45#axis([0, 5, -2, 2])
46
47figure(1)
48plot(X/lam0,eta1,'b.-',X/lam0,eta2,'g.-')
49title('Surface elevation of SMF: kappa = 0.83 and 1')
50xlabel('x/lambda_0')
51ylabel('eta(x,y=0)')
52axis([0, 5, -2, 2])
53
54def set_integral_zero(x,dx):
55    numerator = erf( (x-x0)/sqrt(lam0) )
56    denominator = erf( (x-dx-x0)/sqrt(lam0) )
57    return numerator/denominator
58
59def set_integral_zero_2(x,x0):
60    numerator = erf( (x-x0)/sqrt(lam0) )
61    xg = d/tan(radians(theta)) + T/radians(sin(theta))
62    #print 'xg', xg
63    denominator = erf( (x-xg-2*x0)/sqrt(lam0) )
64    return numerator/denominator
65
66n = 100
67kappad_vec1 = []
68dx_vec1 = []
69step = 0.001
70dx = -step #+ 0.016
71for i in range(n):
72    dx += step
73    kappad1 = float(max(set_integral_zero(x,dx)))
74    dx_vec1.append(dx)
75    kappad_vec1.append(kappad1)
76    #print 'dx: %0.5f kappad: %f' % (dx, kappad1)
77
78figure(2)
79plot(dx_vec1,kappad_vec,'.-')
80title('Volume conservation')
81xlabel('delta x')
82ylabel('kappa_d')
83savefig('Volume_conservation')
84#axis([0,0.1,0,80])
85
86n = 60
87kappad_vec2 = []
88x0_vec2 = []
89step = 0.1
90x0 = -step
91for i in range(n):
92    x0 += step
93    kappad2 = float(max(set_integral_zero_2(x,x0)))
94    x0_vec2.append(x0)
95    kappad_vec2.append(kappad2)
96    print 'dx: %0.5f kappad: %f' % (x0, kappad2)
97
98
99figure(3)
100plot(x0_vec2,kappad_vec2,'.-')
101title('Volume conservation - using xg')
102xlabel('x0')
103ylabel('kappa_d')
104savefig('Volume_conservation_xg')
105
106
Note: See TracBrowser for help on using the repository browser.