Está en la página 1de 10

Desarrollo de Software para Diseño de canales abiertos

Expositor: Bach. César Jorge Corrales Guillermo


Asesora: MSc. Ing. Sissi Santos Hurtado
Facultad de Ciencias Físicas
E.A.P. De Ingeniería Mecánica de Fluidos
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

Introducción:
El desarrollo de software en el área de la ingeniería ha tenido un crecimiento progresivo en los
últimos años, teniendo en cuenta que la mayoría de estos programas son extranjeros, tales
como AutoCAD , Datamine, ArcView, ER Mapper, etc.
Se ha impulsado el desarrollo de software para solucionar problemas cotidianos de ingeniería,
en este oportunidad, para el diseño de canales abiertos, teniendo en cuenta que este programa
ha sido desarrollado y diseñado en ActionScript 2.0 (el lenguaje de programación de
Macromedia Flash), siendo este escogido por sus limitaciones respecto a cálculos, y por su
gran capacidad en entornos visuales programables, , haciendo de conocimiento público que el
desarrollo de software en el área de la ingeniería en el Perú es sumamente viable y necesario.

1. Fundamentos teóricos para Diseño de Canales abiertos

El fundamento teórico es sumamente conocido, teniendo como base el libro “Hidráulica de


Canales” de Máximo Villón Béjar., entre otros.

Generalidades.-
En un proyecto de irrigación la parte que comprende el diseño de los canales y obras de arte,
si bien es cierto que son de vital importancia en el costo de la obra, no es lo más importante
puesto que el caudal, factor clave en el diseño y el más importante en un proyecto de riego, es
un parámetro que se obtiene sobre la base del tipo de suelo, cultivo, condiciones climáticas,
métodos de riego, etc., es decir mediante la conjunción de la relación agua – suelo – planta y
la hidrología, de manera que cuando se trata de una planificación de canales, el diseñador
tendrá una visión mas amplia y será mas eficiente, motivo por lo cual el ingeniero agrícola
destaca y predomina en un proyecto de irrigación.

Diseño de secciones hidráulicas.-


Se debe tener en cuenta ciertos factores, tales como: tipo de material del cuerpo del canal,
coeficiente de rugosidad, velocidad máxima y mínima permitida, pendiente del canal, taludes,
etc.
A R2 3
 S1 2
Q
n

La ecuación más utilizada es la de Manning o Strickler, y su expresión es:


donde:
Q = Caudal (m3/s)
n = Rugosidad
A = Area (m2)
R = Radio hidráulico = Area de la sección húmeda / Perímetro húmedo
.S = Pendiente del canal.
Criterios de diseño.- Se tienen diferentes factores que se consideran en el diseño de canales,
aunque el diseño final se hará considerando las diferentes posibilidades y el resultado será
siempre una solución de compromiso, porque nunca se podrán eliminar todos los riesgos y
desventajas, únicamente se asegurarán que la influencia negativa sea la mayor posible y que la
solución técnica propuesta no sea inconveniente debido a los altos costos.
Rugosidad.- Esta depende del cauce y el talud, dado a las paredes laterales del mismo,
vegetación, irregularidad y trazado del canal, radio hidráulico y obstrucciones en el canal,
generalmente cuando se diseña canales en tierra se supone que el canal está recientemente
abierto, limpio y con un trazado uniforme, sin embargo el valor de rugosidad inicialmente
asumido difícilmente se conservará con el tiempo, lo que quiere decir que en la práctica
constantemente se hará frente a un continuo cambio de la rugosidad. La siguiente tabla nos da
valores de "n" estimados, estos valores pueden ser refutados con investigaciones y manuales,
sin embargo no dejan de ser una referencia para el diseño:

Tabla 1. Valores de rugosidad "n" de Manning


N SUPERFICIE
0.01 Muy lisa, vidrio, plástico, cobre.
0.011 Concreto muy liso.
0.013 Madera suave, metal, concreto,frotachado.
0.017 Canales de tierra en buenas condiciones.
0.02 Canales naturales de tierra, libres de vegetación.
0.025 Canales naturales con alguna vegetación y piedras esparcidas en el fondo.
0.035 Canales naturales con abundante vegetación.
0.04 Arroyos de montaña con muchas piedras.

Tabla 2. Relaciones geométricas de las secciones transversales más frecuentes.


Área hidráulica Perímetro mojado Radio hidráulico Espejo de agua
Sección A P P T

