def main(): L = 10 N = 100 M = 10 a = 100 D = .1 Q = -0.04890698 Mr = 0.007 S0 = 0.042731691 S0 = 0.116914981 S0s = [0.042731691,0.174868713,0.116914981,0.065484615,-0.178530533,-0.017923349,0.042784691,-0.246330809] t0 = 0 p0 = PyPipe_ps(N,D,L,M,a) y0 = p0.AofH(10,False) print F(y0,0,Q,L,N,D,M,a,S0,Mr) ts = np.linspace(0,L,100) '''for i in range(2): S0 = i*.05+.01 for k in range(4): Mr = 0.002*k+.01 Qt = (Q,L,N,D,M,a,S0,Mr) y1 = odeint(F,y0,ts,args =Qt) H = [p0.HofA(y,False) for y in y1] plt.plot(ts,H,label ="Mr = %.3f, S0=%.2f"%(Mr,S0)) ''' dys =[] for k in range(len(S0s)): S0 = S0s[k] Qt = (Q,L,N,D,M,a,S0,Mr) y1 = odeint(F,y0,ts,args =Qt) dys.append((y1[-1]-y1[0])/L) for k in range(len(S0s)): print "%f %e"%(S0s[k],dys[k])
def F(y,t,Q,L,N,D,M,a,S0,Mr): #(Q,L,N,D,M,a,S0,Mr) = args print "y = %f" %y p0 = PyPipe_ps(N,D,L,M,a) p0.Mr = Mr p0.S0 = S0 S = p0.getSourceTerms(y,Q) u = Q/y c =p0.Cgrav(y,True) return S/(c**2-u**2)
n1 = PyNetwork(fi,fc,1) dt = n1.T/float(n1.M) Q00 = 0.0087 for i in range(0,Np): d = n1.Ds[i] A0 = (d*d/4.)*np.ones(n1.Ns[i]) Q0 = 0*np.ones(n1.Ns[i]) n1.setIC(i,A0,Q0) Qb = Q00*np.ones(M+1) n1.setbVal(0,Qb) Ttot= 0 Vs = [n1.getTotalVolume()] for m in range(Nt): try: n1.runForwardProblem(dt) except: print "whoops. dt is probably too small. quitting at time T=%f"%((m-1.)*T) break for j in range(Np): N = n1.Ns[j] p0 = PyPipe_ps(N,n1.Ds[j], n1.Ls[j],M,a) qh = n1.qhist(j) Htemp = [p0.pbar(qh[idx_t(0,Nstar,n,n1.Ns[j])],False) for n in range(1,M+1,Mi)] Hs[j,m*(M/Mi):(M/Mi)*(m+1)] = Htemp Vs.append(n1.getTotalVolume()) Ttot +=T print Ttot print Vs n1.reset()