source: anuga_work/production/sydney_2006/smf_volume_conservation.py @ 4030

Last change on this file since 4030 was 4030, checked in by sexton, 17 years ago

planning charts (software to update Gantt charts available for download from ramp/downloads/Gantt Designer/Gantt?.msi )

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(21)
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])
53savefig('check_fig2')
54
55def set_integral_zero(x,dx):
56    numerator = erf( (x-x0)/sqrt(lam0) )
57    denominator = erf( (x-dx-x0)/sqrt(lam0) )
58    return numerator/denominator
59
60def set_integral_zero_2(x,x0):
61    numerator = erf( (x-x0)/sqrt(lam0) )
62    xg = d/tan(radians(theta)) + T/radians(sin(theta))
63    #print 'xg', xg
64    denominator = erf( (x-xg-2*x0)/sqrt(lam0) )
65    return numerator/denominator
66
67n = 100
68kappad_vec1 = []
69dx_vec1 = []
70step = 0.001
71dx = -step #+ 0.016
72for i in range(n):
73    dx += step
74    kappad1 = float(max(set_integral_zero(x,dx)))
75    dx_vec1.append(dx)
76    kappad_vec1.append(kappad1)
77    #print 'dx: %0.5f kappad: %f' % (dx, kappad1)
78
79figure(22)
80plot(dx_vec1,kappad_vec,'.-')
81title('Volume conservation')
82xlabel('delta x')
83ylabel('kappa_d')
84savefig('Volume_conservation')
85#axis([0,0.1,0,80])
86
87n = 60
88kappad_vec2 = []
89x0_vec2 = []
90step = 0.1
91x0 = -step
92for i in range(n):
93    x0 += step
94    kappad2 = float(max(set_integral_zero_2(x,x0)))
95    x0_vec2.append(x0)
96    kappad_vec2.append(kappad2)
97    print 'dx: %0.5f kappad: %f' % (x0, kappad2)
98
99
100figure(23)
101plot(x0_vec2,kappad_vec2,'.-')
102title('Volume conservation - using xg')
103xlabel('x0')
104ylabel('kappa_d')
105savefig('Volume_conservation_xg')
106
107
Note: See TracBrowser for help on using the repository browser.