b y b  2 y b y b
b  2 y

(b  z  y ) y b  2  y  1 z2 (b  z  y ) y b  2 z y
b  2 y  1 z2

z  y2 2  y  1 z2 zy 2 z  y
2  1 z 2

 
sen   D
(  sen( ))  D 2  D  sen( )  D 2
1    4 ó
8 2
2 y   D  y

2 8 y2 2 T 2  y 3 A
T  y T
3 3T 3T  8  y2 2 y
Talud apropiado según el tipo de material.- La inclinación de las paredes laterales de un
canal, depende de varios factores pero en especial de la clase de terreno donde están alojados,
la U.S. BUREAU OF RECLAMATION recomienda un talud único de 1,5:1 para sus canales,
a continuación se presenta un cuadro de taludes apropiados para distintos tipos de material:
Tabla 3. Taludes apropiados para distintos tipos de material
TALUD (Horizontal -
MATERIAL Vertical)
Roca Prácticamente vertical
Suelos de turba y detritos 0.25 : 1
Arcilla compacta o tierra con recubrimiento de concreto 0.5 : 1 hasta 1:1
Tierra con recubrimiento de piedra ó tierra en grandes
canales 1:1
Arcilla firma o tierra en canales pequeños 1.5 : 1
Tierra arenosa suelta 2:1
Greda arenosa ó arcilla porosa 3:1

Fuente: Aguirre Pe, Julián, "Hidráulica de canales", Dentro Interamericano de Desarrollo de


Aguas y Tierras – CIDIAT, Merida, Venezuela, 1974

Tabla 4. Pendientes laterales en canales según tipo de suelo


MATERIAL CANALES POCO CANALES PROFUNDOS
PROFUNDOS
Roca en buenas condiciones Vertical 0.25 : 1
Arcillas compactas ó 0.5 : 1 01:01
conglomerados
Limos arcillosos 1:1 1.5 : 1
Limos arenosos 1.5 : 1 2:1
Arenas sueltas 2:1 3:1
Concreto 1:1 1.5 : 1

Fuente: Aguirre Pe, Julián, "Hidráulica de canales", Dentro Interamericano de Desarrollo de


Aguas y Tierras – CIDIAT, Merida, Venezuela, 1974

Velocidades máxima y mínima permisible.- La velocidad mínima permisible es aquella


velocidad que no permite sedimentación, este valor es muy variable y no puede ser
determinado con exactitud, cuando el agua fluye sin limo este valor carece de importancia,
pero la baja velocidad favorece el crecimiento de las plantas, en canales de tierra, da el valor
de 0.762 m/seg. Como la velocidad apropiada que no permite sedimentación y además impide
el crecimiento de plantas en el canal.
La velocidad máxima permisible, algo bastante complejo y generalmente se estima empleando
la experiencia local o el juicio del ingeniero; las siguientes tablas nos dan valores sugeridos.
Tabla 5. Máxima velocidad permitida en canales no recubiertos de vegetación

MATERIAL DE LA CAJA DEL "n" Velocidad (m/s)


CANAL Manning Agua Agua con Agua transportando
limpi partículas arena, grava o
a coloidales fragmentos
Arena fina coloidal 0.02 1.45 0.75 0.45
Franco arenoso no coloidal 0.02 0.53 0.75 0.6
Franco limoso no coloidal 0.02 0.6 0.9 0.6
Limos aluviales no coloidales 0.02 0.6 1.05 0.6
Franco consistente normal 0.02 0.75 1.05 0.68
Ceniza volcánica 0.02 0.75 1.05 0.6
Arcilla consistente muy coloidal 0.025 1.13 1.5 0.9
Limo aluvial coloidal 0.025 1.13 1.5 0.9

Pizarra y capas duras 0.025 1.8 1.8 1.5


Grava fina 0.02 0.75 1.5 1.13
Suelo franco clasificado no 0.03 1.13 1.5 0.9
coloidal
Suelo franco clasificado coloidal 0.03 1.2 1.65 1.5
Grava gruesa no coloidal 0.025 1.2 1.8 1.95
Gravas y guijarros 0.035 1.8 1.8 1.5

Fuente: Krochin Sviatoslav. "Diseño Hidráulico", Ed. MIR, Moscú, 1978


Para velocidades máximas, en general, los canales viejos soportan mayores velocidades que
los nuevos; además un canal profundo conducirá el agua a mayores velocidades sin erosión,
que otros menos profundos.

