def calculateSigmaThroughInterpolation(caseList, Re): ''' Creates, through interpolation new result for a given Re accepts caseList for a given alfa ''' S = [0.01, 0.025, 0.04, 0.055, 0.07, 0.085, 0.1, 0.115, 0.13, 0.145, 0.16, 0.175, 0.19, 0.205, 0.22, 0.235, 0.25] caseList.sort(key=lambda l: l.alfa) out=[] for key, group in groupby(caseList, lambda x: x.alfa): alist = list(group) case=Case() case.alfa = alist[0].alfa case.Re = Re stab=[] sigma=[] for s in S: # try: sig=calculateSigmaForS(alist, s, Re) sigma.append(sig) stab.append(s) # except: # print "Failed for:" # print "Alfa=" + str(case.alfa) + " S=" + str(s) # continue case.S=stab case.sigma=sigma out.append(case) return out
def calcMaxSigma(caseList): ''' For a given caseList (single alfa) returns a colection of Re, S, Sig ''' caseList.sort(key=lambda l: l.Re) S = [0.01, 0.025, 0.04, 0.055, 0.07, 0.085, 0.1, 0.115, 0.13, 0.145, 0.16, 0.175, 0.19, 0.205, 0.22, 0.235, 0.25] # S = [0.025, 0.05, 0.075, 0.1, 0.125, 0.15, 0.175, 0.2] out=[] for key, group in groupby(caseList, lambda x: x.Re): alist = list(group) s, sig = getSig_S(alist) # print s, sig i=0 if s[0] > S[0]: for ss in S: if ss in s: break s.insert(i, ss) sig.insert(i, calculateSigmaForS(caseList, ss, alist[0].Re)) i=i+1 if s[-1] < S[-1]: for ss in S: if ss not in s: continue if ss <= s[-1]: continue else: # print ss, alist[0].Re s.insert(len(s), ss) sig.insert(len(sig), calculateSigmaForS(caseList, ss, alist[0].Re)) # print s, sig if float(alist[0].alfa) == 3: #extra manual ... if float(alist[0].Re) == 1900: ssig = calculateSigmaForS(caseList, 0.025, 1900) s.insert(1, 0.025) sig.insert(1, ssig) # print ssig #extra manual ... if float(alist[0].Re) == 1500: ssig = calculateSigmaForS(caseList, 0.025, 1500) s.insert(1, 0.025) sig.insert(1, ssig) # print ssig # print alist[0].Re, s, sig case=Case() case.alfa = alist[0].alfa case.Re = alist[0].Re case.S = s case.sigma = sig out.append(case) return out