#######################################
# evac.py                             #
# tirage d'une conduite d'évacuation  #
# section circulaire                  # 
# propane                             #
# Didier Descamps, 08/03/2019         #
#######################################

import sys
from math import pi


if(len(sys.argv)!=4):
    sys.exit("il faut entrer dans l'ordre la puissance (kW),\
 la température maxi (°C) et la température ambiante (°C) :") 

P=float(sys.argv[1])        # la puissance kW PCI
tf=float(sys.argv[2])       # température maxi du four (°C)
ta=float(sys.argv[3])       # température ambiante
fd=input("diamètre en mm ? :")
d=float(fd)
print("d={0:5.1f} mm ".format(d))
d=d/1000.0
h=1.0
critere=0.00001             # critère de fin de boucle
	
c=1.0                       # propane : 1 m3(n)/kWh(pci) 
                            # et 1,07 pour le gaz naturel
rhof0=1.2695 # propane      # masse volumique des fumées à 0°C
qf=c*rhof0*P/3600             # débit masse des fumées
rhoa0=1.29                  # masse vol. air à 0°C
rhoa=rhoa0*273/(273+ta)     # masse vol. air à ta
rhof=rhof0*273/(273+tf)     # masse vol. fumées à tf 
pmot=0.0                    # pression motrice initiale avant boucle
pch=100.0                   # perte de charge initiale 
qamax=qf*100.0 				
qamin=0.0
lamda=0.04                  # facteur de pertes en régime laminaire, Re~5500 

while(abs(pmot-pch)>critere):
    qa=(qamax+qamin)/2.0
    tm=(tf*qf+ta*qa)/(qf+qa)	# température du mélange
    rhom=(qf+qa)/((qf/rhof)+(qa/rhoa))	# masse vol. du mélange
    v=4.0*(qf+qa)/(rhom*pi*d*d)	# vitesse moyenne 
    pmot=(rhoa-rhom)*9.81*h     # dépression motrice 
    pch=0.5*lamda*h*rhom*v*v/d	# perte de charge
    if(pmot>pch):
        qamin=qa
    else:
        qamax=qa
print("température moyenne : {0:5.1f} °C".format(tm) )