Tabla 6. Velocidades máximas en hormigón en función de su resistencia.

RESISTENCIA, PROFUNDIDAD DEL TIRANTE EN METROS

en kg/cm2 0.5 1 3 5 10
50 9.6 10.6 12.3 13 14.1
75 11.2 12.4 14.3 15.2 16.4
100 12.7 13.8 16 17 18.3
150 14 15.6 18 19.1 20.6
200 15.6 17.3 20 21.2 22.9

Fuente: Krochin Sviatoslav. "Diseño Hidráulico", Ed. MIR, Moscú, 1978


Esta tabla DC10, da valores de velocidad admisibles altos, sin embargo la U.S. BUREAU OF
RECLAMATION, recomienda que para el caso de revestimiento de canales de hormigón no
armado, las velocidades no deben exceder de 2.5 m/seg. Para evitar la posibilidad de que el
revestimiento se levante.
Borde libre.- Es el espacio entre la cota de la corona y la superficie del agua, no existe
ninguna regla fija que se pueda aceptar universalmente para el calculo del borde libre, debido
a que las fluctuaciones de la superficie del agua en un canal, se puede originar por causas
incontrolables.
BordeLibre  Cy

La U.S. BUREAU OF RECLAMATION recomienda estimar el borde libre con la siguiente


formula:
donde: Borde libre: en pies.
C = 1.5 para caudales menores a 20 pies3 / seg., y hasta 2.5 para caudales del orden de los
3000 pies3/seg.
Y = Tirante del canal en pies
La secretaría de Recursos Hidráulicos de México, recomienda los siguientes valores en
función del caudal:
Tabla 7. Borde libre en función del caudal

Caudal m3/seg Revestido (cm) Sin revestir (cm)


<= 0.05 7.5 10
0.05 – 0.25 10 20
0.25 – 0.50 20 40
0.50 – 1.00 25 50
> 1.00 30 60

Fuente: Ministerio de Agricultura y Alimentación, Boletín Técnico N- 7 "Consideraciones


Generales sobre Canales Trapezoidales" Lima 1978
Máximo Villón Béjar, sugiere valores en función de la plantilla del canal:

Tabla 8. Borde libre en función de la plantilla del canal

Ancho de la plantilla (m) Borde libre (m)


Hasta 0.8 0.4
0.8 – 1.5 0.5
1.5 – 3.0 0.6
3.0 – 20.0 1.0

Fuente Bibliográfica: Villón Béjar, Máximo; "Hidráulica de canales", Dpto. De Ingeniería


Agrícola – Instituto Tecnológico de Costa Rica, Editorial Hozlo, Lima, 1981

Tramo curvo de un canal


2. Definición de programa y sus fases de desarrollo

¿Qué es un programa?
 Es un conjunto de acciones específicas, ordenadas secuencialmente en el tiempo, para
obtener resultados preestablecidos en relación a la elaboración de un proyecto ó la
construcción de una realidad. El programa constituye la parte instrumental de un plan
y obedece a los lineamientos y disposiciones del mismo.
¿Qué es un programa de computadora?
 Es un conjunto de instrucciones dirigidas a la computadora para que esta lleve a cabo
una secuencia de acciones con el objetivo de realizar una o más operaciones que
permitan solucionar un problema, de acuerdo a los datos que se le ingrese.

En el desarrollo de un programa computacional resulta necesario definir criterios para medir


su comportamiento o rendimiento. Estos criterios se centran especialmente en su simplicidad y
en su eficiencia.

Un programa consta de las siguientes partes, viendo el diagrama de flujos::

Siendo las fases del desarrollo de un programa:


1. Diseño
 Análisis: Examinar el problema y plantear una solución.
 Algoritmo: Es la representación de la secuencia de calculo para resolver problemas.
 Codificación: Es la escritura de un lenguaje de programación.

2. Puesta a punto
 Edición: Digitación del programa en la Computadora.
 Compilación: Traducción del programa diseñado a ejecutable, ya sea por plugins ó no.
 Ejecución: Fase donde corre el programa, con datos de prueba y se verifica el
correcto funcionamiento para diferentes casos.
 Calibración: Fase donde se calibra el programa perfeccionándolo mediante
parámetros nuevos y estimables, y corrigiendo errores para una mayor eficiencia.

3. Descripción del programa desarrollado


