Académique Documents
Professionnel Documents
Culture Documents
import numpy as np
import matplotlib.pyplot as plt
from math import log
from math import sqrt
from math import exp
#FUNCOES
def SATPRP (P):
#*******************************************************************
# A funcao SATPRP calcula as propriedades da agua saturada em funcao
# da pressao por interpolacao em uma tabela termodinamica
#Descricao das variaveis:
# P - Pressao
# R1 - Temperatura de saturacao (oC)
# R2 - Entalpia especifica (J/kg)
# R3 - Calor de vaporizacaoCALOR (J/kg)
# R4 - Densidade de liquido saturado (kg/m3)
# R5 - Condutividade termica (W/(m.K)
# R6 - Calor especifico em (J/kg.K)
# R7 - Viscuosidade dinamica (Kg/m.s)
# SIG - Tensao superficial (N/M)
#*******************************************************************
tabela = open('Tabela T.txt', 'r')# Le o arquivo que contem a tabela termodinamica
e joga na variavel tabela
for i in range (3):#Desconsidera as tres primeiras linhas do arquivo que sao texto
tabela.readline()
props = []#Cria a matriz props com as propriedades termodinamicas do arquivo
for linha in tabela.readlines():#Preenche a matriz props
props.append(linha.split())
for i in range (len(props)):# Transforma o texto em valores
for j in range (7):
props[i][j] = float(props[i][j])
PP = P*0.1 #Transforma a pressao em Mpa para interpolar na tabela
for i in range (0,86):#Resolve o lado esquerdo da equacao de interpolacao
if PP <= props[i][0]:
F=(PP-props[i-1][0])/(props[i][0]-props[i-1][0])
break
R1 = props[i-1][1] + F*(props[i][1] - props[i-1][1])# Calcula a temperatura de
saturacao
R2 = props[i-1][2] + F*(props[i][2] - props[i-1][2])# Calcula a entalpia especifica
R3 = props[i-1][3] + F*(props[i][3] - props[i-1][3])# Calcula o calor de vaporizacao
R4 = props[i-1][4] + F*(props[i][4] - props[i-1][4])# Calcula a densidade
R4 = 1/R4
R1 = (R1*1.8)+32 # Transforma a temperatura de celsius para fahrenheit
R5 = ((-9.1492E-10*R1 + 1.1564E-7)*R1 + 1.3506E-4)*R1 + 0.36897 # Calcula a
condutividade termica
R6 = ((-6.4907E-8*R1 + 1.1609E-4)*R1 - 8.2557E-2)*R1 + 29.491 + (306510.0/R1 4753.3)/R1
R6 = 1/R6 # Calcula o calor especifico
F = log(10,R1)
R7 = 10**(((-0.090169*F + 0.94986)*F - 4.2377)*F + 5.6709) # Calcula a viscuosidade
dinamica
SIG = (700.0 - R1)*8.333E-6 # Calcula a tensao superficial
R1 = (R1-32)/1.8
R2 = R2*1000
R3 = R3*1000 # Transforma em J/kg
R4 = R4*1000 # Transforma em Kg/m3
R5 = R5*1.7307 # Transforma em W/mK
R6 = R6*4186.8 #Transforma em J/kgK
R7 = R7*4.1338E-4 #Transforma em kg/m.s
SIG = SIG*14.5939 #Transforma em N/m
return (R1, R2, R3, R4, R5, R6, R7, SIG)
def VAPPRP(P,T,TS,H):
#*************************************************
# A funcao VAPPRP calcula as propriedades do vapor
# Descricao das variaves de entrada:
# P - Pressao (bar)
# T - Temperatura (oC)
# TS - Temperatura de saturacao (oC)
# H - Entalpia Especifica (J/kg)
# Descricao das variaveis de saida
# R1 - Densidade (kg/m3)
# R2 - Condutividade Termica (W/(m.K))
# R3 - Capacidade termica especifica (J/Kg.K)
# R4 - Viscosidade dinamica (kg/m.s)
#************************************************
PP = P*14.5038 #Trasforma de bar para lbm/pol2
TT = 1.8*T + 32 #Transforma para fahrenheit
TSAT = 1.8*TS + 32 #Transforma para fahrenheit
HH = H/2326
TT = max(TSAT, min(TT,2500))
R2 = (1.3442E-8*TT + 8.4559E-6)*TT + 2.7224E-2 + (5.9959E+2/TT - 6.0909)/TT
R3 = 1.6162 - 3.7836E-6*TT*TT - (1.7222E+4/TT - 2.1665E+2)/TT
R = 5.2804+(3.6853E-3-1.5463E-6*TT-2.2568/TT)*PP+(1.1828E-6*TT-3.6371E3)*TT+(1.1432E+5/TT-1.0388E+3)/TT
if R3 < R:
R3 = R
R3 = 1/R3
R4 = (-1.57E-8*TT + 9.2604E-5)*TT - 8.6471E-3 - (4.8243E+2/TT - 6.3327)/TT
R = HH + R3*(TT - TSAT)
R1 = 8.2370732E-2 - 1.4100729E-5*PP - 1066.2933/PP + (-7.4564465E-5 + 1.2569934E8*PP + 1.2728678/PP)*R
R1 = 1/R1
R1 = R1*16.018 #Transforma para kg/m3
R2 = R2*1.7307 #Transforma para W/(m.K)
R3 = R3*4186.8 #Transforma para J/Kg.K
R4 = R4*4.1338E-4 #Transforma para kg/m.s
return (R1,R2,R3,R4)
def METPRP(XTC):
#***********************************************************
# A funcao METPRP calcula a condutividade e calor
# especifico do revestimento em funcao de sua temperatura
# Descricao das variaveis
# XTC - Temperatura do revestimento
# TCC - Condutividade trmica do revestimento
# RCC - Calor Especifico do revestimento
#***********************************************************
TCC = ((B[114]*XTC + B[113])*XTC + B[112])*XTC + B[111]
RCC = ((B[118]*XTC + B[117])*XTC + B[116])*XTC + B[115]
return (TCC,RCC)
def HTC(TL,TS,TC,G,GS,AZ,IHT):
#***********************************************************
# A funcao HTC calcula os Coeficientes de transferencia de
# calor nos varios Regimes de escoamento.
#***********************************************************
H = HV
HST = 0
HWA = 0
SIG = 0.0567
if IHT == 1:# Ebulicao nucleada
HWA = HNB # Coeficiente de ebulicao nucleada
elif IHT == 6: # Convecao de vapor
HWA = 1.86*(KL/DHY)*(G*DHY/VISL*CL*VISL/KL*0.00341)**0.33
else:
if GS <= 0.99*G:
del mat[i][0]
del mat[i][0]
A.extend(mat[i])
B = [0]
k = len(A)
for i in range (0,k):
B.append(float(A[i]))# Faz com que A(0) seja igual a B(1)
print('REWET - 2016')
print('VALORES DE ENTRADA PARA ESTE CASO')
arquivo.closed
#Inicializando as demais variaveis
PI = 3.14159
NPLT = 0
NT = int(B[5]/B[4]+1)
NPRT = 0
IERR = 0
T = 0
Z2P = 0 # Nivel da agua arrastada
ZWS = 0
GSURF = 0 # Razao entre a taxa de fluxo de saida e a taxa de fluxo de entrada
ALP = 0
GINEX = 0
IGEOM = int(B[1]) #Geometria da secao
IZL = 2
NZ1 = int(B[2]+1) #Numero de regioes
DT = B[4] # Variacao de tempo
NJ = int(B[7]) #Numero de valores de entrada por interpolacao
CRADL = B[15] # Liquid absorotivity
CRADV1 = B[16] # Vapor absorpvity
CRADV2 = B[17]
EPSW = B[18] #Emissividade do Revestimento.
RO = B[20]#Raio externo da secao de teste
RI = B[21]# Raio interno da secao de teste
A = B[23] #Area do canal
DHY = B[24] #Diametro hidraulico
L = B[25] #Comprimento do tubo
TUE = B[29] #Temperatura de remolhamento
DZ = L/B[2] #passo de comprimento axial
FC = 1
P = B[33] #Pressao
HNB = B[35] # Coeficiente de ebulicao nucleada
QCRIT = B[36]# Fluxo de calor critico
VD = B[39] # Velocidade de deriva
VERF = B[28]/L
TC = [None]*200 #Temperatura do revestimento
TF = [None]*200
Q = [None]*200
QI = 0
DZJ = L/(B[7] - 1)
for i in range (1,NZ1+1):#Interpolacao inicial de potencia e perfis de temperatura
j = int((i-1)*DZ/DZJ + 1)
DUMY = ((i-1)*DZ - (j-1)*DZJ)/DZJ
TC[i] = B[39+j] + (B[39+j+1] - B[39+j])* DUMY
if i == NZ1:
TC[i] = B[39+NJ]
Q[i] = B[NJ+81]
Q[i] = B[81+j] + (B[81+j+1] - B[81+j])*DUMY
QI = QI + Q[i]
QI = (QI - (Q[1] + Q[2])/2)/B[2] # Renormalizacao do Perfil de Potencia
#Imprimindo os dados de Entrada
print ('Numero de regioes =', '%4.0f'%B[2])
print ('Passos de tempo =', B[4],'s')
print ('Tempo final =' , B[5], 's')
UYA = 1/RCC*sqrt(TCC/(abs(RO-RI)))
#Inicio do Loop no tempo
EPS = 0
ZQU = 0
TLIQ = [None]*201
TEMPO = [0]
tempo = [0]
TC1P = [525]
TC20P = [525]
TC48P = [525]
TC76P = [525]
TC150P = [525]
zqu = [0]
z2p = [0]
for j in range (1,NT):
ZLIQ = 0
S = 5
T = T + DT
QT = float((0.0004*T)+1)
GIN = float((-0.013*T)+94.189)
HIN = float((-0.0092*T*T*T) + (5.4354*T*T) - (1003.5*T) + 267721)
# Calculo do balanco de massa
EPS = GSURF/GCRIT
GEX = GSURF + EPS*(GIN - GSURF)
GEX = max(GEX,B[14])
GINEX = GINEX + (GIN - GEX)*DT
Z2P = GINEX/(RHOLV*(1 - ALP))
Z2P = min(Z2P,(L))
IZL = int(Z2P/DZ+2)
ZA = Z2P - float(IZL-2)*DZ
#Inicio do Loop Axial
HH[1]=HIN
TS = [None]*200 #Temperatura do vapor
X = [None]*200 #Titulo
AZ = [None]*200
SLIP = [None]*200
IHT = [None]*200 #Regime de transferencia de calor
HSTPL = [None]*200 #Coeficientes de transferencia de calor
HSTRPL =[None]*200
HWAPL=[None]*200
HWARPL=[None]*200
XH = [None]*200
G = [None]*200 # Fluxo de massa
GS = [None]*200 # Fluxo de vapor
for i in range(1,NZ1+1):
G[i] = GIN
if i >= IZL:
G[i] = GEX
if i > 1:
HHOLD = HH[i]
DELZP = 0.5*DZ
if i == IZL:
DELZP = ZA
DELZM = DZ - DELZP
RG = RHOL*DZ/(GIN*DT)
if HHOLD >= HL or i >= IZL:
RG = 0
HHH = HH[i-1] + 2*PI*RO*DELZP*QA[i-1]/G[i-1]*A
HMAX = max(HV,(HV+CV*(TC[i-1]-TSAT)))
HMIN = min(HL,(HL+CL*(TC[i-1]-TSAT)))
if QA[i-1] > 0:
HHH = min(HHH,HMAX)
if QA[i-1] < 0:
HHH = max(HHH,HMIN)
if i == IZL:
XSURF = (HHH - HL)/HLV
BETA = B[12]
if TC[i-1] < (TSAT+TUE):
BETA = 0
GSURF = GS[i-1] + BETA*(XSURF - X[i-1]*GIN)
GSURF = max(GSURF,(XSURF*GIN))
GSURF = max(GSURF,0)
HSURV = HV
if EPS != 0:#
HSURV = HL + GSURF*HLV/GEX
HHH = HSURV
GSURV = GSURF
if EPS == 0:
GSURV = GEX
HH[i] = HHH + RG*HHOLD + 2.0*PI*RO*DELZM*QA[i]/(G[i]*A)/(1+RG)
HMAX = max(HV,(HV+CV*(TC[i]-TSAT)))
HMIN = min(HL,(HL+CL*(TC[i]-TSAT)))
if QA[i] > 0:
HH[i] = max(HHH, min(HH[i],HMAX))
elif QA[i] < 0:
HH[i] = min(HHH, max(HH[i],HMIN))
S = 5
if GS[i-1] > 0:
S = 1 + 4*exp(-7.5*GS[i-1]/G[i-1])
X[i] = ((HH[i] - HL)/ HLV)
GSE = X[i]*G[i]
GS[i] = GSE
if i > 1:
BETA = B[12]
if TC[i] <= (TSAT+TUE):
BETA = 0
GS[i] = GS[i-1] + BETA*(X[i] - X[i-1])*G[i]
GS[i] = max(GS[i],GSE)
if i >= IZL and i > IZQ+1:
GSDUM = GS[i-1]
GSDUM = GSDUM + 2*PI*RO*DZ*QADROP/(A*HLV)
if i == IZL:
GSDUM = GSURV
TSDUM = TS[i-1]
if i == IZL:
TSDUM = TSAT
GS[i] = GSDUM + CNA*S*RHOV*(GEX - GSDUM)*(TSDUM - TSAT)*DZ/(RHOL*GSDUM)
if TSDUM <= (TSAT+1) and TC[i] <= (TSAT+TUE):
GS[i] = GSE
GS[i] = min(GS[i],GSE)
if EPS == 0 and i >= IZL:
GS[i] = GEX
GS[i] = min(GS[i],G[i])
GS[i] = max(GS[i],0)
CNA = CNE
CNA = max(CNA,CNE)
#Calculo das temperaturas de liquido e vapor
TS[i] = TSAT
if GS[i] > 0.00488:
TS[i] = TSAT + HLV*(GSE/GS[i] - 1)/CV
TS[i] = max(TS[i],TSAT)
TLIQ[i] = TSAT
if G[i] != GS[i]:
TLIQ[i] = TSAT + HLV*(GSE - GS[i])/(CL*(G[i] - GS[i]))
TLIQ[i] = (min(TLIQ[i],TSAT))
# Calculo da fracao de vazio.
','T.E6','
','T.R8','
TH3.append(T[3])
TH6.append(T[4])
TH8.append(T[5])
tE.append(i)
for i in range (2,502,2):
TR3.append(TC20P[i*2])
TR6.append(TC48P[i*2])
TR8.append(TC76P[i*2])
# Calculando o desvio
= [None]*(TV)
= [None]*(TV)
= [None]*(TV)
= [None]*(TV)
= [None]*(TV)
= [None]*(TV)
DVR3
DVR6
DVR8
DVH3
DVH6
DVH8
','T.E3','
','%6.2f' %TH3[i],'
','T.E6','
','DVR3','
','%6.2f' %TE3[i],'
','DVR6','
','%6.2f' %TH6[i],'
','T.E8','
','DVH6')
','%6.2f' %TE6[i],'
','DVR8','
','DVH3')
','DVH8')
','%6.2f'
plt.show()
plt.plot(tE,DVR8, 'r',tE,DVH8, 'g--')
plt.axis((0,500,-100,200))
plt.ylabel('Desvio(%)')
plt.xlabel('Tempo (s)')
plt.title('Desvio % Cota 8, Teste 2')
plt.show()