def dD_du(u, X, Y, gamma, Nz, Nx): num_term = 10 #in future will be global or define in a settings file hdt = HotDiTen(X, Y, gamma, Nz, Nx, num_term) dielTen = [ hdt.Kxx(), hdt.Kyy(), hdt.Kzz(), hdt.Cxy(), hdt.Cxz(), hdt.Cyz() ] ddt = DerivOfHotDiTen(X, Y, gamma, Nz, Nx, num_term) derivOfDielTen = [ ddt.dKxx_du(u), ddt.dKyy_du(u), ddt.dKzz_du(u), ddt.dCxy_du(u), ddt.dCxz_du(u), ddt.dCyz_du(u) ] val = dA_du(u, Nz, dielTen, derivOfDielTen) + dB_du( u, Nz, dielTen, derivOfDielTen) / Nx**2 - 2 / Nx**3 * B(Nz, dielTen) * H( u, "Nx") + dC_du(u, Nz, dielTen, derivOfDielTen) / Nx**4 - 4 * C( Nz, dielTen) / Nx**5 * H(u, "Nx") #print val,derivOfDielTen return val
def d_dNz(self): hotDiTen = ["Kxx", "Cxy", "Cxz", "Kyy", "Cyz", "Kzz"] dNz = 1e-3 val = np.array([]) for el in hotDiTen: val1 = HotDiTen.__dict__[el](HotDiTen(self.X, self.Yabs, self.gamma, self.Nz, self.Nx, self.num_term)) val2 = HotDiTen.__dict__[el](HotDiTen(self.X, self.Yabs, self.gamma, self.Nz + dNz, self.Nx, self.num_term)) val = np.concatenate((val, val2 - val1)) return val / dNz
def get_ABC(X, Y, gamma, Nx, Nz): from hotDiTen import HotDiTen from dispRel import A, B, C hdt = HotDiTen(X, Y, gamma, Nx, Nz, 10) dielTen = [ hdt.Kxx(), hdt.Kyy(), hdt.Kzz(), hdt.Cxy(), hdt.Cxz(), hdt.Cyz() ] return A(Nz, dielTen), B(Nz, dielTen), C(Nz, dielTen)
def disp_rel(X, Y, gamma, Nz, Nx): num_term = 20 #in future will be global or define in a settings file hdt = HotDiTen(X, Y, gamma, Nz, Nx, num_term) dielTen = [ hdt.Kxx(), hdt.Kyy(), hdt.Kzz(), hdt.Cxy(), hdt.Cxz(), hdt.Cyz() ] return A(Nz, dielTen) + B(Nz, dielTen) / Nx**2 + C(Nz, dielTen) / Nx**4
def dD_du(u,X,Y,gamma,Nz,Nx): num_term = 10 #in future will be global or define in a settings file hdt=HotDiTen(X,Y,gamma,Nz,Nx,num_term) dielTen = [hdt.Kxx(),hdt.Kyy(),hdt.Kzz(),hdt.Cxy(),hdt.Cxz(),hdt.Cyz()] ddt = DerivOfHotDiTen(X,Y,gamma,Nz,Nx,num_term) derivOfDielTen = [ddt.dKxx_du(u), ddt.dKyy_du(u), ddt.dKzz_du(u), ddt.dCxy_du(u), ddt.dCxz_du(u), ddt.dCyz_du(u)] #print( dielTen) #print dA_du(u,Nz,dielTen,derivOfDielTen),dB_du(u,Nz,dielTen,derivOfDielTen),dC_du(u,Nz,dielTen,derivOfDielTen) return Nx**4*dA_du(u,Nz,dielTen,derivOfDielTen) + 4*Nx**3*A(Nz,dielTen)*H(u,"Nx") + Nx**2*dB_du(u,Nz,dielTen,derivOfDielTen) + 2*Nx*B(Nz,dielTen)*H(u,"Nx") + dC_du(u,Nz,dielTen,derivOfDielTen)
def check_hdt(soln): #ind=np.where(np.isnan(soln[:,3]))[0][0] #print ind #ind = ind - 1 ind = soln[:-1,3].size-1 r = [soln[ind-1,0],soln[ind-1,1]] Nz = soln[ind-1,2] Nx = soln[ind-1,3] globalN = np.array([Nz,Nx]) locN = Local_N(p.Yvec(r), p.gradY(r),globalN) hdt = HotDiTen(p.X(r),p.Yabs(r),p.gamma(r),locN.Nz(),locN.Nx(),20) print "lam",hdt.lam() print "zeta",hdt.zeta(10) print "Z", hdt.Z(10) print "Zp", hdt.Zp(10) print "Zpp", hdt.Zpp(10) print "Zpp_naive", hdt.Zpp_naive(10) print "X", p.X(r) print "dX_dr", p.dX_dr(r) print "Yabs", p.Yabs(r) print "gradY", p.gradY(r) print "dY_dr", p.dY_dr(r) print "lNx",locN.Nx() print "lNz",locN.Nz() print "dNz_dN",locN.dNz_dN() print "dNx_dN",locN.dNx_dN() print "dNx_dr",locN.dNx_dr() print "dNz_dr",locN.dNz_dr() print "Kxx",hdt.Kxx() print "Kyy",hdt.Kyy() print "Kzz",hdt.Kzz() print "Cxy",hdt.Cxy() print "Cyz",hdt.Cyz() X = p.X(r) Y = p.Yabs(r) gamma = p.gamma(r) X=p.X(r) Y=p.Yabs(r) gamma = p.gamma(1) localN = Local_N(p.Yvec(r),p.gradY(r),globalN) localNz=localN.Nz() localNx=localN.Nx() dNz_dN=localN.dNz_dN() dNx_dN=localN.dNx_dN() dNz_dr=localN.dNz_dr() dNx_dr=localN.dNx_dr() dX_dr = p.dX_dr(r) dY_dr = p.dY_dr(r) dgamma_dr = p.dgamma_dr(1) print "vg",-dD_dN( X,Y,gamma,localNz,localNx,dNz_dN,dNx_dN ) / dD_dw( X,Y,gamma,localNz,localNx ) print "dN_dt",dD_dr(X,Y,gamma,localNz,localNx,dNz_dr,dNx_dr,dX_dr,dY_dr,dgamma_dr) / dD_dw( X,Y,gamma,localNz,localNx )