El software desarrollado es una actualización del programa HCANALES de Máximo Villón
Béjar, desarrollado en ActionScript 2.0 el lenguaje de programación de Macromedia Flash,
con las siguientes mejoras:
 Menú dinámico.
 Posibilidad de variar el valor de la gravedad.
 Posibilidad de variar el coeficiente de Coriolis.
 Posibilidad de variar el número de decimales.
 Personalizar el grosor de pared del canal.
 Ventana de recomendaciones posibles para cada dato que ha de ingresar.
 Gráfico ajustado del canal respecto a las datos que se le indica (Ayuda visual).
 Transiciones.
El programa desarrollado comienza con un intro, y luego pasa a un menú dinámico, dando al
usuario acceso a varias opciones:
1. Tirante Normal
2. Tirante Crítico
3. Resalto Hidráulico
4. Remanso
5. Caudales
6. Transiciones
7. Otros
8. Ayuda al usuario
9. Impresión
Teniendo en cuenta que en este programa no se pueden derivar formulas, ni hacer iteraciones
automáticas como en otros programas especializados para cálculos matemáticos, se adicionó
sentencias de programación tales como funciones derivadas ya establecidas, y el método de
Newton Raphson.

4. Análisis de un algoritmo para hallar tirante crítico mediante Newton Raphson

Método de Newton Raphson

El Método de Newton-Raphson es ampliamente utilizado para encontrar las raíces de la


ecuación f(x)=0, ya que converge rápidamente, la contra es que uno debe conocer la derivada
de f(x) y se necesita una aproximación inicial a la raíz.
Tenemos la nueva variable a hallar, mediante la variable actual, restando a la división de la
función respecto a dicha variable, sobre la derivada de dicha función.

 f  X n 1  
X n  X n 1   
 f  X 
n 1 

Ecuación para despejar la variable Xn , Gráfica de Función de X, y la derivada de


Según el porcentaje de error absoluto. dicha Función.

Para nuestro caso, le hemos colocado un valor inicial de tirante y  1000 , junto con el
porcentaje de error absoluto a conseguir, de 0.5  10 9 , luego operamos:

  X 
% ErrorAbsol uto  Abs1   n1   100
  X n 
Si el porcentaje de error absoluto hallado no alcanza a ser menor que el porcentaje de error
absoluto a conseguir, entonces se declara:
X n 1  X n
Y se vuelve a repetir la operación hasta que se alcance un valor menor al error absoluto de
0.5  10 9 . Tal cual, el valor X n Hallado será el valor del tirante del canal.
El siguiente algoritmo que vamos a analizar se basa en hallar el tirante crítico para canales
rectangulares, omitiremos las sentencias dedicadas a generar el grafico, por cuestiones de
espacio, sin embargo, ello constará en el programa.

Programa en la seccion tirante crítico

// amplia pantalla al maximo


