Professional Documents
Culture Documents
1
INTRODUCCION
EL ALUMNO.
2
Contents
1 Que son los canales? 5
2 Historia 6
2.1 Antiguo Egipto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Mesopotamia y Antigua Grecia . . . . . . . . . . . . . . . . . . . . 6
2.3 Antigua Roma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4 China . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3 Clasificacion de Canales 8
3.1 Canales naturales . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2 Canales de riego . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.3 Canales de navegacion . . . . . . . . . . . . . . . . . . . . . . . . 8
3
9 Programando para canal triangular 39
9.1 Seudocodigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
9.2 Diagrama de flujo . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
9.3 Codigo del programa . . . . . . . . . . . . . . . . . . . . . . . . . 41
11 Conclusiones. 51
12 Recomendaciones 52
13 Bibliografa 53
14 Anexos 54
14.1 Panel fotografico . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4
CANALES
5
2 Historia
El conocimiento emprico del funcionamiento de los canales se remonta a varios milenios. En la
antigua Mesopotamia se usaban canales de riego, en la Roma Imperial se abastecan de agua a traves
de canales construidos sobre inmensos acueductos, y los habitantes del antiguo Peru construyeron en
algunos lugares de los Andes canales que aun funcionan , Claro es el Ejemplo de los canales de Cumbe
Mayo , el centro hidraulico mas importante de los Andes El conocimiento y estudio sistematico de los
canales se remonta al siglo XVIII, con Chezy, Bazin y otros. Herodoto cuenta que los cnidios pueblos
de la Caria en Asia menor emprendieron cortar el istmo que une la isla de Cnido al continente: pero
abandonaron este trabajo por mandato de un oraculo.
6
alrededor de la pennsula del Peloponeso y doblar un cabo muy peligroso por sus muchos escollos.
El tirano Periandro de Corinto fue el primero que penso en este proyecto cinco o seis anos antes de
la era cristiana. Demetrio Poliorcetes, rey de Macedonia, tres siglos despues ensayo hacer una isla
del Peloponeso, empresa que abandono mas adelante. Julio Cesar, Cayo Calgula, Neron y en fin
Herodes Atico procuraron entorpecer o frustrar esta tentativa. Tantas dificultades, muchas de ellas in-
superables, dieron lugar a este proverbio latino: Isthmum fodere. El canal de Corinto sera finalmente
abierto mucho mas adelante, desrrolandose las obras en 1881-1893.
Herodoto dice que Jerjes en su expedicion contra Grecia hizo abrir un canal ?el canal de Jerjes? y
cortar el istmo que una la pennsula del monte Athos con el continente, para evitar navegar un tramo
de mar en el que se haba perdido algunos anos atras una de sus flotas. Segun lo que dice Estrabon
en el libro X, la pennsula de Leucadia, situada en el mar Jonico, celebre por la roca desde donde se
precipitaban al mar los amantes desgraciados, estaba unida al continente antes de que una colonia de
corintios hubiese tallado el istmo.
2.4 China
Los chinos han aventajado a los griegos, a los romanos y en una palabra, a todos los pueblos en la
construccion de canales. Segun todas las noticias que tenemos de este pueblo, se ocuparon ya desde
la mas remota antiguedad en la conduccion y distribucion de las aguas. El mas celebre canal de China
es el Yun-leang o canal real que emprendio en el ano 1289 el emperador Chi-tsou jefe de la dinasta
Fuen, el primero de los emperadores tartaros-mogoles que reinaron en la China. Corre el espacio de
unas 140 leguas.
7
3 Clasificacion de Canales
3.1 Canales naturales
Se denomina canal natural a las depresiones naturales en la corteza terrestre, algunos tienen poca
profundidad y otros son mas profundos, segun se encuentren en la montana o en la planicie. Algunos
canales permiten la navegacion, generalmente sin necesidad de excabar.
Los canales naturales influyen todos los tipos de agua que existen de manera natural en la tierra, los
cuales varan en tamano desde pequenos arroyuelos en zonas montanosas hasta quebradas, arroyos,
ros pequenos y grandes, y estuarios de mareas. Las corrientes subterraneas que transportan agua con
una superficie libre tambien son consideradas como canales abiertos naturales.
Las propiedades hidraulicas de un canal natural por lo general son muy irregulares.
En algunos casos pueden hacerse suposiciones empricas razonablemente consistentes en las obser-
vaciones y experiencias reales, de tal modo que las condiciones de flujo en estos canales se vuelvan
manejables mediante tratamiento analtico de la hidraulica teorica.
8
4 Secciones transversales mas frecuentes
La seccion transversal de uncanal natural es generalmente de forma muy irregular y varia de un lugar
a otro. Los canales artificiales, usualmente se disenan con formas geometricas regulares(Prismaticos),
los mas comunes son las siguientes:
Seccion rectangular Se emplea para acueductos de madera, para canales excavados en roca y
para canales revestidos.
9
Seccion triangular Se usa para cunetas revestidas en las carreteras, tambien en canales de tierra
pequenos, fundamentalmente por facilidad de trazo, por ejemplo los surcos.
Seccion parabolico Se emplea a veces para canales revestidos y es la forma que toman aproxi-
madamente muchos canales naturales y canales viejos de tierra.
10
4.2 Secciones cerradas
Seccion circular y seccion de herradura: Se usan comunmente para alcantarillas y estructuras
hidraulicas importantes.
11
5 Elementosde la seccion transversal de un canal
NOMENCLATURA
12
Figure 8: Talud.
A = area hidraulica, es la superficie ocupada por el liquido en una seccion transversal normal
cualquiera( figura 09)
13
p = permetro mojado, es la parte del contorno del conducto que esta en contacto con el lquido(
figura 10)
R = radio hidraulico, es la dimension caracterstica de la seccion tranversal, hace las funciones del
diametro en tuberas, se obtiene de la siguiente relacion:
R = A/p
14
6 Relaciones geometricas de las secciones transversales
A continuacion se determinan las relaciones geometricas correspondientes al area hidaulica (A),
permetro mojado (p), espejo de agua (T) y radio hidraulico (R),de las secciones transversales mas
frecuentes.
De la figura 11 se tiene:
15
6.2 Seccion rectangular
De la figura 12 se tiene:
16
De la figura 12 se obtiene:
17
1. Calculo del espejo de agua.
De la figura 14, se tiene:
18
19
3. Calculo del permetro mojado:
Una forma sencilla de realizar los calculos de A, p y R, en conductos circulares parcialmente llenos,
conocida la relacion entre el tirante y el diametro del conducto, es decir: y/D, es utilizar la siguiente
tabla 1.
20
Tabla 6.4.1. Area, permetro mojado y radio hidraulico en conductos circulares parcialmente
llenos
21
Continuacion de la tabla 6.4.1
22
A partir de las relaciones obtenidas, y conocido D, se calculan A,p y R.
De igual manera, una forma sencilla de realizar los calculos de A, p y R en conductos de herradura
parcialmente llenos, que es la forma mas empleada para los tuneles, es utilizar la tabla 6.4.1 Su uso
es de forma identica que la tabla 6.5.1.
23
Tabla 6.1. Area, permetro mojado y radio hidraulico en conductos de herradura parcialmente
llenos.
24
Tabla 6.1. Area, permetro mojado y radio hidraulico en conductos de herradura parcialmente
llenos(Continuacion ...)
... (6.2.)
25
Sustituyendo (6.2) en (6.1), resulta:
Fatorizando dx:
26
...(6.3)
Haciendo:
...(6.7)
Sustituyendo(6.7) en (6.3), resulta:
...(6.8)
27
Solucion de la ecuacion(6.8):
...(6.9)
Sustituyendo (6.9) en (6.8), resulta:
28
4. Calculo del radio hidraulico:
29
7 Programando para canal rectangular
7.1 Seudocodigo
1 Proceso canalrectangular
2 Definir Q,b,s,n,y0,yt,A,P,dA,dP,Fy,dFy,C Como Real
3 // Caudal del Flujo en m3/s
4 // b, // Base del cana rectangular (m)
5 // s, // Pendiente del canal en (m/m)
6 // n, // Coef. de rugosidad
7 // y0, // Tirante Inicial
8 // yt; // Tirante del flujo (m)
9 // A, // rea
10 // P, // permetro
11 // dA, // Derivada del rea
12 // dP, // Derivada del permetro
13 // Fy, // Funcin principal
14 // dFy, // Derivada de la funcion principal
15 // C, // Constante
16 // CALCULO DE CONSTANTES//
17 C <- Q*n/rc(s)
18 yt <- Q*b
19 A <- (b*yt) // A=calculaterectanglearea(b,y)
20 P <- 2*(b+yt) // P= calculate rectangleperimeter(b,y)
21 // proceso iterativo
22 y0 <- 1.0
23 Para i<-1 Hasta 40 Hacer
24 A <- (b*yt)
25 P <- 2*(b+yt)
26 dA <- (b)
27 dP <- 2
28 Fy <- A^(5./3)*P^(-5.0/3)*C
29 dFy <- (5/3)*A^(2/3)*P^(-2/3)-(2/3)*P^(-5/3)*A^(5/3)
30 yt <- y0-Fy/dFy
31 Er <- abs(yt-y0)
32 Si Er<0.0001 Entonces
33 Escribir ' Detenerse y mostrar'
34 SiNo
35 Escribir 'seguir compilando hasta llegar al error de 0.0001'
36 FinSi
37 FinPara
38 //salida de datos - RESULTADOS//
39 Escribir yt; // tirante
40
41 Fin Proceso
42
30
7.2 Diagrama de flujo
31
7.3 Codigo de programa
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <math.h>
// Definicin de constantes
#define Niter 40
#define Tol 1E-08
// Implementacin de funciones
float calculateRectangleArea(float b, float y);
float calculateRectanglePerimeter(float b, float y);
float derivArea(float b);
float derivPerimeter();
float calcFy(float A, float P, float C);
float calcDerivFy(float A, float P, float dA, float dP);
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowTitle("UNH CANALES");
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_btn_calcular_clicked()
{
// Defincion de variables
float
Q, // Caudal del Flujo en m3/s
b, // Base del cana rectangular (m)
s, // Pendiente del canal en (m/m)
n, // Coef. de rugosidad
y0, // Tirante Inicial
y; // Tirante del flujo (m)
float A, // rea
P, // permetro
dA, // Derivada del rea
dP, // Derivada del permetro
Fy, // Funcin principal
dFy, // Derivada de la funcion principal
C; // Constante
float Er ;
32
// Recepcin de datos
Q = ui->lineEdit_Q->text().toFloat();
b = ui->lineEdit_b->text().toFloat();
s = ui->lineEdit_s->text().toFloat();
n = ui->lineEdit_n->text().toFloat();
// Calculo de constantes
C = Q*n/sqrt(s);
// Calculos previos
// Clculo de rea
y = Q*b;
A = calculateRectangleArea(b,y);
P = calculateRectanglePerimeter(b,y);
// Proceso iterativo
y0 = 1.;
for (int i = 0; i < 40; ++i) {
qDebug("interacion # : %d",i+1);
A = calculateRectangleArea(b,y0);
P = calculateRectanglePerimeter(b,y0);
dA = derivArea(b);
dP = derivPerimeter();
Fy = calcFy(A,P,C);
dFy = calcDerivFy(A,P,dA, dP);
y = y0 - Fy/dFy;
/*----------------fabs para numeros flotantes -----------------------*/
Er = fabs(y-y0);
qDebug("el error es: %0.9f",Er);
if (Er< Tol){
break;
}
y0 = y;
ui->lineEdit_y->setText(QString::number(y));
}
// Creando la funcion de calcular rea
float calculateRectangleArea(float b, float y){
float area;
area = b*y;
return area;
}
// Creando la funcion de calcular el permetro
float calculateRectanglePerimeter(float b, float y){
33
float perimeter;
perimeter = b+2*y;
return perimeter;
}
// Funcion para calcular la derivada del rea
float derivArea(float b){
float dA;
dA = b;
return dA;
}
// Funcin principal
float calcFy(float A, float P, float C){
float Fy;
Fy = pow(A,5./3)*pow(P,-2./3) - C;
return Fy;
}
return dFy;
}
34
8 Programando para canal circular
8.1 Seudocodigo
1 Proceso canalCicurlar
2 Definir Q,X,S,N como Real
3 //Q, //Caudal del flujo (m3/s)
4 //X, //Diametro del canaL (m)
5 //S, //Pendiente del canal en (m/m)
6 //N; //Coef. de rugosidad
7 Definir C,Di,Df,A,DP,P,e,DA,b,Yt,F,DX Como Real
8 Definir R,V,T,NF,EE Como Real
9 //R, //radio hidraulico
10 //V, //velocidad del agua
11 //T,// Espejo de agua
12 //NF, //numero de froude
13 //EE; //energia especifica
14
15 definir I como entero
16 Q<-Qc
17 X<-Xc
18 S<-Sc
19 N<-Nc
20 C= Q*N/S^0.5
21 Di=0.1
22 Df=1.0
23 I=1
24 e=1
25 Mientras (e> .001) Hacer
26 b=2.0*3.1415-2.0*asen(4.0*X-X*X*4.0)^0.5
27 A=(b-sen(b))*Di*Di/8
28 P=0.5*b*Di
29 DA= (b-sen(b))*Di/4
30 DP=0.5*b
31 F= A^(5.0/3)*P^(-2.0/3)-C
32 DX=(5.0/3)*P^(-2.0/3)*A^(2.0/3)*DA-(2.0/3)*A^(5.0/3)*P^(-5.0/3)*DP
33 Di=Di-F/DX
34
35 Di=Di-F/DX;
36 Leer I,Di,A,P,DA,DP,F,DX,Df,e
37 I<-I+1
38 e=std
39 e = abs (Di-Df)
40 Df=Di
41
42 Fin Mientras
43
44 R<-A/P
45 Yt<-X*Df
46 T = 2.0*(Yt*Df-Yt*Yt)^(0.5)
47 v<-Q/A
48 NF<-V/(9.81*A/T)^(.5)
49 EE=Df+Q*Q/(2*9.81*A*A)
50 Si (NF>1) Entonces
51 Escribir "supercritico"
52 SiNo
53 Si (NF==1) Entonces
54 Escribir "critico"
55 SiNo
56 Escribir "subcritico"
57 Fin Si
58 Fin Si
59 //salida de datos - RESULTADOS//
60
61 Escribir " area en m2"
62 Escribir "perimetro en m"
63 Escribir "tirante en m "
64
65 Fin Proceso
66
35
8.2 Diagrama de flujo
36
8.3 Codigo del programa
CANAL_CIRCCC::~CANAL_CIRCCC()
{
delete ui;
}
void CANAL_CIRCCC::on_pushButton_clicked()
{
//=======================================================
======
//Definicion de Variables
float
Q, //Caudal del flujo (m3/s)
X, //Diametro del canaL (m)
S, //Pendiente del canal en (m/m)
N; //Coef. de rugosidad
//=======================================================
=========
//limpiar pantalla
QString Qc=ui->lineEdit->text();
QString Xc=ui->lineEdit_2->text();
QString Nc=ui->lineEdit_5->text();
QString Sc=ui->lineEdit_6->text();
// calculos previos
float C;
double
Di,Df,A,DP,P,e,DA,b,Y,F,DX;
double
R, //radio hidraulico
V, //velocidad del agua
T,// Espejo de agua
NF, //numero de froude
EE; //energia especifica
37
int I;
Q= Qc.toDouble();
X= Xc.toDouble();
S=Sc.toDouble();
N=Nc.toDouble();
C=Q*N/pow(S,.5);
Di=0.1;
Df=1.0;
I=1;
e=1;
while (e>.001)
{
//a=acos(-1.0+8.0*pow((1.0-X),2.0));
b=2.0*3.1415-2.0*asin(pow(4.0*X-X*X*4.0,0.5));
// A=1/8*(b-sin(b))*(Di*Di);
A=(b-sin(b))*Di*Di/8;
P=0.5*b*Di;
DA=(b-sin(b))*Di/4;
DP=0.5*b;
//DP=pow((1+Z1*Z1),.5)+pow((1+Z2*Z2),.5);
F=pow(A,5.0/3)*pow(P,-2.0/3)-C;
DX=(5.0/3)*pow(P,-2.0/3)*pow(A,2.0/3)*DA-(2.0/3)*pow(A,5.0/3)*pow(P,-5.0/3)*DP;
Di=Di-F/DX;
printf("%i\t%.8f\t%.8f\t%.4f\t%.4f\t%.4f\t%.4f\t%.4f\t%.4f\t%.4f\n",I,Di,A,P,DA,DP,F,DX,Df,e);
I++;
e=std::abs(Di-Df);
Df=Di;
}
R=A/P;
Y=X*Df;
T=2.0*pow(Y*Df-Y*Y,0.5);
V=Q/A;
NF=V/pow(9.81*A/T,.5);
EE=Df+Q*Q/(2*9.81*A*A);
if (NF>1){ui->lineEdit_15->setText("Supercritico");}
else if (NF==1){ui->lineEdit_15->setText("Critico");}
else {ui->lineEdit_15->setText("subcritico");}
ui->lineEdit_7->setText(QString ::number((Y)));
ui->lineEdit_10->setText(QString::number((P)));
ui->lineEdit_8->setText(QString::number((A)));
ui->lineEdit_12->setText(QString::number((R)));
ui->lineEdit_9->setText(QString::number((V)));
ui->lineEdit_11->setText(QString::number((T)));
ui->lineEdit_13->setText(QString::number((NF)));
ui->lineEdit_14->setText(QString::number((EE)));
//print("Area[m2]=\t%.41f\n",A);
//print("Perimetro[m]=\t %.41f\n",p);
//print("Tirante[m]=t %.41f \n",Yf);
}
void CANAL_CIRCCC::on_pushButton_2_clicked()
{
//limpiar pantalla
foreach(QLineEdit* le, findChildren<QLineEdit*>()) {
le->clear();
}
}
38
9 Programando para canal triangular
9.1 Seudocodigo
1 Proceso canalTRIANGULAR
2 Definir Q,b,s,Z1,Z2,y0, yt, A, P, R,EE,NF,dA,dP,Fy,dFy,C,V,T Como Real
3 // DEFINICIN DE VARIABLES
4 // Q, // Caudal del Flujo en m3/s
5 // b, // Base del cana triangular b=0 (m)
6 // s, // Pendiente del canal en (m/m)
7 // n, // Coef. de rugosidad
8 // Z1, // talud Z1
9 // Z2, // talud Z2
10 // y0, // Tirante Inicial
11 // yt; // Tirante del flujo (m)
12 // A, // rea
13 // P, // permetro
14 // R, //radio
15 // EE, // energia especifica
16 // NF, // numero de fruode
17 // dA, // Derivada del rea
18 // dP, // Derivada del permetro
19 // Fy, // Funcin principal
20 // dFy, // Derivada de la funcion principal
21 // C; // Constante
22 // float V; // velocidad
23 // float T; // espejo de agua
24 // CALCULO DE CONSTANTES//
25 C <- Q*n/rc(s)
26 yt <- Q*b
27 Y0=1
28 //PROCESO ITERATIVO
29 Para i=1 Hasta 40 Con Paso 1+1 Hacer
30 A= b*y0+((Z1+Z2)/2)*(y0)^(2);
31 perimeter = b+y0*(1+Z1*Z1)^(.5)+y0*(1+Z2*Z2)^(.5);
32 dA = b+(Z1+Z2)*y0;
33 dP = (1+Z1*Z1)^(.5)+(1+Z2*Z2)^(.5);
34 Fy = A^(5./3)*P^(-2./3) - C;
35 dFy = 5./3*A^( 2./3)*(P)^( -2./3)*dA -2./3*(A)^( 5./3)*(P)^(-5./3)*dP;
36 R = A/P;
37 V = Q/A;
38 NF = V/(9.81*A/T)^(.5);
39 EE =yt+Q*Q/(2*9.81*A*A);
40 Fin Para
41 //salida de datos - RESULTADOS//
42 Leer yt,R,V,T,A,P,NF,EE;
43 // SIENDO ESTOS EN LA SALIDA
44 //yt tirante
45 // R radio hidraulico
46 // V velocidad
47 // T espejo de agua
48 // A area
49 //NF numero de froude
50 //EE energia especifica
51 Fin Proceso
39
9.2 Diagrama de flujo
40
9.3 Codigo del programa
//Definicion de constantes
#define Niter 40
//Implementacion de funciones
float calculateRectangleArea(float b, float y0 ,float Z1, float Z2);
float calculateRectanglePerimeter(float b, float y0, float Z1, float Z2);
float derivArea(float b, float Z1, float Z2, float y0);
float derivPerimeter(float Z1, float Z2);
float calcFy(float A, float P, float C);
float calcDerivFy(float A, float P, float dA, float dP);
float calcradio(float A,float P);
float calcvelocidad( float Q, float A);
float calcespejodeagua(float b);
float calcnumerodefruode(float V, float A, float T);
float calcenergiaespecifica(float y, float Q, float A);
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowTitle("UNH CANALES ");
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_btn_calcular_clicked()
{
// Definicion de variables
float
Q, // Caudal del Flujo en m3/s
b, // Base del cana rectangular (m)
s, // Pendiente del canal en (m/m)
n, // Coef. de rugosidad
Z1, // talud Z1
Z2, // talud Z2
y0, // Tirante Inicial
y; // Tirante del flujo (m)
float A, // rea
P, // permetro
R, //radio
EE, // energia especifica
NF, // numero de fruode
41
dA, // Derivada del rea
dP, // Derivada del permetro
Fy, // Funcin principal
dFy, // Derivada de la funcion principal
C; // Constante
float V; // velocidad
float T; // espejo de agua
// Recepcin de datos
Q = ui->lineEdit_Q->text().toFloat();
b = ui->lineEdit_b->text().toFloat();
s = ui->lineEdit_s->text().toFloat();
n = ui->lineEdit_n->text().toFloat();
Z1 = ui->lineEdit_Z1->text().toFloat();
Z2 = ui->lineEdit_Z2->text().toFloat();
// Calculo de constantes
C = Q*n/sqrt(s);
// Calculos previos
// Clculo de rea
y = Q*b;
// Proceso iterativo
y0 = 1.;
for (int i = 0; i < 40; ++i) {
A = calculateRectangleArea(b,y0,Z1,Z2);
P = calculateRectanglePerimeter(b,y0,Z1,Z2);
R = calcradio(A,P);
V = calcvelocidad(Q,A);
T = calcespejodeagua(b);
EE = calcenergiaespecifica(y,Q,A);
dA = derivArea(b,Z1,Z2,y0);
dP = derivPerimeter(Z1,Z2);
NF = calcnumerodefruode(V,A,T);
Fy = calcFy(A,P,C);
dFy = calcDerivFy(A,P,dA, dP);
y = y0 - Fy/dFy;
y0 = y;
ui->lineEdit_y->setText(QString::number(y));
ui->lineEdit_A->setText(QString::number(A));
ui->lineEdit_P->setText(QString::number(P));
ui->lineEdit_V->setText(QString::number(V));
ui->lineEdit_R->setText(QString::number(R));
ui->lineEdit_T->setText(QString::number(T));
ui->lineEdit_NF->setText(QString::number(NF));
ui->lineEdit_EE->setText(QString::number(EE));
}
//creando una funcion para redondeo
double redondear(double n, int d)
{return round(n*pow(10,d))/pow(10,d);}
42
// Creando la funcion de calcular Area
float calculateRectangleArea(float b, float y0 ,float Z1, float Z2){
float area;
area = b*y0+((Z1+Z2)/2)*pow(y0,2);
return area;
}
// Creando la funcion de calcular el perimetro
float calculateRectanglePerimeter(float b, float y0, float Z1, float Z2){
float perimeter;
perimeter = b+y0*pow(1+Z1*Z1,.5)+y0*pow(1+Z2*Z2,.5);
return perimeter;
}
// Funcion para calcular la derivada del area
float derivArea(float b, float Z1, float Z2, float y0){
float dA;
dA = b+(Z1+Z2)*y0;
return dA;
}
// Fucnion principal
float calcFy(float A, float P, float C){
float Fy;
Fy = pow(A,5./3)*pow(P,-2./3) - C;
return Fy;
}
return dFy;
}
float calcradio(float A, float P){
float R;
R = A/P;
return R;
}
float calcvelocidad(float Q, float A){
float V;
V = Q/A;
return V;
}
43
float calcespejodeagua(float b){
float T;
T = b;
return T;
}
float calcnumerodefruode(float V, float A, float T){
float NF;
NF = V/pow(9.81*A/T,.5);
return NF;
}
float calcenergiaespecifica(float y, float Q, float A){
float EE;
EE =y+Q*Q/(2*9.81*A*A);
return EE;
}
void MainWindow::on_pushButton_clicked()
{
//limpiar pantalla
foreach (QLineEdit* le,findChildren<QLineEdit*>()) {
le->clear();
}
}
44
10 Programando para canal Trapezoidal
10.1 Seudocodigo
45
10.2 Diagrama de flujo
46
10.3 Codigo del programa
//Definicion de constantes
#define Niter 40
//Implementacion de funciones
float calculateRectangleArea(float b, float y0 ,float Z1, float Z2);
float calculateRectanglePerimeter(float b, float y0, float Z1, float Z2);
float derivArea(float b, float Z1, float Z2, float y0);
float derivPerimeter(float Z1, float Z2);
float calcFy(float A, float P, float C);
float calcDerivFy(float A, float P, float dA, float dP);
float calcradio(float A,float P);
float calcvelocidad( float Q, float A);
float calcespejodeagua(float b);
float calcnumerodefruode(float V, float A, float T);
float calcenergiaespecifica(float y, float Q, float A);
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowTitle("UNH CANALES ");
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_btn_calcular_clicked()
{
// Defincion de variables
float
Q, // Caudal del Flujo en m3/s
b, // Base del cana rectangular (m)
s, // Pendiente del canal en (m/m)
n, // Coef. de rugosidad
Z1, // talud Z1
Z2, // talud Z2
y0, // Tirante Inicial
y; // Tirante del flujo (m)
float A, // rea
P, // permetro
R, //radio
EE, // energia especifica
NF, // numero de fruode
dA, // Derivada del rea
dP, // Derivada del permetro
Fy, // Funcin principal
dFy, // Derivada de la funcion principal
C; // Constante
float V; // velocidad
47
float T; // espejo de agua
// Recepcin de datos
Q = ui->lineEdit_Q->text().toFloat();
b = ui->lineEdit_b->text().toFloat();
s = ui->lineEdit_s->text().toFloat();
n = ui->lineEdit_n->text().toFloat();
Z1 = ui->lineEdit_Z1->text().toFloat();
Z2 = ui->lineEdit_Z2->text().toFloat();
// Calculo de constantes
C = Q*n/sqrt(s);
// Calculos previos
// Clculo de rea
y = Q*b;
// Proceso iterativo
y0 = 1.;
for (int i = 0; i < 40; ++i) {
A = calculateRectangleArea(b,y0,Z1,Z2);
P = calculateRectanglePerimeter(b,y0,Z1,Z2);
R = calcradio(A,P);
V = calcvelocidad(Q,A);
T = calcespejodeagua(b);
EE = calcenergiaespecifica(y,Q,A);
dA = derivArea(b,Z1,Z2,y0);
dP = derivPerimeter(Z1,Z2);
NF = calcnumerodefruode(V,A,T);
Fy = calcFy(A,P,C);
dFy = calcDerivFy(A,P,dA, dP);
y = y0 - Fy/dFy;
y0 = y;
ui->lineEdit_y->setText(QString::number(y));
ui->lineEdit_A->setText(QString::number(A));
ui->lineEdit_P->setText(QString::number(P));
ui->lineEdit_V->setText(QString::number(V));
ui->lineEdit_R->setText(QString::number(R));
ui->lineEdit_T->setText(QString::number(T));
ui->lineEdit_NF->setText(QString::number(NF));
ui->lineEdit_EE->setText(QString::number(EE));
}
//creando una funcion para redondeo
double redondear(double n, int d)
{return round(n*pow(10,d))/pow(10,d);}
48
// Creando la funcion de calcular el perimetro
float calculateRectanglePerimeter(float b, float y0, float Z1, float Z2){
float perimeter;
perimeter = b+y0*pow(1+Z1*Z1,.5)+y0*pow(1+Z2*Z2,.5);
return perimeter;
}
// Funcion para calcular la derivada del rea
float derivArea(float b, float Z1, float Z2, float y0){
float dA;
dA = b+(Z1+Z2)*y0;
return dA;
}
// Funcion para calcular la derivada del permetro
float derivPerimeter(float Z1, float Z2){
float dP;
dP = pow(1+Z1*Z1,.5)+std::pow(1+Z2*Z2,.5);
return dP;
}
// Fucnion principal
float calcFy(float A, float P, float C){
float Fy;
Fy = pow(A,5./3)*pow(P,-2./3) - C;
return Fy;
}
return dFy;
}
float calcradio(float A, float P){
float R;
R = A/P;
return R;
}
float calcvelocidad(float Q, float A){
float V;
V = Q/A;
return V;
}
float calcespejodeagua(float b){
float T;
T = b;
return T;
}
float calcnumerodefruode(float V, float A, float T){
float NF;
NF = V/pow(9.81*A/T,.5);
return NF;
}
float calcenergiaespecifica(float y, float Q, float A){
float EE;
EE =y+Q*Q/(2*9.81*A*A);
return EE;
49
}
void MainWindow::on_pushButton_clicked()
{
//limpiar pantalla
foreach (QLineEdit* le,findChildren<QLineEdit*>()) {
le->clear();
}
}
50
11 Conclusiones.
Despues de haber terminado de realizar los diferentes programas para distintos tipos de canales, he
logrado conocer el funcionamiento de cada uno de ellos, por ejemplo el canal triangular es muy
recomendable para todos los tipos de carreteras, en sus diferentes dimensiones.
El canal trapezoidal es muy usada para fines de traslado de agua, para sus diferentes objetivos
podrian ser para fines agrarios, entre otros.
El canal circular existe en sus diferentes estructuras, pueden ser en PVC o de concreto, con esto
los canales de cada material nombrado cambian su rugosidad respectivamente, actualmente en
los diferentes tipos de obras, mayormente usan PVC por el mismo hecho del material y no tiene
el peso como del concreto, la rugosidad es muy baja.
Los canales circulares de concreto son usados mayormente en alcantarilla en las carreteras, por
el mismo hecho de soportar altas cargas.
Con los programas realizados se podran calcular los diferentes elementos de cualquier canal, y
servira para diseno, los proyectos a realizar (obras) en la Sociedad.
El canal trapezoidal y el canal triangular no tienen mucha diferencia, solo en la base, el trian-
gular tiene base cero y el canal trapezoidal si tiene base.
Los diferentes canales desarrollados, son muy contruidos y puestos en obras muy seguido .
51
12 Recomendaciones
Se recomienda usar el programa para el diseno de canales, para proyectos u obras para el calculo
exacto de las medidas a usar o contruir los diferentes canales.
Existen mucho ingenieros que se reusan a aprender la programacion, este tema es muy im-
portante para ser un buen ingeniero, te permite ver el mundo de otro contexto, se recomienda
adaptarse a la programacion.
Se debe comprobar el canal trapezoidal con el triangular, tan solo colocando en base 0 para el
canal triangular, ambos canales coinciden mucho en resolucion de los diferentes tipos de datos
a insertar.
52
13 Bibliografa
MANUAL :Criterios de disenos de obras hidraulicas para la formulacion de proyectos hidrauli-
cos multisectoriales y afianzamiento hidrico.
AUTOR:Autoridad nacional del agua.
Hidraulica de canales.
AUTOR:Maximo VILLON BEJAR. PRIMER CAPITULO : Canales definicion y principios
basicos.
53
14 Anexos
14.1 Panel fotografico
54
Figure 19: Para canal circular.
55
Figure 20: Para canal triangular.
56
Figure 21: Para canal trapezoidal.
57