def cfd_table(): af = MyTools.airfoil.airfoil.Airfoil() af.read_txt('Clark-Y.txt') af.display() #Mach = np.arange(0.2, 0.9, 0.05) Mach = np.array([0.90]) aseq = np.arange(-20., 21., 2.0) pth = 'ClarkY-C81.txt' fc = FlightConditions(0.2,0.0) scale = 1.0 yplus = 1.0 # fid = open(pth,'wt') # fid.write('Mach\talpha\tCL\tCD\tCM\n') # fid.close() # idx = 14 for M in Mach: fc.set_speed(M) idx += 1 for a in aseq: fid = open(pth,'at') cl,cd,cm,gs = cfd.run_analysis(af,fc,a,yplus,scale, idx) fid.write('%.4f\t%.4f\t%.8f\t%.8f\t%.8f\n'%(M,a,cl,cd,cm)) fid.close()
def __call__(self,x): self.idx += 1 x = self.norm.denormalize(x) Mach = x[0] alpha = x[1] self.fc.set_speed(Mach) cl,cd,cm,gs = cfd.run_analysis(self.af,self.fc,alpha,self.yplus,self.scale, self.idx) self.save(Mach,alpha,cl,cd,cm) return cl, cd, cm
def run_cfd(self,x,Mach,alpha,lowFidelity=True): x = self._get_x(x) x = self.xNormalization.denormalize(x) x = x[2:] self.af = MyTools.airfoil.airfoil.cst_x(x,101) self.af.set_trailing_edge(self.zTE) self.fc.set_speed(Mach) if lowFidelity: self.runCountLow += 1 scale = self.gridScaleLow else: self.runCountHigh += 1 scale = self.gridScaleHigh self.runCountTotal += 1 tc = self.af.thickness cl,cd,cm,gs = cfd.run_analysis(self.af,self.fc,alpha,self.yplus,scale, self.runCountTotal) self.write_data_cfd(Mach,alpha,x,cl,cd,cm,tc,lowFidelity) return cl, cd, cm
def main(): Mach = 0.85 alpha = 0.0 variance = 0.025 MachLow = Mach*(1.0-variance) MachUp = Mach*(1.0+variance) alphaLow = alpha-0.25 alphaUp = alpha+0.25 inFileDOE = 'LHS9_100.txt' doe = mt.read_tabulated_data_without_header(inFileDOE) lb = np.array([MachLow, alphaLow, 0.04343078, 0.0900427, 0.0570076, 0.08289899, -0.06762751, -0.13041535, -0.02843321]) ub = np.array([MachUp, alphaUp, 0.08343078, 0.1900427, 0.1570076, 0.18289899, 0.03237249, -0.03041535, 0.07156679]) zTE = 0.005 alt = 10000 yplus = 1.0 gridScaleL = 1.0 gridScaleH = 4.0 outputFile = inFileDOE[:-4] + '_CFD.txt' norm = mt.Normalization(lb,ub) xDOE = norm.denormalize(doe) case = 0 fid = open(outputFile, 'wt') fid.write('Mach\talpha\t') for i in range(len(lb)-2): fid.write('A%d\t'%(i+1)) #fid.write('clHigh\tcdHigh\tcmHigh\tclLow\tcdLow\tcmLow\tLDhigh\tLDlow\tthickness\n') fid.write('cl\tcd\tcm\ttc\n') fid.close() for i, xx in enumerate(xDOE): M = xx[0] a = xx[1] fc = cfd.flight_conditions.FlightConditions(M, alt) af = MyTools.airfoil.airfoil.cst_x(xx[2:], 101) af.set_trailing_edge(zTE) tc = af.thickness try: # case += 1 # clH,cdH,cmH, gs = cfd.run_analysis(af, fc, a, yplus, gridScaleH, case) case += 1 clL,cdL,cmL, gs = cfd.run_analysis(af, fc, a, yplus, gridScaleL, case) fid = open(outputFile, 'at') fid.write('%.6f\t%.6f\t'%(M,a)) for _x in xx[2:]: fid.write('%.8f\t'%_x) #fid.write('%.8f\t%.8f\t%.8f\t%.8f\t%.8f\t%.8f\t%.8f\t%.8f\t%.6f\n'%(clH,cdH,cmH,clL,cdL,cmL,clH/cdH,clL/cdL,tc)) fid.write('%.8f\t%.8f\t%.8f\t%.8f\n'%(clL,cdL,cmL,tc)) fid.close() except IOError: case += 1 fid = open(outputFile, 'at') fid.write('%.6f\t%.6f\t'%(M,a)) for _x in xx[2:]: fid.write('%.8f\t'%_x) fid.write('calculation failed\n') fid.close()