fscommand("fullscreen", "true");
stop();
// al llenar los datos
botonces.onRelease = function() {
//verifica si se han llenado los datos requeridos
if (isNaN((b001.text)*(z001.text)) == true || q001.text<=0 || q001.text == null ||
q001.text == "" || b001.text<0 || b001.text == null || b001.text == "" || z001.text<0 || z001.text
== null || z001.text == "" || gr001.text<=0 || gr001.text == null || gr001.text == "") {
//if (q001.text<=0 || q001.text == null || q001.text == "") {
trace("error: completa los datos adecuadamente");
gotoAndStop("error");
} else {
//si los datos han sido colocados todos, entonces se procede a la siguiente clausula
// de verificacion
if (b001.text == 0 and z001.text == 0) {
// b y z no pueden tener el valor cero, los dos a la vez
trace("error:los valores b z son iguales a cero");
gotoAndStop("error2");
} else {trace("los valores b z diferentes a cero");
//gotoAndStop("confirm");
// aqui comienza la clausula que ejecuta la operación
//tratamos aquí con el metodo de Newton Raphson, para hallar el tirante
//El valor del tirante que hemos puesto en esta oportunidad para ajustar en la
//ecuación es 1000
yy = 1000;
//el valor del error absoluto a conseguir es el siguiente 0.5  10 9
eeaa = 0.0000000005;
//el valor del error absoluto inicial es el siguiente
eeaa2 = 100;
//la gravedad especificada desde un menú anterior ( por lo general es 9.80665 )
grav = xxgrav;
//el coef. de coriolis especificado en un menú anterior( por lo general siempre es 1)
coriol = xxcoriol;
//la declaracion de variables locales
q = Number(q001.text);
b = Number(b001.text);
z = Number(z001.text);
//el valor de grosor de la pared
aaa = Number(gr001.text);
aaa2 = aaa*z;
aaahipot = Math.sqrt((Math.pow(aaa, 2))+(Math.pow(aaa2, 2)));

//aqui comienza Newton raphson


//………….. hacer la siguiente operacion…….
do {
eccy11 = ((Math.pow(q, 2))/grav)*(b+2*z*yy);
eccy12 = Math.pow((b+z*yy)*yy, 3);
//ecuación ajustada f(X) = 0
eccy13 = Math.round((eccy11-
eccy12)*10000000000000000000)/10000000000000000000;
eccy11deriv = ((Math.pow(q, 2))/grav)*(2*z);
eccy12deriv = z*yy+(b+z*yy)*3*(Math.pow((b+z*yy)*yy, 2));

// derivada de la ecuacion ajustada f´(X) = 0


eccy13deriv = Math.round((eccy11deriv-
eccy12deriv)*10000000000000000000)/10000000000000000000;
y11 = Math.round((yy-
(eccy13/eccy13deriv))*10000000000000000000)/10000000000000000000;
eeaa2 = Math.abs(Math.round((1-
(yy/y11))*10000000000000000000)/10000000000000000000)*100;
yy = Number(y11);
//…….mientras el valor absoluto incial sea mayor al valor absolute a alcanzar
} while (eeaa2>eeaa);
//declaración de resultados
yyy = yy;
yy = 1000;
eeaa2 = 100;
//tirante
y001.text = yyy;
//area
a001.text = (b+z*yyy)*yyy;
//espejo de agua
t001.text = b+2*z*yyy;
//perimetro mojado
p001.text = b+(2*yyy*Math.sqrt(1+Math.pow(z, 2)));
//radio hidráulico
r001.text = ((b+z*yyy)*yyy)/(b+(2*yyy*Math.sqrt(1+Math.pow(z,
2))));
//velocidad
v001.text = q/((b+z*yyy)*yyy);
// Número de Froude
f001.text = (q/((b+z*yyy)*yyy))/Math.sqrt((grav*(((b+z*yyy)*yyy)/
(b+2*z*yyy))));
// Tipo de flujo
if (f001.text<1) { tipo001.text = "Subcrítico";
} else {if (f001.text>1) { tipo001.text = "Supercrítico";
}
else {tipo001.text = "Crítico"; }}
// energía específica
ee001.text = yyy+coriol*(Math.pow(q/((b+z*yyy)*yyy), 2)/(2*grav));

// verificación de tipo de canal


if (b001.text == 0 and z001.text>0) {
trace("triangular");
// incluir operador para dibujo de canal triangular
} else { if (b001.text>0 and z001.text == 0) {
trace("rectangular");
// incluir operador para dibujo de canal rectangular
} else { if (b001.text>0 and z001.text>0) {
trace("trapezoidal");
// incluir operador para dibujo de canal
trapezoidal
// incluido el operador fuente
}}}}
//parametrización del área a graficar de acuerdo al tipo de canal
//Sentencias obviadas por razones de espacio =)
} trace("alfin"); }
//y se termina la clausula (en la cual se ejecuta el operador), dando por entendido
que si los datos //requeridos no han sido todos colocados, se le envia al usuario un
mensaje especificando el error, luego vuelve al programa para que siga operando
};
//este boton limpia la pantalla de datos, asi como de graficos
Botonces2.onRelease = function() {
gotoAndStop("limpiar pantalla"); };
//este boton nos envia al area de impresión predeterminado
botonces3.onRelease = function() {
gotoAndStop("impresion"); };
//Este boton suelta una ventana de ayuda
botonces4.onRelease = function() {
gotoAndStop("ayuda"); };
//Este boton nos lleva al menu interactivo
botonces5.onRelease = function() {
gotoAndStop("menucubo"); };

5. Conclusiones

1. La fase más importante del desarrollo de un programa es la elaboración de éste y la


simulación de acuerdo a diferentes datos que se le ingrese, tal cual sea luego calibrado
para una mayor eficiencia.
2. Habiéndose creado este programa en ActionScript 2.0, Se da por entendido que no es
necesario centrarse en un lenguaje de programación especializado para empezar a
programar en el área de la ingeniería, y que el investigador peruano tiene las
suficientes facultades para desarrollar sus propios programas de acuerdo a su visión de
progreso y desarrollo.

También podría gustarte