def initial(self,V0,y0,ydot0,R0,q0,p0,r0,a0,b0,m0,rho0): self.V0=V0 self.y0=y0 self.ydot0=ydot0 self.R0=R0 self.p0=p0 self.q0=q0 self.r0=r0 self.a0=a0 self.b0=b0 self.m0=m0 self.a=util.scale_a() self.M0=self.V0/self.a self.rho0=rho0 self.q=0.5*self.rho0*self.V0**2 # dynamic pressure
def update(self): self.a=util.scale_a() self.M0=self.V0/self.a if self.diag: print "V: ",self.V0 if self.diag: print "Mach: ", self.M0 self.shell.update(self.M0) CT,CN,CM=shell.analyse(self.a0,mode="rad") self.CL=CN*np.cos(self.a0)-CT*np.sin(self.a0) self.CD=CT*np.cos(self.a0)+CN*np.sin(self.a0) if self.para and self.T_sim>=self.para_t: self.CD+=self.para_CD if self.diag: if self.para and self.T_sim>=self.para_t: print "Para Deployed: True" print "CL, CD: ",self.CL,self.CD self.q=0.5*util.scale_height(self.R0-Re)[2]*self.V0**2 # dynamic pressure if self.diag: print "Dyn P: ",self.q if self.para and self.T_sim>=self.para_t: self.D0=self.q * self.S * (self.CD-self.para_CD) + self.q * self.para_S * self.para_CD else: self.D0=self.q * self.S * self.CD # aerodynamic force self.L0=self.q * self.S * self.CL # aerodynamic force if self.diag: print "Lift, Drag : ",self.L0,self.D0 self.g0=-self.grav(self.R0-Re,0,0) self.ydot0 = 0# -(self.V0/self.R0 - self.g0/self.V0)*np.cos(self.y0) + self.L0/(self.m*self.V0) #print self.ydot0 self.q_data.append(self.q) self.rho_data.append(util.scale_height(self.R0-Re)[2]) self.ydot_data.append(self.ydot0)
def norm_moi(Ixx,Iyy,Izz,Ixz,c,b,mass): KX2 = Ixx/(b**2*mass) KY2 = Iyy/(c**2*mass) KZ2 = Izz/(b**2*mass) JXZ = Ixz/(b**2*mass) return KX2,KY2,KZ2,JXZ if __name__=="__main__": stabMargin=0.1 configuration="t" ratio=0 velocity = 100 mach = velocity/util.scale_a() canard,main,tail,vert=dummyWings() xac = main.root/4. xnp = xac + stabMargin*main.root r_fus=0.6 t_fus=4./1000 width_fus=r_fus*2 l_fus = 5. mtv = 0.1 # perpendicular distance between zero lift line and tail rati=np.arange(0,3,0.1) mass_r=[]