Está en la página 1de 3

MUSKINGUM CUNGE

import numpy as np
from matplotlib import pyplot as plt

"""
Esta parte del código recibe los datos de entrada. La celeridad es un valor
en función de la velocidad del flujo y
un coeficiente beta. Buscar quién es beta para poder sustentar.

"""

Qp=float(input("Enter peak discharge Qp (m3/s):"));


Ap=float(input("Enter peak flow area Ap (m2):"));
tp=float(input("Enter peak top width Tp (m):"));
deltat=int(input("Enter time interval Δt (hr):"));
deltax=int(input("Enter reach length Δx (km): "));
beta=float(input("Enter rating exponent β :"));
So=float(input("Enter bottom slope So (m/m): "));
n=int(input("Enter number of inflow hydrograph ordinates n:"));

"""
Los siguientes valores que se piden son la hidrógrafa i, porque el propósito
es calcuar la hidrógrafa i+1. La variación de los k (el contador que se ve
en la ecuación de Muskingum Cunge), se da internamente en cada hidrógrafa.

La siguiente parte del código recibe dichos valores separados por coma y los
guarda, cada uno, en una posición de un vector llamado q.
"""
str = str (input ("Enter inflow hydrograph ordinates Qi (start with Q0,
separate each value with a comma): "))
list = str.split (",");
q = []
for i in list:
q.append(int(i))
#Ecuaciones
V=Qp/Ap;
qo=Qp/tp;
c=beta*V;
Q=[];
"""
Debido a que los valores de deltat y deltax pedidos en los datos de entrada
están en km y hr, se debe realizar la conversión a segundos y metros.

"""
deltat=deltat*3600;
deltax=deltax*1000;
"""
Ya que los valores de deltax y deltat deben variar, para el calculo de
variables posteriores, se define unos vectores llamados deltaxl y deltatl
respectivamente. En la primera posición de los vectores se guardan los
valores deltax y deltat iniciales, despues de la conversión.
"""
deltatl=[];
deltaxl=[];
deltatl.append(deltat);
deltaxl.append(deltax);

"""
El calculo de los coeficientes C0, C1, C2 están en función de dos variables,
C Y D, cuyas fórmulas se ven abajo. Buscar el significado para la
sustentación.

El siguiente método recibe por argumentos qo (que es constante, definido en


Ecuaciones), c que es la celeridad, q que es un vector que tiene los
caudales de la hidrógrafa i (ingresados al principio por el usuario), So que
es constante, D Y C, los cuales varían y se calculan de acuerdo a deltax y
deltat.
"""
def MuskingumCunge (qo, c, q, i, So, D, C):
C0=(-1+C+D)/(1+C+D);
C1= (1+C-D)/(1+C+D);
C2=(1-C+D)/(1+C+D);
"""
La hidrógrafa i+1 se calcula a partir de la siguiente fórmula. El método
MuskingumCunge(qo, c, q, i, So, D, C) devuelve un valor Qi.
"""
Qi = C0*q[i+1]+C1*q[i]+C2*q[i]
return Qi
deltati=deltat
deltaxi=deltax

for i in range (0, n-1):


deltat=deltat+deltati
deltax=deltax+deltaxi
deltatl.append(deltat);
deltaxl.append(deltax);
"""
Aquí se realiza el cálculo de los ya mencionados D y C, los cuales varían.
"""
C=c*(deltatl[i]/deltaxl[i]);
D= qo/(So*c*deltaxl[i]);
"""
El valor Qi que devuelve el método anteriormente mencionado, se guarda en
un vector llamado Q, que es la hidrógrafa i+1, o sea, la solicitada.
"""
Q.append(MuskingumCunge(qo, c, q, i, So, D, C));

print (Q); #Se imprime el vector Q


"""
Los siguientes son los comandos necesarios para graficar la hidrógrafa i+1.
"""
plt.ion()
plt.plot(deltatl,Q)
plt.show();

También podría gustarte