Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tesis 1095 - Naranjo Bustos César Sebastián
Tesis 1095 - Naranjo Bustos César Sebastián
TEMA:
Ambato Ecuador
2016
CERTIFICACIN DEL TUTOR
Yo, Ing. M. Sc. Rodrigo Acosta, certifico que el presente trabajo bajo el tema:
DESARROLLO DE UN SOFTWARE PARA EL CLCULO DE CANALES
ABIERTOS DE FLUJO UNIFORME, es de autora del Sr. Csar Sebastin Naranjo
Bustos, el mismo que ha sido realizado bajo mi supervisin y tutora.
________________________________
Ing. M. Sc. Rodrigo Acosta.
II
AUTORA
Yo, Csar Sebastin Naranjo Bustos con C.I: 1805066527-7, egresado de la Facultad
de Ingeniera Civil y Mecnica de la Universidad Tcnica de Ambato, certifico por
medio de la presente que el trabajo con el tema: DESARROLLO DE UN
SOFTWARE PARA EL CLCULO DE CANALES ABIERTOS DE FLUJO
UNIFORME, es de mi completa autora.
________________________________
Csar Sebastin Naranjo Bustos.
III
DERECHOS DE AUTOR
Autor
________________________________
Csar Sebastin Naranjo Bustos.
IV
APROBACIN DEL TRIBUNAL DE GRADO
________________________________ ________________________________
Ing. Mg. Galo Nez Ing. Mg. Fabin Morales.
V
DEDICATORIA
De manera especial dedico este trabajo a DIOS, por haberme dado la fuerza y
voluntad de luchar para culminar una meta ms en mi vida.
A mis padres Javier y Roco quienes han hecho todo cuanto ha estado a su alcance
para que yo pudiera alcanzar cada una de las metas que me he propuesto,
alentndome y apoyndome en cada paso que he dado an cuando se vea difcil. A
ellos quienes me han brindado siempre su apoyo, amor, cario y paciencia.
A mi hermano Mathas a quien amo y que ha sido mi inspiracin para poder ser un
ejemplo en su vida, quien comprendio varias veces mi falta a su lado para as cumplir
con una meta ms.
VI
AGRADECIMIENTO
Agradezco principalmente a Dios por ser el gua espiritual en mi vida y darme salud
y vida para superarme a diario.
A mi madre celestial la virgen del Perpetuo Socorro y al Divino nio Jess por ser
los protectores de mi vida.
A mis padres que me dieron la vida y su ejemplo de lucha y constancia para cumplir
los objetivos que me he propuesto en mi vida.
A mi hermano por ser quien inspira cada uno de mis das y me da una razn ms para
superarme.
A la Ing. Maritza Urea y a los Ingenieros Fabin Morales y Juan Grarcs por
compartir sus conocimientos encaminndome en la realizacin de este trabajo.
A todos mis maestros mis ms profundos agradecimientos por haber impartido todos
sus conocimientos para poder crecer profesionalmente.
VII
NDICE GENERAL DE CONTENIDOS
A. PGINAS PRELIMINARES
UNIVERSIDAD TCNICA DE AMBATO .............................................................. I
CERTIFICACIN DEL TUTOR ............................................................................. II
AUTORA...III
DERECHOS DE AUTOR...................................................................................... IV
APROBACIN DEL TRIBUNAL DE GRADO ...................................................... V
DEDICATORIA .................................................................................................... VI
AGRADECIMIENTO .......................................................................................... VII
NDICE GENERAL DE CONTENIDOS ............................................................. VIII
NDICE DE TABLAS ......................................................................................... XIII
NDICE DE FIGURAS ........................................................................................XIV
RESUMEN EJECUTIVO ..................................................................................... XV
SUMMARY.....XVI
B. TEXTO
CAPTULO I ........................................................................................................... 1
ANTECEDENTES .................................................................................................. 1
1.1. TEMA DEL TRABAJO EXPERIMENTAL ....................................... 1
1.2. ANTECEDENTES ............................................................................. 1
1.3. JUSTIFICACIN ............................................................................... 3
1.4. OBJETIVOS....................................................................................... 4
1.4.1. General ............................................................................................... 4
1.4.2. Especficos ......................................................................................... 4
CAPTULO II .......................................................................................................... 5
FUNDAMENTACIN ............................................................................................ 5
2.1. FUNDAMENTACIN TERICA ..................................................... 5
2.1.1. Canales abiertos .................................................................................. 5
2.1.2. Geometra de los canales..................................................................... 5
2.1.2.1. Elementos geomtricos de una seccin de canal. ................................. 8
2.1.2.1.1. Profundidad del flujo. ......................................................................... 8
2.1.2.1.2. Nivel................................................................................................... 9
2.1.2.1.3. Ancho superficial. ............................................................................... 9
VIII
2.1.2.1.4. rea mojada. ...................................................................................... 9
2.1.2.1.5. Permetro mojado ............................................................................... 9
2.1.2.1.6. Radio hidrulico ................................................................................10
2.1.2.1.7. Profundidad hidrulica .......................................................................10
2.1.2.1.8. Factor de seccin para el clculo del flujo crtico ...............................10
2.1.2.1.9. Factor de seccin para el clculo del flujo uniforme. ..........................10
2.1.3. Estado de flujo en canales abiertos .....................................................11
2.1.3.1. Efecto de la gravedad .........................................................................11
2.1.3.1.1. Nmero de Froude .............................................................................11
2.1.3.1.1.1. Flujo crtico .......................................................................................12
2.1.3.1.1.2. Flujo subcrtico ..................................................................................12
2.1.3.1.1.3. Flujo supercrtico ...............................................................................12
2.1.4. Flujo uniforme en canales abiertos .....................................................12
2.1.5. Pendiente del canal ............................................................................13
2.1.5.1. Formas para expresar la pendiente .....................................................14
2.1.6. Ecuacin de Manning ........................................................................15
2.1.6.1. Valores del coeficiente de rugosidad de Manning ..............................16
2.1.6.1.1. Factores que afectan el coeficiente de rugosidad de Manning .............16
2.1.6.1.1.1. Resumen de los valores de n que afectan el coeficiente de rugosidad de
Manning..20
2.1.7. Clculo del flujo uniforme .................................................................21
2.1.7.1. El factor de seccin para el clculo del flujo uniforme .......................22
2.1.7.2. Clculo de la pendiente normal y crtica.............................................24
2.1.7.3. Problemas de clculo de flujo uniforme .............................................24
2.1.8. Diseo de canales con flujo uniforme.................................................26
2.1.9. Seccin hidrulica ptima ..................................................................26
2.1.9.1. Notas de la seccin hidrulica ptima ................................................28
2.1.10. Energa. .............................................................................................28
2.1.10.1. Energa especfica ..............................................................................31
2.1.10.2. Curvas de energa especfica ..............................................................31
2.1.10.2.1. Caractersticas de la curva de energa .................................................33
2.1.11. Flujo crtico .......................................................................................34
2.1.11.1. Condiciones del flujo crtico ..............................................................36
IX
2.1.11.2. Determinacin del flujo crtico...........................................................37
2.1.11.3. El factor de seccin para el clculo del flujo crtico ............................39
2.2. HIPTESIS .......................................................................................39
2.3. SEALAMIENTO DE LAS VARIABLES DE LA HIPTESIS .......40
2.3.1. Variable independiente ......................................................................40
2.3.2. Variable dependiente .........................................................................40
CAPTULO III .......................................................................................................41
METODOLOGA ...................................................................................................41
3.1. NIVEL O TIPO DE INVESTIGACIN ............................................41
3.2. POBLACIN Y MUESTRA .............................................................41
3.2.1. Poblacin ...........................................................................................41
3.2.2. Muestra .............................................................................................41
3.3. OPERACIONALIZACIN DE VARIABLES...................................42
3.3.1. Variable independiente ......................................................................42
3.3.2. Variable dependiente .........................................................................43
3.4. PLAN DE RECOLECCIN DE INFORMACIN ............................44
3.5. PLAN DE PROCESAMIENTO Y ANLISIS...................................44
CAPTULO IV .......................................................................................................45
ANLISIS E INTERPRETACIN DE RESULTADOS.........................................45
4.1. RECOLECCIN DE DATOS ...........................................................45
4.1.1. EJEMPLO PARA EL CLCULO DEL TIRANTE NORMAL DE
UNA SECCIN TRAPEZOIDAL ..........................................................................45
4.1.1.1. MTODO MANUAL ........................................................................46
4.1.1.2. MTODOCON UN SOFTWARE EXISTENTE ................................51
4.1.1.3. MTODO CON EL SOFTWARE DESARROLLADO .....................51
4.1.2. EJEMPLO PARA EL CLCULO DEL TIRANTE CRTICO DE UNA
SECCIN TRAPEZOIDAL. ..................................................................................52
4.1.2.1. MTODO MANUAL ........................................................................52
4.1.2.2. MTODO CON UN SOFTWARE EXISTENTE ...............................56
4.1.2.3. MTODO CON EL SOFTWARE DESARROLLADO .....................57
4.1.3. EJEMPLO PARA EL CLCULO DEL CAUDAL DE UNA
SECCIN CIRCULAR ..........................................................................................57
4.1.3.1. MTODO MANUAL ........................................................................58
X
4.1.3.2. MTODO CON UN SOFTWARE EXISTENTE ...............................60
4.1.3.3. MTODO CON EL SOFTWARE DESARROLLADO .....................61
4.1.4. EJEMPLO PARA EL CLCULO DE LOS ELEMENTOS
GEOMTRICOS DE UN CANAL TRIANGULAR CON FONDO
REDONDEADO.61
4.1.4.1. MTODO MANUAL ........................................................................62
4.1.4.2. MTODO CON EL SOFTWARE DESARROLLADO .....................64
4.1.5. EJEMPLO PARA EL CLCULO DE LA SECCIN HIDRULICA
PTIMA.64
4.1.5.1. MTODO MANUAL ........................................................................65
4.1.5.2. MTODOCON UN SOFTWARE EXISTENTE ................................68
4.1.5.3. MTODO CON EL SOFTWARE DESARROLLADO .....................68
4.2. ANLISIS DE RESULTADOS.........................................................69
4.3. VERIFICACIN DE HIPTESIS .....................................................70
CAPTULO V ........................................................................................................71
CONCLUSIONES Y RECOMENDACIONES .......................................................71
5.1. CONCLUSIONES .............................................................................71
5.2. RECOMENDACIONES ....................................................................72
C. MATERIAL DE REFERENCIA
1. BIBLIOGRAFA ...............................................................................73
2. ANEXOS ..........................................................................................74
2.1. CODIFICACIN DEL SOFTWARE DESARROLLADO ................74
2.1.1. TIRANTE NORMAL ........................................................................74
2.1.1.1. SECCIN RECTANGULAR ............................................................74
2.1.1.2. SECCIN TRAPEZOIDAL ..............................................................81
2.1.1.3. SECCIN TRIANGULAR ................................................................88
2.1.1.4. SECCIN CIRCULAR .....................................................................95
2.1.1.5. SECCIN PARABLICA .............................................................. 102
2.1.1.6. SECCIN PARABLICA CON T CONOCIDO ......................... 102
2.1.1.6.1. SECCIN PARABLICA CON T NO CONOCIDO................... 109
2.1.1.6.2. SECCIN RECTANGULAR CON ESQUINAS
REDONDEADAS.117
2.1.1.7. SECCIN TRIANGULAR CON FONDO REDONDEADO ...........125
XI
2.1.2. TIRANTE CRTICO ....................................................................... 133
2.1.2.1. SECCIN RECTANGULAR .......................................................... 133
2.1.2.2. SECCIN TRAPEZOIDAL ............................................................ 139
2.1.2.3. SECCIN TRIANGULAR .............................................................. 146
2.1.2.4. SECCIN CIRCULAR ................................................................... 152
2.1.2.5. SECCIN PARABLICA .............................................................. 159
2.1.2.5.1. SECCIN PARABLICA CON T CONOCIDO ......................... 159
2.1.2.5.2. SECCIN PARABLICA CON T NO CONOCIDO................... 165
2.1.2.6. SECCIN RECTANGULAR CON ESQUINAS
REDONDEADAS.173
2.1.2.7. SECCIN TRIANGULAR CON FONDO REDONDEADO ...........180
2.1.3. CAUDALES.................................................................................... 187
2.1.3.1. SECCIN RECTANGULAR .......................................................... 187
2.1.3.2. SECCIN TRAPEZOIDAL ............................................................ 193
2.1.3.3. SECCIN TRIANGULAR .............................................................. 200
2.1.3.4. SECCIN CIRCULAR ................................................................... 206
2.1.3.5. SECCIN PARABLICA .............................................................. 213
2.1.3.6. SECCIN RECTANGULAR CON ESQUINAS
REDONDEADAS.220
2.1.3.7. SECCIN TRIANGULAR CON FONDO REDONDEADO ...........227
2.1.4. ELEMENTOS GEOMTRICOS ..................................................... 234
2.1.4.1. SECCIN RECTANGULAR .......................................................... 234
2.1.4.2. SECCIN TRAPEZOIDAL ............................................................ 237
2.1.4.3. SECCIN TRIANGULAR .............................................................. 241
2.1.4.4. SECCIN CIRCULAR ................................................................... 245
2.1.4.5. SECCIN PARABLICA .............................................................. 248
2.1.4.6. SECCIN RECTANGULAR CON ESQUINAS
REDONDEADAS.252
2.1.4.7. SECCIN TRIANGULAR CON FONDO REDONDEADO ...........256
2.1.5. SECCIN HIDRULICA PTIMA ............................................... 260
2.1.5.1. SECCIN RECTANGULAR .......................................................... 260
2.1.5.2. SECCIN TRAPEZOIDAL ............................................................ 267
2.1.5.2.1. SECCIN TRAPEZODIAL CON z CONOCIDO ........................ 267
XII
2.1.5.2.2. SECCIN TRAPEZODIAL CON z NO CONOCIDO ................. 274
2.1.5.3. SECCIN TRIANGULAR .............................................................. 281
2.1.5.4. SECCIN SEMICIRCULAR .......................................................... 288
2.1.6. PANTALLA DE INCIO .................................................................. 295
2.1.7. SELECCIN ................................................................................... 297
2.1.8. SELECCIN 1 ................................................................................ 298
2.1.9. SELECCIN 2 ................................................................................ 299
2.1.10. ESPERA .......................................................................................... 299
2.1.11. ACERCA DE SN CANALES .......................................................... 300
2.2. MANUAL DE USUARIO ............................................................... 301
NDICE DE TABLAS
XIII
NDICE DE FIGURAS
XIV
RESUMEN EJECUTIVO
XV
SUMMARY
To test the validity of the developed program the results were compared with those
obtained through an existing software which was HCANALES and those obtained
manually; with what was obtained a margin of error less than 1% with which was
verified that the values given by the software are trustworthy.
XVI
CAPTULO I
ANTECEDENTES
1.2. ANTECEDENTES
En sus inicios la Ingeniera no contaba con los recursos tecnolgicos con los que
cuenta actualmente, ya que anteriormente para el desarrollo de un clculo
matemtico y diseo de alguna estructura se involucraba el gasto de varias horas para
su ejecucin, por lo que en aquellos das era comn el uso de tablas y nomogramas
en los cuales se resuma informacin relevante que ayudaba a realizar los clculos
[1].
1
El rol de la programacin en los ltimos sesenta aos ha sido crucial para
comprender la evolucin que ha tenido la sistematizacin de tareas y el manejo de la
informacin que hoy en da damos como un hecho. En efecto, la misma tiene como
principal funcin el hecho de conseguir que innumerables trabajos que antes
ejercamos de forma manual y con un alto costo sean ejecutados por un ordenador
con un ahorro significativo de tiempo [3].
2
1.3. JUSTIFICACIN
3
Es por estas razones que se pretende desarrollar un software que permita realizar el
clculo de canales abiertos de flujo uniforme en el que adems de tener las secciones
tpicas se implementen la seccin rectangular con esquinas redondeadas y triangular
con fondo redondeado (planteados por Ven Te Chow), para as contribuir en la
disminucin del tiempo de clculo y la confiablidad de los resultados.
1.4. OBJETIVOS
1.4.1. General
1.4.2. Especficos
4
CAPTULO II
FUNDAMENTACIN
Despus del aire que respiramos, el agua es el elemento ms esencial para el hombre.
Desde hace por lo menos 5000 aos el hombre ha inventado y construido obras para
el aprovechamiento del agua; entre las ms antiguas estn los CANALES, usados
para llevar el agua de un lugar a otro [8].
Un canal abierto es un conducto en el que el agua fluye con una superficie libre [9].
Los canales pueden ser conductos abiertos o cerrados en los cuales el agua circula
debido a la accin de la gravedad y sin ninguna presin, pues la superficie libre del
lquido est en contacto con la atmsfera; esto quiere decir que el agua fluye
impulsada por la presin atmosfrica y su propio peso [8].
Un canal construido con una seccin transversal invariable y una pendiente de fondo
constante, se conoce como canal prismtico. De otra manera, el canal es no
prismtico [10].
5
El trmino seccin de canal se refiere a la seccin transversal de un canal tomada en
forma perpendicular a la direccin del flujo. Una seccin vertical del canal, sin
embargo, es la seccin vertical que pasa a travs del punto ms bajo o del fondo de la
seccin del canal. Para canales horizontales, por consiguiente, la seccin del canal es
siempre una seccin vertical del canal [10].
6
Tabla 1:Elementos geomtricos de secciones de canal
7
2.1.2.1. Elementos geomtricos de una seccin de canal.
Los elementos geomtricos son propiedades de una seccin del canal que pueden ser
definidos por completo por la geometra de la seccin y la profundidad del flujo.
Estos elementos son muy importantes y se utilizan con amplitud en el clculo del
flujo [10].
La profundidad del flujo (y) o tirante, es la distancia vertical desde el punto ms bajo
de una seccin del canal hasta la superficie libre. Este trmino a menudo se
intercambia con la profundidad de flujo de la seccin (d). En efecto, la profundidad
de flujo de la seccin es la profundidad de flujo perpendicular a la direccin de ste,
o la altura de la seccin del canal que contiene el agua. Para un canal con un ngulo
de pendiente longitudinal , puede verse que la profundidad del flujo es igual a la
profundidad de la seccin dividida por cos (Ecuacin 1). En el caso de canales con
grandes pendientes, por consiguiente, los dos trminos deben utilizarse de manera
discriminada [9].
8
En un canal se tiene una pendiente baja si la pendiente So 0.01, y se tiene una
pendiente alta si So > 0.01 [1].
2.1.2.1.2. Nivel.
El ancho superficial (T) es el ancho de la seccin del canal en la superficie libre [10].
Es decir, es el permetro de la seccin en contacto con una frontera rgida sin incluir
la superficie libre [11].
9
2.1.2.1.6. Radio hidrulico
El radio hidrulico (R) es la relacin entre el rea mojada con respecto a su permetro
mojado [10].
El factor de seccin para el clculo de flujo critico (Z), es el producto del rea
mojada y la raz cuadrada de la profundidad hidrulica [10].
Ecuacin 4: Definicin del factor de seccin para el clculo del flujo crtico
A
Z = AD = A
T
El factor de seccin para el clculo de flujo uniforme AR2/3 es el producto del rea
mojada y el radio hidrulico elevado a la potencia 2/3 [10].
10
2.1.3. Estado de flujo en canales abiertos
Donde:
NF= Nmero de Froude.
V= Velocidad del flujo
D= Profundidad hidrulica
g= Aceleracin de la gravedad
11
2.1.3.1.1.1. Flujo crtico
El flujo critico se presenta cuando la velocidad del flujo es igual que la velocidad de
la onda de gravedad, el parmetro adimensional NF=1 [1].
El flujo subcrtico o flujo lento es aquel en el cual la velocidad del flujo es menor que
la velocidad de la onda de gravedad, el parmetro adimensional NF<1 [1].
El flujo supercrtico o flujo rpido es aquel en el cual la velocidad del flujo es mayor
que la velocidad de la onda de gravedad, el parmetro adimensional NF>1 [1].
En este estado las fuerzas inerciales se vuelven dominantes; el flujo tiene una alta
velocidad y se describe usualmente como rpido, ultrarrpido y torrencial [10].
12
velocidades de cada seccin no se altera. El tirante correspondiente al flujo uniforme
se conoce como tirante normal [11].
El flujo uniforme es una condicin de importancia bsica que debe ser considerado
en todos los problemas de diseo de canales. En un canal con cierta pendiente y
rugosidad y que debe conducir cierto gasto, la condicin de flujo uniforme es el
criterio que gobierna el rea de la seccin transversal mnima requerida, o aun
cuando exista otro criterio que determine las dimensiones de la seccin, estas no
podrn ser menores que dicha seccin mnima [11].
La pendiente longitudinal del fondo de un canal por lo general est dada por la
topografa y por la altura de energa requerida para el flujo de agua. En muchos
casos, la pendiente tambin depende del propsito del canal; por ejemplo, los canales
utilizados para propsitos de distribucin de agua, como los utilizado en irrigacin
abastecimientos de agua, minera hidrulica y proyectos hidroelctricos requieren un
13
alto nivel en el punto de entrega. Por consiguiente, es conveniente una pendiente
pequea para mantener en el mnimo posible las prdidas en elevacin [10].
Donde:
S= Pendiente del canal
L= Longitud del canal
h= Distancia vertical en que ocurre la cada vertical
14
2.1.6. Ecuacin de Manning
Donde:
V= Velocidad del flujo
n= Factor de resistencia o n de Manning
R= Radio hidrulico
S= Pendiente del canal.
En sta, las unidades deben ser consistentes. La velocidad del flujo (V), estar en m/s
si el radio hidrulico (R) se expresa en m. La pendiente del canal (S), es
adimensional. El valor de n depende de la condicin de la superficie del canal y, por
tanto, es algo anlogo a la rugosidad de la pared de un tubo [12].
Aqu, la velocidad se expresar en pies por segundo (pies/s), si R est en pies [12].
15
Debido a la simplicidad de su forma y a los resultados satisfactorios que arroja en
aplicaciones prcticas, la ecuacin de Manning se ha convertido en la ms utilizada
de todas las ecuaciones de flujo uniforme para clculos de flujos de canales abiertos
[10].
No es raro que los ingenieros piensen que un canal tiene un valor nico de n para
todas las ocasiones. En realidad, el valor de n es muy variable y depende de un cierto
nmero de factores. Para seleccionar el valor de n adecuado para diferentes
condiciones de diseo, resulta muy til tener un conocimiento bsico de estos
factores. Los factores que ejercen la mayor influencia sobre el coeficiente de
rugosidad tanto en canales artificiales como en canales naturales son descritos a
continuacin. Debera hacerse notar que estos factores estn hasta cierto punto
interrelacionados; por tanto, la discusin de uno de los factores puede repetirse en
conexin con otro [10].
16
En la universidad de Illinois se ha hecho una investigacin para determinar el
efecto de la vegetacin en el coeficiente de rugosidad. En uno de los canales de
drenaje bajo investigacin en Illinois central, se midi un valor promedio de n
de 0.033 en marzo de 1925, cuando el canal estaba en buenas condiciones. En
abril de 1926, haba materiales de sauces y hierbas secas en los taludes laterales,
y se encontr que n era 0.055. Este incremento en n representa de un ao de
crecimiento de la vegetacin. Durante los veranos de 1925 y 1926 ocurri un
gran crecimiento de plantas con hojas largas y planas en el fondo del canal. El
valor de n de Manning correspondiente a niveles de mediados del verano fue
aproximadamente de 0.115, y para la seccin a banca llena fue de 0.099. Las
plantas altas del fondo del canal fueron removidas por las aguas altas en
septiembre de 1926; el valor promedio de n despus de que ocurri esto fue de
0.072. Las conclusiones arrojadas de esta investigacin fueron, en parte, las
siguientes [10]:
17
4. Los rboles con dimetros de 6 a 8 pulg que crecen en los taludes laterales
no impiden el flujo tanto como lo hacen los crecimientos de matorrales
pequeos, siempre y cuando se corten las ramas colgantes [10].
El U.S. Soil Conservation Service ha hecho una serie de estudios del flujo de
agua en canales pequeos poco profundos protegidos con recubrimiento
vegetal. Se ha encontrado que para estos canales los valores de n varan con la
forma y la seccin transversal del canal, la pendiente del lecho del canal y la
profundidad del flujo. Al comparar dos canales, y manteniendo los factores
iguales, la menor profundidad promedio arroja un valor de n mayor, debido a la
mayor proporcin afectada por la vegetacin. As, un canal triangular tiene un
valor de n mayor que un canal trapezoidal, y un canal ancho tiene un valor de n
menor que un canal angosto. Un flujo con suficiente profundidad tiende a
doblar y a sumergir la vegetacin, con lo cual se producen valores bajos de n.
Una pendiente alta genera altas velocidades, con lo cual se producen valores
bajos de n [10].
d) Alineamiento del canal. Curvas suaves con radios grandes producirn valores
de n relativamente bajos, en tanto que curvas bruscas con meandros severos
incrementarn n. Con base en pruebas de laboratorio llevadas a cabo en
18
canaletas, Scobey sugiri que el valor n se incrementara en 0.001 por cada 20
grados de curvatura en 100 pies de canal. Aunque es dudoso que la curvatura
llegue a aumentar el valor de n en ms de 0.002 0.003, su efecto no debera
ignorarse, debido a que la curvatura puede inducir la acumulacin de material
flotante y, por consiguiente, incrementar indirectamente el valor de n. En
general, el incremento de la rugosidad en canales no revestidos que conducen
agua con baja velocidad es insignificante. Un aumento de 0.002 en el valor de n
constituye una provisin adecuada para la prdida en curvas en la mayor parte
de las canaletas que contengan curvaturas pronunciadas sin importar que estn
construidos en concreto o en otros materiales. La presencia de meandros en
corrientes naturales, sin embargo, puede incrementar el valor de n tan alto como
30% [10].
19
g) Tamao y forma del canal. No existe evidencia definitiva acerca del tamao y
la forma del canal como factores importantes que afecten el valor de n. Un
incremento en el radio hidrulico puede aumentar o disminuir n, segn la
condicin del canal [10].
RUGOSIDAD DE LA SUPERFICIE
Granos finos = Valor bajo de n
Granos gruesos = Valor alto de n
VEGETACIN
Retarda el flujo
Reduce la capacidad del canal, depende de (altura, densidad, distribucin y tipo
de vegetacin)
Aumento de vegetacin = Aumento de n
Menor vegetacin = Menor valor de n
20
Curvas agudas = Valor alto de n
SEDIMENTACIN Y SOCAVACIN
Sedimentacin, los depsitos pueden cambiar un canal muy irregular en uno
comparativamente uniforme y disminuye n
Socavacin, en un canal uniforme, regular y aumenta n
OBSTRUCCIN
Troncos, pilas de puentes, aumentan el valor de n
NIVEL Y CAUDAL
Disminuye n, con el aumento en el nivel y en el caudal
21
ste es el nico valor del caudal en el que habr flujo uniforme para la profundidad
del canal, y se denomina caudal normal. Las unidades de Q son m/s, si el rea se
expresa en metros cuadrados (m) y el radio en metros (m) [12].
Segn [10] se puede obtener otra forma equivalente a la ecuacin 10 para el sistema
ingls.
Tabla 2:Ecuaciones para el clculo del flujo uniforme en unidades mtricas e inglesas.
22
Ecuacin 12: Factor de seccin para el clculo de flujo uniforme en unidades
mtricas
nQ
AR2/3 = ( )
S1/2
La ecuacin 12 es una herramienta muy til para el clculo y el anlisis del flujo
uniforme. Cuando se conocen el caudal, la pendiente y la rugosidad, esta ecuacin da
el factor de seccin AR2/3 y, por consiguiente, la profundidad normal (yn ) tambin
conocida como tirante normal. Por otra parte, cuando n, S y la profundidad y por
consiguiente el factor de seccin, se conocen, puede calcularse el caudal normal
(Q n ) utilizando la ecuacin 10 [10].
Segn [10] se puede obtener otra forma equivalente a la ecuacin 12 para el sistema
ingls.
23
2.1.7.2. Clculo de la pendiente normal y crtica
Al variar la pendiente del canal hasta cierto valor, es posible cambiar la profundidad
normal y hacer que el flujo uniforme ocurra en un estado crtico para el caudal y la
rugosidad determinados. La pendiente as obtenida es la pendiente critica (Sc ), y la
profundidad normal correspondiente es igual a la profundidad crtica [10].
Donde:
S= Pendiente del canal
V= Velocidad del flujo
n= Factor de resistencia o n de Manning
R= Radio hidrulico
24
ecuacin de Manning como ecuacin de flujo uniforme, el clculo involucrar las
siguientes seis variables [10]:
1) El caudal normal Q
2) La velocidad media de flujo V
3) La profundidad normal y
4) El coeficiente de rugosidad n
5) La pendiente de canal S
6) Los elementos geomtricos que dependen de la forma de la seccin de canal,
como A, R, etc.
Cuando se conocen cuatro de las anteriores seis variables, los dos restantes pueden
determinarse a partir de las dos ecuaciones. Los siguientes son algunos de los tipos
de problemas de clculo de flujo uniforme [10]:
25
2.1.8. Diseo de canales con flujo uniforme
El diseador calcula las dimensiones del canal artificial mediante una ecuacin de
flujo uniforme y luego decide acerca de las dimensiones finales con base en el
eficiencia hidrulica o reglas empricas de seccin ptima, aspectos prcticos
constructivos y economa. Los factores que se consideran en el diseo son: la clase
del material que conforma el cuerpo del canal, la cual determina el coeficiente de
rugosidad; la velocidad mnima permisible, para evitar la depositacin si el agua
mueve limos o basuras; la pendiente del fondo del canal y las pendientes laterales; y
la seccin ms eficiente [10].
26
Si se tiene un caudal, una pendiente y una rugosidad, en el diseo se debe tratar de
minimizar el rea de la seccin transversal (A) para as reducir los costos de
construccin [1].
27
2.1.9.1. Notas de la seccin hidrulica ptima
2) Para un canal rectangular la altura vas a ser igual al ancho del canal para dos y se
cumple tambin la condicin de que el radio hidrulico sea igual a la mitad del
tirante. Entonces la profundidad ptima es la mitad de la anchura con el radio
hidrulico igual a la mitad de la profundidad [13].
4) Para un rea de una seccin recta y una pendiente dadas, el caudal a travs de un
canal con una rugosidad dada ser mximo cuando el radio hidrulico sea
mximo. El radio hidrulico ser mximo cuando el permetro mojado sea
mnimo [13].
2.1.10. Energa.
Los fluidos en movimiento poseen energa, la cual aparece en tres formas distintas:
potencial o de posicin, cintica o de velocidad y energa de presin [13].
28
Figura 6: Energa total en una seccin de un canal
PE, se representa con el tirante (d) o profundidad del agua en el canal [14].
V2 p
El trmino z se llama cota topogrfica; se conoce como altura de velocidad y
2g
30
2.1.10.1. Energa especfica
La energa especifica es, pues la suma del tirante y la carga de velocidad. Como est
referida al fondo del canal va a cambiar cada vez que ste ascienda o descienda, en
pocas palabras la energa especifica depende del tirante del agua [14].
La ecuacin 21 puede tambin expresarse en funcin del caudal (Q) y el rea (A) de
la seccin transversal, que es funcin del tirante (V=Q/A), y sustituyendo el valor de
la velocidad en la ecuacin de la energa especfica, se tiene [14]:
Para visualizar los regmenes posibles de flujo en un canal, es til una grfica de la
profundidad versus la energa especfica [12].
31
Para una seccin y descarga particulares en un canal, la curva de la energa especfica
se asemeja a la que se ilustra en la figura 7[12].
32
pequea de la energa es cintica. Se denomina a las dos trayectorias, 1 y 2 , como
trayectorias alternas de la energa especfica ( ) [12].
33
Cada caudal tiene su propia curva de energa especfica, es decir que la curva se
desplaza [1].
En general la recta posee dos ramales, uno asinttico al eje de las abscisas y
otro, asinttico a una lnea que forma un ngulo de 45 con relacin a la
horizontal [1].
Se puede concluir, que para una energa especfica dada, es posible tener dos
profundidades, una con el flujo subcrtico y otra con el flujo supercrtico estas dos
profundidades se conocen con el nombre de profundidades secuentes o alternas [1].
Los anlisis sobre el estado crtico de flujo se han referido principalmente a una
seccin particular de canal, conocida como seccin crtica. Si el estado crtico del
flujo existe a travs de toda la longitud del canal o a lo largo de un tramo de ste, el
flujo en el canal es un flujo crtico. La pendiente del canal que mantiene un
34
determinado caudal con una profundidad uniforme y crtica se conoce como
pendiente crtica (Sc). Una pendiente de canal menor que la pendiente crtica
producir un flujo ms lento de naturaleza subcrtica para el caudal determinado y
por consiguiente, se conoce como pendiente suave o subcrtica. Una pendiente mayor
que la pendiente crtica producir un flujo ms rpido de naturaleza supercrtica y se
conoce como pendiente empinada o supercrtica [10].
El criterio para un estado crtico de flujo es la base para el clculo de flujo crtico
[10].
De lo anterior los trminos del rgimen crtico pueden definirse como sigue:
Caudal crtico.
Es el caudal mximo para una energa especfica determinada, o el gasto que
se producir con la energa especfica mnima [14].
35
Tirante crtico.
Es el tirante hidrulico que existe cuando el gasto es el mximo para una
energa especfica determinada, o el tirante al que ocurre un caudal
determinado con la energa especfica mnima [14].
Velocidad crtica.
La velocidad media cuando el caudal es el crtico [14].
Pendiente crtica.
Es el valor particular de la pendiente del fondo del canal para la cual este
conduce un caudal (Q) en rgimen uniforme y con energa especfica mnima,
o sea, que en todas secciones se tiene el tirante crtico [14].
36
2.1.11.2. Determinacin del flujo crtico
Es por este motivo que no se debe disear canales con flujo critico sino con flujo
subcrtico o supercrtico, esto en funcin de la pendiente que se tenga en el canal, en
el diseo se deben buscar profundidades en un rango de 1.1 < < 0.9 con
[1].
2
=1 3
37
El diferencial del rea mojada cerca de la superficie libre es igual . Ahora
En el criterio para flujo crtico se establece que en el estado crtico del flujo la altura
de velocidad es igual a la mitad de la profundidad hidrulica [10].
38
2.1.11.3. El factor de seccin para el clculo del flujo crtico
Ecuacin 28:Factor de seccin Z para una seccin de canal en estado crtico de flujo
=
La ecuacin 28 es una herramienta muy til para el clculo y el anlisis del flujo
crtico en un canal abierto. Cuando se conoce el caudal, la ecuacin da el factor de
seccin crtico (Zc) y, por consiguiente, la profundidad crtica ( ). Por otra parte,
cuando la profundidad y, por tanto, el factor de seccin son conocidos, el caudal
crtico ( ) puede calcularse mediante la ecuacin 29 de la siguiente manera[10]:
Ecuacin 29: Clculo del caudal para una seccin de canal en estado crtico de flujo
=
2.2. HIPTESIS
39
2.3. SEALAMIENTO DE LAS VARIABLES DE LA HIPTESIS
Desarrollo de Software
40
CAPTULO III
METODOLOGA
3.2.1. Poblacin
Canales abiertos
3.2.2. Muestra
41
3.3. OPERACIONALIZACIN DE VARIABLES
Desarrollo de Software
42
3.3.2. Variable dependiente
43
3.4. PLAN DE RECOLECCIN DE INFORMACIN
1) Revisin de la bibliografa
2) Identificacin del lenguaje de programacin
3) Desarrollo del software
4) Resolucin de ejercicios de manera manual
5) Resolucin de ejercicios con un software existente
6) Resolucin de ejercicios con el software desarrollado
7) Anlisis y comparacin entre resultados
8) Verificacin de hiptesis
44
CAPTULO IV
Datos:
b = 40 cm = 0.4 m
Q = 0.33 /
n = 0.012
z = 1.5
S = 1% = 0.01
45
Figura 9: Ilustracin grfica del ejemplo para el clculo del tirante normal de una
seccin trapezoidal.
nQ
AR2/3 = ( )
S1/2
nQ 0.3 0.012
1/2
= = 0.036
S 0.011/2
46
Iteracin 1
y = 30cm = 0.3m
Clculo del rea hidrulica para una seccin trapezoidal mediante la siguiente
ecuacin:
= ( + )
= (0.4 + (1.5 0.3)) 0.3
= 0.255 2
= + 21 + 2
=
0.255
=
1.482
= 0.172
2
3 = 0.036
2
0.1723 0.255 = 0.036
0.044 0.036
47
Iteracin 2
y = 20cm = 0.2m
= ( + )
= (0.4 + (1.5 0.2)) 0.2
= 0.1402
= + 21 + 2
=
0.140
=
1.120
= 0.125
2
3 = 0.036
2
0.1253 0.140 = 0.036
0.035 0.036
Iteracin 3
y = 20.3cm = 0.203m
= ( + )
= (0.4 + (1.5 0.203)) 0.203
= 0.1432
48
= + 21 + 2
=
0.143
=
1.132
= 0.126
2
3 = 0.036
2
0.1263 0.143 = 0.036
0.036 = 0.036
1 2 1
V= R3 S 2
n
1
= 0.1262/3 0.011/2
0.012
= 2.09
Clculo del ancho superficial para una seccin trapezoidal mediante la siguiente
ecuacin:
T = b + 2zy
T = 0.4 + 2 1.5 0.203
= 1.009
49
Clculo de la profundidad hidrulica mediante la siguiente ecuacin:
A
D=
T
0.143
D=
1.009
D = 0.1417 m
V
F =
g D
2.09
F =
9.81 0.1417
F = 1.7727
2
=+
22
0.32
= 0.203 +
2 9.81 0.1432
= 0.4273 /
50
4.1.1.2. MTODO CON UN SOFTWARE EXISTENTE
51
4.1.2. EJEMPLO PARA EL CLCULO DEL TIRANTE CRTICO DE UNA
SECCIN TRAPEZOIDAL.
Datos:
b = 40 cm = 0.4m
Q = 0.33 /
z = 1.5
Figura 10: Ilustracin grfica del ejemplo para el clculo del tirante crtico de una
seccin trapezoidal.
2 3
=
52
Con la cual se debe seguir los siguientes pasos:
2
1) Calcular la relacin
2 0.32
= = 0.009174
9.81
Iteracin 1
y = 25cm = 0.25m
Clculo del rea hidrulica para una seccin trapezoidal mediante la siguiente
ecuacin:
= ( + )
= (0.4 + (1.5 0.25)) 0.25
= 1.15 2
= + 2
= 0.40 + 2(1.5 0.25)
= 1.15
53
Verificacin si con los valores obtenidos se cumple la igualdad.
3
= 0.0091
0.1933
= 0.0092
1.15
0.0063 0.0092
Iteracin 2
y = 27.6 cm = 0.276m
= ( + )
= (0.4 + (1.5 0.276)) 0.276
= 0.2247 2
= + 2
= 0.40 + 2(1.5 0.276 )
= 1.228
3
= 0.0091
0.22473
= 0.0092
1.228
0.0092 0.0092
V = Q
0.3
V=
0.2247
V = 1.34
54
Clculo de la profundidad hidrulica mediante la siguiente ecuacin:
A
D=
T
0.2247
D=
1.228
D = 0.183 m
Clculo del permetro mojado para una seccin trapezoidal mediante la siguiente
ecuacin:
= + 21 + 2
=
0.2247
=
1.3951
= 0.1611
V
F =
g D
1.34
F =
9.81 0.183
F = 1
55
Clculo de la energa especfica mediante la siguiente ecuacin:
2
=+
22
0.32
= 0.276 +
2 9.81 0.22472
= 0.3669 /
56
4.1.2.3. MTODO CON EL SOFTWARE DESARROLLADO
Datos:
= 61 = 0.61
= 30.5 = 0.305
= 180 =
= 0.0025
n = 0.013
57
Figura 11: Ilustracin grfica del ejemplo para el clculo del caudal de una seccin
circular.
Clculo del rea hidrulica para una seccin circular mediante la siguiente ecuacin:
1
= ( ) 2
8
1
= ( 180) 0.612
8
= 0.146 2
Clculo del permetro mojado para una seccin circular mediante la siguiente
ecuacin:
1
=
2
1
= 0.61
2
= 0.958
=
0.146
=
0.958
= 0.152
58
Clculo del caudal mediante la siguiente ecuacin:
1 2/3 1/2
Q= AR S
n
1 2
Q= 0.146 0.1523 0.00251/2
0.013
Q = 0.16 3 /
Clculo del ancho superficial para una seccin circular mediante la siguiente
ecuacin:
= ( 2)
= ( 2) 0.61
= 0.61
A
D=
T
0.146
D=
0.61
D = 0.2393 m
V=
0.16
V=
0.146
V = 1.0959
59
Clculo del nmero de Froude mediante la siguiente ecuacin:
V
F =
g D
1.0959
F =
9.81 0.2393
F = 0.7153
2
=+
22
0.162
= 0.305 +
2 9.81 0.1462
= 0.3662 /
60
4.1.3.3. MTODO CON EL SOFTWARE DESARROLLADO
Calcular los elementos del canal triangular con fondo redondeado considerando un
tirante de 7m, un radio de 4m y la relacin del talud 1:1.
Datos:
y = 7m
r = 4m
z=1
61
Figura 12: Ilustracin grfica del ejemplo para el clculo de los elementos
geomtricos de una seccin circular.
Clculo del ancho superficialpara una seccin triangular con fondo redondeado
mediante la siguiente ecuacin:
= 2 ( ( ) + 1 + 2 )
= 2 (1 (7 ) + 4 1 + 12 )
= 17,314
Clculo del rea hidrulica para una seccin triangular con fondo redondeado
mediante la siguiente ecuacin:
2 2
= (1 1 )
4
17, 3142 42
= (1 1 1)
41 1
= 71,504 2
62
Clculo del permetro mojado para una seccin triangular con fondo redondeado
mediante la siguiente ecuacin:
2
= 1 + 2 (1 1 )
17, 314 2 4
= 1 + 12 (1 1 1)
1 1
= 22,763
=
71,504
=
22,763
= 3,141
=
71,504
=
17,314
= 4,129
71,504
=
17,314
= 2.032
63
4.1.4.2. MTODO CON EL SOFTWARE DESARROLLADO
Una acequia desagua 1.19 3 / con una pendiente de 0.50 sobre 1000 . La
seccin es rectangular y el coeficiente de rugosidad = 0.012. Determinar las
dimensiones ptimas, es decir, las dimensiones que dan el menor permetro mojado,
adems la velocidad del flujo, los elementos geomtricos, el tipo de flujo y la energa
especfica.
Datos:
Q=1.19 3 /
0.5
= = 0.0005
1000
n = 0.012
64
Figura 13: Ilustracin grfica del ejemplo para el clculo de los elementos
geomtricos de una seccin circular.
Para una seccin rectangular sea ptima la base debe ser igual a dos veces el tirante.
b=2y
1 2 1
= 3 2
2
1 3 1
= ( ) ( ) 2
+ 2
2
1 2. 3 1
1.19 = (2. ) ( ) (0.0005)2
0.012 2 + 2
2
2 2 3
0.319 = 2 ( )
4
2
3
2
0.319 = ( )
2
2 2
0.319 23 = 2 . 3
(0.506)3/8 = ( 8/3 ) 3/8
= 0.7746
65
Clculo del ancho de la solera mediante la siguiente ecuacin.
b=2y
b=2*0.7746
b=1.5492 m
Clculo del rea hidrulica para una seccin rectangular mediante la siguiente
ecuacin:
=
= 1.5492 0.7746
= 1.20 2
Clculo del permetro mojado para una seccin rectangular mediante la siguiente
ecuacin:
= + 2
= 1.5492 + 2 0.7746
= 3.0984
=
1.2
=
3.0984
= 0.3873
Clculo del ancho superficial para una seccin rectangular mediante la siguiente
ecuacin:
=
= 1.5492 m
66
Clculo de la profundidad hidrulica mediante la siguiente ecuacin:
=
1.2
=
1.5492
= 0.7746
V=
1.19
V=
1.20
V = 0.9917
V
F =
g D
0.9917
F =
9.81 0.7746
F = 0.3598
2
=+
22
1.192
= 0.7746 +
2 9.81 1.22
= 0.8247 /
67
4.1.5.2. MTODOCON UN SOFTWARE EXISTENTE
68
4.2. ANLISIS DE RESULTADOS
69
Tabla 9: Comparacin de resultados en el clculo los elementos geomtricos de una
seccin triangular con fondo redondeado.
MTODO DIFERENCIA CON SOFTWARE
SOFTWARE UNIDADES DESARROLADO
MANUAL
DESARROLADO CANTIDAD %
rea hidrulica 71.504 71.5075 m 0.0035 0.00%
Permetro mojada 22.763 22.7685 m 0.0055 0.02%
Radio hidrulico 3.141 3.1406 m 0.0004 0.01%
Ancho superficial 17.314 17.3137 m 0.0003 0.00%
Profundidad hidrulica 4.129 4.1301 m 0.0011 0.03%
Factor de seccin 2.032 2.0323 m 0.0003 0.01%
CONCLUSIONES Y RECOMENDACIONES
5.1. CONCLUSIONES
71
5.2. RECOMENDACIONES
72
C. MATERIALES DE REFERENCIA
1. BIBLIOGRAFA
73
2. ANEXOS
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = TIRANTE_NORMAL_DE_UNA_SECCION_RECTANGULAR_OutputFcn(hObject,
eventdata, handles)
varargout{1} = handles.output;
74
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Obtener el dato del caudal
VAL1=get(handles.edit1,'String');
Q=str2double(VAL1)
%Obtener el dato del ancho de la solera
VAL2=get(handles.edit2,'String');
b=str2double(VAL2)
%Obtener el dato de la pendiente
VAL3=get(handles.edit3,'String');
S=str2double(VAL3)
%Obtener el dato del coeficiente n
VAL4=get(handles.edit4,'String');
n=str2double(VAL4)
%VARIABLES PARA COMPROBAR SI LOS VALORES SON INGREADOS CORRECTAMENTE
Q1=isnan(Q);
b1=isnan(b);
S1=isnan(S);
n1=isnan(n);
VAL5=get(handles.uibuttongroup1,'Tag');
SM1=str2double(VAL5)
if SM1==1
%Para unidades del sistema mtrico
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif b<=0
errordlg('Ingrese el valor del ancho de la solera (b) teniendo en cuenta que debe
ser mayor que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif b1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del tirante normal
M=100000
err=0.000001
y=100
for i=1:M
FY=((1/n)*(b*y)*(((b*y)/(b+(2*y)))^(2/3))*(S^(1/2)))-Q
if FY==0
break
else
FDY=(S^(1/2)*b*((b*y)/(b + 2*y))^(2/3))/n + (2*S^(1/2)*b*y*(b/(b + 2*y) -
(2*b*y)/(b + 2*y)^2))/(3*n*((b*y)/(b + 2*y))^(1/3))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Valor de la gravedad en m/s2
g=9.81
%Clculo del rea mojada
A=b*y
%Clculo del permetro mojado
P=b+2*y
%Clculo del ancho superficial
75
T=b
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif b<=0
errordlg('Ingrese el valor del ancho de la solera (b) teniendo en cuenta que debe
ser mayor que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif b1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del tirante normal
M=100000
err=0.000001
y=100
for i=1:M
76
FY=((1.486/n)*(b*y)*(((b*y)/(b+(2*y)))^(2/3))*(S^(1/2)))-Q
if FY==0
break
else
FDY=(1.486*S^(1/2)*b*((b*y)/(b + 2*y))^(2/3))/n +
(0.99066666666666666666666666666667*S^(1/2)*b*y*(b/(b + 2*y) - (2*b*y)/(b +
2*y)^2))/(n*((b*y)/(b + 2*y))^(1/3))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del rea mojada
A=b*y
%Clculo del permetro mojado
P=b+2*y
%Clculo del ancho superficial
T=b
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
77
function edit3_Callback(hObject, eventdata, handles)
78
function edit11_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
79
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Mostrar unidades mtricas;
set(handles.text6,'Visible','on');
set(handles.text7,'Visible','on');
set(handles.text9,'Visible','on');
set(handles.text19,'Visible','on');
set(handles.text22,'Visible','on');
set(handles.text25,'Visible','on');
set(handles.text26,'Visible','on');
set(handles.text33,'Visible','on');
set(handles.text24,'Visible','on');
set(handles.text23,'Visible','on');
set(handles.text30,'Visible','on');
%Ocultar unidades inglesas;
set(handles.text35,'Visible','off');
set(handles.text36,'Visible','off');
set(handles.text37,'Visible','off');
set(handles.text38,'Visible','off');
set(handles.text39,'Visible','off');
set(handles.text42,'Visible','off');
set(handles.text43,'Visible','off');
set(handles.text45,'Visible','off');
set(handles.text41,'Visible','off');
set(handles.text40,'Visible','off');
set(handles.text44,'Visible','off');
case 'Sistema ingls'
SM1='2'
%Borrar celdas de resultados
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Ocultar unidades mtricas;
set(handles.text6,'Visible','off');
set(handles.text7,'Visible','off');
set(handles.text9,'Visible','off');
set(handles.text19,'Visible','off');
set(handles.text22,'Visible','off');
set(handles.text25,'Visible','off');
set(handles.text26,'Visible','off');
set(handles.text33,'Visible','off');
set(handles.text24,'Visible','off');
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
%Mostrar unidades inglesas;
set(handles.text35,'Visible','on');
set(handles.text36,'Visible','on');
set(handles.text37,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
80
function pushbutton1_CreateFcn(hObject, eventdata, handles)
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = TIRANTE_NORMAL_DE_UNA_SECCION_TRAPEZOIDAL_OutputFcn(hObject,
eventdata, handles)
varargout{1} = handles.output;
81
S=str2double(VAL3)
%Obtener el dato del coeficiente n
VAL4=get(handles.edit4,'String');
n=str2double(VAL4)
%Obtener el dato del talud
VAL6=get(handles.edit16,'String');
z=str2double(VAL6)
%VARIABLES PARA COMPROBAR SI LOS VALORES SON INGREADOS CORRECTAMENTE
Q1=isnan(Q);
b1=isnan(b);
S1=isnan(S);
n1=isnan(n);
z1=isnan(z);
VAL5=get(handles.uibuttongroup1,'Tag');
SM1=str2double(VAL5)
if SM1==1
%Para unidades del sistema mtrico
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif b<=0
errordlg('Ingrese el valor del ancho de la solera (b) teniendo en cuenta que debe
ser mayor que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif b1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif z<=0
errordlg('Ingrese el valor del talud (z) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif z1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del tirante normal
M=100000
err=0.000001
y=100
for i=1:M
FY=((1/n)*((b+z*y)*y)*(((b+z*y)*y)/(b+2*y*sqrt(1+(z^2))))^(2/3))*(S^(1/2))-Q
if FY==0
break
else
FDY=(S^(1/2)*(b + y*z)*((y*(b + y*z))/(b + 2*y*(z^2 + 1)^(1/2)))^(2/3))/n
+ (S^(1/2)*y*z*((y*(b + y*z))/(b + 2*y*(z^2 + 1)^(1/2)))^(2/3))/n + (2*S^(1/2)*y*(b +
y*z)*((b + y*z)/(b + 2*y*(z^2 + 1)^(1/2)) + (y*z)/(b + 2*y*(z^2 + 1)^(1/2)) - (2*y*(b
+ y*z)*(z^2 + 1)^(1/2))/(b + 2*y*(z^2 + 1)^(1/2))^2))/(3*n*((y*(b + y*z))/(b +
2*y*(z^2 + 1)^(1/2)))^(1/3))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Valor de la gravedad en m/s2
g=9.81
%Clculo del rea mojada
A=(b+z*y)*y
82
%Clculo del permetro mojado
P=b+2*y*sqrt(1+(z^2))
%Clculo del ancho superficial
T=b+2*z*y
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif b<=0
errordlg('Ingrese el valor del ancho de la solera (b) teniendo en cuenta que debe
ser mayor que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif b1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif z<=0
errordlg('Ingrese el valor del talud (z) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif z1==1
83
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del tirante normal
M=100000
err=0.000001
y=100
for i=1:M
FY=((1.486/n)*((b+z*y)*y)*(((b+z*y)*y)/(b+2*y*sqrt(1+(z^2))))^(2/3))*(S^(1/2))-Q
if FY==0
break
else
FDY=(1.486*S^(1/2)*(b + y*z)*((y*(b + y*z))/(b + 2*y*(z^2 +
1)^(1/2)))^(2/3))/n + (1.486*S^(1/2)*y*z*((y*(b + y*z))/(b + 2*y*(z^2 +
1)^(1/2)))^(2/3))/n + (0.99066666666666666666666666666667*S^(1/2)*y*(b + y*z)*((b +
y*z)/(b + 2*y*(z^2 + 1)^(1/2)) + (y*z)/(b + 2*y*(z^2 + 1)^(1/2)) - (2*y*(b +
y*z)*(z^2 + 1)^(1/2))/(b + 2*y*(z^2 + 1)^(1/2))^2))/(n*((y*(b + y*z))/(b + 2*y*(z^2 +
1)^(1/2)))^(1/3))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del rea mojada
A=(b+z*y)*y
%Clculo del permetro mojado
P=b+2*y*sqrt(1+(z^2))
%Clculo del ancho superficial
T=b+2*z*y
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
84
set(handles.edit14,'String',E);
end
end
85
function edit10_Callback(hObject, eventdata, handles)
86
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
87
set(handles.text35,'Visible','on');
set(handles.text36,'Visible','on');
set(handles.text37,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = TIRANTE_NORMAL_DE_UNA_SECCION_TRIANGULAR_OutputFcn(hObject,
eventdata, handles)
varargout{1} = handles.output;
88
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
%Borrar celdas de resultados
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Obtener el dato del caudal
VAL1=get(handles.edit1,'String');
Q=str2double(VAL1)
%Obtener el dato del talud
VAL2=get(handles.edit2,'String');
z=str2double(VAL2)
%Obtener el dato de la pendiente
VAL3=get(handles.edit3,'String');
S=str2double(VAL3)
%Obtener el dato del coeficiente n
VAL4=get(handles.edit4,'String');
n=str2double(VAL4)
%VARIABLES PARA COMPROBAR SI LOS VALORES SON INGREADOS CORRECTAMENTE;
Q1=isnan(Q);
z1=isnan(z);
S1=isnan(S);
n1=isnan(n);
VAL5=get(handles.uibuttongroup1,'Tag');
SM1=str2double(VAL5)
if SM1==1
%Para unidades del sistema mtrico
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif z<=0
errordlg('Ingrese el valor del talud (z) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif z1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del tirante normal
M=100000
err=0.000001
y=100
for i=1:M
FY=((1/n)*(z*(y^2))*(((z*(y^2))/(2*y*sqrt(1+(z^2))))^(2/3))*(S^(1/2)))-Q
if FY==0
break
else
FDY=(2*S^(1/2)*y*z*((y*z)/(2*(z^2 + 1)^(1/2)))^(2/3))/n +
(S^(1/2)*y^2*z^2)/(3*n*(z^2 + 1)^(1/2)*((y*z)/(2*(z^2 + 1)^(1/2)))^(1/3))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
89
break
end
end
end
%Valor de la gravedad en m/s2
g=9.81
%Clculo del rea mojada
A=z*(y^2)
%Clculo del permetro mojado
P=2*y*sqrt(1+(z^2))
%Clculo del ancho superficial
T=2*z*y
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif z<=0
errordlg('Ingrese el valor del talud (z) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif z1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
90
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del tirante normal
M=100000
err=0.000001
y=100
for i=1:M
FY=((1.486/n)*(z*(y^2))*(((z*(y^2))/(2*y*sqrt(1+(z^2))))^(2/3))*(S^(1/2)))-Q
if FY==0
break
else
FDY=(2.972*S^(1/2)*y*z*((y*z)/(2*(z^2 + 1)^(1/2)))^(2/3))/n +
(0.49533333333333333333333333333333*S^(1/2)*y^2*z^2)/(n*(z^2 +
1)^(1/2)*((y*z)/(2*(z^2 + 1)^(1/2)))^(1/3))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del rea mojada
A=z*(y^2)
%Clculo del permetro mojado
P=2*y*sqrt(1+(z^2))
%Clculo del ancho superficial
T=2*z*y
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
91
end
end
92
function edit10_Callback(hObject, eventdata, handles)
93
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
94
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = TIRANTE_NORMAL_DE_UNA_SECCION_TRIANGULAR_OutputFcn(hObject,
eventdata, handles)
varargout{1} = handles.output;
95
%Obtener el dato del talud
VAL2=get(handles.edit2,'String');
z=str2double(VAL2)
%Obtener el dato de la pendiente
VAL3=get(handles.edit3,'String');
S=str2double(VAL3)
%Obtener el dato del coeficiente n
VAL4=get(handles.edit4,'String');
n=str2double(VAL4)
%VARIABLES PARA COMPROBAR SI LOS VALORES SON INGREADOS CORRECTAMENTE;
Q1=isnan(Q);
z1=isnan(z);
S1=isnan(S);
n1=isnan(n);
VAL5=get(handles.uibuttongroup1,'Tag');
SM1=str2double(VAL5)
if SM1==1
%Para unidades del sistema mtrico
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif z<=0
errordlg('Ingrese el valor del talud (z) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif z1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del tirante normal
M=100000
err=0.000001
y=100
for i=1:M
FY=((1/n)*(z*(y^2))*(((z*(y^2))/(2*y*sqrt(1+(z^2))))^(2/3))*(S^(1/2)))-Q
if FY==0
break
else
FDY=(2*S^(1/2)*y*z*((y*z)/(2*(z^2 + 1)^(1/2)))^(2/3))/n +
(S^(1/2)*y^2*z^2)/(3*n*(z^2 + 1)^(1/2)*((y*z)/(2*(z^2 + 1)^(1/2)))^(1/3))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Valor de la gravedad en m/s2
g=9.81
%Clculo del rea mojada
A=z*(y^2)
%Clculo del permetro mojado
P=2*y*sqrt(1+(z^2))
%Clculo del ancho superficial
T=2*z*y
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
96
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif z<=0
errordlg('Ingrese el valor del talud (z) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif z1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del tirante normal
M=100000
err=0.000001
y=100
for i=1:M
FY=((1.486/n)*(z*(y^2))*(((z*(y^2))/(2*y*sqrt(1+(z^2))))^(2/3))*(S^(1/2)))-Q
if FY==0
break
else
97
FDY=(2.972*S^(1/2)*y*z*((y*z)/(2*(z^2 + 1)^(1/2)))^(2/3))/n +
(0.49533333333333333333333333333333*S^(1/2)*y^2*z^2)/(n*(z^2 +
1)^(1/2)*((y*z)/(2*(z^2 + 1)^(1/2)))^(1/3))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del rea mojada
A=z*(y^2)
%Clculo del permetro mojado
P=2*y*sqrt(1+(z^2))
%Clculo del ancho superficial
T=2*z*y
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
98
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
99
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
100
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Mostrar unidades mtricas;
set(handles.text6,'Visible','on');
set(handles.text9,'Visible','on');
set(handles.text19,'Visible','on');
set(handles.text22,'Visible','on');
set(handles.text25,'Visible','on');
set(handles.text26,'Visible','on');
set(handles.text33,'Visible','on');
set(handles.text24,'Visible','on');
set(handles.text23,'Visible','on');
set(handles.text30,'Visible','on');
%Ocultar unidades inglesas;
set(handles.text35,'Visible','off');
set(handles.text37,'Visible','off');
set(handles.text38,'Visible','off');
set(handles.text39,'Visible','off');
set(handles.text42,'Visible','off');
set(handles.text43,'Visible','off');
set(handles.text45,'Visible','off');
set(handles.text41,'Visible','off');
set(handles.text40,'Visible','off');
set(handles.text44,'Visible','off');
case 'Sistema ingls'
SM1='2'
%Borrar celdas de resultados
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Ocultar unidades mtricas;
set(handles.text6,'Visible','off');
set(handles.text9,'Visible','off');
set(handles.text19,'Visible','off');
set(handles.text22,'Visible','off');
set(handles.text25,'Visible','off');
set(handles.text26,'Visible','off');
set(handles.text33,'Visible','off');
set(handles.text24,'Visible','off');
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
%Mostrar unidades inglesas;
set(handles.text35,'Visible','on');
set(handles.text37,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
101
2.1.1.5. SECCIN PARABLICA
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = TIRANTE_NORMAL_DE_UNA_SECCION_PARABOLICA_OutputFcn(hObject,
eventdata, handles)
varargout{1} = handles.output;
102
S=str2double(VAL3)
%Obtener el dato del coeficiente n
VAL4=get(handles.edit4,'String');
n=str2double(VAL4)
%VARIABLES PARA COMPROBAR SI LOS VALORES SON INGREADOS CORRECTAMENTE
Q1=isnan(Q);
T1=isnan(T);
S1=isnan(S);
n1=isnan(n);
VAL5=get(handles.uibuttongroup1,'Tag');
SM1=str2double(VAL5)
if SM1==1
%Para unidades del sistema mtrico
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif T<=0
errordlg('Ingrese el valor del ancho superficial (T) teniendo en cuenta que debe
ser mayor que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif T1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
C=(n*Q)/(sqrt(S))
C1=round(C,4)
y=2
%Clculo del rea mojada
A=(2/3)*T*y
%Clculo del permetro mojado
x=(4*y)/T
if ((x<=1) && (x>0))
P=T+((8/3)*((y^2)/T))
else
P=(T/2)*(sqrt(1+x^2)+(1/x)*log(x+sqrt(1+x^2)))
end
R=A/P
F=A*R^(2/3)
F1=round(F,4)
while F1~=C1
if F1>C1
y=(y-y/4)
else
y=(y+y/4)
end
%Clculo del rea mojada
A=(2/3)*T*y
%Clculo del permetro mojado
x=(4*y)/T
if ((x<=1) && (x>0))
P=T+((8/3)*((y^2)/T))
else
P=(T/2)*(sqrt(1+x^2)+(1/x)*log(x+sqrt(1+x^2)))
end
R=A/P
F=A*R^(2/3)
F1=round(F,4)
end
%Valor de la gravedad en m/s2
g=9.81
103
%Clculo de la profundidad hidrulica
D=A/T
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y)
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit15,'String',R);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif T<=0
errordlg('Ingrese el valor del ancho superficial (T) teniendo en cuenta que debe
ser mayor que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif T1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
C=(n*Q)/(1.486*sqrt(S))
C1=round(C,4)
y=2
%Clculo del rea mojada
A=(2/3)*T*y
%Clculo del permetro mojado
x=(4*y)/T
if ((x<=1) && (x>0))
P=T+((8/3)*((y^2)/T))
104
else
P=(T/2)*(sqrt(1+x^2)+(1/x)*log(x+sqrt(1+x^2)))
end
R=A/P
F=A*R^(2/3)
F1=round(F,4)
while F1~=C1
if F1>C1
y=(y-y/4)
else
y=(y+y/4)
end
%Clculo del rea mojada
A=(2/3)*T*y
%Clculo del permetro mojado
x=(4*y)/T
if ((x<=1) && (x>0))
P=T+((8/3)*((y^2)/T))
else
P=(T/2)*(sqrt(1+x^2)+(1/x)*log(x+sqrt(1+x^2)))
end
R=A/P
F=A*R^(2/3)
F1=round(F,4)
end
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo de la profundidad hidrulica
D=A/T
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y)
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit15,'String',R);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
105
function edit3_Callback(hObject, eventdata, handles)
106
% --- Executes during object creation, after setting all properties.
function edit11_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
107
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Mostrar unidades mtricas;
set(handles.text6,'Visible','on');
set(handles.text7,'Visible','on');
set(handles.text9,'Visible','on');
set(handles.text19,'Visible','on');
set(handles.text22,'Visible','on');
set(handles.text25,'Visible','on');
set(handles.text33,'Visible','on');
set(handles.text24,'Visible','on');
set(handles.text23,'Visible','on');
set(handles.text30,'Visible','on');
%Ocultar unidades inglesas;
set(handles.text35,'Visible','off');
set(handles.text36,'Visible','off');
set(handles.text37,'Visible','off');
set(handles.text38,'Visible','off');
set(handles.text39,'Visible','off');
set(handles.text42,'Visible','off');
set(handles.text45,'Visible','off');
set(handles.text41,'Visible','off');
set(handles.text40,'Visible','off');
set(handles.text44,'Visible','off');
case 'Sistema ingls'
SM1='2'
%Borrar celdas de resultados
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Ocultar unidades mtricas;
set(handles.text6,'Visible','off');
set(handles.text7,'Visible','off');
set(handles.text9,'Visible','off');
set(handles.text19,'Visible','off');
set(handles.text22,'Visible','off');
set(handles.text25,'Visible','off');
set(handles.text33,'Visible','off');
set(handles.text24,'Visible','off');
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
%Mostrar unidades inglesas;
set(handles.text35,'Visible','on');
set(handles.text36,'Visible','on');
set(handles.text37,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
108
function edit20_Callback(hObject, eventdata, handles)
109
'gui_OutputFcn',
@TIRANTE_NORMAL_DE_UNA_SECCION_PARABOLICA_2_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = TIRANTE_NORMAL_DE_UNA_SECCION_PARABOLICA_2_OutputFcn(hObject,
eventdata, handles)
varargout{1} = handles.output;
110
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
C=(n*Q)/(sqrt(S))
C1=round(C,4)
y=2
T=2*sqrt(y)
%Clculo del rea mojada
A=(2/3)*T*y
%Clculo del permetro mojado
x=(4*y)/T
if ((x<=1) && (x>0))
P=T+((8/3)*((y^2)/T))
else
P=(T/2)*(sqrt(1+x^2)+(1/x)*log(x+sqrt(1+x^2)))
end
R=A/P
F=A*R^(2/3)
F1=round(F,4)
while F1~=C1
if F1>C1
y=(y-y/4)
else
y=(y+y/4)
end
T=2*sqrt(y)
%Clculo del rea mojada
A=(2/3)*T*y
%Clculo del permetro mojado
x=(4*y)/T
if ((x<=1) && (x>0))
P=T+((8/3)*((y^2)/T))
else
P=(T/2)*(sqrt(1+x^2)+(1/x)*log(x+sqrt(1+x^2)))
end
R=A/P
F=A*R^(2/3)
F1=round(F,4)
end
%Valor de la gravedad en m/s2
g=9.81
%Clculo de la profundidad hidrulica
D=A/T
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
111
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit15,'String',R);
set(handles.text103,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
C=(n*Q)/(1.486*sqrt(S))
C1=round(C,4)
y=2
T=2*sqrt(y)
%Clculo del rea mojada
A=(2/3)*T*y
%Clculo del permetro mojado
x=(4*y)/T
if ((x<=1) && (x>0))
P=T+((8/3)*((y^2)/T))
else
P=(T/2)*(sqrt(1+x^2)+(1/x)*log(x+sqrt(1+x^2)))
end
R=A/P
F=A*R^(2/3)
F1=round(F,4)
while F1~=C1
if F1>C1
y=(y-y/4)
else
y=(y+y/4)
end
T=2*sqrt(y)
%Clculo del rea mojada
A=(2/3)*T*y
%Clculo del permetro mojado
x=(4*y)/T
if ((x<=1) && (x>0))
P=T+((8/3)*((y^2)/T))
else
P=(T/2)*(sqrt(1+x^2)+(1/x)*log(x+sqrt(1+x^2)))
end
R=A/P
F=A*R^(2/3)
F1=round(F,4)
112
end
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo de la profundidad hidrulica
D=A/T
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit15,'String',R);
set(handles.text103,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
113
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
114
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
115
set(handles.text37,'Visible','off');
set(handles.text38,'Visible','off');
set(handles.text39,'Visible','off');
set(handles.text42,'Visible','off');
set(handles.text45,'Visible','off');
set(handles.text41,'Visible','off');
set(handles.text40,'Visible','off');
set(handles.text44,'Visible','off');
set(handles.text105,'Visible','off');
116
function edit22_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
117
scrsz=get(0,'ScreenSize');
pos_act=get(gcf,'Position');
xr=scrsz(3)-pos_act(3);
xp=round(xr/2);
yr=scrsz(4)-pos_act(4);
yp=round(xr/2);
set(gcf,'Position',[xp yp pos_act(3) pos_act(4)]);
%Cdigo para leer la imagen
imagen=imread('RECTANGULAR_REDONDEADAS.JPG');
%Cdigo para mostrar la imagen
image(imagen,'Parent',handles.axes1);
%Cdigo para quitar ejes a axes
set(handles.axes1,'XTick',[],'YTick',[]);
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout =
TIRANTE_NORMAL_DE_UNA_SECCION_RECTANGULAR_REDONDEADA_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
118
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif b1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif r<=0
errordlg('Ingrese el valor del radio (r) teniendo en cuenta que debe ser mayor
que 0 y menor que el tirante (y).','Mensaje');
elseif r1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del tirante normal
M=100000
err=0.000001
y=100
for i=1:M
FY=(1/n)*(((pi/2)-2)*(r^2)+((b+2*r)*y))*(((((pi/2)-
2)*(r^2)+((b+2*r)*y))/(((pi-2)*r)+b+(2*y)))^(2/3))*(S^(1/2))-Q
if FY==0
break
else
FDY=(S^(1/2)*(b + 2*r)*((r^2*(pi/2 - 2) + y*(b + 2*r))/(b + 2*y + r*(pi -
2)))^(2/3))/n + (2*S^(1/2)*(r^2*(pi/2 - 2) + y*(b + 2*r))*((b + 2*r)/(b + 2*y + r*(pi
- 2)) - (2*(r^2*(pi/2 - 2) + y*(b + 2*r)))/(b + 2*y + r*(pi -
2))^2))/(3*n*((r^2*(pi/2 - 2) + y*(b + 2*r))/(b + 2*y + r*(pi - 2)))^(1/3))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
if y>r
%Valor de la gravedad en m/s2
g=9.81
%Clculo del rea mojada
A=(((pi/2)-2)*(r^2)+((b+2*r)*y))
%Clculo del permetro mojado
P=(((pi-2)*r)+b+(2*y))
%Clculo del ancho superficial
T=b+2*r
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g));
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
119
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
else
close ESPERA
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
errordlg('El tirante no puede ser mayor que el valor de r. Disminuya el ancho
de la solera (b), la pendiente (S) o el radio (r).','Mensaje');
end
end
else
%Para unidades del sistema ingls
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif b<=0
errordlg('Ingrese el valor del ancho de la solera (b) teniendo en cuenta que debe
ser mayor que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif b1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif r<=0
errordlg('Ingrese el valor del radio (r) teniendo en cuenta que debe ser mayor
que 0 y menor que el tirante (y).','Mensaje');
elseif r1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del tirante normal
M=100000
err=0.000001
y=100
for i=1:M
FY=(1.486/n)*(((pi/2)-2)*(r^2)+((b+2*r)*y))*(((((pi/2)-
2)*(r^2)+((b+2*r)*y))/(((pi-2)*r)+b+(2*y)))^(2/3))*(S^(1/2))-Q
if FY==0
break
else
120
FDY=(1.486*S^(1/2)*(b + 2*r)*((r^2*(pi/2 - 2) + y*(b + 2*r))/(b + 2*y +
r*(pi - 2)))^(2/3))/n + (0.99066666666666666666666666666667*S^(1/2)*(r^2*(pi/2 - 2) +
y*(b + 2*r))*((b + 2*r)/(b + 2*y + r*(pi - 2)) - (2*(r^2*(pi/2 - 2) + y*(b +
2*r)))/(b + 2*y + r*(pi - 2))^2))/(n*((r^2*(pi/2 - 2) + y*(b + 2*r))/(b + 2*y + r*(pi
- 2)))^(1/3))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
if y>r
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del rea mojada
A=(((pi/2)-2)*(r^2)+((b+2*r)*y))
%Clculo del permetro mojado
P=(((pi-2)*r)+b+(2*y))
%Clculo del ancho superficial
T=b+2*r
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y)
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
else
close ESPERA
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
121
errordlg('El tirante no puede ser mayor que el radio. Disminuya el ancho de
la solera (b), la pendiente (S) o el radio (r).','Mensaje');
end
end
end
122
set(hObject,'BackgroundColor','white');
end
123
function edit15_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
124
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
set(handles.text48,'Visible','off');
%Mostrar unidades inglesas;
set(handles.text35,'Visible','on');
set(handles.text36,'Visible','on');
set(handles.text37,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
set(handles.text47,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
125
% --- Outputs from this function are returned to the command line.
function varargout =
TIRANTE_NORMAL_DE_UNA_SECCION_TRIANGULAR_REDONDEADO_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
126
else
ESPERA
%Clculo del del ancho superficial
M=100000
err=0.000001
y=100
for i=1:M
FY=(1/n)*(((y^2)/(4*z))-(((r^2)/z)*(1-(z*acot(z)))))*(((((y^2)/(4*z))-
(((r^2)/z)*(1-(z*acot(z)))))/(((y/z)*sqrt(1+(z^2)))-(((2*r)/z)*(1-
z*acot(z)))))^(2/3))*(S^(1/2))-Q
if FY==0
break
else
FDY=(S^(1/2)*y*((((z*acot(z) - 1)*r^2)/z + y^2/(4*z))/((y*(z^2 +
1)^(1/2))/z + (2*r*(z*acot(z) - 1))/z))^(2/3))/(2*n*z) + (2*S^(1/2)*(y/(2*z*((y*(z^2
+ 1)^(1/2))/z + (2*r*(z*acot(z) - 1))/z)) - ((z^2 + 1)^(1/2)*(((z*acot(z) - 1)*r^2)/z
+ y^2/(4*z)))/(z*((y*(z^2 + 1)^(1/2))/z + (2*r*(z*acot(z) - 1))/z)^2))*(((z*acot(z) -
1)*r^2)/z + y^2/(4*z)))/(3*n*((y^2/(4*z) + (r^2*(z*acot(z) - 1))/z)/((y*(z^2 +
1)^(1/2))/z + (2*r*(z*acot(z) - 1))/z))^(1/3))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
T=y
%Valor de la gravedad en m/s2
g=9.81
%Clculo del tirante normal
w=atan(1/z)
w1=pi-(2*w)
B=((2*pi)-(2*w1))/2
Y2=r*(1-cos(B/2))
M=2*r*sin(B/2)
C=(T-M)/2
Y1=tan(w)*C
Y=Y1+Y2
%Clculo del area mojada
A=(((T^2)/(4*z))-(((r^2)/z)*(1-(z*acot(z)))))
%Clculo del permetro mojado
P=(((T/z)*sqrt(1+(z^2)))-(((2*r)/z)*(1-z*acot(z))))
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=Y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
Y=round(Y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',Y);
set(handles.edit9,'String',A);
127
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif r<=0
errordlg('Ingrese el valor del radio (r) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif r1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif z<=0
errordlg('Ingrese el valor del talud (z) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif z1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del del ancho superficial
M=100000
err=0.000001
y=100
for i=1:M
FY=(1.486/n)*(((y^2)/(4*z))-(((r^2)/z)*(1-(z*acot(z)))))*(((((y^2)/(4*z))-
(((r^2)/z)*(1-(z*acot(z)))))/(((y/z)*sqrt(1+(z^2)))-(((2*r)/z)*(1-
z*acot(z)))))^(2/3))*(S^(1/2))-Q
if FY==0
break
else
FDY=(0.743*S^(1/2)*y*((((z*acot(z) - 1)*r^2)/z + y^2/(4*z))/((y*(z^2 +
1)^(1/2))/z + (2*r*(z*acot(z) - 1))/z))^(2/3))/(n*z) +
(0.99066666666666666666666666666667*S^(1/2)*(y/(2*z*((y*(z^2 + 1)^(1/2))/z +
(2*r*(z*acot(z) - 1))/z)) - ((z^2 + 1)^(1/2)*(((z*acot(z) - 1)*r^2)/z +
y^2/(4*z)))/(z*((y*(z^2 + 1)^(1/2))/z + (2*r*(z*acot(z) - 1))/z)^2))*(((z*acot(z) -
1)*r^2)/z + y^2/(4*z)))/(n*((y^2/(4*z) + (r^2*(z*acot(z) - 1))/z)/((y*(z^2 +
1)^(1/2))/z + (2*r*(z*acot(z) - 1))/z))^(1/3))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
T=y
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del tirante normal
w=atan(1/z)
w1=pi-(2*w)
128
B=((2*pi)-(2*w1))/2
Y2=r*(1-cos(B/2))
M=2*r*sin(B/2)
C=(T-M)/2
Y1=tan(w)*C
Y=Y1+Y2
%Clculo del area mojada
A=(((T^2)/(4*z))-(((r^2)/z)*(1-(z*acot(z)))))
%Clculo del permetro mojado
P=(((T/z)*sqrt(1+(z^2)))-(((2*r)/z)*(1-z*acot(z))))
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=Y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
Y=round(Y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',Y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
129
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
130
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
131
set(handles.text7,'Visible','on');
set(handles.text9,'Visible','on');
set(handles.text19,'Visible','on');
set(handles.text22,'Visible','on');
set(handles.text25,'Visible','on');
set(handles.text26,'Visible','on');
set(handles.text33,'Visible','on');
set(handles.text24,'Visible','on');
set(handles.text23,'Visible','on');
set(handles.text30,'Visible','on');
%Ocultar unidades inglesas;
set(handles.text35,'Visible','off');
set(handles.text36,'Visible','off');
set(handles.text37,'Visible','off');
set(handles.text38,'Visible','off');
set(handles.text39,'Visible','off');
set(handles.text42,'Visible','off');
set(handles.text43,'Visible','off');
set(handles.text45,'Visible','off');
set(handles.text41,'Visible','off');
set(handles.text40,'Visible','off');
set(handles.text44,'Visible','off');
case 'Sistema ingls'
SM1='2'
%Borrar celdas de resultados
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Ocultar unidades mtricas;
set(handles.text6,'Visible','off');
set(handles.text7,'Visible','off');
set(handles.text9,'Visible','off');
set(handles.text19,'Visible','off');
set(handles.text22,'Visible','off');
set(handles.text25,'Visible','off');
set(handles.text26,'Visible','off');
set(handles.text33,'Visible','off');
set(handles.text24,'Visible','off');
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
%Mostrar unidades inglesas;
set(handles.text35,'Visible','on');
set(handles.text36,'Visible','on');
set(handles.text37,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
132
2.1.2. TIRANTE CRTICO
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = TIRANTE_CRITICO_DE_UNA_SECCION_RECTANGULAR_OutputFcn(hObject,
eventdata, handles)
varargout{1} = handles.output;
133
%VARIABLES PARA COMPROBAR SI LOS VALORES SON INGREADOS CORRECTAMENTE
Q1=isnan(Q);
b1=isnan(b);
VAL5=get(handles.uibuttongroup1,'Tag');
SM1=str2double(VAL5)
if SM1==1
%Para unidades del sistema mtrico
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif b<=0
errordlg('Ingrese el valor del ancho de la solera (b) teniendo en cuenta que debe
ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif b1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en m/s2
g=9.81
%Clculo del tirante crtico
M=100000
err=0.000001
y=100
for i=1:M
FY=((b*y)^3/b)-(Q^2/g)
if FY==0
break
else
FDY=3*b^2*y^2
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Clculo del rea mojada
A=b*y
%Clculo del permetro mojado
P=b+2*y
%Clculo del ancho superficial
T=b
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
134
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif b<=0
errordlg('Ingrese el valor del ancho de la solera (b) teniendo en cuenta que debe
ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif b1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del tirante crtico;
M=100000
err=0.000001
y=100
for i=1:M
FY=((b*y)^3/b)-(Q^2/g)
if FY==0
break
else
FDY=3*b^2*y^2
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Clculo del rea mojada
A=b*y
%Clculo del permetro mojado
P=b+2*y
%Clculo del ancho superficial
T=b
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else NF==1
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
135
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
136
end
137
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
138
%Ocultar unidades mtricas;
set(handles.text6,'Visible','off');
set(handles.text7,'Visible','off');
set(handles.text19,'Visible','off');
set(handles.text22,'Visible','off');
set(handles.text25,'Visible','off');
set(handles.text26,'Visible','off');
set(handles.text33,'Visible','off');
set(handles.text24,'Visible','off');
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
%Mostrar unidades inglesas;
set(handles.text35,'Visible','on');
set(handles.text36,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
139
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = TIRANTE_CRITICO_DE_UNA_SECCION_TRAPEZOIDAL_OutputFcn(hObject,
eventdata, handles)
varargout{1} = handles.output;
140
end
end
end
%Clculo del rea mojada
A=(b+z*y)*y
%Clculo del permetro mojado
P=b+2*y*sqrt(1+(z^2))
%Clculo del ancho superficial
T=b+2*z*y
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif b<=0
errordlg('Ingrese el valor del ancho de la solera (b) teniendo en cuenta que debe
ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif b1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif z<=0
errordlg('Ingrese el valor del talud (z) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif z1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del tirante crtico
141
M=100000
err=0.000001
y=100
for i=1:M
FY=(((b+z*y)*y)^3/(b+2*z*y))-(Q^2/g)
if FY==0
break
else
FDY=(3*y^2*(b + y*z)^3)/(b + 2*y*z) + (3*y^3*z*(b + y*z)^2)/(b + 2*y*z) -
(2*y^3*z*(b + y*z)^3)/(b + 2*y*z)^2
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Clculo del rea mojada
A=(b+z*y)*y
%Clculo del permetro mojado
P=b+2*y*sqrt(1+(z^2))
%Clculo del ancho superficial
T=b+2*z*y
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y)
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
142
function edit3_Callback(hObject, eventdata, handles)
143
% --- Executes during object creation, after setting all properties.
function edit11_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
144
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Mostrar unidades mtricas;
set(handles.text6,'Visible','on');
set(handles.text7,'Visible','on');
set(handles.text19,'Visible','on');
set(handles.text22,'Visible','on');
set(handles.text25,'Visible','on');
set(handles.text26,'Visible','on');
set(handles.text33,'Visible','on');
set(handles.text24,'Visible','on');
set(handles.text23,'Visible','on');
set(handles.text30,'Visible','on');
%Ocultar unidades inglesas;
set(handles.text35,'Visible','off');
set(handles.text36,'Visible','off');
set(handles.text38,'Visible','off');
set(handles.text39,'Visible','off');
set(handles.text42,'Visible','off');
set(handles.text43,'Visible','off');
set(handles.text45,'Visible','off');
set(handles.text41,'Visible','off');
set(handles.text40,'Visible','off');
set(handles.text44,'Visible','off');
case 'Sistema ingls'
SM1='2'
%Borrar celdas de resultados
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Ocultar unidades mtricas;
set(handles.text6,'Visible','off');
set(handles.text7,'Visible','off');
set(handles.text19,'Visible','off');
set(handles.text22,'Visible','off');
set(handles.text25,'Visible','off');
set(handles.text26,'Visible','off');
set(handles.text33,'Visible','off');
set(handles.text24,'Visible','off');
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
%Mostrar unidades inglesas;
set(handles.text35,'Visible','on');
set(handles.text36,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
145
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = TIRANTE_CRITICO_DE_UNA_SECCION_TRIANGULAR_OutputFcn(hObject,
eventdata, handles)
varargout{1} = handles.output;
146
z=str2double(VAL2)
%VARIABLES PARA COMPROBAR SI LOS VALORES SON INGREADOS CORRECTAMENTE
Q1=isnan(Q);
z1=isnan(z);
VAL5=get(handles.uibuttongroup1,'Tag');
SM1=str2double(VAL5)
if SM1==1
%Para unidades del sistema mtrico
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif z<=0
errordlg('Ingrese el valor del talud (z) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif z1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en m/s2
g=9.81
%Clculo del tirante crtico
M=100000
err=0.000001
y=100
for i=1:M
FY=((z*(y^2))^3/(2*z*y))-(Q^2/g)
if FY==0
break
else
FDY=(5*y^4*z^2)/2
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Clculo del rea mojada
A=z*(y^2)
%Clculo del permetro mojado
P=2*y*sqrt(1+(z^2))
%Clculo del ancho superficial
T=2*z*y
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
147
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif z<=0
errordlg('Ingrese el valor del talud (z) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif z1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del tirante crtico
M=100000
err=0.000001
y=100
for i=1:M
FY=((z*(y^2))^3/(2*z*y))-(Q^2/g)
if FY==0
break
else
FDY=(5*y^4*z^2)/2
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Clculo del rea mojada
A=z*(y^2)
%Clculo del permetro mojado
P=2*y*sqrt(1+(z^2))
%Clculo del ancho superficial
T=2*z*y
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
148
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
149
set(hObject,'BackgroundColor','white');
end
150
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
151
set(handles.text6,'Visible','off');
set(handles.text19,'Visible','off');
set(handles.text22,'Visible','off');
set(handles.text25,'Visible','off');
set(handles.text26,'Visible','off');
set(handles.text33,'Visible','off');
set(handles.text24,'Visible','off');
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
%Mostrar unidades inglesas;
set(handles.text35,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = TIRANTE_CRITICO_DE_UNA_SECCION_CIRCULAR_OutputFcn(hObject,
eventdata, handles)
varargout{1} = handles.output;
152
function pushbutton1_Callback(hObject, eventdata, handles)
%Borrar celdas de resultados
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Obtener el dato del caudal
VAL1=get(handles.edit1,'String');
Q=str2double(VAL1)
%Obtener el dato del dimetro
VAL2=get(handles.edit2,'String');
d=str2double(VAL2)
%VARIABLES PARA COMPROBAR SI LOS VALORES SON INGREADOS CORRECTAMENTE
Q1=isnan(Q);
d1=isnan(d);
VAL5=get(handles.uibuttongroup1,'Tag');
SM1=str2double(VAL5)
if SM1==1
%Para unidades del sistema mtrico
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif d<=0
errordlg('Ingrese el valor del dimetro (d) teniendo en cuenta que debe ser mayor
que 0 y mayor que el tirante (y).','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif d1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en m/s2
g=9.81
%Clculo del ngulo
M=100000
err=0.000001
y=pi
for i=1:M
FY=(((1/8)*(y-sin(y))*(d^2))^3/(d*sin(y/2)))-(Q^2/g)
if FY==0
break
else
FDY=- (d^5*cos(y/2)*(y - sin(y))^3)/(1024*sin(y/2)^2) - (3*d^5*(y -
sin(y))^2*(cos(y) - 1))/(512*sin(y/2))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Clculo del tirante crtico
Y=(d/2)*(1-cos(y/2))
%Clculo del rea mojada
A=(1/8)*(y-sin(y))*(d^2)
%Clculo del permetro mojado
P=(1/2)*y*d
%Clculo del ancho superficial
T=d*sin(y/2)
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
153
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=Y+((V^2)/(2*g))
close ESPERA
A1=(pi*(d^2))/4
if (A>=A1)
errordlg('El tirante es mayor que el dimetro. Incremente el
dimetro.','Mensaje');
elseif A<=0
errordlg('El tirante es mayor que el dimetro. Incremente el
dimetro.','Mensaje');
else
%Aproximacin de resultados a 4 dgitos
Y=round(Y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
set(handles.edit6,'String',Y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
else
%Para unidades del sistema ingls
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif d<=0
errordlg('Ingrese el valor del dimetro (d) teniendo en cuenta que debe ser mayor
que 0 y mayor que el tirante (y).','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif d1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del ngulo
M=100000
err=0.000001
y=pi
for i=1:M
FY=(((1/8)*(y-sin(y))*(d^2))^3/(d*sin(y/2)))-(Q^2/g)
if FY==0
break
else
FDY=- (d^5*cos(y/2)*(y - sin(y))^3)/(1024*sin(y/2)^2) - (3*d^5*(y -
sin(y))^2*(cos(y) - 1))/(512*sin(y/2))
ER=FY/FDY
abs(ER)
y=y-ER
154
if abs(ER)<=err
break
end
end
end
%Clculo del tirante crtico
Y=(d/2)*(1-cos(y/2))
%Clculo del rea mojada
A=(1/8)*(y-sin(y))*(d^2)
%Clculo del permetro mojado
P=(1/2)*y*d
%Clculo del ancho superficial
T=d*sin(y/2)
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=Y+((V^2)/(2*g))
close ESPERA
A1=(pi*(d^2))/4
if A>=A1
errordlg('El tirante es mayor que el dimetro. Incremente el
dimetro.','Mensaje');
elseif A<=0
errordlg('El tirante es mayor que el dimetro. Incremente el
dimetro.','Mensaje');
else
%Aproximacin de resultados a 4 dgitos
Y=round(Y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
set(handles.edit6,'String',Y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
end
155
% --- Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
156
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
157
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Mostrar unidades mtricas;
set(handles.text6,'Visible','on');
set(handles.text7,'Visible','on');
set(handles.text19,'Visible','on');
set(handles.text22,'Visible','on');
set(handles.text25,'Visible','on');
set(handles.text26,'Visible','on');
set(handles.text33,'Visible','on');
set(handles.text24,'Visible','on');
set(handles.text23,'Visible','on');
set(handles.text30,'Visible','on');
%Ocultar unidades inglesas;
set(handles.text35,'Visible','off');
set(handles.text36,'Visible','off');
set(handles.text38,'Visible','off');
set(handles.text39,'Visible','off');
set(handles.text42,'Visible','off');
set(handles.text43,'Visible','off');
set(handles.text45,'Visible','off');
set(handles.text41,'Visible','off');
set(handles.text40,'Visible','off');
set(handles.text44,'Visible','off');
case 'Sistema ingls'
SM1='2'
%Borrar celdas de resultados
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Ocultar unidades mtricas;
set(handles.text6,'Visible','off');
set(handles.text7,'Visible','off');
set(handles.text19,'Visible','off');
set(handles.text22,'Visible','off');
set(handles.text25,'Visible','off');
set(handles.text26,'Visible','off');
set(handles.text33,'Visible','off');
set(handles.text24,'Visible','off');
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
%Mostrar unidades inglesas;
set(handles.text35,'Visible','on');
set(handles.text36,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
158
2.1.2.5. SECCIN PARABLICA
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = TIRANTE_CRITICO_DE_UNA_SECCION_CIRCULAR_OutputFcn(hObject,
eventdata, handles)
varargout{1} = handles.output;
159
Q1=isnan(Q);
d1=isnan(d);
VAL5=get(handles.uibuttongroup1,'Tag');
SM1=str2double(VAL5)
if SM1==1
%Para unidades del sistema mtrico
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif d<=0
errordlg('Ingrese el valor del dimetro (d) teniendo en cuenta que debe ser mayor
que 0 y mayor que el tirante (y).','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif d1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en m/s2
g=9.81
%Clculo del ngulo
M=100000
err=0.000001
y=pi
for i=1:M
FY=(((1/8)*(y-sin(y))*(d^2))^3/(d*sin(y/2)))-(Q^2/g)
if FY==0
break
else
FDY=- (d^5*cos(y/2)*(y - sin(y))^3)/(1024*sin(y/2)^2) - (3*d^5*(y -
sin(y))^2*(cos(y) - 1))/(512*sin(y/2))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Clculo del tirante crtico
Y=(d/2)*(1-cos(y/2))
%Clculo del rea mojada
A=(1/8)*(y-sin(y))*(d^2)
%Clculo del permetro mojado
P=(1/2)*y*d
%Clculo del ancho superficial
T=d*sin(y/2)
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=Y+((V^2)/(2*g))
close ESPERA
A1=(pi*(d^2))/4
if (A>=A1)
errordlg('El tirante es mayor que el dimetro. Incremente el
dimetro.','Mensaje');
elseif A<=0
160
errordlg('El tirante es mayor que el dimetro. Incremente el
dimetro.','Mensaje');
else
%Aproximacin de resultados a 4 dgitos
Y=round(Y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
set(handles.edit6,'String',Y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
else
%Para unidades del sistema ingls
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif d<=0
errordlg('Ingrese el valor del dimetro (d) teniendo en cuenta que debe ser mayor
que 0 y mayor que el tirante (y).','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif d1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del ngulo
M=100000
err=0.000001
y=pi
for i=1:M
FY=(((1/8)*(y-sin(y))*(d^2))^3/(d*sin(y/2)))-(Q^2/g)
if FY==0
break
else
FDY=- (d^5*cos(y/2)*(y - sin(y))^3)/(1024*sin(y/2)^2) - (3*d^5*(y -
sin(y))^2*(cos(y) - 1))/(512*sin(y/2))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Clculo del tirante crtico
Y=(d/2)*(1-cos(y/2))
%Clculo del rea mojada
A=(1/8)*(y-sin(y))*(d^2)
%Clculo del permetro mojado
P=(1/2)*y*d
%Clculo del ancho superficial
T=d*sin(y/2)
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
161
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=Y+((V^2)/(2*g))
close ESPERA
A1=(pi*(d^2))/4
if A>=A1
errordlg('El tirante es mayor que el dimetro. Incremente el
dimetro.','Mensaje');
elseif A<=0
errordlg('El tirante es mayor que el dimetro. Incremente el
dimetro.','Mensaje');
else
%Aproximacin de resultados a 4 dgitos
Y=round(Y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
set(handles.edit6,'String',Y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
end
162
% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
163
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
164
%Ocultar unidades inglesas;
set(handles.text35,'Visible','off');
set(handles.text36,'Visible','off');
set(handles.text38,'Visible','off');
set(handles.text39,'Visible','off');
set(handles.text42,'Visible','off');
set(handles.text43,'Visible','off');
set(handles.text45,'Visible','off');
set(handles.text41,'Visible','off');
set(handles.text40,'Visible','off');
set(handles.text44,'Visible','off');
case 'Sistema ingls'
SM1='2'
%Borrar celdas de resultados
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Ocultar unidades mtricas;
set(handles.text6,'Visible','off');
set(handles.text7,'Visible','off');
set(handles.text19,'Visible','off');
set(handles.text22,'Visible','off');
set(handles.text25,'Visible','off');
set(handles.text26,'Visible','off');
set(handles.text33,'Visible','off');
set(handles.text24,'Visible','off');
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
%Mostrar unidades inglesas;
set(handles.text35,'Visible','on');
set(handles.text36,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
165
% --- Executes just before TIRANTE_CRITICO_DE_UNA_SECCION_PARABOLICA_2 is made
visible.
function TIRANTE_CRITICO_DE_UNA_SECCION_PARABOLICA_2_OpeningFcn(hObject, eventdata,
handles, varargin)
%Cdigo para centrar la ventana
scrsz=get(0,'ScreenSize');
pos_act=get(gcf,'Position');
xr=scrsz(3)-pos_act(3);
xp=round(xr/2);
yr=scrsz(4)-pos_act(4);
yp=round(xr/2);
set(gcf,'Position',[xp yp pos_act(3) pos_act(4)]);
%Cdigo para leer la imagen
imagen=imread('PARBOLA.JPG');
%Cdigo para mostrar la imagen
image(imagen,'Parent',handles.axes1);
%Cdigo para quitar ejes a axes
set(handles.axes1,'XTick',[],'YTick',[]);
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = TIRANTE_CRITICO_DE_UNA_SECCION_PARABOLICA_2_OutputFcn(hObject,
eventdata, handles)
varargout{1} = handles.output;
166
F1=round(F,4)
while F1~=C1
if F1>C1
y=(y-y/4)
else
y=(y+y/4)
end
T=2*sqrt(y)
%Clculo del rea mojada
A=(2/3)*T*y
%Clculo del permetro mojado
x=(4*y)/T
if ((x>0) && (x<=1))
P=T+((8/3)*((y^2)/T))
else
P=(T/2)*(sqrt(1+x^2)+(1/x)*log(x+sqrt(1+x^2)))
end
R=A/P
F=(A^3)/T
F1=round(F,4)
end
%Clculo de la profundidad hidrulica
D=A/T
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit15,'String',R);
set(handles.text103,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del tirante crtico
C=(Q^2)/g
C1=round(C,4)
167
y=2
T=2*sqrt(y)
%Clculo del rea mojada
A=(2/3)*T*y
%Clculo del permetro mojado
x=(4*y)/T
if ((x>0) && (x<=1))
P=T+((8/3)*((y^2)/T))
else
P=(T/2)*(sqrt(1+x^2)+(1/x)*log(x+sqrt(1+x^2)))
end
R=A/P
F=(A^3)/T
F1=round(F,4)
while F1~=C1
if F1>C1
y=(y-y/4)
else
y=(y+y/4)
end
T=2*sqrt(y)
%Clculo del rea mojada
A=(2/3)*T*y
%Clculo del permetro mojado
x=(4*y)/T
if ((x>0) && (x<=1))
P=T+((8/3)*((y^2)/T))
else
P=(T/2)*(sqrt(1+x^2)+(1/x)*log(x+sqrt(1+x^2)))
end
R=A/P
F=(A^3)/T
F1=round(F,4)
end
%Clculo de la profundidad hidrulica
D=A/T
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit15,'String',R);
set(handles.text103,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
168
function edit1_Callback(hObject, eventdata, handles)
169
function edit10_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
170
function uibuttongroup1_SelectionChangedFcn(hObject, eventdata, handles)
SM=get(hObject,'String');
switch SM
case 'Sistema mtrico'
SM1='1'
%Borrar celdas de resultados
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
set(handles.text103,'String','');
%Mostrar unidades mtricas;
set(handles.text6,'Visible','on');
set(handles.text19,'Visible','on');
set(handles.text22,'Visible','on');
set(handles.text25,'Visible','on');
set(handles.text33,'Visible','on');
set(handles.text24,'Visible','on');
set(handles.text23,'Visible','on');
set(handles.text30,'Visible','on');
set(handles.text104,'Visible','on');
%Ocultar unidades inglesas;
set(handles.text35,'Visible','off');
set(handles.text38,'Visible','off');
set(handles.text39,'Visible','off');
set(handles.text42,'Visible','off');
set(handles.text45,'Visible','off');
set(handles.text41,'Visible','off');
set(handles.text40,'Visible','off');
set(handles.text44,'Visible','off');
set(handles.text105,'Visible','off');
171
% --- Executes on button press in pushbutton7.
function pushbutton7_Callback(hObject, eventdata, handles)
172
2.1.2.6. SECCIN RECTANGULAR CON ESQUINAS
REDONDEADAS
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout =
TIRANTE_CRITICO_DE_UNA_SECCION_RECTANGULAR_REDONDEADA_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
173
VAL6=get(handles.edit16,'String');
r=str2double(VAL6)
%VARIABLES PARA COMPROBAR SI LOS VALORES SON INGREADOS CORRECTAMENTE
Q1=isnan(Q);
b1=isnan(b);
r1=isnan(r);
VAL5=get(handles.uibuttongroup1,'Tag');
SM1=str2double(VAL5)
if SM1==1
%Para unidades del sistema mtrico
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif b<=0
errordlg('Ingrese el valor del ancho de la solera (b) teniendo en cuenta que debe
ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif b1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif r<=0
errordlg('Ingrese el valor del radio (r) teniendo en cuenta que debe ser mayor
que 0 y menor que el tirante (y).','Mensaje');
elseif r1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en m/s2
g=9.81
%Clculo del tirante crtico;
M=100000
err=0.000001
y=100
for i=1:M
FY=((((pi/2)-2)*(r^2)+((b+2*r)*y))^3/(b+2*r))-(Q^2/g)
if FY==0
break
else
FDY=3*(r^2*(pi/2 - 2) + y*(b + 2*r))^2
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
if y>r
%Clculo del rea mojada
A=(((pi/2)-2)*(r^2)+((b+2*r)*y))
%Clculo del permetro mojado
P=(((pi-2)*r)+b+(2*y))
%Clculo del ancho superficial
T=b+2*r
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
174
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
else
close ESPERA
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
errordlg('El tirante no puede ser mayor que el valor de r. Disminuya el ancho
de la solera (b) o el radio (r).','Mensaje');
end
end
else
%Para unidades del sistema ingls
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif b<=0
errordlg('Ingrese el valor del ancho de la solera (b) teniendo en cuenta que debe
ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif b1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif r<=0
errordlg('Ingrese el valor del radio (r) teniendo en cuenta que debe ser mayor
que 0 y menor que el tirante (y).','Mensaje');
elseif r1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del tirante crtico
M=100000
err=0.000001
y=100
for i=1:M
FY=((((pi/2)-2)*(r^2)+((b+2*r)*y))^3/(b+2*r))-(Q^2/g)
if FY==0
break
else
FDY=3*(r^2*(pi/2 - 2) + y*(b + 2*r))^2
ER=FY/FDY
abs(ER)
y=y-ER
175
if abs(ER)<=err
break
end
end
end
if y>r
%Clculo del rea mojada
A=(((pi/2)-2)*(r^2)+((b+2*r)*y))
%Clculo del permetro mojado
P=(((pi-2)*r)+b+(2*y))
%Clculo del ancho superficial
T=b+2*r
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
else
close ESPERA
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
errordlg('El tirante no puede ser mayor que el valor de r. Disminuya el ancho
de la solera (b) o el radio (r).','Mensaje');
end
end
end
176
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
177
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
178
switch SM
case 'Sistema mtrico'
SM1='1'
%Borrar celdas de resultados
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Mostrar unidades mtricas;
set(handles.text6,'Visible','on');
set(handles.text7,'Visible','on');
set(handles.text19,'Visible','on');
set(handles.text22,'Visible','on');
set(handles.text25,'Visible','on');
set(handles.text26,'Visible','on');
set(handles.text33,'Visible','on');
set(handles.text24,'Visible','on');
set(handles.text23,'Visible','on');
set(handles.text30,'Visible','on');
set(handles.text48,'Visible','on');
%Ocultar unidades inglesas;
set(handles.text35,'Visible','off');
set(handles.text36,'Visible','off');
set(handles.text38,'Visible','off');
set(handles.text39,'Visible','off');
set(handles.text42,'Visible','off');
set(handles.text43,'Visible','off');
set(handles.text45,'Visible','off');
set(handles.text41,'Visible','off');
set(handles.text40,'Visible','off');
set(handles.text44,'Visible','off');
set(handles.text47,'Visible','off');
case 'Sistema ingls'
SM1='2'
%Borrar celdas de resultados
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Ocultar unidades mtricas;
set(handles.text6,'Visible','off');
set(handles.text7,'Visible','off');
set(handles.text19,'Visible','off');
set(handles.text22,'Visible','off');
set(handles.text25,'Visible','off');
set(handles.text26,'Visible','off');
set(handles.text33,'Visible','off');
set(handles.text24,'Visible','off');
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
set(handles.text48,'Visible','off');
%Mostrar unidades inglesas;
set(handles.text35,'Visible','on');
set(handles.text36,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
set(handles.text47,'Visible','on');
179
end
set(handles.uibuttongroup1,'Tag',SM1)
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout =
TIRANTE_CRITICO_DE_UNA_SECCION_TRIANGULAR_REDONDEADO_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
180
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Obtener el dato del caudal
VAL1=get(handles.edit1,'String');
Q=str2double(VAL1)
%Obtener el dato del radio
VAL2=get(handles.edit2,'String');
r=str2double(VAL2)
%Obtener el dato del talud
VAL6=get(handles.edit16,'String');
z=str2double(VAL6)
%VARIABLES PARA COMPROBAR SI LOS VALORES SON INGREADOS CORRECTAMENTE
Q1=isnan(Q);
r1=isnan(r);
z1=isnan(z);
VAL5=get(handles.uibuttongroup1,'Tag');
SM1=str2double(VAL5)
if SM1==1
%Para unidades del sistema mtrico
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif r<=0
errordlg('Ingrese el valor del radio (r) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif r1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif z<=0
errordlg('Ingrese el valor del talud (z) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif z1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en m/s2
g=9.81
%Clculo del del ancho superficial
M=100000
err=0.000001
y=100
for i=1:M
FY=((((y^2)/(4*z))-(((r^2)/z)*(1-(z*acot(z)))))^3/y)-(Q^2/g)
if FY==0
break
else
FDY=(3*(((z*acot(z) - 1)*r^2)/z + y^2/(4*z))^2)/(2*z) - (((z*acot(z) -
1)*r^2)/z + y^2/(4*z))^3/y^2
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
T=y
%Clculo del tirante crtico
w=atan(1/z)
w1=pi-(2*w)
B=((2*pi)-(2*w1))/2
Y2=r*(1-cos(B/2))
M=2*r*sin(B/2)
C=(T-M)/2
Y1=tan(w)*C
Y=Y1+Y2
%Clculo del rea mojada
A=(((T^2)/(4*z))-(((r^2)/z)*(1-(z*acot(z)))))
%Clculo del permetro mojado
181
P=(((T/z)*sqrt(1+(z^2)))-(((2*r)/z)*(1-z*acot(z))))
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=Y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
Y=round(Y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',Y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif r<=0
errordlg('Ingrese el valor del radio (r) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif r1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif z<=0
errordlg('Ingrese el valor del talud (z) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif z1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del del ancho superficial
M=100000
err=0.000001
y=100
for i=1:M
FY=((((y^2)/(4*z))-(((r^2)/z)*(1-(z*acot(z)))))^3/y)-(Q^2/g)
if FY==0
break
else
182
FDY=(3*(((z*acot(z) - 1)*r^2)/z + y^2/(4*z))^2)/(2*z) - (((z*acot(z) -
1)*r^2)/z + y^2/(4*z))^3/y^2
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
T=y
%Clculo del tirante crtico
w=atan(1/z)
w1=pi-(2*w)
B=((2*pi)-(2*w1))/2
Y2=r*(1-cos(B/2))
M=2*r*sin(B/2)
C=(T-M)/2
Y1=tan(w)*C
Y=Y1+Y2
%Clculo del rea mojada
A=(((T^2)/(4*z))-(((r^2)/z)*(1-(z*acot(z)))))
%Clculo del permetro mojado
P=(((T/z)*sqrt(1+(z^2)))-(((2*r)/z)*(1-z*acot(z))))
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=Y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
Y=round(Y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',Y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
183
function edit3_Callback(hObject, eventdata, handles)
184
% --- Executes during object creation, after setting all properties.
function edit11_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
185
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Mostrar unidades mtricas;
set(handles.text6,'Visible','on');
set(handles.text7,'Visible','on');
set(handles.text19,'Visible','on');
set(handles.text22,'Visible','on');
set(handles.text25,'Visible','on');
set(handles.text26,'Visible','on');
set(handles.text33,'Visible','on');
set(handles.text24,'Visible','on');
set(handles.text23,'Visible','on');
set(handles.text30,'Visible','on');
%Ocultar unidades inglesas;
set(handles.text35,'Visible','off');
set(handles.text36,'Visible','off');
set(handles.text38,'Visible','off');
set(handles.text39,'Visible','off');
set(handles.text42,'Visible','off');
set(handles.text43,'Visible','off');
set(handles.text45,'Visible','off');
set(handles.text41,'Visible','off');
set(handles.text40,'Visible','off');
set(handles.text44,'Visible','off');
case 'Sistema ingls'
SM1='2'
%Borrar celdas de resultados
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Ocultar unidades mtricas;
set(handles.text6,'Visible','off');
set(handles.text7,'Visible','off');
set(handles.text19,'Visible','off');
set(handles.text22,'Visible','off');
set(handles.text25,'Visible','off');
set(handles.text26,'Visible','off');
set(handles.text33,'Visible','off');
set(handles.text24,'Visible','off');
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
%Mostrar unidades inglesas;
set(handles.text35,'Visible','on');
set(handles.text36,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
186
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
2.1.3. CAUDALES
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = CAUDAL_DE_UNA_SECCION_RECTANGULAR_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
187
VAL1=get(handles.edit1,'String');
y=str2double(VAL1)
%Obtener el dato del ancho de la solera
VAL2=get(handles.edit2,'String');
b=str2double(VAL2)
%Obtener el dato de la pendiente
VAL3=get(handles.edit3,'String');
S=str2double(VAL3)
%Obtener el dato del coeficiente n
VAL4=get(handles.edit4,'String');
n=str2double(VAL4)
%VARIABLES PARA COMPROBAR SI LOS VALORES SON INGREADOS CORRECTAMENTE
y1=isnan(y);
b1=isnan(b);
S1=isnan(S);
n1=isnan(n);
VAL5=get(handles.uibuttongroup1,'Tag');
SM1=str2double(VAL5)
if SM1==1
%Para unidades del sistema mtrico
if y<=0
errordlg('Ingrese el valor del tirante (y) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif b<=0
errordlg('Ingrese el valor del ancho de la solera (b) teniendo en cuenta que debe
ser mayor que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif y1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif b1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en m/s2
g=9.81
%Clculo del rea mojada
A=b*y
%Clculo del permetro mojado
P=b+2*y
%Clculo del radio hidrulico
R=A/P
%Clculo del caudal
Q=(1/n)*A*R^(2/3)*S^(1/2)
%Clculo del ancho superficial
T=b
%Clculo de la profundidad hidrulica
D=A/T
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
188
%Aproximacin de resultados a 4 dgitos
Q=round(Q,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',Q);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if y<=0
errordlg('Ingrese el valor del tirante (y) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif b<=0
errordlg('Ingrese el valor del ancho de la solera (b) teniendo en cuenta que debe
ser mayor que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif y1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif b1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del rea mojada
A=b*y
%Clculo del permetro mojado
P=b+2*y
%Clculo del radio hidrulico
R=A/P
%Clculo del caudal
Q=(1.486/n)*A*R^(2/3)*S^(1/2)
%Clculo del ancho superficial
T=b
%Clculo de la profundidad hidrulica
D=A/T
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de Froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
189
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
Q=round(Q,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',Q);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
190
% --- Executes during object creation, after setting all properties.
function edit7_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
191
set(handles.edit3,'String','');
set(handles.edit4,'String','');
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
192
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Ocultar unidades mtricas
set(handles.text6,'Visible','off');
set(handles.text7,'Visible','off');
set(handles.text9,'Visible','off');
set(handles.text19,'Visible','off');
set(handles.text22,'Visible','off');
set(handles.text25,'Visible','off');
set(handles.text26,'Visible','off');
set(handles.text33,'Visible','off');
set(handles.text24,'Visible','off');
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
%Mostrar unidades inglesas
set(handles.text35,'Visible','on');
set(handles.text36,'Visible','on');
set(handles.text37,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
193
set(gcf,'Position',[xp yp pos_act(3) pos_act(4)]);
%Cdigo para leer la imagen
imagen=imread('TRAPECIO.JPG');
%Cdigo para mostrar la imagen
image(imagen,'Parent',handles.axes1);
%Cdigo para quitar ejes a axes
set(handles.axes1,'XTick',[],'YTick',[]);
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = CAUDAL_DE_UNA_SECCION_TRAPEZOIDAL_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
194
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif z<=0
errordlg('Ingrese el valor del talud (z) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif z1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en m/s2
g=9.81
%Clculo del rea mojada
A=(b+z*y)*y
%Clculo del permetro mojado
P=b+2*y*sqrt(1+z^2)
%Clculo del radio hidrulico
R=A/P
%Clculo del caudal
Q=(1/n)*A*R^(2/3)*S^(1/2)
%Clculo del ancho superficial
T=b+2*z*y
%Clculo de la profundidad hidrulica
D=A/T
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
Q=round(Q,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',Q);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if y<=0
errordlg('Ingrese el valor del tirante (y) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif b<=0
errordlg('Ingrese el valor del ancho de la solera (b) teniendo en cuenta que debe
ser mayor que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
195
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif y1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif b1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif z<=0
errordlg('Ingrese el valor del talud (z) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif z1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del rea mojada
A=(b+z*y)*y
%Clculo del permetro mojado
P=b+2*y*sqrt(1+z^2)
%Clculo del radio hidrulico
R=A/P
%Clculo del caudal
Q=(1.486/n)*A*R^(2/3)*S^(1/2)
%Clculo del ancho superficial
T=b+2*z*y
%Clculo de la profundidad hidrulica
D=A/T
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
Q=round(Q,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',Q);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
196
function edit1_Callback(hObject, eventdata, handles)
197
function edit10_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
198
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
199
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = CAUDAL_DE_UNA_SECCION_TRIANGULAR_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
200
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Obtener el dato del tirante
VAL1=get(handles.edit1,'String');
y=str2double(VAL1)
%Obtener el dato del talud
VAL2=get(handles.edit2,'String');
z=str2double(VAL2)
%Obtener el dato de la pendiente
VAL3=get(handles.edit3,'String');
S=str2double(VAL3)
%Obtener el dato del coeficiente n
VAL4=get(handles.edit4,'String');
n=str2double(VAL4)
%VARIABLES PARA COMPROBAR SI LOS VALORES SON INGREADOS CORRECTAMENTE
y1=isnan(y);
z1=isnan(z);
S1=isnan(S);
n1=isnan(n);
VAL5=get(handles.uibuttongroup1,'Tag');
SM1=str2double(VAL5)
if SM1==1
%Para unidades del sistema mtrico
if y<=0
errordlg('Ingrese el valor del tirante (y) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif z<=0
errordlg('Ingrese el valor del talud (z) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif y1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif z1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en m/s2
g=9.81
%Clculo del rea mojada
A=z*y^2
%Clculo del permetro mojado
P=2*y*sqrt(1+z^2)
%Clculo del radio hidrulico
R=A/P
%Clculo del caudal
Q=(1/n)*A*R^(2/3)*S^(1/2)
%Clculo del ancho superficial
T=2*z*y
%Clculo de la profundidad hidrulica
D=A/T
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
201
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
Q=round(Q,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',Q);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if y<=0
errordlg('Ingrese el valor del tirante (y) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif z<=0
errordlg('Ingrese el valor del talud (z) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif y1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif z1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del rea mojada
A=z*y^2
%Clculo del permetro mojado
P=2*y*sqrt(1+z^2)
%Clculo del radio hidrulico
R=A/P
%Clculo del caudal
Q=(1.486/n)*A*R^(2/3)*S^(1/2)
%Clculo del ancho superficial
T=2*z*y
%Clculo de la profundidad hidrulica
D=A/T
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
202
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
Q=round(Q,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',Q);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
203
function edit6_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
204
set(hObject,'BackgroundColor','white');
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
205
set(handles.text40,'Visible','off');
set(handles.text44,'Visible','off');
case 'Sistema ingls'
SM1='2'
%Borrar celdas de resultados
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Ocultar unidades mtricas
set(handles.text6,'Visible','off');
set(handles.text9,'Visible','off');
set(handles.text19,'Visible','off');
set(handles.text22,'Visible','off');
set(handles.text25,'Visible','off');
set(handles.text26,'Visible','off');
set(handles.text33,'Visible','off');
set(handles.text24,'Visible','off');
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
%Mostrar unidades inglesas
set(handles.text35,'Visible','on');
set(handles.text37,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
206
%Cdigo para leer la imagen;
imagen=imread('CIRCULAR.JPG');
%Cdigo para mostrar la imagen;
image(imagen,'Parent',handles.axes1);
%Cdigo para quitar ejes a axes;
set(handles.axes1,'XTick',[],'YTick',[]);
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = CAUDAL_DE_UNA_SECCION_CIRCULAR_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
207
ESPERA
%Clculo del ngulo
if y==d/2
x=pi
elseif y>d/2
y1=y-(d/2)
t=acos(y1/(d/2))
t1=2*t
x=(2*pi)-t1
else
y1=(d/2)-y
t=acos(y1/(d/2))
x=2*t
end
%Valor de la gravedad en m/s2
g=9.81
%Clculo del rea mojada
A=(1/8)*(x-sin(x))*(d^2)
%Clculo del permetro mojado
P=(1/2)*x*d
%Clculo del radio hidrulico
R=A/P
%Clculo del caudal
Q=(1/n)*A*R^(2/3)*S^(1/2)
%Clculo del ancho superficial
T=d*sin(x/2)
%Clculo de la profundidad hidrulica
D=A/T
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
Q=round(Q,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',Q);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if y<=0
errordlg('Ingrese el valor del tirante (y) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif d<=0
errordlg('Ingrese el valor del dimetro (d) teniendo en cuenta que debe ser mayor
que 0 y mayor que el tirante (y).','Mensaje');
elseif S<=0
208
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif y1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif d1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif y>=d
errordlg('El tirante (y) debe ser menor que el dimetro','Mensaje');
else
ESPERA
%Clculo del ngulo
if y==d/2
x=pi
elseif y>d/2
y1=y-(d/2)
t=acos(y1/(d/2))
t1=2*t
x=(2*pi)-t1
else
y1=(d/2)-y
t=acos(y1/(d/2))
x=2*t
end
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del rea mojada
A=(1/8)*(x-sin(x))*(d^2)
%Clculo del permetro mojado
P=(1/2)*x*d
%Clculo del radio hidrulico
R=A/P
%Clculo del caudal
Q=(1.486/n)*A*R^(2/3)*S^(1/2)
%Clculo del ancho superficial
T=d*sin(x/2)
%Clculo de la profundidad hidrulica
D=A/T
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
Q=round(Q,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',Q);
209
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
210
function edit9_Callback(hObject, eventdata, handles)
211
close CAUDAL_DE_UNA_SECCION_CIRCULAR
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
212
set(handles.text26,'Visible','off');
set(handles.text33,'Visible','off');
set(handles.text24,'Visible','off');
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
%Mostrar unidades inglesas
set(handles.text35,'Visible','on');
set(handles.text36,'Visible','on');
set(handles.text37,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = CAUDAL_DE_UNA_SECCION_PARABOLICA_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
213
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Obtener el dato del caudal
VAL1=get(handles.edit1,'String');
y=str2double(VAL1)
%Obtener el dato del ancho superficial
VAL2=get(handles.edit2,'String');
T=str2double(VAL2)
%Obtener el dato de la pendiente
VAL3=get(handles.edit3,'String');
S=str2double(VAL3)
%Obtener el dato del coeficiente n
VAL4=get(handles.edit4,'String');
n=str2double(VAL4)
%VARIABLES PARA COMPROBAR SI LOS VALORES SON INGREADOS CORRECTAMENTE
y1=isnan(y);
T1=isnan(T);
S1=isnan(S);
n1=isnan(n);
VAL5=get(handles.uibuttongroup1,'Tag');
SM1=str2double(VAL5)
if SM1==1
%Para unidades del sistema mtrico
if y<=0
errordlg('Ingrese el valor del tirante (y) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif T<=0
errordlg('Ingrese el valor del ancho superficial (T) teniendo en cuenta que debe
ser mayor que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif y1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif T1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en m/s2
g=9.81
%Clculo del rea mojada
A=(2/3)*T*y
%Clculo del permetro mojado
x=(4*y)/T
if ((x<=1)&&(x>0))
P=T+((8/3)*((y^2)/T))
else
P=(T/2)*(sqrt(1+x^2)+(1/x)*log(x+sqrt(1+x^2)))
end
%Clculo del radio hidrulico
R=A/P
%Clculo del caudal
Q=(1/n)*A*R^(2/3)*S^(1/2)
%Clculo del ancho superficial
T=(3*A)/(2*y)
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del factor de seccin
214
Z=A*sqrt(D)
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
Q=round(Q,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',Q);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit15,'String',R);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if y<=0
errordlg('Ingrese el valor del tirante (y) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif T<=0
errordlg('Ingrese el valor del ancho superficial (T) teniendo en cuenta que debe
ser mayor que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif y1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif T1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del rea mojada
A=(2/3)*T*y
%Clculo del permetro mojado
x=(4*y)/T
if ((x<=1)&&(x>0))
P=T+((8/3)*((y^2)/T))
else
P=(T/2)*(sqrt(1+x^2)+(1/x)*log(x+sqrt(1+x^2)))
215
end
%Clculo del radio hidrulico
R=A/P
%Clculo del caudal
Q=(1.486/n)*A*R^(2/3)*S^(1/2)
%Clculo del ancho superficial
T=(3*A)/(2*y)
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del factor de seccin
Z=A*sqrt(D)
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
Q=round(Q,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',Q);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit15,'String',R);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
216
function edit2_Callback(hObject, eventdata, handles)
217
% --- Executes during object creation, after setting all properties.
function edit13_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
218
set(handles.text23,'Visible','on');
set(handles.text30,'Visible','on');
%Ocultar unidades inglesas
set(handles.text35,'Visible','off');
set(handles.text36,'Visible','off');
set(handles.text37,'Visible','off');
set(handles.text38,'Visible','off');
set(handles.text39,'Visible','off');
set(handles.text42,'Visible','off');
set(handles.text45,'Visible','off');
set(handles.text41,'Visible','off');
set(handles.text40,'Visible','off');
set(handles.text44,'Visible','off');
case 'Sistema ingls'
SM1='2'
%Borrar celdas de resultados
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Ocultar unidades mtricas
set(handles.text6,'Visible','off');
set(handles.text7,'Visible','off');
set(handles.text9,'Visible','off');
set(handles.text19,'Visible','off');
set(handles.text22,'Visible','off');
set(handles.text25,'Visible','off');
set(handles.text33,'Visible','off');
set(handles.text24,'Visible','off');
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
%Mostrar unidades inglesas
set(handles.text35,'Visible','on');
set(handles.text36,'Visible','on');
set(handles.text37,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
219
% --- Executes during object creation, after setting all properties.
function edit22_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
220
function CAUDAL_DE_UNA_SECCION_RECTANGULAR_REDONDEADA_OpeningFcn(hObject, eventdata,
handles, varargin)
%Cdigo para centrar la ventana
scrsz=get(0,'ScreenSize');
pos_act=get(gcf,'Position');
xr=scrsz(3)-pos_act(3);
xp=round(xr/2);
yr=scrsz(4)-pos_act(4);
yp=round(xr/2);
set(gcf,'Position',[xp yp pos_act(3) pos_act(4)]);
%Cdigo para leer la imagen
imagen=imread('RECTANGULAR_REDONDEADAS.JPG');
%Cdigo para mostrar la imagen
image(imagen,'Parent',handles.axes1);
%Cdigo para quitar ejes a axes
set(handles.axes1,'XTick',[],'YTick',[]);
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = CAUDAL_DE_UNA_SECCION_RECTANGULAR_REDONDEADA_OutputFcn(hObject,
eventdata, handles)
varargout{1} = handles.output;
221
elseif y1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif b1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif r<=0
errordlg('Ingrese el valor del radio (r) teniendo en cuenta que debe ser mayor
que 0 y menor que el tirante (y).','Mensaje');
elseif r1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif y<=r
errordlg('El tirante no puede ser menor o igual que el radio (r).','Mensaje');
else
ESPERA
%Valor de la gravedad en m/s2
g=9.81
%Clculo del rea mojada
A=(((pi/2)-2)*(r^2)+((b+2*r)*y))
%Clculo del permetro mojado
P=(((pi-2)*r)+b+(2*y))
%Clculo del radio hidrulico
R=A/P
%Clculo del caudal
Q=(1/n)*A*R^(2/3)*S^(1/2)
%Clculo del ancho superficial
T=b+2*r
%Clculo de la profundidad hidrulica
D=A/T
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
Q=round(Q,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',Q);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
222
if y<=0
errordlg('Ingrese el valor del tirante (y) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif b<=0
errordlg('Ingrese el valor del ancho de la solera (b) teniendo en cuenta que debe
ser mayor que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif y1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif b1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif r<=0
errordlg('Ingrese el valor del radio (r) teniendo en cuenta que debe ser mayor
que 0 y menor que el tirante (y).','Mensaje');
elseif r1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif y<=r
errordlg('El tirante no puede ser menor o igual que el radio (r).','Mensaje');
else
ESPERA
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del rea mojada
A=(((pi/2)-2)*(r^2)+((b+2*r)*y))
%Clculo del permetro mojado
P=(((pi-2)*r)+b+(2*y))
%Clculo del radio hidrulico
R=A/P
%Clculo del caudal
Q=(1.486/n)*A*R^(2/3)*S^(1/2)
%Clculo del ancho superficial
T=b+2*r
%Clculo de la profundidad hidrulica
D=A/T
%Clculo de la velocidad
V=Q/A;
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
Q=round(Q,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',Q);
223
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
224
function edit9_Callback(hObject, eventdata, handles)
225
INICIO
close CAUDAL_DE_UNA_SECCION_RECTANGULAR_REDONDEADA
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
226
set(handles.text19,'Visible','off');
set(handles.text22,'Visible','off');
set(handles.text25,'Visible','off');
set(handles.text26,'Visible','off');
set(handles.text33,'Visible','off');
set(handles.text24,'Visible','off');
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
set(handles.text48,'Visible','off');
%Mostrar unidades inglesas
set(handles.text35,'Visible','on');
set(handles.text36,'Visible','on');
set(handles.text37,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
set(handles.text47,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
227
image(imagen,'Parent',handles.axes1);
%Cdigo para quitar ejes a axes
set(handles.axes1,'XTick',[],'YTick',[]);
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = CAUDAL_DE_UNA_SECCION_TRIANGULAR_REDONDEADO_OutputFcn(hObject,
eventdata, handles)
varargout{1} = handles.output;
228
errordlg('Ingrese el valor del talud (z) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif z1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en m/s2
g=9.81
%Clculo del ancho superficial
T=2*(z*(y-r)+r*sqrt(1+z^2))
%Clculo del rea mojada
A=(((T^2)/(4*z))-(((r^2)/z)*(1-(z*acot(z)))))
%Clculo del permetro mojado
P=(((T/z)*sqrt(1+(z^2)))-(((2*r)/z)*(1-z*acot(z))))
%Clculo del radio hidrulico
R=A/P
%Clculo del caudal
Q=(1/n)*A*R^(2/3)*S^(1/2)
%Clculo de la profundidad hidrulica
D=A/T
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
Q=round(Q,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',Q);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if y<=0
errordlg('Ingrese el valor del tirante (y) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif r<=0
errordlg('Ingrese el valor del radio (r) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif y1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
229
elseif r1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif z<=0
errordlg('Ingrese el valor del talud (z) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif z1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del ancho superficial
T=2*(z*(y-r)+r*sqrt(1+z^2))
%Clculo del rea mojada
A=(((T^2)/(4*z))-(((r^2)/z)*(1-(z*acot(z)))))
%Clculo del permetro mojado
P=(((T/z)*sqrt(1+(z^2)))-(((2*r)/z)*(1-z*acot(z))))
%Clculo del radio hidrulico
R=A/P
%Clculo del caudal
Q=(1.486/n)*A*R^(2/3)*S^(1/2)
%Clculo de la profundidad hidrulica
D=A/T
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
Q=round(Q,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',Q);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
230
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
231
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
232
function uibuttongroup1_SelectionChangedFcn(hObject, eventdata, handles)
SM=get(hObject,'String');
switch SM
case 'Sistema mtrico'
SM1='1'
%Borrar celdas de resultados
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Mostrar unidades mtricas
set(handles.text6,'Visible','on');
set(handles.text7,'Visible','on');
set(handles.text9,'Visible','on');
set(handles.text19,'Visible','on');
set(handles.text22,'Visible','on');
set(handles.text25,'Visible','on');
set(handles.text26,'Visible','on');
set(handles.text33,'Visible','on');
set(handles.text24,'Visible','on');
set(handles.text23,'Visible','on');
set(handles.text30,'Visible','on');
%Ocultar unidades inglesas
set(handles.text35,'Visible','off');
set(handles.text36,'Visible','off');
set(handles.text37,'Visible','off');
set(handles.text38,'Visible','off');
set(handles.text39,'Visible','off');
set(handles.text42,'Visible','off');
set(handles.text43,'Visible','off');
set(handles.text45,'Visible','off');
set(handles.text41,'Visible','off');
set(handles.text40,'Visible','off');
set(handles.text44,'Visible','off');
case 'Sistema ingls'
SM1='2'
%Borrar celdas de resultados
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Ocultar unidades mtricas
set(handles.text6,'Visible','off');
set(handles.text7,'Visible','off');
set(handles.text9,'Visible','off');
set(handles.text19,'Visible','off');
set(handles.text22,'Visible','off');
set(handles.text25,'Visible','off');
set(handles.text26,'Visible','off');
set(handles.text33,'Visible','off');
set(handles.text24,'Visible','off');
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
%Mostrar unidades inglesas
set(handles.text35,'Visible','on');
set(handles.text36,'Visible','on');
set(handles.text37,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
233
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout =
ELEMENTOS_GEOMETRICOS_DE_UNA_SECCION_RECTANGULAR_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
234
%Borrar celdas de resultados
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
%Obtener el dato del ancho de la solera
VAL1=get(handles.edit1,'String');
b=str2double(VAL1)
%Obtener el dato del tirante
VAL2=get(handles.edit2,'String');
y=str2double(VAL2)
%VARIABLES PARA COMPROBAR SI LOS VALORES SON INGREADOS CORRECTAMENTE;
b1=isnan(b);
y1=isnan(y);
if b<=0
errordlg('Ingrese el valor del ancho de la solera (b) teniendo en cuenta que debe
ser mayor que 0.','Mensaje');
elseif y<=0
errordlg('Ingrese el valor del tirante (y) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif b1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif y1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del rea mojada
A=b*y
%Clculo del permetro mojado
P=b+2*y
%Clculo del radio hidrulico
R=A/P
%Clculo del ancho superficial
T=b
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del factor de seccin
Z=sqrt(D)
%Aproximacin de resultados a 4 dgitos
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
Z=round(Z,4);
%Impresin de resultados
close ESPERA
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',Z);
end
235
end
236
% --- Executes during object creation, after setting all properties.
function edit12_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
237
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout =
ELEMENTOS_GEOMETRICOS_DE_UNA_SECCION_TRAPEZOIDAL_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
238
ESPERA
%Clculo del rea mojada
A=(b+z*y)*y
%Clculo del permetro mojado
P=b+2*y*sqrt(1+z^2)
%Clculo del radio hidrulico
R=A/P
%Clculo del ancho superficial
T=b+2*z*y
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del factor de seccin
Z=sqrt(D)
%Aproximacin de resultados a 4 dgitos
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
Z=round(Z,4);
%Impresin de resultados
close ESPERA
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',Z);
end
239
function edit7_Callback(hObject, eventdata, handles)
240
set(handles.edit1,'String','');
set(handles.edit2,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit16,'String','');
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
241
imagen=imread('TRINGULO.JPG');
%Cdigo para mostrar la imagen
image(imagen,'Parent',handles.axes1);
%Cdigo para quitar ejes a axes
set(handles.axes1,'XTick',[],'YTick',[]);
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout =
ELEMENTOS_GEOMETRICOS_DE_UNA_SECCION_TRIANGULAR_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
242
function edit1_Callback(hObject, eventdata, handles)
243
% --- Executes during object creation, after setting all properties.
function edit10_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
244
2.1.4.4. SECCIN CIRCULAR
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = ELEMENTOS_GEOMETRICOS_DE_UNA_SECCION_CIRCULAR_OutputFcn(hObject,
eventdata, handles)
varargout{1} = handles.output;
245
errordlg('Ingrese el valor del tirante (y) teniendo en cuenta que tiene que ser
mayor que 0 y menor que el dimetro (d).','Mensaje');
elseif d1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif y1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif y>=d
errordlg('El tirante (y) debe ser menor que el dimetro','Mensaje');
else
ESPERA
%Clculo del ngulo
if y==d/2
x=pi
elseif y>d/2
y1=y-(d/2)
t=acos(y1/(d/2))
t1=2*t
x=(2*pi)-t1
else
y1=(d/2)-y
t=acos(y1/(d/2))
x=2*t
end
%Clculo del rea mojada
A=(1/8)*(x-sin(x))*(d^2)
%Clculo del permetro mojado
P=(1/2)*x*d
%Clculo del radio hidrulico
R=A/P
%Clculo del ancho superficial
T=d*sin(x/2)
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del factor de seccin
Z=sqrt(D)
%Aproximacin de resultados a 4 dgitos
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
Z=round(Z,4);
%Impresin de resultados
close ESPERA
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',Z);
end
246
function edit4_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
247
set(hObject,'BackgroundColor','white');
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
248
% --- Executes just before ELEMENTOS_GEOMETRICOS_DE_UNA_SECCION_PARABOLICA is made
visible.
function ELEMENTOS_GEOMETRICOS_DE_UNA_SECCION_PARABOLICA_OpeningFcn(hObject,
eventdata, handles, varargin)
%Cdigo para centrar la ventana
scrsz=get(0,'ScreenSize');
pos_act=get(gcf,'Position');
xr=scrsz(3)-pos_act(3);
xp=round(xr/2);
yr=scrsz(4)-pos_act(4);
yp=round(xr/2);
set(gcf,'Position',[xp yp pos_act(3) pos_act(4)]);
%Cdigo para leer la imagen
imagen=imread('PARBOLA.JPG');
%Cdigo para mostrar la imagen
image(imagen,'Parent',handles.axes1);
%Cdigo para quitar ejes a axes
set(handles.axes1,'XTick',[],'YTick',[]);
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout =
ELEMENTOS_GEOMETRICOS_DE_UNA_SECCION_PARABOLICA_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
249
D=A/T
%Clculo del factor de seccin
Z=sqrt(D)
%Aproximacin de resultados a 4 dgitos
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
Z=round(Z,4);
%Impresin de resultados
close ESPERA
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',Z);
end
250
% --- Executes during object creation, after setting all properties.
function edit8_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
251
function pushbutton5_Callback(hObject, eventdata, handles)
INICIO
close ELEMENTOS_GEOMETRICOS_DE_UNA_SECCION_PARABOLICA
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
function varargout =
ELEMENTOS_GEOMETRICOS_DE_UNA_SECCION_RECTANGULAR_REDONDEADO(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn',
@ELEMENTOS_GEOMETRICOS_DE_UNA_SECCION_RECTANGULAR_REDONDEADO_OpeningFcn, ...
'gui_OutputFcn',
@ELEMENTOS_GEOMETRICOS_DE_UNA_SECCION_RECTANGULAR_REDONDEADO_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout =
ELEMENTOS_GEOMETRICOS_DE_UNA_SECCION_RECTANGULAR_REDONDEADO_OutputFcn(hObject,
eventdata, handles)
varargout{1} = handles.output;
252
function pushbutton1_Callback(hObject, eventdata, handles)
%Borrar celdas de resultados
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
%Obtener el dato del tirante
VAL1=get(handles.edit1,'String');
y=str2double(VAL1)
%Obtener el dato del ancho de la solera
VAL2=get(handles.edit2,'String');
b=str2double(VAL2)
%Obtener el dato del radio
VAL3=get(handles.edit16,'String');
r=str2double(VAL3)
%VARIABLES PARA COMPROBAR SI LOS VALORES SON INGREADOS CORRECTAMENTE;
y1=isnan(y);
b1=isnan(b);
r1=isnan(r);
if y<=0
errordlg('Ingrese el valor del tirante (y) teniendo en cuenta que debe ser mayor
que 0 y que el radio (r).','Mensaje');
elseif b<=0
errordlg('Ingrese el valor del ancho de la solera (b) teniendo en cuenta que debe
ser mayor que 0.','Mensaje');
elseif y1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif b1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif r<=0
errordlg('Ingrese el valor del radio (r) teniendo en cuenta que debe ser mayor
que 0 y menor que el tirante (y).','Mensaje');
elseif r1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif y<=r
errordlg('El tirante no puede ser menor o igual que el radio (r).','Mensaje');
else
ESPERA
%Clculo del rea mojada
A=(((pi/2)-2)*(r^2)+((b+2*r)*y))
%Clculo del permetro mojado
P=(((pi-2)*r)+b+(2*y))
%Clculo del radio hidrulico
R=A/P
%Clculo del ancho superficial
T=b+2*r
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del factor de seccin
Z=sqrt(D)
%Aproximacin de resultados a 4 dgitos
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
Z=round(Z,4);
%Impresin de resultados
close ESPERA
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',Z);
end
253
function edit1_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
254
set(hObject,'BackgroundColor','white');
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
255
set(hObject,'BackgroundColor','white');
end
function varargout =
ELEMENTOS_GEOMETRICOS_DE_UNA_SECCION_TRIANGULAR_REDONDEADO(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn',
@ELEMENTOS_GEOMETRICOS_DE_UNA_SECCION_TRIANGULAR_REDONDEADO_OpeningFcn, ...
'gui_OutputFcn',
@ELEMENTOS_GEOMETRICOS_DE_UNA_SECCION_TRIANGULAR_REDONDEADO_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout =
ELEMENTOS_GEOMETRICOS_DE_UNA_SECCION_TRIANGULAR_REDONDEADO_OutputFcn(hObject,
eventdata, handles)
varargout{1} = handles.output;
256
VAL3=get(handles.edit16,'String');
z=str2double(VAL3)
%VARIABLES PARA COMPROBAR SI LOS VALORES SON INGREADOS CORRECTAMENTE
y1=isnan(y);
r1=isnan(r);
z1=isnan(z);
if y<=0
errordlg('Ingrese el valor del tirante (y) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif r<=0
errordlg('Ingrese el valor del radio (r) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif y1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif r1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif z<=0
errordlg('Ingrese el valor del talud (z) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif z1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del ancho superficial
T=2*(z*(y-r)+r*sqrt(1+z^2))
%Clculo del rea mojada
A=(((T^2)/(4*z))-(((r^2)/z)*(1-(z*acot(z)))))
%Clculo del permetro mojado
P=(((T/z)*sqrt(1+(z^2)))-(((2*r)/z)*(1-z*acot(z))))
%Clculo del radio hidrulico
R=A/P
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del factor de seccin
Z=sqrt(D)
%Aproximacin de resultados a 4 dgitos
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
Z=round(Z,4);
%Impresin de resultados
close ESPERA
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',Z);
end
257
% --- Executes during object creation, after setting all properties.
function edit4_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
258
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
259
2.1.5. SECCIN HIDRULICA PTIMA
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout =
SECCION_HIDRAULICA_OPTIMA_DE_UNA_SECCION_RECTANGULAR_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
260
VAL3=get(handles.edit3,'String');
S=str2double(VAL3)
%Obtener el dato del coeficiente de manning
VAL4=get(handles.edit4,'String');
n=str2double(VAL4)
%VARIABLES PARA COMPROBAR SI LOS VALORES SON INGREADOS CORRECTAMENTE
Q1=isnan(Q);
S1=isnan(S);
n1=isnan(n);
VAL5=get(handles.uibuttongroup1,'Tag');
SM1=str2double(VAL5)
if SM1==1
%Para unidades del sistema mtrico
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del tirante
M=100000
err=0.000001
y=100
for i=1:M
FY=((1/n)*(2*y*y)*(((2*y*y)/(2*y+(2*y)))^(2/3))*(S^(1/2)))-Q
if FY==0
break
else
FDY=(4*S^(1/2)*y*(y/2)^(2/3))/n + (2*S^(1/2)*y^2)/(3*n*(y/2)^(1/3))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Valor de la gravedad en m/s2
g=9.81
%Clculo del ancho de la solera
b=2*y
%Clculo del area mojada
A=b*y
%Clculo del permetro mojado
P=b+2*y
%Clculo del ancho superficial
T=b
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
261
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
b=round(b,4);
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit2,'String',b);
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del tirante
M=100000
err=0.000001
y=100
for i=1:M
FY=((1.486/n)*(2*y*y)*(((2*y*y)/(2*y+(2*y)))^(2/3))*(S^(1/2)))-Q
if FY==0
break
else
FDY=(5.944*S^(1/2)*y*(y/2)^(2/3))/n +
(0.99066666666666666666666666666667*S^(1/2)*y^2)/(n*(y/2)^(1/3))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del ancho de la solera
b=2*y
%Clculo del area mojada
262
A=b*y
%Clculo del permetro mojado
P=b+2*y
%Clculo del ancho superficial
T=b
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
b=round(b,4);
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit2,'String',b);
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
263
end
264
function edit13_Callback(hObject, eventdata, handles)
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
265
set(handles.text19,'Visible','on');
set(handles.text22,'Visible','on');
set(handles.text25,'Visible','on');
set(handles.text26,'Visible','on');
set(handles.text33,'Visible','on');
set(handles.text24,'Visible','on');
set(handles.text23,'Visible','on');
set(handles.text30,'Visible','on');
%Ocultar unidades inglesas;
set(handles.text35,'Visible','off');
set(handles.text36,'Visible','off');
set(handles.text37,'Visible','off');
set(handles.text38,'Visible','off');
set(handles.text39,'Visible','off');
set(handles.text42,'Visible','off');
set(handles.text43,'Visible','off');
set(handles.text45,'Visible','off');
set(handles.text41,'Visible','off');
set(handles.text40,'Visible','off');
set(handles.text44,'Visible','off');
case 'Sistema ingls'
SM1='2'
%Borrar celdas de resultados
set(handles.edit2,'String','');
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Ocultar unidades mtricas;
set(handles.text6,'Visible','off');
set(handles.text7,'Visible','off');
set(handles.text9,'Visible','off');
set(handles.text19,'Visible','off');
set(handles.text22,'Visible','off');
set(handles.text25,'Visible','off');
set(handles.text26,'Visible','off');
set(handles.text33,'Visible','off');
set(handles.text24,'Visible','off');
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
%Mostrar unidades inglesas;
set(handles.text35,'Visible','on');
set(handles.text36,'Visible','on');
set(handles.text37,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
266
2.1.5.2. SECCIN TRAPEZOIDAL
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout =
SECCION_HIDRAULICA_OPTIMA_DE_UNA_SECCION_TRAPEZOIDAL_2_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
267
VAL2=get(handles.edit16,'String');
z=str2double(VAL2)
%Obtener el dato de la pendiente
VAL3=get(handles.edit3,'String');
S=str2double(VAL3)
%Obtener el dato del coeficiente n
VAL4=get(handles.edit4,'String');
n=str2double(VAL4)
%VARIABLES PARA COMPROBAR SI LOS VALORES SON INGREADOS CORRECTAMENTE
Q1=isnan(Q);
z1=isnan(z);
S1=isnan(S);
n1=isnan(n);
VAL5=get(handles.uibuttongroup1,'Tag');
SM1=str2double(VAL5)
if SM1==1
%Para unidades del sistema mtrico
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif z<=0
errordlg('Ingrese el valor del talud (z) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif z1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del tirante
M=100000
err=0.000001
y=100
for i=1:M
FY=(1/n)*(((2*y*(sqrt(1+z^2)-z))+z*y)*y)*((y/2)^(2/3))*(S^(1/2))-Q
if FY==0
break
else
FDY=(S^(1/2)*(y*z - 2*y*(z - (z^2 + 1)^(1/2)))*(y/2)^(2/3))/n -
(S^(1/2)*y*(z - 2*(z^2 + 1)^(1/2))*(y/2)^(2/3))/n + (S^(1/2)*y*(y*z - 2*y*(z - (z^2 +
1)^(1/2))))/(3*n*(y/2)^(1/3))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Valor de la gravedad en m/s2
g=9.81
%Clculo del ancho de la solera
b=2*y*(sqrt(1+z^2)-z)
%Clculo del rea mojada
A=(b+z*y)*y
%Clculo del permetro mojado
P=b+2*y*sqrt(1+(z^2))
%Clculo del ancho superficial
T=b+2*z*y
%Clculo de la profundidad hidrulica
D=A/T
268
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
b=round(b,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.text51,'String',b);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif z<=0
errordlg('Ingrese el valor del talud (z) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif z1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del tirante
M=100000
err=0.000001
y=100
for i=1:M
FY=(1.486/n)*(((2*y*(sqrt(1+z^2)-z))+z*y)*y)*((y/2)^(2/3))*(S^(1/2))-Q
269
if FY==0
break
else
FDY=(1.486*S^(1/2)*(y*z - 2*y*(z - (z^2 + 1)^(1/2)))*(y/2)^(2/3))/n -
(1.486*S^(1/2)*y*(z - 2*(z^2 + 1)^(1/2))*(y/2)^(2/3))/n +
(0.49533333333333333333333333333333*S^(1/2)*y*(y*z - 2*y*(z - (z^2 +
1)^(1/2))))/(n*(y/2)^(1/3))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del ancho de la solera
b=2*y*(sqrt(1+z^2)-z)
%Clculo del rea mojada
A=(b+z*y)*y
%Clculo del permetro mojado
P=b+2*y*sqrt(1+(z^2))
%Clculo del ancho superficial
T=b+2*z*y
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
y=round(y,4);
b=round(b,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit6,'String',y);
set(handles.text51,'String',b);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
270
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
271
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
272
function uibuttongroup1_SelectionChangedFcn(hObject, eventdata, handles)
SM=get(hObject,'String');
switch SM
case 'Sistema mtrico'
SM1='1'
%Borrar celdas de resultados
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
set(handles.text51,'String','');
%Mostrar unidades mtricas;
set(handles.text6,'Visible','on');
set(handles.text9,'Visible','on');
set(handles.text19,'Visible','on');
set(handles.text22,'Visible','on');
set(handles.text25,'Visible','on');
set(handles.text26,'Visible','on');
set(handles.text33,'Visible','on');
set(handles.text24,'Visible','on');
set(handles.text23,'Visible','on');
set(handles.text30,'Visible','on');
set(handles.text52,'Visible','on');
%Ocultar unidades inglesas;
set(handles.text35,'Visible','off');
set(handles.text37,'Visible','off');
set(handles.text38,'Visible','off');
set(handles.text39,'Visible','off');
set(handles.text42,'Visible','off');
set(handles.text43,'Visible','off');
set(handles.text45,'Visible','off');
set(handles.text41,'Visible','off');
set(handles.text40,'Visible','off');
set(handles.text44,'Visible','off');
set(handles.text53,'Visible','off');
case 'Sistema ingls'
SM1='2'
%Borrar celdas de resultados
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
set(handles.text51,'String','');
%Ocultar unidades mtricas;
set(handles.text6,'Visible','off');
set(handles.text9,'Visible','off');
set(handles.text19,'Visible','off');
set(handles.text22,'Visible','off');
set(handles.text25,'Visible','off');
set(handles.text26,'Visible','off');
set(handles.text33,'Visible','off');
set(handles.text24,'Visible','off');
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
set(handles.text52,'Visible','off');
%Mostrar unidades inglesas;
set(handles.text35,'Visible','on');
set(handles.text37,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
273
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
set(handles.text53,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout =
SECCION_HIDRAULICA_OPTIMA_DE_UNA_SECCION_TRAPEZOIDAL_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
274
%Borrar celdas de resultados
set(handles.edit2,'String','');
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
set(handles.text51,'String','');
%Obtener el dato del caudal
VAL1=get(handles.edit1,'String');
Q=str2double(VAL1)
%Obtener el dato de la pendiente
VAL3=get(handles.edit3,'String');
S=str2double(VAL3)
%Obtener el dato del coeficiente n
VAL4=get(handles.edit4,'String');
n=str2double(VAL4)
%VARIABLES PARA COMPROBAR SI LOS VALORES SON INGREADOS CORRECTAMENTE
Q1=isnan(Q);
S1=isnan(S);
n1=isnan(n);
VAL5=get(handles.uibuttongroup1,'Tag');
SM1=str2double(VAL5)
if SM1==1
%Para unidades del sistema mtrico
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del talud
z=1/tand(60)
%Clculo del tirante
M=100000
err=0.000001
y=100
for i=1:M
FY=((1/n)*(((1.155*y)+z*y)*y)*((((1.155*y)+z*y)*y)/((1.155*y)+2*y*sqrt(1+(z^2))))^(2/
3))*(S^(1/2))-Q
if FY==0
break
else
FDY=(S^(1/2)*(1.155*y + y*z)*((y*(1.155*y + y*z))/(1.155*y + 2*y*(z^2 +
1)^(1/2)))^(2/3))/n + (S^(1/2)*y*(z + 1.155)*((y*(1.155*y + y*z))/(1.155*y + 2*y*(z^2
+ 1)^(1/2)))^(2/3))/n + (2*S^(1/2)*y*(1.155*y + y*z)*((1.155*y + y*z)/(1.155*y +
2*y*(z^2 + 1)^(1/2)) + (y*(z + 1.155))/(1.155*y + 2*y*(z^2 + 1)^(1/2)) - (y*(2*(z^2 +
1)^(1/2) + 1.155)*(1.155*y + y*z))/(1.155*y + 2*y*(z^2 +
1)^(1/2))^2))/(3*n*((y*(1.155*y + y*z))/(1.155*y + 2*y*(z^2 + 1)^(1/2)))^(1/3))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
275
end
end
%Valor de la gravedad en m/s2
g=9.81
%Clculo del ancho de la solera
b=1.155*y
%Clculo del rea mojada
A=(b+z*y)*y
%Clculo del permetro mojado
P=b+2*y*sqrt(1+(z^2))
%Clculo del ancho superficial
T=b+2*z*y
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
z=round(z,4);
y=round(y,4);
b=round(b,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit2,'String',z);
set(handles.edit6,'String',y);
set(handles.text51,'String',b);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
276
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del talud
z=1/tand(60)
%Clculo del tirante
M=100000
err=0.000001
y=100
for i=1:M
FY=((1.486/n)*(((1.155*y)+z*y)*y)*((((1.155*y)+z*y)*y)/((1.155*y)+2*y*sqrt(1+(z^2))))
^(2/3))*(S^(1/2))-Q
if FY==0
break
else
FDY=(1.486*S^(1/2)*(1.155*y + y*z)*((y*(1.155*y + y*z))/(1.155*y +
2*y*(z^2 + 1)^(1/2)))^(2/3))/n + (1.486*S^(1/2)*y*(z + 1.155)*((y*(1.155*y +
y*z))/(1.155*y + 2*y*(z^2 + 1)^(1/2)))^(2/3))/n +
(0.99066666666666666666666666666667*S^(1/2)*y*(1.155*y + y*z)*((1.155*y +
y*z)/(1.155*y + 2*y*(z^2 + 1)^(1/2)) + (y*(z + 1.155))/(1.155*y + 2*y*(z^2 +
1)^(1/2)) - (y*(2*(z^2 + 1)^(1/2) + 1.155)*(1.155*y + y*z))/(1.155*y + 2*y*(z^2 +
1)^(1/2))^2))/(n*((y*(1.155*y + y*z))/(1.155*y + 2*y*(z^2 + 1)^(1/2)))^(1/3))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del ancho de la solera
b=1.155*y
%Clculo del rea mojada
A=(b+z*y)*y
%Clculo del permetro mojado
P=b+2*y*sqrt(1+(z^2))
%Clculo del ancho superficial
T=b+2*z*y
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
z=round(z,4);
y=round(y,4);
b=round(b,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit2,'String',z);
277
set(handles.edit6,'String',y);
set(handles.text51,'String',b);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
278
end
279
% --- Executes on button press in pushbutton5.
function pushbutton5_Callback(hObject, eventdata, handles)
INICIO
close SECCION_HIDRAULICA_OPTIMA_DE_UNA_SECCION_TRAPEZOIDAL
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
280
%Ocultar unidades mtricas;
set(handles.text6,'Visible','off');
set(handles.text9,'Visible','off');
set(handles.text19,'Visible','off');
set(handles.text22,'Visible','off');
set(handles.text25,'Visible','off');
set(handles.text26,'Visible','off');
set(handles.text33,'Visible','off');
set(handles.text24,'Visible','off');
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
set(handles.text52,'Visible','off');
%Mostrar unidades inglesas;
set(handles.text35,'Visible','on');
set(handles.text37,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
set(handles.text53,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
281
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout =
SECCION_HIDRAULICA_OPTIMA_DE_UNA_SECCION_TRIANGULAR_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
282
if abs(ER)<=err
break
end
end
end
%Valor de la gravedad en m/s2
g=9.81
%Clculo del rea mojada
A=z*(y^2)
%Clculo del permetro mojado
P=2*y*sqrt(1+(z^2))
%Clculo del ancho superficial
T=2*z*y
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
z=round(z,4);
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit2,'String',z);
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
283
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del talud
z=1
%Clculo del tirante
M=100000
err=0.000001
y=100
for i=1:M
FY=((1.486/n)*(z*(y^2))*(((z*(y^2))/(2*y*sqrt(1+(z^2))))^(2/3))*(S^(1/2)))-Q
if FY==0
break
else
FDY=(2.972*S^(1/2)*y*z*((y*z)/(2*(z^2 + 1)^(1/2)))^(2/3))/n +
(0.49533333333333333333333333333333*S^(1/2)*y^2*z^2)/(n*(z^2 +
1)^(1/2)*((y*z)/(2*(z^2 + 1)^(1/2)))^(1/3))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del rea mojada
A=z*(y^2)
%Clculo del permetro mojado
P=2*y*sqrt(1+(z^2))
%Clculo del ancho superficial
T=2*z*y
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
z=round(z,4);
y=round(y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit2,'String',z);
set(handles.edit6,'String',y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
284
set(handles.edit14,'String',E);
end
end
285
function edit10_Callback(hObject, eventdata, handles)
286
set(hObject,'BackgroundColor','white');
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
287
set(handles.text39,'Visible','on');
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout =
SECCION_HIDRAULICA_OPTIMA_DE_UNA_SECCION_SEMICIRCULAR_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
288
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Obtener el dato del caudal
VAL1=get(handles.edit1,'String');
Q=str2double(VAL1)
%Obtener el dato de la pendiente
VAL3=get(handles.edit3,'String');
S=str2double(VAL3)
%Obtener el dato del coeficiente n
VAL4=get(handles.edit4,'String');
n=str2double(VAL4)
%VARIABLES PARA COMPROBAR SI LOS VALORES SON INGREADOS CORRECTAMENTE
Q1=isnan(Q);
S1=isnan(S);
n1=isnan(n);
VAL5=get(handles.uibuttongroup1,'Tag');
SM1=str2double(VAL5)
if SM1==1
%Para unidades del sistema mtrico
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del ngulo
a=pi
%Clculo del dimetro
M=100000
err=0.000001
y=100
for i=1:M
FY=(1/n)*((1/8)*(a-sin(a))*(y^2))*((((1/8)*(a-
sin(a))*(y^2))/((1/2)*a*y))^(2/3))*(S^(1/2))-Q
if FY==0
break
else
FDY=(S^(1/2)*y*(a - sin(a))*((y*(a - sin(a)))/(4*a))^(2/3))/(4*n) +
(S^(1/2)*y^2*(a - sin(a))^2)/(48*a*n*((y*(a - sin(a)))/(4*a))^(1/3))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Clculo del dimetro
d=y
%Valor de la gravedad en m/s2
g=9.81
%Clculo del tirante
Y=(d/2)
%Clculo del area mojada
A=(1/8)*(a-sin(a))*(d^2)
%Clculo del permetro mojado
P=(1/2)*a*d
289
%Clculo del ancho superficial
T=d*sin(a/2)
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=Y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
d=round(d,4);
Y=round(Y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit2,'String',d);
set(handles.edit6,'String',Y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
else
%Para unidades del sistema ingls
if Q<=0
errordlg('Ingrese el valor del caudal (Q) teniendo en cuenta que debe ser mayor
que 0.','Mensaje');
elseif S<=0
errordlg('Ingrese el valor de la pendiente (S) teniendo en cuenta que debe ser
mayor que 0.','Mensaje');
elseif n<=0
errordlg('Ingrese el valor del coeficiente de manning (n) teniendo en cuenta que
debe ser mayor que 0.','Mensaje');
elseif Q1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif S1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
elseif n1==1
errordlg('Complete los campos de entrada adeacuadamente antes de
calcular.','Mensaje');
else
ESPERA
%Clculo del ngulo
a=pi
%Clculo del dimetro
M=100000
err=0.000001
y=100
for i=1:M
290
FY=(1.486/n)*((1/8)*(a-sin(a))*(y^2))*((((1/8)*(a-
sin(a))*(y^2))/((1/2)*a*y))^(2/3))*(S^(1/2))-Q
if FY==0
break
else
FDY=(0.3715*S^(1/2)*y*(a - sin(a))*((y*(a - sin(a)))/(4*a))^(2/3))/n +
(0.030958333333333333333333333333333*S^(1/2)*y^2*(a - sin(a))^2)/(a*n*((y*(a -
sin(a)))/(4*a))^(1/3))
ER=FY/FDY
abs(ER)
y=y-ER
if abs(ER)<=err
break
end
end
end
%Clculo del dimetro
d=y
%Valor de la gravedad en ft/s2
g=32.18504
%Clculo del tirante
Y=(d/2)
%Clculo del area mojada
A=(1/8)*(a-sin(a))*(d^2)
%Clculo del permetro mojado
P=(1/2)*a*d
%Clculo del ancho superficial
T=d*sin(a/2)
%Clculo de la profundidad hidrulica
D=A/T
%Clculo del radio hidrulico
R=A/P
%Clculo de la velocidad
V=Q/A
%Clculo del nmero de froude
NF=V/sqrt(g*D);
NF=round(NF,4)
%Identificacin del tipo de flujo
if NF>1
TF='Supercrtico'
elseif NF<1
TF='Subcrtico'
else
TF='Crtico'
end
%Clculo de la energa especfica
E=Y+((V^2)/(2*g))
%Aproximacin de resultados a 4 dgitos
d=round(d,4);
Y=round(Y,4);
A=round(A,4);
P=round(P,4);
T=round(T,4);
D=round(D,4);
R=round(R,4);
V=round(V,4);
E=round(E,4);
%Impresin de resultados
close ESPERA
set(handles.edit2,'String',d);
set(handles.edit6,'String',Y);
set(handles.edit9,'String',A);
set(handles.edit7,'String',P);
set(handles.edit8,'String',R);
set(handles.edit15,'String',T);
set(handles.edit10,'String',D);
set(handles.edit13,'String',V);
set(handles.edit11,'String',NF);
set(handles.edit12,'String',TF);
set(handles.edit14,'String',E);
end
end
291
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
292
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on key press with focus on edit6 and none of its controls.
function edit6_KeyPressFcn(hObject, eventdata, handles)
293
% --- Executes when selected object is changed in uibuttongroup1.
function uibuttongroup1_SelectionChangedFcn(hObject, eventdata, handles)
SM=get(hObject,'String');
switch SM
case 'Sistema mtrico'
SM1='1'
%Borrar celdas de resultados
set(handles.edit2,'String','');
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Mostrar unidades mtricas;
set(handles.text6,'Visible','on');
set(handles.text7,'Visible','on');
set(handles.text9,'Visible','on');
set(handles.text19,'Visible','on');
set(handles.text22,'Visible','on');
set(handles.text25,'Visible','on');
set(handles.text26,'Visible','on');
set(handles.text33,'Visible','on');
set(handles.text24,'Visible','on');
set(handles.text23,'Visible','on');
set(handles.text30,'Visible','on');
%Ocultar unidades inglesas;
set(handles.text35,'Visible','off');
set(handles.text36,'Visible','off');
set(handles.text37,'Visible','off');
set(handles.text38,'Visible','off');
set(handles.text39,'Visible','off');
set(handles.text42,'Visible','off');
set(handles.text43,'Visible','off');
set(handles.text45,'Visible','off');
set(handles.text41,'Visible','off');
set(handles.text40,'Visible','off');
set(handles.text44,'Visible','off');
case 'Sistema ingls'
SM1='2'
%Borrar celdas de resultados
set(handles.edit2,'String','');
set(handles.edit6,'String','');
set(handles.edit9,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');
set(handles.edit15,'String','');
set(handles.edit10,'String','');
set(handles.edit13,'String','');
set(handles.edit11,'String','');
set(handles.edit12,'String','');
set(handles.edit14,'String','');
%Ocultar unidades mtricas;
set(handles.text6,'Visible','off');
set(handles.text7,'Visible','off');
set(handles.text9,'Visible','off');
set(handles.text19,'Visible','off');
set(handles.text22,'Visible','off');
set(handles.text25,'Visible','off');
set(handles.text26,'Visible','off');
set(handles.text33,'Visible','off');
set(handles.text24,'Visible','off');
set(handles.text23,'Visible','off');
set(handles.text30,'Visible','off');
%Mostrar unidades inglesas;
set(handles.text35,'Visible','on');
set(handles.text36,'Visible','on');
set(handles.text37,'Visible','on');
set(handles.text38,'Visible','on');
set(handles.text39,'Visible','on');
294
set(handles.text42,'Visible','on');
set(handles.text43,'Visible','on');
set(handles.text45,'Visible','on');
set(handles.text41,'Visible','on');
set(handles.text40,'Visible','on');
set(handles.text44,'Visible','on');
end
set(handles.uibuttongroup1,'Tag',SM1)
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = INICIO_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
295
SELECCION_2
close INICIO
296
function Untitled_32_Callback(hObject, eventdata, handles)
TIRANTE_CRITICO_DE_UNA_SECCION_TRIANGULAR
close INICIO
2.1.7. SELECCIN
297
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% --- Outputs from this function are returned to the command line.
function varargout = SELECCION_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
2.1.8. SELECCIN 1
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% --- Outputs from this function are returned to the command line.
function varargout = SELECCION_1_OutputFcn(hObject, eventdata, handles)
298
varargout{1} = handles.output;
2.1.9. SELECCIN 2
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% --- Outputs from this function are returned to the command line.
function varargout = SELECCION_2_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
2.1.10. ESPERA
299
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = ESPERA_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
300
% --- Outputs from this function are returned to the command line.
function varargout = ACERCA_DE_SN_CANALES_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
301
MANUAL DE USUARIO SN CANALES
INTRODUCCIN
El programa fue creado para el clculo de canales abiertos de flujo uniforme de las
secciones planteadas por Ven Te Chow como son rectangular, trapezoidal, triangular,
circular, parablica, rectangular con esquinas redondeadas y triangular con fondo
redondeado; para as contribuir en la disminucin del tiempo de clculo y la
confiabilidad de los resultados.
302
1. INSTALACION DE SN CANALES
303
3) Cuando aparezca la pantalla que se muestra a continuacin, dar clic Next.
5) Dar clic en Yes para que se cree la carpeta donde se instalara el programa SN
CANALES.
304
6) En la siguiente ventana dar clic en Next.
7) Dar click en Yes para que se cree la carpeta donde se instalara MATLAB
Runtime.
8) Aceptar los trminos de licencia de Matlab Runtime marcando en Yes y dar clic
en Next.
305
9) En la siguiente ventana que aparace dar clic en Install.
11) Con este proceso se tiene instalado y listo para ejecutar SN CANALES. El
programa de instalacin, crea el acceso directo dentro de INICIO / TODAS
LAS APLICACIONES.
306
2. SOLUCIN A PROBLEMAS EN LA INSTALACIN
3. EJECUTAR SN CANALES
307
3) Una vez que se ha cargado se obtiene la pantalla principal de SN CANALES.
Desde los mens desplegables se tiene acceso a las diferentes pantallas que permiten
el clculo del:
Tirante normal
Tirante crtico
Caudal
Elementos geomtricos
Seccion hidrulica ptima
Para el clculo del tirante normal, el software dispone de siete opciones, que
corresponden a secciones transversales de canales como son: rectangular,
trapezoidal, triangular, circular, parablica, rectangular con esquinas redondeadas y
triangular con fondo redondeado.
Para acceder a las ventanas de clculo se debe seleccionar del men principal la
opcin tirante normal en la cual se presenta un submen como el mostrado en la
siguiente imagen.
Para el clculo en cualquiera de las secciones disponibles se debe de dar clic sobre
la seccin elegida, donde a continuacin aparecer la pantalla correspondiente para
su clculo.
309
Seccin triangular: Caudal (Q), talud (z), pendiente (S) y coeficiente de
manning (n).
Seccin circular: Caudal (Q), dimetro (d), pendiente (S) y coeficiente de
manning (n).
Seccin parablica: Caudal (Q), ancho superficial (T), pendiente (S) y
coeficiente de manning (n).
Seccin rectagular con esquinas redondeadas: Caudal (Q), ancho de la solera
(b), radio (r), pendiente (S) y coeficiente de manning (n).
Seccin triangular con fondo redondeado: Caudal (Q), radio (r), talud (z),
pendiente (S) y coeficiente de manning (n).
Los datos son ingresados tecleando sobre cada casilla el valor correspondiente,
adems se puede utilizar la tecla Tab para usuarios que omitan utilizar el mouse.
310
Para iniciar el clculo se debe presionar el botn CALCULAR, adems se
dispone del botn LIMPIAR que permite borrar los datos de entrada y salida, y
del botn MEN PRINCIPAL el cual permite al usuario salir de la ventana
actual y volver a la pantalla principal.
3
Q=2 ; b=1.5m ; S=0.02 ; n=0.014
Uso de SN CANALES:
311
4.1.2. EJEMPLO DE CLCULO DE UNA SECCIN
TRAPEZOIDAL.
3
Q=5 ; b=1m ; z=0.5 ; S=0.01 ; n=0.014
Uso de SN CANALES:
312
4.1.3. EJEMPLO DE CLCULO DE UNA SECCIN TRIAGULAR.
3
Q=3 ; z=1 ; S=0.015 ; n=0.0149
Uso de SN CANALES:
313
4.1.4. EJEMPLO DE CLCULO DE UNA SECCIN CIRCULAR.
3
Q=1 ; d=1ft ; S=0.02 ; n=0.0149
Uso de SN CANALES:
314
4.1.5. EJEMPLO DE CLCULO DE UNA SECCIN PARABLICA.
trazado con una pendiente del 1.5%, y que tenga un espejo de agua de 2.5ft.
Indicar el tirante normal que debe tener, su velocidad, nmero de Froude, tipo de
flujo y su energa especfica para las condiciones sealadas
3
Q=2 ; T=2.5ft ; S=0.015 ; n=0.025
Uso de SN CANALES:
315
4.1.6. EJEMPLO DE CLCULO DE UNA SECCIN
RECTANGULAR CON ESQUINAS REDONDEADAS.
3
Q=3 ; b=1m ; r=0.5m ; S=0.003 ; n=0.02
Uso de SN CANALES:
316
4.1.7. EJEMPLO DE CLCULO DE UNA SECCIN TRIANGULAR
CON FONDO REDONDEADO.
3
Q=9 ; z=1; r=2ft ; S=0.005 ; n=0.03
Uso de SN CANALES:
317
4.2. TIRANTE CRTICO
Para el clculo del tirante crtico, el software dispone de siete opciones, que
corresponden a secciones transversales de canales como son: rectangular,
trapezoidal, triangular, circular, parablica, rectangular con esquinas redondeadas y
triangular con fondo redondeado.
Para acceder a las ventanas de clculo se debe seleccionar del men principal la
opcin tirante normal en la cual se presenta un submen como el mostrado en la
siguiente imagen.
Para el clculo en cualquiera de las secciones disponibles se debe de dar clic sobre
la seccin elegida, donde a continuacin aparecer la pantalla correspondiente para
su clculo.
318
Seccin circular: Caudal (Q), dimetro (d).
Seccin parablica: Caudal (Q), ancho superficial (T).
Seccin rectagular con esquinas redondeadas: Caudal (Q), ancho de la solera
(b), radio (r).
Seccin triangular con fondo redondeado: Caudal (Q), radio (r), talud (z).
Los datos son ingresados tecleando sobre cada casilla el valor correspondiente,
adems se puede utilizar la tecla Tab para usuarios que omitan utilizar el mouse.
319
4.2.1. EJEMPLO DE CLCULO DE UNA SECCIN RECTAGULAR.
3
Q=2 ; b=1ft
Uso de SN CANALES:
320
4.2.2. EJEMPLO DE CLCULO DE UNA SECCIN
TRAPEZOIDAL.
3
Q=3 ; b=1m ; z=0.5
Uso de SN CANALES:
321
4.2.3. EJEMPLO DE CLCULO DE UNA SECCIN TRIAGULAR.
3
Q=2 ; z=1.5
Uso de SN CANALES:
322
4.2.4. EJEMPLO DE CLCULO DE UNA SECCIN CIRCULAR.
3
Q=2 ; d=1m
Uso de SN CANALES:
323
4.2.5. EJEMPLO DE CLCULO DE UNA SECCIN PARABLICA.
3
Q=2 ; T=3m
Uso de SN CANALES:
324
4.2.6. EJEMPLO DE CLCULO DE UNA SECCIN
RECTANGULAR CON ESQUINAS REDONDEADAS.
3
Q=5 ; b=2m ; r=0.5m
Uso de SN CANALES:
325
4.2.7. EJEMPLO DE CLCULO DE UNA SECCIN TRIANGULAR
CON FONDO REDONDEADO.
3
Q=3 ; z=1.5; r=2m
Uso de SN CANALES:
326
4.3. CAUDAL
Para el clculo del caudal, el software dispone de siete opciones, que corresponden
a secciones transversales de canales como son: rectangular, trapezoidal, triangular,
circular, parablica, rectangular con esquinas redondeadas y triangular con fondo
redondeado.
Para acceder a las ventanas de clculo se debe seleccionar del men principal la
opcin tirante normal en la cual se presenta un submen como el mostrado en la
siguiente imagen.
Para el clculo en cualquiera de las secciones disponibles se debe de dar clic sobre
la seccin elegida, donde a continuacin aparecer la pantalla correspondiente para
su clculo.
Los datos son ingresados tecleando sobre cada casilla el valor correspondiente,
adems se puede utilizar la tecla Tab para usuarios que omitan utilizar el mouse.
328
Para iniciar el clculo se debe presionar el botn CALCULAR, adems se
dispone del botn LIMPIAR que permite borrar los datos de entrada y salida, y
del botn MEN PRINCIPAL el cual permite al usuario salir de la ventana
actual y volver a la pantalla principal.
Uso de SN CANALES:
329
4.3.2. EJEMPLO DE CLCULO DE UNA SECCIN
TRAPEZOIDAL.
Uso de SN CANALES:
330
4.3.3. EJEMPLO DE CLCULO DE UNA SECCIN TRIAGULAR.
Uso de SN CANALES:
331
4.3.4. EJEMPLO DE CLCULO DE UNA SECCIN CIRCULAR.
Uso de SN CANALES:
332
4.3.5. EJEMPLO DE CLCULO DE UNA SECCIN PARABLICA.
Uso de SN CANALES:
333
4.3.6. EJEMPLO DE CLCULO DE UNA SECCIN
RECTANGULAR CON ESQUINAS REDONDEADAS.
Uso de SN CANALES:
334
4.3.7. EJEMPLO DE CLCULO DE UNA SECCIN TRIANGULAR
CON FONDO REDONDEADO.
Uso de SN CANALES:
335
4.4. ELEMENTOS GEOMTRICOS
Para acceder a las ventanas de clculo se debe seleccionar del men principal la
opcin tirante normal en la cual se presenta un submen como el mostrado en la
siguiente imagen.
Para el clculo en cualquiera de las secciones disponibles se debe de dar clic sobre
la seccin elegida, donde a continuacin aparecer la pantalla correspondiente para
su clculo.
Los datos son ingresados tecleando sobre cada casilla el valor correspondiente,
adems se puede utilizar la tecla Tab para usuarios que omitan utilizar el mouse.
337
4.4.1. Ejemplo de clculo de una seccin rectagular.
y=1.5m ; b=2m
Uso de SN CANALES:
338
4.4.2. Ejemplo de clculo de una seccin trapezoidal.
Uso de SN CANALES:
339
4.4.3. Ejemplo de clculo de una seccin triagular.
y=1m ; z=1
Uso de SN CANALES:
340
4.4.4. Ejemplo de clculo de una seccin circular.
d=3m ; y=1.8m
Uso de SN CANALES:
341
4.4.5. Ejemplo de clculo de una seccin parablica.
y=1.2m ; T=2m
Uso de SN CANALES:
342
4.4.6. Ejemplo de clculo de una seccin rectangular con esquinas
redondeadas.
Uso de SN CANALES:
343
4.4.7. Ejemplo de clculo de una seccin triangular con fondo
redondeado.
Calcular los elementos geomtricos del canal triangular con fondo redondeado
que se indica en la figura.
Uso de SN CANALES:
344
4.5. SECCIN HIDRULICA PTIMA
Para acceder a las ventanas de clculo se debe seleccionar del men principal la
opcin tirante normal en la cual se presenta un submen como el mostrado en la
siguiente imagen.
Para el clculo en cualquiera de las secciones disponibles se debe de dar clic sobre
la seccin elegida, donde a continuacin aparecer la pantalla correspondiente para
su clculo.
345
Seccin semicircular: Caudal (Q), pendiente (S) y coeficiente de manning (n).
Los datos son ingresados tecleando sobre cada casilla el valor correspondiente,
adems se puede utilizar la tecla Tab para usuarios que omitan utilizar el mouse.
Los datos de salida que son calculados varian dependiendo de la seccin elegida,
entre ellos tenemos:
Tirante (y)
Ancho de la solera (b)
Dimetro (d)
Talud (z)
rea mojada (A)
Permetro mojado (P)
Radio hidrulico (R)
Ancho superficial (T)
Profundidad hidrulica (D)
Velocidad (V)
Nmero de Froude (NF)
Tipo de flujo
Energa especfica (E)
346
4.5.1. Ejemplo de clculo de una seccin rectagular.
3
Q=1 ; S=0.0065 ; n=0.01
Uso de SN CANALES:
347
4.5.2. Ejemplo de clculo de una seccin trapezoidal.
3
Q=2 ; S=0.01 ; n=0.0149
Uso de SN CANALES:
348
4.5.3. Ejemplo de clculo de una seccin triagular.
3
Q=3 ; S=0.015 ; n=0.02
Uso de SN CANALES:
349
4.5.4. Ejemplo de clculo de una seccin semicircular.
Determinar la seccin hidrulica ptima para un canal semi circular con n=0.025
3
si se va a disear para transportar 4 y una pendiente de 0.012.
3
Q=4 ; S=0.012 ; n=0.025
Uso de SN CANALES:
350