diseño de lineas de aduccion con pytho

Upload: cristhian-galvez-zanabria

Post on 05-Nov-2015

8 views

Category:

Documents


1 download

DESCRIPTION

Programa de Calculo, Analisis y Diseño de Lineas de Aduccion para redes de distribucion, con clasificacion de clases de tuberias y diseño optimo de diametros.

TRANSCRIPT

  • ## CALCULO Y DISEO DE LINEAS DE ADUCCION

    #import os#------------------------------------------------------------------------------#INGRESO DE DATOS:#------------------------------------------------------------------------------

    #Limpiando la Pantalla para una mejor presentacion:os.system('cls')

    #**************************# Matriz de Datos de Nudos:#**************************#[Nudo Cota(m) Demanda_en_Nudo_q(Lt/s)]

    MN=[]vfd=[0, 0, 0]vf=[0]val="p"

    while val != "": print("Ingrese Datos de Nudos\n") val=raw_input(" Nudo : ") if val != "": vfd[0]=int(val) #Cota piezometrica del nudo en m: vfd[1]=raw_input(" Cota[m] : ") if vfd[1]=="": vfd[1]=0.0 else: vfd[1]=float(vfd[1]) #Demanda localizada en el nudo en Lt/s: vfd[2]=raw_input(" Demanda[Lt/s]: ") if vfd[2]=="": vfd[2]=0.0 else: vfd[2]=float(vfd[2]) #Agregando los datos ingresados a la matriz MN: vf[0]=vfd MN=MN+vf vfd=[0, 0, 0] print("") os.system('cls')#**************************os.system('cls')

    #*****************************# Matriz de Datos de Tuberias:#*****************************#[Nudo_Inicial Nudo_Final Longitud_Tuberia Distancia_Horizontal_Tuberia Caudal_en_Tuberia Ks_Rugosidad_de_Tuberia S0_Pendiente]

    1

    You created this PDF from an application that is not licensed to print to novaPDF printer (http://www.novapdf.com)

  • MT=[]vfd=[0, 0, 0, 0, 0, 0, 0]vf=[0]val="p"i=0

    while val != "": print("Ingrese Datos de Tuberias\n") i=i+1 print " Datos Tuberia", i, ":\n" val=raw_input(" Nudo Inicial : ") if val != "": vfd[0]=int(val) #Nudo Final: vfd[1]=raw_input(" Nudo Final : ") while vfd[1]=="": print("Ingrese un Valor Adecuado!") vfd[1]=raw_input(" Nudo Final : ") vfd[1]=int(vfd[1]) #Longitud de Tuberia en m: vfd[2]=raw_input(" Longitud de T[m] : ") if vfd[2]=="": vfd[2]=0.0 else: vfd[2]=float(vfd[2]) #Distancia Horizontal de Tuberia en m: vfd[3]=raw_input(" Distancia Hor. [m] : ") if vfd[3]=="": vfd[3]=0.0 else: vfd[3]=float(vfd[3]) #Caudal que pasa por Tuberia en Lt/s: vfd[4]=raw_input(" Caudal Q[Lt/s] : ") if vfd[4]=="": vfd[4]=0.0 else: vfd[4]=float(vfd[4]) #Ks Rugosidad Absoluta de Tuberia en m: vfd[5]=raw_input(" Ks[m] : ") while vfd[5]=="": print("Ingrese un Valor Adecuado!") vfd[5]=raw_input(" Ks[m] : ") vfd[5]=float(vfd[5]) #Pendiente S0 de Tuberia en m/m: vfd[6]=raw_input(" Pendiente S[m/m] : ") if vfd[6]=="": vfd[6]=0.0 else: vfd[6]=float(vfd[6]) #Agregando los datos ingresados a la matriz MT

    2

    You created this PDF from an application that is not licensed to print to novaPDF printer (http://www.novapdf.com)

  • vf[0]=vfd MT=MT+vf vfd=[0, 0, 0, 0, 0, 0, 0] print("") os.system('cls')#**************************

    #******************#Datos Adicionales:#******************os.system('cls')print("Ingrese Datos de Adicionales\n")Temperatura=raw_input(" Temperatura [C]: ")while Temperatura=="": print(" Ingrese un Valor Adecuado!") Temperatura=raw_input(" Temperatura [C]: ")Temperatura=float(Temperatura)#******************

    #****************************************#Base de Datos utilizada por el programa:#****************************************#Rugosidad Bsoluta Ks para diferentes materiales:# # Material Ks(m) # # Vidrio 0.0000003 # PVC 0.0000015 # Polietileno (PE) 0.0000020 # Asbesto Cemento 0.0000300 # Acero 0.0000460 # Hierro Forjado 0.0000600 # Hierro Fundido Asfaltado 0.0001200 # Hierro Galvanizado 0.0001500 # Arcilla Vitrificada 0.0001500 # Hierro Fundido 0.0001500 # Hierro Ductil 0.0002500 # Madera Cepillada 0.00018 - 0.00090 # Concreto 0.00030 - 0.00300 # Acero Bridado 0.00090 - 0.00900 # # (*) Valores Sacados de la presentacion del curso "Especializacion en Riego# Tecnificado en Cultivos de Agroexportacion"#****************************************#==============================================================================

    #------------------------------------------------------------------------------#CALCULOS PREVIOS:#------------------------------------------------------------------------------#1RO DETERMINAREMOS QUE DATOS ESTAN FALTANDO EN CADA MATRIZ Y QUE DATOS SE#TIENEN PARA PODER CALCULAR DICHOS DATOS FALTANTES:

    #Analizando las propiedades geometricas del sistema:

    #*************************************#Calculo de diferencias verticales H:#*************************************#Se presentan 4 casos posibles:

    3

    You created this PDF from an application that is not licensed to print to novaPDF printer (http://www.novapdf.com)

  • #1er Caso: se conocen las cotas piezometricas => H=Ci-Ci+1#2do Caso: se conocen Longitu de Tuberia y Distancia de Proyeccion =># H=(L**2 - D**2)**0.5#3er Caso: se concen la longitud de la tuberia y la pendiente de la tuberia =># H=(S0*L)/((1+S0**2)**0.5)#4to Caso: se conocen la Distancia de la Proyeccion y la pendiente de tuberia# => H=S0*D#Con las casos antes analizados pasemos a completar y en caso de no poder,#solicitar al usuario el dato necesario para calculo de H:dH=[]vh=[0]for i in range(0,len(MT)): #Para los 4 casos analisados necesitamos extraer y ver los siguintes datos: #PARA ANALISIS DEL 1ER CASO: #Extrallendo el nudo inicial y final para la tuberia i-esima: ni=MT[i][0] nf=MT[i][1] #Buscando dichos nudos y extrallendo su cota piezometrica: for j in range(0,len(MN)): if ni == MN[j][0]: #Extrallendo Cota Inicial. ci=MN[j][1] if nf == MN[j][0]: #Extrallendo Cota Final. cf=MN[j][1] #PARA ANALISIS DEL 2DO CASO: #Extrallendo longitud y Distancia Horizontal de la Tuberia i-esima: Li=MT[i][2] Di=MT[i][3] #PARA ANALISIS DEL 3ER CASO: #Extrallendo la pendiente S0i, la longitud ya fue extraida. S0i=MT[i][6] #PARA ANALISIS DEL 4TO CASO: #No es necesario extraer ningun dato adicional pues, la pendiente y la #distancia Horizontal ya se extralleron para los casos anteriores. #ANALIZANDO CADA CASO CON LOS DATOS OBTENIDOS: #ANALISIS DEL 1ER CASO ci0 Y cf0 H=Ci-Ci+1 #Verificando si ci y cf son diferentes de cero para calcular el H=Ci-Cf if ci != 0.0 and cf != 0.0: vh[0]=ci-cf dH=dH+vh vh=[0] #ANLISIS DEL 2DO CASO SI ESQUE EL PRIMERO NO SE CUMPLE: #Verificando que Li y Di sean diferentes de cero para calcular H=(L**2 - D**2)**0.5 elif Li != 0.0 and Di != 0.0: vh[0]=(Li**2 - Di**2)**0.5 dH=dH+vh vh=[0] #ANALISIS DEL 3ER CASO SI ES QUE EL PRIMERO O EL SEGUNDO NO CUMPLE: #Verificando que Li y S0i sean diferentes de cero para calcular H=(S0*L)/((1+S0**2)**0.5)

    4

    You created this PDF from an application that is not licensed to print to novaPDF printer (http://www.novapdf.com)

  • elif Li != 0.0 and S0i != 0.0: vh[0]=(S0i*Li)/((1+S0i**2)**0.5) dH=dH+vh vh=[0] #ANALISIS DEL 4TO CASO SI ESQUE EL PRIMERO, NI EL SEGUNDO, NI EL TERCERO SE CUMPLEN: #Verificando que S0i y Di sean diferentes de cero para calcular H=S0*D elif Di != 0.0 and S0i != 0.0: vh[0]=S0i*Di dH=dH+vh vh=[0] print MN,"\n",MT

    #*************************************

    #==============================================================================

    5

    You created this PDF from an application that is not licensed to print to novaPDF printer (http://www.novapdf.com)