def run_for_multiple_aoa(self,alphaSequence=arange(-5,20,3), turbulenceModel='SA',Cp=False,iterMax=5000,densityBased=False): """ Run fluent at sequence of angle of attacks Parameters ---------- alphaSequence : array, deg array of angles of attack turbulenceModel : string fluent turbulence model. Two options are available: 'SA' and 'ke-realizable' Cp : bool This option is not available yet. iterMax : int maximum number of iterations """ result = FluentOutput(len(alphaSequence)) for i,alpha in enumerate(alphaSequence): result1 = self.fluent.run_at_aoa(alpha,self.fc,self._caseFilePath,turbulenceModel,Cp,iterMax,densityBased) result.alpha[i] = result1.alpha result.cl[i] = result1.cl result.cd[i] = result1.cd result.cm[i] = result1.cm result.LD[i] = result1.LD return result
def combine_results(resultXfoil, resultCfd): alphaMax = min([max(resultXfoil.alpha), max(resultCfd.alpha)]) alphaMin = max([min(resultXfoil.alpha), min(resultCfd.alpha)]) alphaNew = np.arange(alphaMin,alphaMax+1.,1.) clAlpha = interp1d(resultCfd.alpha,resultCfd.cl,'cubic') cdAlpha = interp1d(resultXfoil.alpha, resultXfoil.cd,'cubic') cmAlpha = interp1d(resultXfoil.alpha, resultXfoil.cm,'cubic') resultNew = FluentOutput() resultNew.alpha = alphaNew resultNew.cl = clAlpha(alphaNew) resultNew.cd = cdAlpha(alphaNew) resultNew.cm = cmAlpha(alphaNew) f1 = lambda x: -clAlpha(x) f2 = lambda x: -clAlpha(x)/cdAlpha(x) f3 = lambda x: -clAlpha(x)**1.5/cdAlpha(x) a1 = fminbound(f1,alphaMin, alphaMax, full_output=1) a2 = fminbound(f2,alphaMin, alphaMax, full_output=1) a3 = fminbound(f3,alphaMin, alphaMax, full_output=1) resultNew.alphaClmax = a1[0] resultNew.alphaLDmax = a2[0] resultNew.alphaLD32max = a3[0] resultNew.Clmax = -a1[1] resultNew.LDmax = -a2[1] resultNew.LD32max = -a3[1] resultNew.cdAtLDmax = cdAlpha(a2[0]) resultNew.cdAtLD32max = cdAlpha(a3[0]) return resultNew