print "Consute http://sourceforge.net/projects/numpy/files/NumPy/1.7.0/ " try: import scipy.interpolate as sp except: print "Erro ao importar a SciPy" print "Consute http://sourceforge.net/projects/scipy/files/scipy/0.11.0/" try: import wx import wx.lib.dialogs except: print "Erro ao importar a wxPython" print "Consute http://sourceforge.net/projects/wxpython/files/wxPython/2.9.4.0/" if __name__ == '__main__': os.system(['clear','cls'][os.name == 'nt']) app = wx.App(False) path='./a4.csv' j=janela.choose() j.buildme("Escolha de modulo","Qual modulo deseja carregar?",['Estado Termodinâmico','Ciclo de Rankine']) j.Show(False) if (j.selection ==0): ret=termo(path) j=janela.text() j.buildme('Estado Termodinâmico',ret['saida']) j.Show() else: rankine(path)
def termo(path): vlr={ 'names':['Temperature','Pressure','Volume','Energy','Enthalpy','Entropy','Titulo'], 'unit':['[°C]','[kPa]','[m³/kg]','[kJ/kg]','[kJ/kg]','[kJ/kg]'], 'more':['Temperatura', 'Pressão', 'Volume Especifico','Energia Interna', 'Entalpia', 'Entropia','Titulo'], 'saida':'','Temperature':0,'Pressure':0,'Volume':0,'Energy':0,'Enthalpy':0,'Entropy':0,'Titulo':0} dado=water(path) save=water(path) j=janela.choose() #entrada do primeiro dado j.buildme("Primeira entrada","Escolha a primeira entrada",[ ("{0} {1}".format(e,u) ) for e,u in zip(['Temperatura','Pressão'],dado.dados['unit']) ]) j.Show(False) escolha1 = dado.dados['names'][j.selection] dado.dados['names'].remove(dado.dados['names'][0]) dado.dados['names'].remove(dado.dados['names'][0]) dado.dados['unit'].remove(dado.dados['unit'][0]) dado.dados['unit'].remove(dado.dados['unit'][0]) dado.dados['more'].remove(dado.dados['more'][0]) dado.dados['more'].remove(dado.dados['more'][0]) #entrada do segundo dado j.buildme("Segunda entrada","Escolha a segunda entrada",[ (str(e) +" {1}".format(e,u) ) for e,u in zip(dado.dados['more'],dado.dados['unit']) ]) j.Show(False) escolha2 = dado.dados['names'][j.selection] del j #entrada dos respectivos valores j=janela.read_value() j.buildme(escolha1,"Entre como valor para a " + save.dados['more'][save.dados['names'].index(escolha1)] +" "+ save.dados['unit'][save.dados['names'].index(escolha1)]) j.Show(False) value1 = j.selection j=janela.read_value() j.buildme(escolha2,"Entre como valor para " + save.dados['more'][save.dados['names'].index(escolha2)] +" "+ save.dados['unit'][save.dados['names'].index(escolha2)]) j.Show(False) value2 = j.selection #gera função para interpolação dos pontos máximos e mínimos inter_min = sp.interp1d(dado.dados[escolha1], dado.dados[escolha2+"_min"],kind='linear') inter_max = sp.interp1d(dado.dados[escolha1], dado.dados[escolha2+"_max"],kind='linear') try: if (value2>=inter_min(value1)): if (value2<=inter_max(value1)): # Se segundo dado estiver entre os pontos máximos e mínimos de interpolação #considera como saturada valores= "Esta no estado de água saturada\n".center(90) + "\n" #interpola os primeiros dados for i,u in zip(dado.dados['index'],dado.dados['unit_index']): inter = sp.interp1d(dado.dados[escolha1], dado.dados[i],kind='linear') valores += ( i.rjust(13) +"\t\t=\t" + (str(inter(value1))+" "+ u).ljust(11) + "\n") # calcula titulo titulo =((value2 - inter_min(value1)))/ (inter_max(value1)-inter_min(value1)) valores += " Titulo\t\t=\t" + str(titulo) + "\n" valores += "--------------------------------------------------------------------------\n" valores += "Valores precisos:\n".center(55) + "\n" # calcula os dados com base no titulo e o salva na variável de saída for i,u in zip(save.dados['names'][2:],save.dados['unit']): if((i != 'Pressure') and (i != 'Temperature') ): #precise = dado.dados[i+'_min'] + titulo * (dado.dados[i+'_min'] + dado.dados[i+'_max'])/2 precise = ui.dados.dados[i+'_min'] + titulo * (ui.dados.dados[i+'_max'] - ui.dados.dados[i+'_min']) inter = sp.interp1d(dado.dados[escolha1], precise,kind='linear') valores += ( i.rjust(13) +"\t\t=\t" + (str(inter(value1))+" "+ u).ljust(11) + "\n") vlr[i] = float(inter(value1)) vlr[escolha1] = value1 if(escolha1=='Pressure'): inter = sp.interp1d(dado.dados[escolha1], dado.dados['Temperature'],kind='linear') vlr['Temperature'] = float(inter(value1)) else: inter = sp.interp1d(dado.dados[escolha1], dado.dados['Pressure'],kind='linear') vlr['Pressure'] = float(inter(value1)) vlr['Titulo'] = titulo else: #caso esteja acima do valor máximo da tabela A4 valores= "Esta no estado vapor superaquecido\n".center(90) + "\n" # (acima do intervalo para saturada) j=janela.choose() #tabela de possíveis níveis de pressão lista=['10', '50', '100' , '200', '300', '400', '500' , '600', '800','1000', '2000','3000','4000','5000','10000','20000','30000','40000','50000','60000'] j.buildme("Não é saturada","Entre novamente com o valor para a Pressão [kPa]",lista) j.Show(False) value1 = j.selection # carregada tabela A6 dado=waterNext('./a6/' + lista[value1] + '.csv') # preenche os dados para a pressão for i in dado.dados['Temperature']: dado.dados['Pressure'] = numpy.append(dado.dados['Pressure'],float(lista[value1])) # interpola os demais dados for i,u in zip(dado.dados['index'],dado.dados['unit_index']): inter = sp.interp1d(dado.dados[escolha2], dado.dados[i],kind='linear') valores += ( i.rjust(13) +"\t\t=\t" + (str(inter(value2))+" "+ u).ljust(11) + "\n") vlr[i] = float(inter(value2)) vlr['Titulo'] = 1 vlr['Pressure'] = int(vlr['Pressure']) else: #caso esteja abaixo do valor mínimo da tabela A4 valores= "Esta no estado liquido comprimido\n".center(90) + "\n" # (abaixo do intervalo para saturada) j=janela.choose() #tabela de possíveis níveis de pressão lista=['5','10','15','20','30','50'] j.buildme("Não é saturada","Entre novamente com o valor para a Pressão [kPa]",lista) j.Show(False) value1 = j.selection # carregada tabela A7 dado=waterNext('./a7/' + lista[value1] + '.csv') # preenche os dados para a pressão for i in dado.dados['Temperature']: dado.dados['Pressure'] = numpy.append(dado.dados['Pressure'],float(lista[value1])) # interpola os demais dados for i,u in zip(dado.dados['index'],dado.dados['unit_index']): inter = sp.interp1d(dado.dados[escolha2], dado.dados[i],kind='linear') valores += ( i.rjust(13) +"\t\t=\t" + (str(inter(value2))+" "+ u).ljust(11) + "\n") vlr[i] = inter(value2) vlr['Titulo'] = 0 # Caso ocorre algum estado inesperado except ValueError: valores= "Faixa de valores fora do intervalo de amostra".center(90) # preenche a string de impressão na tela na variavel de exportação vlr['saida']=valores return vlr