Está en la página 1de 136

UNIVERSIDAD DE CASTILLA - LA MANCHA

ESCUELA TCNICA SUPERIOR


DE INGENIEROS INDUSTRIALES

CIUDAD REAL

PROYECTO FIN DE CARRERA No 10-12-200927

ANLISIS NUMRICO Y COMPROBACIN EXPERIMENTAL DE LAS


ECUACIONES BSICAS EN EL TRANSPORTE DE FLUIDOS

Autor:
JOS ENRIQUE CABAAS CEBALLOS

Director de proyecto:
GONZALO RODRGUEZ PRIETO
Noviembre 2010

CAPTULO 1. OBJETIVOS, ANTECEDENTES Y...

Captulo 1

OBJETIVOS, ANTECEDENTES Y
MOTIVACIN

El objetivo de este proyecto es crear un programa capaz de analizar la dependencia de la


prdida de carga con otras variables elementales de un fluido al recorrer una tubera. Concretamente las variables elementales son la presin, la velocidad del fluido, la rugosidad y la
longitud de la tubera.
Hay varios modelos para obtener esta dependencia en rangos distintos de sus variables, por
lo que un primer paso es analizar en qu rangos es aplicable cada uno de ellos y asi se ha hecho
en este proyecto. Posteriormente y debido a la complejidad de estos modelos, se desarroll
un programa informtico, en el que con el conocimiento de algunas variables bsicas de la
instalacin, se calculan rpidamente el resto de parmetros usando los diversos modelos con
el nimo de establecer una comparacin entre los clculos y los resultados experimentales.
La mayoria de los modelos analticos de dinmica de fluidos en una tubera fueron obtenidos
durante los siglos XIX y XX, poseyendo una complejidad ya mencionada que favorece su
sustitucin por modelos numericos informticos, de mayor complejidad y precisin. Sin embargo, estos nuevos programas son todava muy lentos, por lo que para poder realizar algunos

Jos Enrique Cabaas Ceballos

clculos se recurre todava a estos modelos analticos.


Adems de estos modelos, tambin se us el conocido Diagrama de Moody, que consiste
en una recopilacin experimental de datos sobre diversas tuberas expresados en funcin de
variables adimensionales.
De los modelos existentes los estudiados en este proyecto han sido:

Ecuacin de Blasius [1]


Ecuacin para rgimen laminar [2]
Ecuacin de Colebrook [2]
Ecuacin de Prandtl [3]
Ecuacin de Von Karman-Nikuradse [3]
Diagrama de Moody [4]
Ecuacin Explcita [5]
Ecuacin de Churchill [6]

Por lo tanto en este proyecto se ha desarrollado un programa informtico que facilita resultados numricos sobre las magnitudes principales del desplazamiento de un fluido a lo largo de
una tubera y sus clculos han sido validados al compararlos tanto con el diagrama de Moody
como con datos experimentales obtenidos con una instalacin de estudio hidrodinmico.

Jos Enrique Cabaas Ceballos

1.1. DISTINCIN ENTRE RGIMEN LAMINAR Y...

1.1.

Distincin entre rgimen laminar y turbulento en fluidos.

Cuando entre dos partculas fluidas en movimiento existe un gradiente de velocidad, una
se mueve ms rpido que la otra, se desarrollan fuerzas de friccin que actan tangencialmente
a la direccin a las velocidades. stas fuerzas de friccin tratan de introducir un elemento de
rotacin entre las partculas en movimiento, pero simultneamente la viscosidad del fluido acta en sentido contrario tratando de impedirlo. Dependiendo del valor relativo de estas fuerzas
se pueden producir diferentes estados de flujo.
Cuando el gradiente de velocidad es bajo, la fuerza de inercia debida al movimiento es
mayor que la de friccin, y las partculas se desplazan pero no rotan, o lo hacen pero con muy
poca energa. El resultado final es un movimiento en el cual las partculas siguen trayectorias
definidas y para el que todas las partculas que pasan por un punto en el campo del flujo siguen
la misma trayectoria. Este tipo de flujo fue identificado por O. Reynolds [8] y se denomina laminar, queriendo significar con ello que las partculas se desplazan en forma de capas
o lminas. Al aumentar el gradiente de velocidad se incrementa la friccin entre partculas
vecinas dentro del fluido y estas adquieren una energa de rotacin apreciable. La viscosidad
pierde su efecto y debido a la rotacin las partculas cambian de trayectoria. Al pasar de unas
trayectorias a otras, las partculas chocan entre s y cambian de rumbo de forma errtica. ste
tipo de flujo se denomina turbulento.
Sus caractersticas principales son:

Las partculas del fluido no se mueven siguiendo trayectorias definidas.


La accin de la viscosidad es despreciable.
Las partculas del fluido poseen energa de rotacin apreciable, y se mueven de forma
errtica chocando unas con otras.

Jos Enrique Cabaas Ceballos

1.2. EL EXPERIMENTO DE REYNOLDS.


As pues y para resumir la distincin entre los diversos regmenes de flujo, cuando las
fuerzas de inercia del fluido en movimiento son muy bajas, la viscosidad es la fuerza dominante
y el flujo es laminar, pero si predominan las fuerzas de inercia el flujo es turbulento. Existe un
parmetro adimensional que relaciona estos dos casos, el nmero de Reynolds. Para nmeros
de Reynolds bajos el flujo es laminar, y para valores altos el flujo es turbulento.
Experimentalmente se ha encontrado que en tubos de seccin circular cuando el nmero
de Reynolds pasa de 2400 se inicia la turbulencia en la zona central del tubo, sin embargo este
lmite es muy variable y depende de las condiciones de estabilidad del conjunto. Para nmeros
de Reynolds mayores de 4000 el flujo es turbulento. Al descender la velocidad se encuentra que
para nmeros de Reynolds menores de 2100 el flujo es siempre laminar y cualquier turbulencia
que se produzca es eliminada por la accin de la viscosidad. Por lo tanto el paso de flujo
laminar a turbulento es un fenmeno gradual en el que inicialmente se produce turbulencia en
la zona central del tubo, donde la velocidad es mayor, pero queda una corona de flujo laminar
entre las paredes del tubo y el ncleo central. Al aumentar la velocidad media, el espesor de la
corona laminar disminuye gradualmente hasta desaparecer totalmente. Esta ltima condicin
se consigue a altas velocidades cuando se obtiene turbulencia total en el flujo.
Para un flujo entre placas paralelas, si se toma como dimensin caracterstica la separacin
de stas, el nmero de Reynolds mximo que garantiza flujo laminar es 1000. Para canales
rectangulares anchos y usando como dimensin caracterstica la profundidad, este lmite es de
500; y para esferas con el dimetro como dimensin caracterstica el lmite es la unidad.

1.2.

El experimento de Reynolds.

Osborne Reynolds en 1883 presentaba el siguiente dilema, en uno de sus extensos trabajos[8]:
Aunque las ecuaciones de la hidrodinmica sean aplicables al movimiento laminar, o sea sin
remolinos, mostrando que entonces la resistencia es proporcional a la velocidad, no haban arrojado hasta ese entonces ninguna luz sobre las circunstancias de las cuales dicho movimiento

Jos Enrique Cabaas Ceballos

1.2. EL EXPERIMENTO DE REYNOLDS.


depende. Y, con todo y que en aos recientes estas ecuaciones se haban aplicado a la teora
del torbellino, no se haban aplicado en lo absoluto al movimiento del agua que es una masa de
remolinos, movimiento turbulento, ni haban ofrecido una pista para descubrir la causa de que
la resistencia a tal movimiento vare como el cuadrado de la velocidad y agregaba: Mientras
que, cuando se aplican a olas y al movimiento del agua en tubos capilares, los resultados tericos concuerdan con los experimentales, la teora de la hidrodinmica haba fracasado hasta la
fecha en proporcionar la ms leve sugerencia acerca del porqu no logra explicar las leyes de
la resistencia encontrada por grandes cuerpos que se mueven a travs del agua con velocidades
sensiblemente grandes, o por el agua en tuberas bastante anchas.
Como expresan los parrafos anteriores, Reynolds buscaba determinar si el movimiento del
agua era laminar o turbulento, y dilucidar las influencias de los parmetros bsicos del fluido
en el cambio de un rgimen a otro. Se saba que cuando ms viscoso fuera el fluido, menos
probable es que el movimiento regular o laminar se altere. Por otro lado tanto la velocidad
del fluido como el tamao del sistema hidrulico son favorables a la inestabilidad, cuanto ms
ancho sea el canal y ms grande la velocidad mayor es la probabilidad de remolinos, una
indicacin clara de turbulencia.
Utilizando el anlisis dimensional y con las ecuaciones fundamentales del movimiento
Reynolds comenz a resolver dichas dudas. A presin constante, pens, en las ecuaciones
del movimiento de un fluido se equilibra el efecto de la inercia, representado por la energa
cintica contenida en la unidad de volumen, U 2 , con el efecto de la viscosidad, representado
por el esfuerzo de Newton, U/L, donde U es la velocidad media, la viscosidad del fuido
y L una longitud caracterstica de la corriente en estudio (el dimetro del tubo por ejemplo).
Ambos parmetros dieron origen al siguiente parmetro adimensional llamado Nmero de
Reynolds:

U 2
U L
Ef ectos de inercia
=
=
Ef ectos viscosos
U/L

(1.1)

Es un parmetro capaz de cuantificar la importancia relativa de las acciones mencionadas:


Jos Enrique Cabaas Ceballos

1.2. EL EXPERIMENTO DE REYNOLDS.


un valor pequeo indica que los efectos viscosos prevalecen, con lo que el movimiento ser
laminar, mientras que un valor grande, implica que predominan las fuerzas de inercia, por
lo que tendremos un comportamiento turbulento. Debe pues existir un valor intermedio que
separe los dos regmenes y que identificar la relacin entre velocidad, viscosidad y longitud
caracterstica tal que alterando alguna de ellas, se pase de rgimen laminar a turbulento o
viceversa.
Entonces se propuso determinar bajo qu condiciones experimentales se produce el movimiento laminar y el turbulento. Dado que este ltimo se caracteriza por la presencia de
remolinos, la primera idea que se le ocurri fue visualizar con colorante el movimiento de un
fluido en una tubera transparente. As, us un sifn de vidrio de 6 mm de dimetro (ABC)
lleno de agua con una entrada abocinada en A y una vlvula de control en C e introdujo su
brazo corto AB en el agua de un vaso V. Por otro lado, instal un depsito de lquido coloreado
D, provisto de un tubo EF, tambin de 6 mm, terminado en una angosta boquilla cnica que
penetraba en el centro de la boca A. El suministro de este lquido se controlaba por medio de
la pinza P como indica la figura 1.1.

Figura 1.1: Sifn utilizado por Reynolds. Imagen adaptada de [10]


Luego de dejar todo el sistema lleno de agua durante varias horas, para asegurarse que
Jos Enrique Cabaas Ceballos

1.2. EL EXPERIMENTO DE REYNOLDS.


todo movimiento interno cesara, se abra poco a poco la pinza P. El lquido coloreado sala de
la boquilla F, primero adquiriendo la forma de la llama de una vela, luego alargndose, hasta
volverse un filamento muy delgado que al desagar por la apertura de la vlvula C se extenda
por todo el sifn. A la vlvula C se le daban aperturas siempre mayores, para que aumentara la
velocidad del agua en el sifn, y al mismo tiempo se incrementaba el suministro de colorante,
a fin de que el filamento se mantuviera visible. Contrariamente a lo previsto, con la mxima
abertura de la vlvula, este ltimo se mantena todava perfectamente claro y estable a lo largo
de todo el tubo, sin el menor asomo de perturbaciones en la corriente. Se prolong el brazo BC
hasta casi tocar el suelo para aumentar aun ms la velocidad pero el filamento no se alteraba
en lo ms mnimo.
Evidentemente el dimetro de 6 milmetros era demasiado reducido por lo que el flujo
no pasaba de rgimen laminar a turbulento. Entonces Reynolds decidi usar un tubo de 25,4
milmetros (una pulgada). Pero hacer un sifn de vidrio de este dimetro no era fcil y se
le ocurri una solucin mucho ms simple, ver figura 1.2. sta moficicacin se insert en la
instalacin de la figura 1.3.

Figura 1.2: Modificacin del sifn utilizado por Reynolds. Imagen adaptada de [10]

Jos Enrique Cabaas Ceballos

1.2. EL EXPERIMENTO DE REYNOLDS.

Figura 1.3: Esquema de la instalacin utilizada por Reynolds. Imagen adaptada de [8]

Jos Enrique Cabaas Ceballos

1.2. EL EXPERIMENTO DE REYNOLDS.


El tanque V, de 1,80 metros de largo, medio de ancho y otro tanto de profundidad, se ve
levantado 2 metros por encima del suelo, con el fn de alargar considerablemente el brazo
vertical de la tubera de hierro que prolongaba, al otro lado de la pared del tanque, el tubo de
vidrio AB donde se realizaba el experimento.
Para realizar el experimento, tras asegurarse de que el agua en el tanque V estuviese en
reposo se permiti al tinte fluir muy despacio, y se abri un poco la vlvula C. El filamento
coloreado se estableci como antes, fig. 1.4.a, y permaneci muy estable al crecer la velocidad
hasta que de repente con una leve apertura de la vlvula, en un punto situado ms o menos
medio metro antes del tubo de hierro, el filamento se expandi y se mezcl con el agua, hasta
llenar el resto del conducto con una nube coloreada, que a primera vista pareca como un tinte
uniforme, fig 1.4.b. Un examen ms cuidadoso revel la naturaleza de esa nube: moviendo el
ojo siguiendo el avance de la corriente, la expansin del filamento coloreado se vi conformada
por un movimiento ondulatorio bien definido, fig. 1.4.c. Al cerrar la vlvula de nuevo los
remolinos desaparecieron y el filamento se reconstituy.

Figura 1.4: Evolucin del flujo. Imagen adaptada de [8]


Por lo tanto se produjeron en un mismo tubo los dos regmenes, laminar y turbulento, con
slo variar la velocidad. Pero el mismo resultado deba obtenerse al calentar el agua, y as
reducir su viscosidad. El cuarto donde se realizaban los experimentos estaba a una temperatura de 8.3 C, y sta era tambin la temperatura del agua. Con un chorro de vapor Reynolds
consigui elevarla a 21 C, reduciendo 1.39 veces la viscosidad. Aumentando poco a poco la
Jos Enrique Cabaas Ceballos

10

1.3. MTODOS Y ECUACIONES DEL MOVIMIENTO...


velocidad, determin en ambos casos el valor crtico con el cual empezaba a transformarse
el movimiento laminar y encontr que en el segundo caso la velocidad crtica era 1.45 veces
menor que en el primero.
Aunque esta concordancia fuera aceptable, Reynolds pens que en el tanque calentado se
haban manifestado algunas perturbaciones adicionales debido tanto a la diferencia de temperatura entre el tanque y el medio ambiente como al gradiente de temperaturas en el tanque
mismo. Reynolds tambin enfri el agua hasta su mxima densidad, 4 C, agregndole hielo.
Comprob que en todos los casos existe una velocidad crtica y que vara en proporcin directa
con la viscosidad del flujo. Por otro lado, ensayos realizados con otros dos tubos, de distinto
dimetro, permitieron concluir que la velocidad crtica mencionada es inversamente proporcional al dimetro del tubo, confirmando as que el flujo laminar se empieza a alterar en un
valor definido por el parmetro U L/.
Estos ensayos, realizados con sumo cuidado en muchsimas condiciones distintas, le permitieron confirmar que su previsin era correcta; aun cuando llego a la conclusin de que, para
flujo turbulento, la resistencia que el conducto ofrece al avance de la corriente no es proporcional al cuadrado de la velocidad, si no a una potencia de exponente 1,72.

1.3.

Mtodos y ecuaciones del movimiento de un fluido en


una tubera de seccin circular.

En este apartado se van a comentar los modelos estudiados y empleados en este proyecto.
Dichos modelos son relaciones experimentales de las distintas variables en el transporte de
fluidos en una tubera, de forma que se relaciona el nmero de Reynolds con la longitud,
dimetro interno y rugosidad de la tubera y el factor de fricin. Estas variables toman la
forma de la ecuacion de Darcy-Weisbach [9]:

Jos Enrique Cabaas Ceballos

11

1.3. MTODOS Y ECUACIONES DEL MOVIMIENTO...

hf =

L f v2
2Dg

(1.2)

Donde hf es la prdida de carga, L es la longitud de la tubera en metros, f es el factor de


friccin, v es la velocidad del fluido, D el dimetro interno de la tubera y por ltimo g es la
aceleracin de la gravedad. Esta ecuacin relaciona las magnitudes del transporte del fluido a
travs de la tubera con la prdida de carga. Hay que destacar que dicha prdida de carga tiene
dimensiones de longitud y se calcula en metros si se utiliza el Sistema Internacional. Luego tan
slo es necesario hallar una forma del factor de fricin para poder hallar la prdida de carga.
Para ello se emplean diversos modelos que se especifican a continuacin.

1.3.1.

Ecuacin de Blasius.

Blasius en 1911 propone una expresin en la que el factor de friccin viene dado slo como
una funcin del nmero de Reynolds [1]. Dicha expresin es vlida para tubos lisos, en los que
la rugosidad relativa r , (la relacin entre el dimetro y la rugosidad media del tubo) no afecta
al flujo al tapar la subcapa laminar las irregularidades de la tubera.
Se puede expresar de la siguiente manera:

f = 0,3164 Re0,25 ,

(1.3)

y como se puede observar es un modelo muy simplificado en el que el factor de friccin


slo depende del nmero de Reynolds.

Jos Enrique Cabaas Ceballos

12

1.3. MTODOS Y ECUACIONES DEL MOVIMIENTO...

1.3.2.

Ecuacin para rgimen laminar.

Esta ecuacin es la ms sencilla de todas y la nica que se puede deducir de forma analtica,
pero slo es vlida en rgimen laminar, es decir, con nmeros de Reynolds por debajo de 4000,
si el sistema hidrulico es una tubera de seccin circular. Se escribe como:

f=

1.3.3.

64
.
Re

(1.4)

Ecuacin de Colebrook-White.

Esta ecuacin es una de las ms precisas para el clculo del factor de friccin y en un
rango ms amplio, pero tiene la desventaja de su complejidad al ser una funcin implcita.
Debe resolverse de forma iterativa hasta alcanzar una cota de error aceptable, con el coste
computacional y tiempo que ello conlleva. Fue propuesta por Colebrook y White en 1939 [2]
y es la ms utilizada por ser la ms precisa y universal.
Dicha frmula es:

1
= 2,0 log10
f

1.3.4.


r
2,5226
.
+
3,7065 Re f

(1.5)

Ecuacin de Prandtl.

La ecuacin de Prandtl es ms sencilla que la anterior, pero a costa de disminuir su rango de


validez al eliminar su dependencia con la rugosidad relativa. Fue propuesto en 1930, ampliando
el rango de validez del modelo de Blausius [3]. Su forma es la siguiente:

Jos Enrique Cabaas Ceballos

13

1.3. MTODOS Y ECUACIONES DEL MOVIMIENTO...

1
= 2,0 log10
f

1.3.5.


Re f
.
2, 51

(1.6)

Ecuacin de von Karman-Nikuradse.

Este modelo es aun ms sencillo, ya que como se puede observar no depende del nmero
de Reynolds, slo de la rugosidad relativa de la tubera. Fue propuesto en 1933 para poder
utilizar una expresin similar a la ecuacin de Prandtl con tuberas rugosas [3]. y su forma es:

1
= 2,0 log10
f

1.3.6.


r
.
3, 71

(1.7)

Diagrama de Moody.

Todas las expresiones y ecuaciones anteriores presentan inconvenientes que hacen gravoso
su uso, incluso con los avances en computacion y clculo actuales. En 1944 el ingeniero
norteamericano Lewis F. Moody trat de solventar este problema con la bsqueda experimental de un diagrama en el que el factor de friccin se viera reflejado en funcin tanto del
nmero de Reynolds como de la rugosidad relativa de la tubera [4]. El diagrama obtenido,
llamado Diagrama de Moody en su nombre, fig. 1.5, permanece en uso actualmente. Habitualmente se emplea el Diagrama de Moody para obtener una solucin inicial, que aunque no
es lo suficientemente precisa para utilizarla como solucin final, es vlida para poder realizar
iteraciones con la ecuacion de Colebrook-White y llegar rpidamente a la solucin final con la
precisin requerida.

Jos Enrique Cabaas Ceballos

14

1.3. MTODOS Y ECUACIONES DEL MOVIMIENTO...

Figura 1.5: Diagrama de Moody. Imagen adaptada de [7]

1.3.7.

Ecuacin Explcita.

Esta ecuacin es uno de los mtodos ms sencillos para solucionar la dependencia de la


prdida de carga con la rugosidad y el nmero de Reynolds. Su origen est en realizar una
aproximacin numerica del diagrama de Moody, que es vlida en un rango muy amplio de
nmeros de Reynolds gracias a la gran cantidad de trminos empleados. Los detalles del procedimiento estn detallados en [5] y su expresin es la siguiente:


r
1
= 2,0 log10

3,7065
f


0,9924 
0,9345 
5,0272
r
4,567
r
5,3326

log10

log10

,
Re
3,827
Re
7,7918
208,815 + Re
(1.8)
donde Re es el nmero de Reynolds y r es la rugosidad relativa de la tubera como en
Jos Enrique Cabaas Ceballos

15

1.3. MTODOS Y ECUACIONES DEL MOVIMIENTO...


casos anteriores. Como se puede observar a pesar de ser una ecuacin explcita lo que facilita
su resolucin de una forma clara , sigue resultando una ecuacin muy compleja.

1.3.8.

Ecuacin de Churchill.

Este modelo fue propuesto por S. W. Churchill en 1977 [6]. Este modelo abarca tanto el
rgimen turbulento como el laminar pero requiere una capacidad de clculo muy importante,
por lo que es complicado conseguir la precisin necesaria en los clculos implementndolo
en un programa de clculo convencional ya que se cometen errores de redondeo y truncado,
aportando estas soluciones con un error superior al 50 % por lo que la solucin obtenida no
es vlida. Sin embargo utilizando un programa de clculo avanzado como Matlab, se obtienen
resultados precisos.
Su frmula es la siguiente:

 12
1/12
8
1
f =8
+
,
Re
(A + B)1,5

(1.9)

donde A y B toman la forma:



A = 2,457 log

1
7 0,9
( Re ) + 0,27r
16

37530
B=
Re

16
,

(1.10)

Como se aprecia clramente este metodo presenta importantes problemas de clculo debido
a los redondeos ya que opera con valores muy prximos a cero. En el clculo del factor de
fricin trabaja con valores del orden de (1 104 )12 o lo que es lo mismo 1 1048 . Debido a
esta dificultad de operacin, no se ha podido implementar en el programa informtico, aunque
se ha estudiado el mtodo mediante el programa Matlab, y se han observado resultados muy
similares al modelo de Colebrook para el rgimen turbulento. En el rgimen laminar no se
Jos Enrique Cabaas Ceballos

16

1.3. MTODOS Y ECUACIONES DEL MOVIMIENTO...


han obtenido resultados concluyentes, debido a que no se han podido conseguir resultados
experimentales en esta zona por limitaciones en la instalacin experimental.

Jos Enrique Cabaas Ceballos

17

CAPTULO 2. PROCEDIMIENTO EXPERIMENTAL

Captulo 2

PROCEDIMIENTO EXPERIMENTAL

En este captulo se describe la instalacin experimental y el procedimiento para la toma


de medidas necesarias para la evaluacin experimental de la expresiones previamente presentadas. La instalacin experimental se describe en primer lugar, y despus de definir los
principales puntos del mtodo para la adquisicin y toma de datos, el captulo finaliza con las
expresiones empleadas en el clculo del factor de friccin a partor de los datos adquiridos.

2.1.

Instalacin Experimental.

La instalacin experimental est compuesta por una serie de elementos que permiten la
circulacin del fluido, en este caso agua, de forma controlada a travs de ella. Tambin posee
la posibilidad de medir parmetros importantes tales como el caudal y la presin relativa entre distintos puntos de la misma. Esta ltima es equivalente a la caida de presin debida al
rozamiento o prdida de carga. As la instalacin posee un sistema experimental anlogo al
de los experimentos de Reynolds. Esta instalacin se utiliza para la realizacin de prcticas
de diversas asignaturas relacionadas con la mecnica de fluidos y se encuentra situada en el
laboratorio de Mecnica de Fluidos de la E.T.S.I.I. de Ciudad Real.

Jos Enrique Cabaas Ceballos

18

2.1. INSTALACIN EXPERIMENTAL.


La instalacin esta compuesta por los siguientes componentes:

Depsito de agua. Tiene dos funcines, almacenar y recoger el agua utilizada en el experimento de forma que se pueda cuantificar el caudal que atraviesa la instalacin y
adems evitar el derroche de agua ya que permite la recirculacin.
Bomba hidrulica. Su misin es transportar el agua a travs de la instalacin. La absorbe
del depsito y la expulsa a travs de una tubera que recorre la instalacin experimental.
Vlvulas. Estos componentes permiten regular el caudal que atraviesa la instalacin,
llegando incluso a cortarlo si se encuentra totalmente cerrada.
Tubera. Conduce el agua desde la bomba, recorre toda la instalacin pasando por las
vlvulas y la retorna al depsito de nuevo.
Medidor de presin. Este componente mide la cada de presin entre dos puntos de
la tubera de manera que la medida es una presin relativa. Dicha caida de presin es
equivalente a la prdida de carga debida al rozamiento del fluido con la tubera.
Desage. Su funcin es trasladar el agua de la tubera al depsito para poder ser reutilizada.

Su esquema es el de la figura 2.1, donde P es el medidor de presin que mide la presin


relativa entre los puntos P1 y P2 separados entre s una distancia L de 0,915 metros. B se
corresponde a la bomba hidrulica, D es el depsito de agua y por ltimo V1 es la vlvula
sobre la que se acta para regular el caudal.

Jos Enrique Cabaas Ceballos

19

2.2. FUNCIONAMIENTO.

Figura 2.1: Esquema de la instalacin. Imagen adaptada de [9]

2.2.

Funcionamiento.

Antes de la puesta en marcha, se deben inspeccionar algunos elementos para asegurar su


correcto funcionamiento y precisin en las medidas efectuadas:

Debemos asegurarnos de que al menos una de las vlvulas est abierta para evitar daos
a la bomba y a la instalacin por sobrepresiones.
El nivel del depsito de agua debe encontrarse por encima de un nivel mnimo para
asegurar un caudal constante y evitar la entrada de aire al sistema.
Se debe medir la temperatura ambiente ya que esto afecta directamente a la viscosidad
del agua y por tanto a los resultados obtenidos.

Una vez hechas las comprobaciones y medidas anteriores podemos poner en marcha la
bomba. Es conveniente esperar unos segundos para alcanzar el rgimen estacionario y a continuacin se puede comenzar con la toma de medidas.
Jos Enrique Cabaas Ceballos

20

2.3. TOMA DE MEDIDAS.


Los parmetros que se pueden medir entre dos puntos de inters, en nuestro caso dos puntos
de una tubera separados en un metro son el caudal de agua que lleva la tubera y la presin
relativa entre esos dos puntos.
El caudal se mide smplemente mediante un nivel y cronometrando el tiempo que transcurre al cambiar dicho nivel entre diferentes marcas graduadas que se corresponden con un
volumen expresado en litros. Por tanto, el caudal se calcula como la relacin entre el volumen
de lquido desplazado y el tiempo invertido por la bomba para moverlo:

Q[l/s] =

V
[l/s]
t

(2.1)

La presin relativa es medida por su relacin con la altura de columna de agua, una conectada a un punto de la instalacin y otra conectada a otro. Esta presin es directamente proporcional a la diferencia de alturas entre las dos columnas, por lo que ser la cantidad a emplear
dirctamente como prdida de carga sin realizar ninguna transformacin posterior.
Dado que los datos de viscosidad, dimetro interno de la tubera, caudal (volumen desplazado y tiempo invertido) y prdida de carga son datos conocidos, se pueden calcular el nmero
de Reynolds, el factor de friccin, la velocidad del fluido y la rugosidad efectiva analticamente, usando las ecuaciones correspondientes que relacionan unas variables con las otras.
En el procedimiento de toma de datos, las medidas se efectuarn repetidas veces para
mejorar la precisin de las mismas y poder tener una cota estadstica del error cometido.

2.3.

Toma de medidas.

Habiendo hecho las comprobaciones necesarias ponemos en funcionamiento la bomba y


esperamos el tiempo suficiente para que se estabilice el flujo, una vez que se ha alcanzado el
rgimen estacionario, podemos comenzar con la toma de datos. De los datos necesarios, el
Jos Enrique Cabaas Ceballos

21

2.4. CLCULO DE LOS PARMETROS.


dimetro de la tubera es un parmetro conocido y de valor constante e igual a 13,6 mm. La
temperatura se puede medir fcilmente mediante un termmetro de laboratorio y tambin es un
parmetro invariable. En el momento de la adquisin de datos, se consider un valor de 25o C.
La densidad del fluido, en nuestro caso agua, tambin se trata de un dato conocido y constante,
con un valor de 1000 kg/m3 . Debido a que la temperatura y la densidad son constantes, la
viscosidad tambien lo es y su valor es de 1,001 106 m2 /s. Con estos datos ya se puede
proceder a medir el caudal y la cada de presin en la seccin de la tubera que hemos escogido
para la toma de datos experimentales. Esta toma de datos se hace de la siguiente forma: Una
vez alcanzado el rgimen estacionario, se pone el cronmetro a cero e interrumpiendo el paso
del agua esperamos a que el nivel del depsito alcance la linea cero de la escala graduada.
Ponemos en marcha el cronmetro, y lo paramos cuando el nivel del depsito alcance la siguiente marca graduada de medida del volumen, as mismo anotamos la cada de presin inicial
y final. Repetiremos la toma de medidas aumentando en cada medida una lnea de la escala
hasta llegar a la ltima linea de la escala graduada del depsito.
Con este procedimiento, obtenemos la primera serie de medidas, la cual debemos repetir
varias veces para poder hacer un anlisis estadstico del error. Este procedimiento debe ser
repetido para diversas posiciones de la vlvula que regula el caudal que circula por el sistema,
de forma que obtendremos medidas para distintos caudales. De esta forma se obtiene una nube
de puntos que se puede analizar para comprobar la dependencia del caudal con la perdida de
carga mediante el nmero de Reynolds, la viscosidad, el dimetro y la rugosidad de la tubera.

2.4.

Clculo de los parmetros.

Como la prdida de carga es un dato conocido porque lo hemos medido y asociado a un


caudal determinado, se puede calcular el factor de friccin empleando la ecuacin de DarcyWeisbach, expresin que proviene de realizar un anlisis dimensional sobre los parmetros de
los que depende la prdida de carga [2]:

Jos Enrique Cabaas Ceballos

22

2.4. CLCULO DE LOS PARMETROS.

hf [m] =

f LV 2 [m3 /s2 ]
,
2Dg [m2 /s2 ]

(2.2)

donde hf es la prdida de carga en metros, f corresponde al factor de fricin que es un


parmetro adimensional, g a la aceleracin de la gravedad que viene expresada en (m/s2 ), D y
L corresponden al dimetro y longitud de la tubera respectivamente expresados en metros, y
por ltimo V es la velocidad del fluido (m/s).
Despejando el factor de fricin, podemos observar su carcter adimensional y obtenerlo en
funcin de las medidas realizadas anteriormente

f [adimensional] =

2Dghf [m3 /s2 ]


.
LV 2 [m3 /s2 ]

(2.3)

Para calcular la rugosidad de la tubera, en este proyecto se utiliza la ecuacin de ColebrookWhite:

1
= 2,0 log10
f


r
2,5226
.
+
3,7065 Re f

(2.4)

Como observamos esta ecuacin es una funcin implcita en el factor de friccin, sin embargo se convierte en una funcin explcita al tener como nica incgnita la rugosidad. Operando y despejando la rugosidad absoluta obtenemos:


 = 3,7065 D 10


2,5226
,

Re f

(2.5)

con la rugosidad absoluta de la tubera expresada en metros. Si se pretende calcular la


rugosidad relativa para poder emplear el diagrama de Moody y hacer comprobaciones, smplemente hay que dividir entre la longitud caracterstica del sistema, es decir, el dimetro de la
tubera en metros tambin para ser dimensionalmente consistente:

Jos Enrique Cabaas Ceballos

23

2.4. CLCULO DE LOS PARMETROS.

r [adimensional] =

 [m]
.
D [m]

(2.6)

Por lo que calculado directamente se obtiene:




1

2,5226

.
r =
= 3,7065 10 f
D
Re f

Jos Enrique Cabaas Ceballos

(2.7)

24

CAPTULO 3. RESULTADOS

Captulo 3

RESULTADOS

En este captulo se presentan los resultados obtenidos mediando el mtodo descrito en


el captulo anterior y se realiza una comprobacin entre ellos y el diagrama de Moody, concluyendo que los datos se ajustan de manera precisa al diagrama, por lo tanto se puede comparar el resultado obtenido experimentalmente con las diversas ecuaciones presentadas para
poder apreciar cul se ajusta mejor a la realidad, lo que se realiza en la ltima seccin del
captulo.

3.1.

Comparacin entre los resultados experimentales y el


diagrama de Moody.

Una vez realizados los experimentos se ha procedido a su tratamiento estadstico, donde


se calculan la media y el error cuadrtico medio, obteniendo los resultados presentados en la
tabla 3.1.

Jos Enrique Cabaas Ceballos

25

3.1. COMPARACIN ENTRE LOS RESULTADOS...


Los parmetros de la instalacin y el lquido empleado son los siguientes, como ya se haba
comentado en el captulo anterior:

Agua: Viscosidad = 1.001106 m2 /s


Dimetro interno de la tubera = 13,6 mm
Longitud de la tubera = 915 mm

Una vez que se ha calculado tanto el factor de fricin como el nmero de Reynolds, se
puede proceder a su representacin grfica para su mejor comprensin y poder compararlos
con el diagrama de Moody que debe predecir los resultados obtenidos. Los datos obtenidos
con la instalacin experimental del laboratorio cubren un reducido rango experimental, fig.
3.1, por lo que slo se consigue analizar una pequea parte del diagrama de Moody; sta lnea
roja representa los puntos experimentales en la figura 3.2.

Caudal

Prdida Velocidad

medio

de carga

(l/s)

(mm)

0,300 0,003

380 2

2,07

28.266

0,0257

0,0008

0,283 0,001

340 2

1,95

26.521

0,0262

0,0008

0,263 0,001

300 2

1,81

24.627

0,0268

0,0010

0,220 0,002

220 2

1,52

20.697

0,0279

0,0010

0,165 0,001

130 2

1,13

15.434

0,0297

0,0012

0,114 0,001

68 3

0,78

10.711

0,0320

0,0011

0,097 0,001

50 2

0,66

9.088

0,0333

0,0012

0,090 0,001

44 2

0,62

8.437

0,0334

0,0008

(m/s)

Nmero
de

Factor Rugosidad
de

relativa

Reynolds fricin

Tabla 3.1: Resultados experimentales


Podemos observar como la instalacin experimental del laboratorio tiene unas posibilidades muy reducidas de accin y slo se consigue analizar una pequea parte del diagrama de
Jos Enrique Cabaas Ceballos

26

3.1. COMPARACIN ENTRE LOS RESULTADOS...

Figura 3.1: Factor de friccin obtenido experimentalmente frente a nmero de Reynolds.

Jos Enrique Cabaas Ceballos

27

3.1. COMPARACIN ENTRE LOS RESULTADOS...


Moody, realzada por el rectngulo rojo de la figura 3.2.

Figura 3.2: Zona estudiada del diagrama de Moody.


Se observa clramente cmo los datos experimentales y los predichos por el diagrama de
Moody se corresponden con una diferencia muy reducida, del orden del 10 %. As podemos
afirmar que la rugosidad relativa de la tubera posee un lmite superior de 0.001 puesto que
estos son los datos que se corresponden con el diagrama de Moody, y su correspondecia con
la rugosidad absoluta se calcula fcilmente ya que el dimetro de la tubera es un parmetro
conocido. La rugosidad absoluta obtenida es 0,013 0,002 mm. Adems se puede ver cmo la
rugosidad se mantiene constante dentro del margen de error, ver fig. 3.3, excepto para nmeros
de Reynolds bajos, donde se aprecia un pico en la grfica. Este resultado es lgico ya que nos
encontramos en la zona de transicin entre los regmenes laminar y turbulento, regin para la
cual los datos experimentales no son concluyentes debido a la alta dispersin de los mismos y
a la dificultad de hallar puntos en esta regin de transicin.

Jos Enrique Cabaas Ceballos

28

3.1. COMPARACIN ENTRE LOS RESULTADOS...

Figura 3.3: Rugosidad relativa obtenida experimentalmente frente al nmero de Reynolds utilizando el modelo de Colebrook.

Jos Enrique Cabaas Ceballos

29

3.2. DISCUSIN DE LAS DIVERSAS ECUACIONES...

3.2.

Discusin de las diversas ecuaciones presentadas y su


validez.

En esta seccin se compararn grficamente los distintos modelos mencionados anteriormente con los resultados experimentales para poder comprobar el rango de validez de dichos
modelos.
En la figura 3.4 se grafica el factor de friccin frente al nmero de Reynolds para distintas
rugosidades. Como se puede apreciar, a medida que el nmero de Reynolds aumenta el factor
de friccin disminuye. Esto sucede hasta un valor a partir del cual se mantiene constante, cuando el flujo est totalmente dominado por la rugosidad. Adems se observa como a medida que
hacemos que la tubera sea ms lisa, es decir menos rugosa, el factor de friccin se convierte
en un valor constante para un nmero de Reynolds cada vez mayor. As, siguiendo una de las
curvas del factor de friccin, para bajos nmeros de Reynolds, el factor de friccin es elevado, y a medida que aumenta la turbulencia, es decir el nmero de Reynolds se incrementa, el
factor de friccin disminuye hasta alcanzar un valor constante e independiente del nmero de
Reynolds.
Y este factor de fricin constante depende de la rugosidad de la tubera como ya se haba
dicho, ya que para rugosidades altas, es ms grande y se alcanza a nmeros de Reynolds ms
bajos.

3.2.1.

Tubera lisa.

En una tubera lisa, el flujo necesita un nmero de Reynolds muy alto para desarrollar
completamente la turbulencia, fig. 3.5. Analizando los distintos modelos, se ve que la ecuacin
de Von Karman-Nikuradse no es vlida en este caso ya que slo se puede aplicar para el flujo
turbulento totalmente desarrollado, donde el factor de friccin es independiente del nmero de
Reynolds, situacin muy difcil de alcanzar en una tubera lisa.
Jos Enrique Cabaas Ceballos

30

3.2. DISCUSIN DE LAS DIVERSAS ECUACIONES...

Figura 3.4: Dependencia del factor de friccin con la rugosidad

Jos Enrique Cabaas Ceballos

31

3.2. DISCUSIN DE LAS DIVERSAS ECUACIONES...


Por otro lado, tanto las ecuaciones explcita,como las de Colebrook y Prandtl s modelizan
con precisin el factor de friccin en estas condiciones. Comparando la expresin del rgimen
laminar con el resto de modelos, se observan discrepancias significativas. Esto es debido a que
este modelo es especfico para rgimen laminar, mientras que los otros son ms generales lo
que en estas condiciones de flujo les lleva a cometer errores importantes debido a la dificultad
de integrar en un nico modelo el amplio rango de nmeros de Reynolds deseado.

Figura 3.5: Factor de friccin para tubera lisa. Rugosidad relativa 1 108

3.2.2.

Rugosidad relativa de 1 105 .

En este caso nos encontramos con una rugosidad muy pequea, para la cual el flujo turbulento se desarrolla completamente a partir de un nmero de Reynolds en torno a 106 . A partir
de este punto el factor de friccin es independiente del nmero de Reynols, fig. 3.6. Por otro
lado se observa como los modelos de Prandtl, Colebrook y el explcito son coincidentes y una
Jos Enrique Cabaas Ceballos

32

3.2. DISCUSIN DE LAS DIVERSAS ECUACIONES...


vez desarrollado completamente el flujo turbulento, estos modelos tienden asintticamente al
modelo de von Karman-Nikuradse. A partir del mismo nmero de Reynolds en el que el flujo
turbulento est completamente desarrollado, el modelo de Prandtl deja de ser vlido debido a
que no depende del nmero de Reynolds ni de la rugosidad de la tubera.

Figura 3.6: Factor de friccin con una rugosidad relativa de 1 105

3.2.3.

Rugosidad relativa de 1 103 .

La rugosidad sigue tomando importancia a medida que aumenta, lo cual pone a prueba
la validez de los modelos. El modelo de Prandtl slo es vlido en la zona laminar, mientras
que el de von Karman-Nikuradse se puede emplear en la zona turbulenta una vez que se ha
desarrollado completamente el flujo. Por otro lado podemos decir que los modelos de Colebrook y el Explcito tienden asintticamente por los extremos a los modelos de Prandtl y von
Karman-Nikuradse, como indica la figura 3.7.
Jos Enrique Cabaas Ceballos

33

3.2. DISCUSIN DE LAS DIVERSAS ECUACIONES...

Figura 3.7: Factor de friccin con una rugosidad relativa de 1 103

Jos Enrique Cabaas Ceballos

34

3.2. DISCUSIN DE LAS DIVERSAS ECUACIONES...

3.2.4.

Rugosidad relativa de 0,01.

En este caso la rugosidad representa un orden de magnitud de un 1 % del dimetro de


la tubera. El modelo de Prandtl se puede descartar ya que no es vlido con la excepcion de
nmeros de Reynolds realmente pequeos por debajo de 300, fig. 3.8, los cuales son complicados de conseguir en las condiciones habituales en el transporte de fluidos. El resto de modelos
son coincidentes una vez que se ha desarrollado completamente el flujo, en torno a un nmero
de Reynolds de 5 104 .

Figura 3.8: Factor de friccin con una rugosidad relativa de 0,01

3.2.5.

Rugosidad relativa de 0,05.

En este caso la rugosidad es macroscpica, apreciable a simple vista. El rgimen turbulento


se desarrolla completamente para valores de nmero de Reynolds muy bajos, del orden de 104 .
Jos Enrique Cabaas Ceballos

35

3.2. DISCUSIN DE LAS DIVERSAS ECUACIONES...


El modelo de Prandtl no es vlido ya que fue pensado para tuberas lisas y la rugosidad es un
parmetro con gran importancia en este caso, ver fig. 3.9. El modelo de von Karman-Nikuradse
toma validez una vez desarrollada la turbulencia, como siempre, tendiendo asintticamente a
ste ltimo tanto el modelo Explcito como el de Colebrook.

Figura 3.9: Factor de friccin si la rugosidad relativa es de 0,05

3.2.6.

Rugosidad relativa de 1.

Este es un caso hipottico en el cual la rugosidad es del mismo orden de magnitud que el
dimetro de la tubera y se aprecia clramente como el modelo de Prandtl no es vlido. Sin
embargo, el de von Karman-Nikuradse tiende asintticamente desde un principio al de Colebrook y al Explcito, fig. 3.10. Al aumentar la rugosidad el rgimen turbulento se desarrolla
completamente para nmeros de Reynolds muy bajos, del orden de 103 .

Jos Enrique Cabaas Ceballos

36

3.2. DISCUSIN DE LAS DIVERSAS ECUACIONES...

Figura 3.10: Factor de friccin con rugosidad relativa de 1

Jos Enrique Cabaas Ceballos

37

3.3. EXPLICACIN DEL PROGRAMA.

3.3.

Explicacin del programa.

El programa informtico se ha desarrollado a partir de las necesidades demandadas: interface visual, sencillez de manejo, empleo de bases de datos con las caractersticas de los
fluidos y materiales de las tuberas, flexibilidad al operar con los datos, presentacin de resultados claros, empleo de distintos modelos de transporte de fluidos y comparacin entre los
resultados.
Lo primero que se program fue la forma de resolver un sistema de ecuaciones capaz de
proporcionar los valores de los parmetros de la instalacin de forma que sean cuales quiera
tanto los datos conocidos como las incognitas, con la excepcin de la rugosidad que debe
ser un parmetro conocido puesto que la nica forma de calcularla es resolver el modelo de
Colebrook teniendo como nica incgnita la rugosidad una vez conocidos todos los datos y
calculada la prdida de carga y el factor de fricin.
Por otro lado, se busc dotar al programa de flexibilidad puesto que aunque existe una base
de datos de la cual se leen los datos de viscosidad de diferentes fluidos y las rugosidades de
los distintos materiales en las tuberas, es posible emplear otros parmetros. La flexibilidad
tambin se hace notable al poder elegir cualquier combinacin de variables para ser incgnitas
o parmetros conocidos para calcular los restantes. Por este motivo es necesario desplegar un
rbol de variables para tener en cuenta todas las combinaciones posibles y posteriormente,
mediante una serie de if anidados se programa su resolucin en funcin de las incgnitas y los
parmetros conocidos. Cmo es lgico, algunas combinaciones de variables no son posibles,
por lo que el programa advertir este hecho enviando mensajes de error tales como datos
insuficientes o sistema incompatible.
Los resultados del factor de friccin se redondean a 6 cifras significativas con el objetivo de
ser ms manejables. As mismo se presentan los resultados de cada modelo por separado para
poder compararlos y posteriormente se elabora una media ponderada de ellos para presentar
un factor de fricin medio. La prdida de carga se calcula mediante la ecuacin de DarcyWeisbach empleando este factor de friccin medio.
Jos Enrique Cabaas Ceballos

38

3.4. CLCULOS MEDIANTE MATLAB.


El programa se ha escrito en Java y su cdigo se presenta en el Anexo B. Del mismo modo
se ha elaborado un manual de usuario presentado en el Anexo A.

3.4.

Clculos mediante Matlab.

Los clculos del factor de friccin con diversas rugosidades y los clculos estadsticos
presentados en las secciones precedentes se han realizado con el programa Matlab y estan
presentados en el Anexo C.
Una vez obtenidos los datos experimentales se analizan estadsticamente, calculando la
media, el error cuadrtico medio y la desviacin tpica para otener una dispersin del error de
las medidas. A su vez se calculan el resto de parmetros y se representan grficamente para
su mejor compresin y anlisis. De esta forma se puede representar el factor de friccin y la
rugosidad frente al nmero de Reynolds y comparar los resultados con el diagrama de Moody.
Por otro lado, se representan grficamente los distintos modelos que explican el comportamiento del transporte de fluidos a lo largo de una tubera y se analiza lo que ocurre variando
el nmero de Reynolds y la rugosidad de forma independiente, es decir se obtienen curvas de
nivel de estas funciones. De esta forma se puede analizar el comportamiento del fluido manteniendo todas las variables de las que depende el transporte a lo largo de la tubera constantes
y variando slo una, la variable objeto de estudio. Esto se realiza de dos formas, mediante la
representacin grfica de todos los modelos frente al nmero de Reynolds para una misma rugosidad y analizando un mtodo en todo el rango de nmeros de Reynolds, pero representando
grficamente distintas rugosidades, como ya se ha hecho en prrafos anteriores.

Jos Enrique Cabaas Ceballos

39

CAPTULO 4. CONCLUSIONES

Captulo 4

CONCLUSIONES

El transporte de fluidos hasta el siglo XIX era un procedimiento totalmente artesanal. Se


saba de la existencia de turbulencias, prdidas de carga, etc, pero no se conocan sus causas
ni la forma de cuantificarlas, por lo que haba que recurrir a la experiencia y utilizar amplios
mrgenes de seguridad en las instalaciones hidrulicas.
Los experimentos de Reynolds, Prandtl, Colebrook, White y muchos otros, esclarecieron
la compleja naturaleza de estos fenmenos. A pesar de haber conseguido desarrollar unos
modelos que predicen el comportamiento del fluido bajo diversas condiciones de flujo para
poder aplicarlos, hay que tener en cuenta la variabilidad de las medidas, y que estos modelos
no dejan de ser aproximaciones a la compleja realidad de comportamiento de los fluidos en el
transporte, por tanto cometen un error alrededor del 20 % en muchas ocaciones.
Los modelos estudiados aproximan el comportamiendo del fluido, de forma que el factor de friccin disminuye a medida que aumenta el nmero de Reynolds, hasta alcanzar un
valor constante e independiente del nmero de Reynolds un vez desarrollado completamente
el rgimen turbulento. Adems, este valor de nmero de Reynolds a partir del cual el factor
de friccin permanece constante depende de la rugosidad de la tubera, alcanzando valores
mayores a medida que la rugosidad disminuye, es decir la tubera es ms lisa. Todo esto se

Jos Enrique Cabaas Ceballos

40

ha graficado para poder comparar visualmente dichos modelos y comprobar el rango de aplicacin de los mismos. Adems se han ajustado a la misma escala que el diagrama de Moody
para tomarlo como referencia.
Los experimentos realizados en el laboratorio se corresponden con estos modelos y su
precisin. Y, a pesar de intentar mantener todo invariable y esperar el tiempo necesario para
alcanzar el rgimen estacionario en el sistema al realizar las mediciones, se observa como
hay fluctuaciones en los parmetros del sistema. El caudal proporcionado por la bomba oscila
debido a oscilaciones en la red elctrica y a que estamos utilizando un depsito de agua de
pequeas dimensiones, por lo cual a medida que la bomba extrae agua del sistema, la presin
a la entrada de la bomba disminuye.
En la modelizacin de la tubera se ha utilizado como hiptesis que su rugosidad es contnua, aleatoria y estable, pero se conoce la existencia de cal y otras sustancias que se adhieren
a las paredes de la misma aadiendo rugosidad al sistema que no cumplen estas condiciones.
La temperatura tampoco es un factor que permanece constante ya que a medida que la bomba
trabaja, hay rozamiento y por tanto se genera calor, el cual es absorbido por el agua aumentando su temperatura. Esta variacin afecta la densidad y viscosidad del fluido. Las medidas a
su vez tienen una variabilidad intrnseca al ser observadas en escalas graduadas con pequeas
oscilaciones y por tanto estn sujetas al error cometido por el observador. Pero a pesar de todas
las fuentes de error y variacin en los parmetros medidos, con los resultados obtenidos y una
vez tratados estadsticamente, al compararlos con el diagrama de Moody, la referencia en este
proyecto, se comete un error por debajo del 10 %.
Una vez analizados los modelos, y comparados con los resultados experimentales, se procede a la elaboracin del programa informtico. En l se ponderan los resultados de dichos
modelos en funcin de su rango de aplicacin, de tal forma que se obtenga el mejor resultado
posible. En este proceso se llega incluso a desechar puntualmente alguno de los modelos a
la hora de calcular los parmetros si fuera necesario por encontrarse fuera del rango de aplicacin con las variables dadas. Dicho programa, conocidos algunos datos de la instalacin,
calcula el resto de los parmetros, asi como el factor de fricin que predice cada modelo, el
Jos Enrique Cabaas Ceballos

41

factor de friccin ponderado y la perdida de carga del sistema, dando avisos en caso de errores
puntuales.

Figura 4.1: Resultados experimentales


Como se aprecia en la figura 4.1, los modelos de Colebrook y el Explcito son coincidentes
entre s y reproducen los datos experimentales fielmente en el rango de nmeros de Reynolds
que permite estudiar la instalacion hidralica del laboratorio. El modelo de Prandtl tambin se
ajusta a los resultados obtenidos pero comete un error mayor que los mtodos anteriores, por
lo que este modelo se desecha a la hora de implementar el programa informtico. El modelo
para rgimen laminar se encuentra fuera de rango, por lo que no es vlido y es desechado del
mismo modo y el modelo de von Karman-Nikuradse vemos que no es aplicable en este rango
de nmeros de Reynolds, aunque se ha estudiado que tiende asintticamente a los modelos
anteriores para nmeros de Reynolds superiores a 107 .
El programa se ha diseado proporcionando cierta flexibilidad a la hora de introducir los

Jos Enrique Cabaas Ceballos

42

datos dado que se eligen mediante una lista desplegable extraida de una base de datos. sta
base de datos puede modificarse fcilmente en cualquier momento mediante un programa de
edicin de texto plano, vase el manual en los apndices. Del mismo modo y a pesar de haber
seleccionado alguna de las opciones de la lista desplegable, se pueden cambiar los valores
predeterminados para obtener valores de la prdida de carga mas adecuados.
Debido a la gran complejidad de los clculos por ser modelos implcitos, se decidi la realizacin del programa informatico para aprovechar la gran capacidad de calculo de cualquier
ordenador de sobremesa convencional. Comparando la resolucin de forma tradicional de estos
problemas con la resolucin mediante el programa informtico, se observa como se gana en
velocidad, precisin del clculo al poder utilizar varios modelos y estar seleccionados segun
el rango de aplicacin de los mismos y fiabilidad al cometer menos errores de clculo que de
forma manual. Adems es fcil representar grficamente la solucin obtenida de forma que se
pueden analizar los resultados obtenidos y encontrar los posibles errores visualmente.

Jos Enrique Cabaas Ceballos

43

BIBLIOGRAFA

Bibliografa

[1] V. L. Streeter, Mecnica de los fluidos, McGraw-Hill (2004).


[2] F. White, Mecnica de fluidos, McGraw-Hill (2001).
[3] Langelandsvik, An evaluation of the friction factor formula based on operational data.
Presentado en la conferencia PSIG 2005 (2005).
[4] L. F. Moody, Friction factor for pipe flow. Trans. Am. Soc. Mech. Engrs vol. 66, p. 671
(1944).
[5] A. Monzn, Short communication: improved explicit equations for estimation of the friction factor in rough and smooth pipes. Chemical Engineering Journal vol. 86 pp. 369-374
(2002).
[6] H. M. Hathoot, Unsteady flow through a pipe connecting tow reservoirs. Research Bulletin No. 80, Agric. Res. Center, King Saud Univ., pp. 5-25 (1999).
[7] V. T. Chow, Hidrulica de los canales abiertos, McGraw-Hill (2004).
[8] O. Reynolds, An experimental investigation of the circumstances which determine
whether the motion of water in parallel channels shall be direct or sinuous and of the law
of resistance in parallel channels. Royal Society Phil. Trans. vol. 40 is.29 pp.56 (1883).
[9] Asociacin Tcnica Espaola de Climatizacin y Refrigeracin (ATECYR), Gua tcnica de seleccin de equipos de transporte de fluidos, Ahorro y eficiencia energtica en
climatizacin , IDAE (Instituto para la Diversificacin y Ahorro de la Energa), vol. 10,
2010.
Jos Enrique Cabaas Ceballos

44

BIBLIOGRAFA
[10] Iaki Carrascal Mozo. Ciencias Fsicas, Vicens Vives (1988)

Jos Enrique Cabaas Ceballos

45

ANEXO A. MANUAL DEL PROGRAMA DE...

Anexo A

MANUAL DEL PROGRAMA DE


CLCULO

A.1.

Aplicaciones.

Este programa informtico ha sido diseado para calcular de forma rpida, sencilla e intuitiva el factor de friccin, la prdida de carga y una serie de parmetros en funcin de unos
datos bsicos de la instalacin experimental, tarea que si se realizase a mano sera larga y
compleja.

A.2.

Requisitos mnimos de sistema para la instalacin.

RAM: 256 Mb o superior.


PROCESADOR: 300 MHz o superior.
SISTEMA OPERATIVO: Win2000/XP/2003/Vista/7/Linux/Macintosh.
ESPACIO LIBRE EN DISCO DURO: 100 MB.

Jos Enrique Cabaas Ceballos

46

A.3. REQUISITOS DE SOFTWARE.

A.3.

Requisitos de Software.

Es necesario tener instalado una plataforma JDK de Java.


NetBeans IDE funciona en el kit de desarrollo de Java SE (JDK), que consta del entorno
de ejecucin de Java y de herramientas para desarrolladores para la compilacin, depuracin
y ejecucin de aplicaciones escritas en lenguaje Java.
Para instalar y ejecutar los paquetes de NetBeans, slo se necesita los entornos de ejecucin
de Java 5 6.
Puede descargar JDK para la plataforma que desee desde:
http://java.sun.com/javase/downloads/index.jsp

A.4.

Instalacin del programa.

Para instalar el programa, slo es necesario descomprimir el archivo DIST.zip y ejecutar el


archivo factor_fricion.jar detro del entorno de ejecucin de Java.

A.5.

Introduccin de datos.

Para iniciar la aplicacin, es necesario seleccionar los parmetros conocidos, y el programa


informtico calcular el resto de los datos.
En el caso de conocer un dato, se debe marcar la casilla correspondiente y escribir el
valor a continuacin. Si por el contrario no se conoce, smplemente hay que dejar la casilla
desmarcada. Es importante en este punto mencionar que si el dato es un nmero decimal, el

Jos Enrique Cabaas Ceballos

47

A.6. MENSAJES DE ERROR.


caracter que separa la parte entera de la decimal es un punto y NO una coma.
Hay que puntualizar que el programa SLO utilizar los datos cuya casilla est seleccionada. En caso de estar desactivada, la aplicacin lo considerar una incgnita a calcular aun
estando escrita.
Algunos datos como son la rugosidad del material de la tuberia, o la densidad y viscosidad
del fluido, pueden ser seleccionados de una base de datos, la cual esta integrada en la aplicacin
mediante listas desplegables. Pero como se ha mencionado anteriormente aun seleccionando
el valor de la lista, es necesario marcar dicha casilla para indicar al programa que utilice ese
valor y no considere el parmetro como una incgnita a calcular.

A.6.

Mensajes de error.

Para los mensajes de error hay que tener en cuenta que el parmetro de rugosidad absoluta
es necesario conocerlo de antemano ya que de otra forma es imposible calcular el factor de
fricin por ser una variable independiente.
Del mismo modo, se destaca que el resto de los parmetros se podrn calcular a partir
de cualquier combinacin de estos tal que se obtenga un sistema compatible determinado, es
decir, haya el mismo numero incgnitas que ecuaciones. Por lo tanto si no proporcionamos
un sistema compatible determinado, la aplicacin emitir mensajes de error avisando de esta
situacin.
Si el parmetro de la rugosidad no est seleccionado, entonces la aplicacin avisa mostrando el siguiente mensaje: necesario el dato de rugosidad. Para corregirlo simplemente hay
que seleccionar la casilla de dicho parmetro y escribir a continuacin su valor si se conoce,
o elegir uno de los materiales de tuberas en la lista desplegable mencionada anteriormente.
Otro mensaje de error frecuente es el de: datos insuficientes. Esto ocurre porque existen ms
incgnitas que ecuaciones. La solucin es aadir los datos que sean necesarios hasta obtener
Jos Enrique Cabaas Ceballos

48

A.7. USO.
un sistema compatible. Tambin es posible encontrar el error: sistema incompatible. Este
error sucede cuando se han seleccionado ms parmetros de los necesarios, de tal forma que
hay ms ecuaciones que incognitas y no es posible el clculo debido a las incongruencias. La
solucin es eliminar algun parmetro para permitir un grado ms de libertad.

A.7.

Uso.

Tras introducir los datos, y pulsando al botn de calcular, una vez corregidos los errores
mencionados anteriormente, aparecer el mensaje: parmetros calculados correctamente.
Este mensaje smplemente indica que hemos seleccionado adecuadamente los parmetros para
el clculo y las operaciones se han realizado satisfactoriamente, apareciendo impresos los parmentros no conocidos, los factores de friccin segn distintos mtodos de clculo y adems un
factor de fricin medio ponderado, asi como la prdida de carga observada para dicho factor
de fricin medio.

A.8.

Modificacin de la base de datos.

La base de datos de la aplicacin recoge valores tanto de la rugosidad absoluta de distintos


materiales de tuberias, como de viscosidad y densidad de algunos fluidos tpicos de trabajo.
Estas bases de datos estn escritas con una codificacion ASCII, extensin .txt y su estructura es la siguiente:

materiales:

material1;rugosidad1;material2;rugosidad2; etc

Jos Enrique Cabaas Ceballos

49

A.9. EJEMPLO PRCTICO DE USO DE LA...


fluidos:

fluido1;densidad1;viscosidad1;fluido2;densidad2;viscosidad2; etc

De tal forma que si se quiere aadir un nuevo material o fluido, simplemente hay que
abrir el archivo .txt correspondiente y escribir a continuacin de los datos existentes el nombre
del material o fluido nuevo seguido de un ; y el valor del campo correspondiente acabado en
; siguiendo la estructura anteriormente descrita, sin espacios en blancos ni saltos de linea y
siempre usando las unidades del sistema internacional tal como indica la primera lnea del
cdigo.

A.9.

Ejemplo prctico de uso de la aplicacin.

Para que la demostracin sea lo ms completa posible, supondremos los siguientes datos:

Dimetro de la tuberia = 50 mm
Nmero de Reynolds = 50.000
Fluido es agua

Si se probase a calcular, aparecer el error dato de rugosidad necesario. La forma de


corregirlo es sencilla, se va a resolver en este caso, marcando la casilla que pone rugosidad.
A continuacin se procede a escribir su valor.

Rugosidad = 0.046 mm

Una vez solucionado este error, si se intenta calcular de nuevo, aparecer el mensaje datos
insuficientes. Esto es debido a que aun no hemos introducido los datos necesarios. En esta
Jos Enrique Cabaas Ceballos

50

A.9. EJEMPLO PRCTICO DE USO DE LA...


ocasin, aadiremos la viscosidad, seleccionandola de la base de datos, la cual se maneja
mediante una lista desplegable en la parte superior de la ventana de la aplicacin tal como
indica la figura A.1.

Figura A.1: Ejemplo de uso de la base de datos si el fluido es agua.


Como se mencion anteriormente, aunque hayamos seleccionado el valor, es necesario
marcar la casilla correspondiente para que la aplicacin lo tenga en cuenta a la hora de calcular.
Llegados a este punto, vemos que se han calculado los valores del caudal de aproximadamente 2 litros por segundo, la velocidad del flujo de 1 metro por segundo, adems se han
obtenido los factores de friccin y por ltimo la prdida de carga por metro de tubera de
0.0238 y 0.024 respectivamente como indica la figura A.2.
En estas condiciones de flujo la prdida de carga no es significativa, sin embargo simplemente cambiando el fluido por aceite SAE 30, cuya viscosidad es mucho mayor, el valor de la
prdida de carga es 1.890 metros por metro de tubera ya que es necesario un caudal de 547
litros por segundo en una tubera de tan slo 50 mm de dimetro.

Jos Enrique Cabaas Ceballos

51

A.9. EJEMPLO PRCTICO DE USO DE LA...

Figura A.2: Ejemplo de resultados obtenidos

Jos Enrique Cabaas Ceballos

52

ANEXO B. CDIGO DEL PROGRAMA...

Anexo B

CDIGO DEL PROGRAMA


INFORMTICO

En este apartado se presenta el cdigo fuente de la aplicacin informtica desarrollada para


el clculo del factor de friccin, la prdida de carga y las variables de la instalacin hidrulica.
El captulo est dividido en varias secciones, donde cada una se corresponde con el fichero
.java necesario para la aplicacin.

B.1.

Clculos

Esta seccin se corresponde con el archivo del mismo nombre: calculos.java.


1

package factor_friccion;

/** Metodos que realizan las operaciones necesarias para gestionar


los datos

* de las propiedades del flujo y devuelve como resultado el factor


de friccion

*/

Jos Enrique Cabaas Ceballos

53

B.1. CLCULOS

public class calculos {

private String nombre;

private double densidad; /* km/m3 */

private double viscosidad; /* m2/s */

public calculos(String nom){


this.nombre = nom;

10

11

12

public calculos(String nom, double densidad, double viscosidad){

13

this.nombre = nom;

14

this.densidad = densidad;

15

this.viscosidad = viscosidad;

16

17

public String getNombre(){


return this.nombre;

18

19

20

public void setNombre(String nombre){


this.nombre = nombre;

21

22

23

public double getDensidad(){


return this.densidad;

24

25

26

public void setDensidad(double den){


this.densidad = den;

27

28

29

public double getViscosidad(){


return this.viscosidad;

30

31

32

public void setViscosidad(double vis){


this.viscosidad = vis;

33

34

35

public static double getVelocidad (double q, double D){

36

double A=3.1415926*D*D*(1e-6)/4;

Jos Enrique Cabaas Ceballos

54

B.1. CLCULOS

37

double vel=q/A;

38

return vel;

39

40

public static double getReynolds(double L, double vel, double


vis) {

41

double Re=L*(1e-3)*vel/vis;

42

return Re;

43

44

public static double getViscosidad(double Re, double D, double


vel) {

45

double vis=vel*D*1e-3/Re;

46

return vis;

47

48

public static double getCaudal(double D,double vel){

49

double A=3.1415926*D*D*(1e-6)/4;

50

double q=vel*A;

51

return q;

52

53

public static double getVel(double Re,double D,double vis){

54

double vel=Re*vis/(D*1e-3);

55

return vel;

56

57

public static double getD(double Re,double vis,double vel){

58

double D=Re*vis*1000/vel;

59

return D;

60

61

public static double getD1(double Re,double vis,double q){

62

double D=4000*q/(3.1415926*Re*vis);

63

return D;

64

65

public static double getD(double q,double vel){

66

double A=q/vel;

Jos Enrique Cabaas Ceballos

55

B.1. CLCULOS

67

double Dm=2*Math.sqrt(A/3.1415926);

68

double D=Dm*1e3;

69

return D;

70

}
public static double getMedia(double a,double b,double c,double

71

Re,double e){
72

double media = 0;

73

if (e>0.00001){
media=(a+b)/2;

74

75

76

else{
media= (a+b+c)/3;

77

78

79

return media;

80

81

//Metodo que resuelve la ecuacion de Colebrook del factor de


friccion.

82

public static double getFactor(double Re, double D, double e)

83

84

double f,x,X,s,a,b=0;

85

if(Re<=5000)

86

{
s=64/Re;

87

88

89

else //if (Re>2100)

90

91

x=0.000000000001;

92

do

93

94

f=-2.0*Math.log10((e/(D*3.7065))+(2.5226/(Re*Math.
sqrt(x))));

95

a=1/(f*f);

Jos Enrique Cabaas Ceballos

56

B.1. CLCULOS

96

X=Math.abs(x-a);

97

s=x;

98

x=x+0.000001;
}

99

while(X>0.000001);

100

101

102

return s;

103

104

//Metodo que resuelve la ecuacion de explicita del factor de


friccin.

105

public static double getFactor1(double Re, double D, double e)

106

107

double f,x,X,s,a,b=0;

108

s=0;

109

if(Re<=5000)

110

{
s=64/Re;

111

112

113

114

else //if (Re>2100)

115

{
if(e==0)

116

117

118

e=0.0000000001;

119

a=-2.0*Math.log10(((e/D)/3.7065)-(5.0272/Re)*Math.log10
(((e/D)/3.827)-(4.567/Re)*Math.log10((Math.pow((e/D)
/7.7918,0.9924))+
Math.pow((5.3326/(208.815+Re)),0.9345))));

120

s=1/(a*a);

121

122

123

else{

124

a=-2.0*Math.log10(((e/D)/3.7065)-(5.0272/Re)*Math.log10

Jos Enrique Cabaas Ceballos

57

B.1. CLCULOS

(((e/D)/3.827)-(4.567/Re)*Math.log10((Math.pow((e/D)
/7.7918,0.9924))+
Math.pow((5.3326/(208.815+Re)),0.9345))));

125

126

s=1/(a*a);

127

128

129

return s;

130

131

//Metodo que resuelve la ecuacion explicita rabe del factor de


friccin.

132

133

public static double getFactor2(double Re, double D, double e)


{

134

double f,x,X,s,a,b=0;

135

//a=Math.pow((2.457*Math.log10(1/(Math.pow((7/Re),0.9)
+0.27*(e/D)))),16);
a=Math.pow((2.457*Math.log(1/((Math.pow((7/Re),0.9))+(0.27*e

136

/D)))),16);
137

b=Math.pow((37530/Re),16);

138

s=8*Math.pow(((Math.pow((8/Re),12))+(1/(Math.pow((a+b),1.5))
)),(1/12));

139

System.out.println("a = "+a);

140

System.out.println("b = "+b);

141

//s=8*Math.pow((1/Math.pow((a+b),1.5))+(Math.pow((8/Re),12))
,(1/12));
//s=8*Math.pow((Math.pow((8/Re),12)+(1/(Math.pow((a+b),1.5))

142

)),(1/12));
return s;

143

144

145

}
//Metodo que resuelve la ecuacin de Prandtl del factor de
friccin.

146

147

public static double getFactor3(double Re)


{

Jos Enrique Cabaas Ceballos

58

B.1. CLCULOS

148

double f,x,X=0;

149

x=0.000000000001;

150

do

151

{
f=Math.pow(1/(2*Math.log10((Re*Math.sqrt(x))/2.51))

152

,2);
153

X=Math.abs(x-f);

154

x=x+0.000001;

155

156

while(X>0.000001);
return x;

157

158

//Metodo que resuelve la ecuacin de Karman-Nikuradse del factor

159

de friccin.
public static double getFactor4(double D, double e,double Re)

160

161

162

double f,x,X=0;

163

f=1/Math.pow((-2*Math.log10(e/(3.71*D))),2);

164

return f;

165

166

167

//CALCULO DE PERDIDA DE CARGA MEDIANTE ECUACION DARCY-WEISBACH

168

public static double getPC(double D,double vel,double media)

169

170

double g=9.81;

171

double PC=media*vel*vel/(2*g*(0.001*D));

172

return PC;
}

173

174

Jos Enrique Cabaas Ceballos

59

B.2. CAMPOS DE LA BASE DE DATOS

B.2.

Campos de la base de datos

Esta seccin se corresponde con el archivo: campos.java


1

package factor_friccion;

public class campos {

private String nombre;

private double rugosidad; /* mm */

public campos(String nom){

this.nombre = nom;

public campos(String nom,

double rugosidad){

this.nombre = nom;

this.rugosidad = rugosidad;

10

11

12

public String getNombre(){


return this.nombre;

13

14

15

public void setNombre(String nombre){


this.nombre = nombre;

16

17

18

public double getRugosidad(){


return this.rugosidad;

19

20

21

public void setRugosidad(double vis){


this.rugosidad = vis;

22

23

24

Jos Enrique Cabaas Ceballos

60

B.3. BASE DE DATOS DE FLUIDOS

B.3.

Base de datos de fluidos

Esta seccin se corresponde con el archivo: leerfluidos.java


1

package factor_friccion;

import java.io.*;

public class leerfluidos {

public static String[] leerfichero()

File archivo = null;

FileReader fr = null;

BufferedReader br = null;

String linea=null;

10

String z[]=null;

11

try

12

{
/*

13

// Apertura del fichero y creacion de BufferedReader para

14

poder
15

//hacer una lectura comoda (disponer del metodo readLine())

16

*/

17

archivo = new File ("listafluidos.txt");

18

fr = new FileReader (archivo);

19

br = new BufferedReader(fr);

20

// Lectura del fichero

21

while((linea=br.readLine())==null)

22

System.out.println("");

23

24

catch(Exception e)

25

{
e.printStackTrace();

26

27

Jos Enrique Cabaas Ceballos

61

B.3. BASE DE DATOS DE FLUIDOS

28

finally

29

30

// En el finally cerramos el fichero, para asegurarnos

31

// que se cierra tanto si todo va bien como si salta

32

// una excepcion.

33

try

34

35

if( null != fr )

36

{
fr.close();

37

38

39

40

catch (Exception e2)

41

{
e2.printStackTrace();

42

43

44

45

int y=0;

46

for(int w=0;w<linea.length();w++)

47

{
//recorrer el String linea

48

if (linea.charAt(w) == ;)//condicion de que caracter

49

sea ";"
{

50

y=y+1;//contador de caracteres ";"para poder

51

subdividir linea
}

52

53

54

}
String [] W=new String [y];

55

56

for(int b=0;b<y;b++)

57

Jos Enrique Cabaas Ceballos

62

B.4. BASE DE DATOS DE MATERIALES DE...

W[b]="";

58

59

60

int a=0;

61

for(int t=0;t<linea.length();t++)
{

62

//recorrer el String linea

63

64

if (linea.charAt(t) != ;)

65

{
W[a] = W[a]+ Character.toString(linea.charAt(t));

66

67

68

else// (linea.charAt(t) == ;)

69

{
a=a+1;

70

71

72

73

System.out.println("hay "+y+" ; en el archivo");

74

75

return W;

76

77

78

B.4.

Base de datos de materiales de tuberas

Esta seccin se corresponde con el archivo: Leermateriales.java


1

package factor_friccion;

import java.io.*;

//import java.util.StringTokenizer;

public class Leermateriales

Jos Enrique Cabaas Ceballos

63

B.4. BASE DE DATOS DE MATERIALES DE...

public static String[] leerfichero()

File archivo = null;

FileReader fr = null;

10

BufferedReader br = null;

11

String linea=null;

12

String z[]=null;

13

try

14

{
/*

15

// Apertura del fichero y creacion de BufferedReader para

16

poder
17

//hacer una lectura comoda (disponer del metodo readLine())

18

*/

19

archivo = new File ("listamateriales.txt");

20

fr = new FileReader (archivo);

21

br = new BufferedReader(fr);

22

// Lectura del fichero

23

while((linea=br.readLine())==null)

24

System.out.println("");

25

26

catch(Exception e)

27

{
e.printStackTrace();

28

29

30

finally

31

32

// En el finally cerramos el fichero, para asegurarnos

33

// que se cierra tanto si todo va bien como si salta

34

// una excepcion.

35

try

Jos Enrique Cabaas Ceballos

64

B.4. BASE DE DATOS DE MATERIALES DE...

36

37

if( null != fr )

38

{
fr.close();

39

40

41

42

catch (Exception e2)

43

{
e2.printStackTrace();

44

45

46

47

int y=0;

48

for(int w=0;w<linea.length();w++)

49

{
//recorrer el String linea

50

if (linea.charAt(w) == ;)//condicion de que caracter

51

sea ";"
{

52

y=y+1;//contador de caracteres ";"para poder

53

subdividir linea
}

54

55

56

}
String [] W=new String [y];

57

58

for(int b=0;b<y;b++)

59

{
W[b]="";

60

61

62

int a=0;

63

for(int t=0;t<linea.length();t++)

64

65

{
//recorrer el String linea

Jos Enrique Cabaas Ceballos

65

B.5. CDIGO DE DE LA INTERFACE GRFICA

66

if (linea.charAt(t) != ;)

67

{
W[a] = W[a]+ Character.toString(linea.charAt(t));

68

69

70

else// (linea.charAt(t) == ;)

71

{
a=a+1;

72

73

74

75

System.out.println("hay "+y+" ; en el archivo");

76

77

return W;

78

79

80

B.5.

Cdigo de de la interface grfica

Esta seccin se corresponde con el archivo: Factor_friccionView.java


1

/*

* Factor_friccionView.java

*/

package factor_friccion;

import org.jdesktop.application.Action;

import org.jdesktop.application.ResourceMap;

import org.jdesktop.application.SingleFrameApplication;

10

import org.jdesktop.application.FrameView;

Jos Enrique Cabaas Ceballos

66

B.5. CDIGO DE DE LA INTERFACE GRFICA

11

import org.jdesktop.application.TaskMonitor;

12

import java.awt.event.ActionEvent;

13

import java.awt.event.ActionListener;

14

import javax.swing.DefaultComboBoxModel;

15

import javax.swing.Timer;

16

import javax.swing.Icon;

17

import javax.swing.JDialog;

18

import javax.swing.JFrame;

19

import java.text.DecimalFormat;

20

21

/**

22

* The applications main frame.

23

*/

24

public class Factor_friccionView extends FrameView {

25

DecimalFormat formateador = new DecimalFormat("0.000000");

26

String Z[]=Leermateriales.leerfichero();

27

int q=Z.length;

28

int y=1+(q/2);

29

public String Nombres[]=new String[y-1];

30

public String Rug[]=new String[y-1];

31

String W[]=leerfluidos.leerfichero();

32

int r=W.length;

33

int p=r/3;

34

public String Nombres1[]=new String[p];

35

public String Vis[]=new String[p];

36

public String Den[]=new String[p];

37

public DefaultComboBoxModel model;

38

public DefaultComboBoxModel model1;

39

40

public Factor_friccionView(SingleFrameApplication app) {

41

super(app);

42

for (int a=1;a<y-1;a++)

Jos Enrique Cabaas Ceballos

67

B.5. CDIGO DE DE LA INTERFACE GRFICA

43

44

Nombres[a]=Z[2*a];

45

Rug[a]=Z[(2*a)+1];

46

//System.out.print(Nombres[a]);

47

48

for (int b=1;b<p-1;b++)

49

50

Nombres1[b]=W[3*b];

51

Vis[b]=W[(3*b)+2];

52

Den[b]=W[(3*b)+1];

53

//System.out.print(Nombres[b]);

54

55

model = new DefaultComboBoxModel(Nombres);

56

model1 = new DefaultComboBoxModel(Nombres1);

57

initComponents();

58

59

// status bar initialization - message timeout, idle icon


and busy animation, etc

60

ResourceMap resourceMap = getResourceMap();

61

int messageTimeout = resourceMap.getInteger("StatusBar.


messageTimeout");

62

messageTimer = new Timer(messageTimeout, new ActionListener


() {
public void actionPerformed(ActionEvent e) {

63

statusMessageLabel.setText("");

64

65

66

});

67

messageTimer.setRepeats(false);

68

int busyAnimationRate = resourceMap.getInteger("StatusBar.


busyAnimationRate");

69

70

for (int i = 0; i < busyIcons.length; i++) {


busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[

Jos Enrique Cabaas Ceballos

68

B.5. CDIGO DE DE LA INTERFACE GRFICA

" + i + "]");
71

72

busyIconTimer = new Timer(busyAnimationRate, new


ActionListener() {
public void actionPerformed(ActionEvent e) {

73

busyIconIndex = (busyIconIndex + 1) % busyIcons.

74

length;
statusAnimationLabel.setIcon(busyIcons[busyIconIndex

75

]);
}

76

77

});

78

idleIcon = resourceMap.getIcon("StatusBar.idleIcon");

79

statusAnimationLabel.setIcon(idleIcon);

80

progressBar.setVisible(false);

81

82

// connecting action tasks to status bar via TaskMonitor

83

TaskMonitor taskMonitor = new TaskMonitor(getApplication().


getContext());

84

taskMonitor.addPropertyChangeListener(new java.beans.
PropertyChangeListener() {

85

public void propertyChange(java.beans.


PropertyChangeEvent evt) {

86

String propertyName = evt.getPropertyName();

87

if ("started".equals(propertyName)) {

88

if (!busyIconTimer.isRunning()) {

89

statusAnimationLabel.setIcon(busyIcons[0]);

90

busyIconIndex = 0;

91

busyIconTimer.start();

92

93

progressBar.setVisible(true);

94

progressBar.setIndeterminate(true);

95

} else if ("done".equals(propertyName)) {

Jos Enrique Cabaas Ceballos

69

B.5. CDIGO DE DE LA INTERFACE GRFICA

96

busyIconTimer.stop();

97

statusAnimationLabel.setIcon(idleIcon);

98

progressBar.setVisible(false);

99

progressBar.setValue(0);
} else if ("message".equals(propertyName)) {

100

101

String text = (String)(evt.getNewValue());

102

statusMessageLabel.setText((text == null) ? "" :


text);
messageTimer.restart();

103

104

} else if ("progress".equals(propertyName)) {

105

int value = (Integer)(evt.getNewValue());

106

progressBar.setVisible(true);

107

progressBar.setIndeterminate(false);

108

progressBar.setValue(value);
}

109

110

});

111

112

113

114

@Action

115

public void showAboutBox() {


if (aboutBox == null) {

116

JFrame mainFrame = Factor_friccionApp.getApplication().

117

getMainFrame();
118

aboutBox = new Factor_friccionAboutBox(mainFrame);

119

aboutBox.setLocationRelativeTo(mainFrame);

120

121

Factor_friccionApp.getApplication().show(aboutBox);

122

123

124

125

/** This method is called from within the constructor to


* initialize the form.

Jos Enrique Cabaas Ceballos

70

B.5. CDIGO DE DE LA INTERFACE GRFICA

126

* WARNING: Do NOT modify this code. The content of this method


is

127

* always regenerated by the Form Editor.

128

*/

129

@SuppressWarnings("unchecked")

130

// <editor-fold defaultstate="collapsed" desc="Generated Code">

131

private void initComponents() {

132

133

mainPanel = new javax.swing.JPanel();

134

jLabel1 = new javax.swing.JLabel();

135

jTextField1 = new javax.swing.JTextField();

136

jTextField2 = new javax.swing.JTextField();

137

jTextField3 = new javax.swing.JTextField();

138

jTextField4 = new javax.swing.JTextField();

139

jTextField5 = new javax.swing.JTextField();

140

jButton1 = new javax.swing.JButton();

141

jComboBox1 = new javax.swing.JComboBox();

142

jCheckBox1 = new javax.swing.JCheckBox();

143

jCheckBox2 = new javax.swing.JCheckBox();

144

jCheckBox3 = new javax.swing.JCheckBox();

145

jCheckBox4 = new javax.swing.JCheckBox();

146

jCheckBox5 = new javax.swing.JCheckBox();

147

jCheckBox6 = new javax.swing.JCheckBox();

148

jTextField6 = new javax.swing.JTextField();

149

jTextField7 = new javax.swing.JTextField();

150

jLabel2 = new javax.swing.JLabel();

151

jLabel4 = new javax.swing.JLabel();

152

jComboBox2 = new javax.swing.JComboBox();

153

jCheckBox7 = new javax.swing.JCheckBox();

154

jTextField8 = new javax.swing.JTextField();

155

jLabel5 = new javax.swing.JLabel();

156

jLabel6 = new javax.swing.JLabel();

Jos Enrique Cabaas Ceballos

71

B.5. CDIGO DE DE LA INTERFACE GRFICA

157

jTextField9 = new javax.swing.JTextField();

158

jLabel7 = new javax.swing.JLabel();

159

jTextField11 = new javax.swing.JTextField();

160

jTextField12 = new javax.swing.JTextField();

161

jLabel8 = new javax.swing.JLabel();

162

jLabel9 = new javax.swing.JLabel();

163

jTextField13 = new javax.swing.JTextField();

164

jLabel10 = new javax.swing.JLabel();

165

jLabel12 = new javax.swing.JLabel();

166

jTextField14 = new javax.swing.JTextField();

167

menuBar = new javax.swing.JMenuBar();

168

javax.swing.JMenu fileMenu = new javax.swing.JMenu();

169

javax.swing.JMenuItem exitMenuItem = new javax.swing.


JMenuItem();

170

javax.swing.JMenu helpMenu = new javax.swing.JMenu();

171

javax.swing.JMenuItem aboutMenuItem = new javax.swing.


JMenuItem();

172

statusPanel = new javax.swing.JPanel();

173

javax.swing.JSeparator statusPanelSeparator = new javax.


swing.JSeparator();

174

statusMessageLabel = new javax.swing.JLabel();

175

statusAnimationLabel = new javax.swing.JLabel();

176

progressBar = new javax.swing.JProgressBar();

177

jLabel3 = new javax.swing.JLabel();

178

jPanel1 = new javax.swing.JPanel();

179

jLabel11 = new javax.swing.JLabel();

180

jTextField10 = new javax.swing.JTextField();

181

182

mainPanel.setName("mainPanel"); // NOI18N

183

mainPanel.setPreferredSize(new java.awt.Dimension(600, 400))


;

184

Jos Enrique Cabaas Ceballos

72

B.5. CDIGO DE DE LA INTERFACE GRFICA

185

jLabel1.setText("FLUIDOS");

186

jLabel1.setName("jLabel1"); // NOI18N

187

188

jTextField1.setText("");

189

jTextField1.setEnabled(false);

190

jTextField1.setName("jTextField1"); // NOI18N

191

192

jTextField2.setText("");

193

jTextField2.setEnabled(false);

194

jTextField2.setName("jTextField2"); // NOI18N

195

196

jTextField3.setText("");

197

jTextField3.setEnabled(false);

198

jTextField3.setName("jTextField3"); // NOI18N

199

200

jTextField4.setText("");

201

jTextField4.setEnabled(false);

202

jTextField4.setName("jTextField4"); // NOI18N

203

204

jTextField5.setText("");

205

jTextField5.setEnabled(false);

206

jTextField5.setName("jTextField5"); // NOI18N

207

208

jButton1.setText("CALCULAR");

209

jButton1.setName("jButton1"); // NOI18N

210

jButton1.addActionListener(new java.awt.event.ActionListener
() {
public void actionPerformed(java.awt.event.ActionEvent

211

evt) {
jButton1ActionPerformed(evt);

212

213

214

});

Jos Enrique Cabaas Ceballos

73

B.5. CDIGO DE DE LA INTERFACE GRFICA

215

216

jComboBox1.setModel(model1);

217

jComboBox1.setName("jComboBox1"); // NOI18N

218

jComboBox1.addActionListener(new java.awt.event.
ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent

219

evt) {
jComboBox1ActionPerformed(evt);

220

221

222

});

223

224

jCheckBox1.setText("DENSIDAD(kg/m3)");

225

jCheckBox1.setName("jCheckBox1"); // NOI18N

226

jCheckBox1.addActionListener(new java.awt.event.
ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent

227

evt) {
jCheckBox1ActionPerformed(evt);

228

229

230

});

231

232

jCheckBox2.setText("VISCOSIDAD(m2/s)");

233

jCheckBox2.setName("jCheckBox2"); // NOI18N

234

jCheckBox2.addActionListener(new java.awt.event.
ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent

235

evt) {
jCheckBox2ActionPerformed(evt);

236

237

238

});

239

240

jCheckBox3.setText("DIMETRO TUBERIA(mm)");

Jos Enrique Cabaas Ceballos

74

B.5. CDIGO DE DE LA INTERFACE GRFICA

241

jCheckBox3.setName("jCheckBox3"); // NOI18N

242

jCheckBox3.addActionListener(new java.awt.event.
ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent

243

evt) {
jCheckBox3ActionPerformed(evt);

244

245

246

});

247

248

jCheckBox4.setText("RUGOSIDAD(mm)");

249

jCheckBox4.setName("jCheckBox4"); // NOI18N

250

jCheckBox4.addActionListener(new java.awt.event.
ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent

251

evt) {
jCheckBox4ActionPerformed(evt);

252

253

254

});

255

256

jCheckBox5.setText("CAUDAL(m3/s)");

257

jCheckBox5.setName("jCheckBox5"); // NOI18N

258

jCheckBox5.addActionListener(new java.awt.event.
ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent

259

evt) {
jCheckBox5ActionPerformed(evt);

260

261

262

});

263

264

jCheckBox6.setText("REYNOLDS");

265

jCheckBox6.setName("jCheckBox6"); // NOI18N

266

jCheckBox6.addActionListener(new java.awt.event.

Jos Enrique Cabaas Ceballos

75

B.5. CDIGO DE DE LA INTERFACE GRFICA

ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent

267

evt) {
jCheckBox6ActionPerformed(evt);

268

269

270

});

271

272

jTextField6.setText("");

273

jTextField6.setEnabled(false);

274

jTextField6.setName("jTextField6"); // NOI18N

275

276

jTextField7.setText("");

277

jTextField7.setEnabled(false);

278

jTextField7.setName("jTextField7"); // NOI18N

279

280

jLabel2.setText("");

281

jLabel2.setName("jLabel2"); // NOI18N

282

283

jLabel4.setText("MATERIAL DE LA TUBERIA");

284

jLabel4.setName("jLabel4"); // NOI18N

285

286

jComboBox2.setModel(model);

287

jComboBox2.setName("jComboBox2"); // NOI18N

288

jComboBox2.addActionListener(new java.awt.event.
ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent

289

evt) {
jComboBox2ActionPerformed(evt);

290

291

292

});

293

294

jCheckBox7.setText("VELOCIDAD (m/s)");

Jos Enrique Cabaas Ceballos

76

B.5. CDIGO DE DE LA INTERFACE GRFICA

295

jCheckBox7.setName("jCheckBox7"); // NOI18N

296

jCheckBox7.addActionListener(new java.awt.event.
ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent

297

evt) {
jCheckBox7ActionPerformed(evt);

298

299

300

});

301

302

jTextField8.setText("");

303

jTextField8.setName("jTextField8"); // NOI18N

304

305

jLabel5.setText("f Colebrook");

306

jLabel5.setName("jLabel5"); // NOI18N

307

308

jLabel6.setText("f explcita");

309

jLabel6.setName("jLabel6"); // NOI18N

310

311

jTextField9.setText("");

312

jTextField9.setName("jTextField9"); // NOI18N

313

314

jLabel7.setText("");

315

jLabel7.setName("jLabel7"); // NOI18N

316

317

jTextField11.setText("");

318

jTextField11.setName("jTextField11"); // NOI18N

319

320

jTextField12.setText("");

321

jTextField12.setName("jTextField12"); // NOI18N

322

323

jLabel8.setText("f Prandtl");

324

jLabel8.setName("jLabel8"); // NOI18N

Jos Enrique Cabaas Ceballos

77

B.5. CDIGO DE DE LA INTERFACE GRFICA

325

326

jLabel9.setText("f von Karman-Nikuradse");

327

jLabel9.setName("jLabel9"); // NOI18N

328

329

jTextField13.setText("");

330

jTextField13.setName("jTextField13"); // NOI18N

331

332

jLabel10.setText("factor friccin medio");

333

jLabel10.setName("jLabel10"); // NOI18N

334

335

jLabel12.setText("Prdida de Carga/metro

336

jLabel12.setName("jLabel12"); // NOI18N

(m)");

337

338

jTextField14.setText("");

339

jTextField14.setName("jTextField14"); // NOI18N

340

341

javax.swing.GroupLayout mainPanelLayout = new javax.swing.


GroupLayout(mainPanel);

342

mainPanel.setLayout(mainPanelLayout);

343

mainPanelLayout.setHorizontalGroup(

344

mainPanelLayout.createParallelGroup(javax.swing.
GroupLayout.Alignment.LEADING)

345

.addGroup(mainPanelLayout.createSequentialGroup()

346

.addContainerGap()

347

.addGroup(mainPanelLayout.createParallelGroup(javax.
swing.GroupLayout.Alignment.LEADING)

348

.addComponent(jCheckBox7)

349

.addComponent(jCheckBox6)

350

.addGroup(mainPanelLayout.createSequentialGroup
()
.addGroup(mainPanelLayout.

351

createParallelGroup(javax.swing.

Jos Enrique Cabaas Ceballos

78

B.5. CDIGO DE DE LA INTERFACE GRFICA

GroupLayout.Alignment.LEADING)
.addGroup(mainPanelLayout.

352

createSequentialGroup()
.addGroup(mainPanelLayout.

353

createParallelGroup(javax.swing.
GroupLayout.Alignment.TRAILING)
.addComponent(jCheckBox1, javax.

354

swing.GroupLayout.Alignment.
LEADING)
.addComponent(jCheckBox2, javax.

355

swing.GroupLayout.Alignment.
LEADING)
.addComponent(jCheckBox3, javax.

356

swing.GroupLayout.Alignment.
LEADING)
.addComponent(jCheckBox4, javax.

357

swing.GroupLayout.Alignment.
LEADING)
.addComponent(jCheckBox5, javax.

358

swing.GroupLayout.Alignment.
LEADING)
.addGroup(javax.swing.

359

GroupLayout.Alignment.LEADING
, mainPanelLayout.
createSequentialGroup()
.addComponent(jLabel1, javax

360

.swing.GroupLayout.
PREFERRED_SIZE, 71, javax
.swing.GroupLayout.
PREFERRED_SIZE)
361

.addGap(18, 18, 18)

362

.addComponent(jComboBox1,

Jos Enrique Cabaas Ceballos

79

B.5. CDIGO DE DE LA INTERFACE GRFICA

javax.swing.GroupLayout.
PREFERRED_SIZE, 136,
javax.swing.GroupLayout.
PREFERRED_SIZE))
.addComponent(jButton1, javax.

363

swing.GroupLayout.Alignment.
LEADING, javax.swing.
GroupLayout.PREFERRED_SIZE,
123, javax.swing.GroupLayout.
PREFERRED_SIZE))
364

.addGap(18, 18, 18)

365

.addComponent(jLabel4, javax.swing.
GroupLayout.PREFERRED_SIZE, 154,
javax.swing.GroupLayout.
PREFERRED_SIZE))

366

.addComponent(jLabel6)

367

.addComponent(jLabel5)

368

.addComponent(jLabel8, javax.swing.
GroupLayout.DEFAULT_SIZE, 397, Short.
MAX_VALUE)
.addComponent(jLabel9, javax.swing.

369

GroupLayout.DEFAULT_SIZE, 397, Short.


MAX_VALUE)
.addComponent(jLabel10))

370

.addPreferredGap(javax.swing.LayoutStyle.

371

ComponentPlacement.RELATED)
.addGroup(mainPanelLayout.

372

createParallelGroup(javax.swing.
GroupLayout.Alignment.LEADING)
.addComponent(jLabel7, javax.swing.

373

GroupLayout.DEFAULT_SIZE, 216, Short.


MAX_VALUE)

Jos Enrique Cabaas Ceballos

80

B.5. CDIGO DE DE LA INTERFACE GRFICA

.addGroup(mainPanelLayout.

374

createParallelGroup(javax.swing.
GroupLayout.Alignment.TRAILING, false
)
.addComponent(jTextField13, javax.

375

swing.GroupLayout.Alignment.
LEADING)
.addComponent(jTextField8, javax.

376

swing.GroupLayout.Alignment.
LEADING)
.addComponent(jTextField1, javax.

377

swing.GroupLayout.Alignment.
LEADING)
.addComponent(jTextField2, javax.

378

swing.GroupLayout.Alignment.
LEADING)
.addComponent(jTextField3, javax.

379

swing.GroupLayout.Alignment.
LEADING)
.addComponent(jTextField4, javax.

380

swing.GroupLayout.Alignment.
LEADING)
.addComponent(jTextField5, javax.

381

swing.GroupLayout.Alignment.
LEADING)
.addComponent(jTextField6, javax.

382

swing.GroupLayout.Alignment.
LEADING)
.addComponent(jTextField7, javax.

383

swing.GroupLayout.Alignment.
LEADING)
.addComponent(jTextField9, javax.

384

Jos Enrique Cabaas Ceballos

81

B.5. CDIGO DE DE LA INTERFACE GRFICA

swing.GroupLayout.Alignment.
LEADING)
.addComponent(jTextField11, javax.

385

swing.GroupLayout.Alignment.
LEADING)
.addComponent(jTextField12, javax.

386

swing.GroupLayout.Alignment.
LEADING)
.addComponent(jComboBox2, javax.

387

swing.GroupLayout.Alignment.
LEADING, 0, 181, Short.MAX_VALUE)
.addComponent(jTextField14, javax.

388

swing.GroupLayout.Alignment.
LEADING))))
.addComponent(jLabel2, javax.swing.GroupLayout.

389

PREFERRED_SIZE, 128, javax.swing.GroupLayout.


PREFERRED_SIZE)
.addComponent(jLabel12))

390

.addContainerGap())

391

392

);

393

mainPanelLayout.setVerticalGroup(

394

mainPanelLayout.createParallelGroup(javax.swing.
GroupLayout.Alignment.LEADING)

395

.addGroup(mainPanelLayout.createSequentialGroup()

396

.addContainerGap(javax.swing.GroupLayout.
DEFAULT_SIZE, Short.MAX_VALUE)

397

.addGroup(mainPanelLayout.createParallelGroup(javax.
swing.GroupLayout.Alignment.BASELINE)

398

.addComponent(jLabel1, javax.swing.GroupLayout.
PREFERRED_SIZE, 37, javax.swing.GroupLayout.
PREFERRED_SIZE)

399

.addComponent(jComboBox1, javax.swing.

Jos Enrique Cabaas Ceballos

82

B.5. CDIGO DE DE LA INTERFACE GRFICA

GroupLayout.PREFERRED_SIZE, 26, javax.swing.


GroupLayout.PREFERRED_SIZE)
400

.addComponent(jLabel4)

401

.addComponent(jComboBox2, javax.swing.
GroupLayout.PREFERRED_SIZE, 29, javax.swing.
GroupLayout.PREFERRED_SIZE))

402

.addGap(24, 24, 24)

403

.addGroup(mainPanelLayout.createParallelGroup(javax.
swing.GroupLayout.Alignment.BASELINE)

404

.addComponent(jCheckBox1)

405

.addComponent(jTextField1, javax.swing.
GroupLayout.PREFERRED_SIZE, javax.swing.
GroupLayout.DEFAULT_SIZE, javax.swing.
GroupLayout.PREFERRED_SIZE))

406

.addPreferredGap(javax.swing.LayoutStyle.
ComponentPlacement.UNRELATED)

407

.addGroup(mainPanelLayout.createParallelGroup(javax.
swing.GroupLayout.Alignment.BASELINE)

408

.addComponent(jCheckBox2)

409

.addComponent(jTextField2, javax.swing.
GroupLayout.PREFERRED_SIZE, javax.swing.
GroupLayout.DEFAULT_SIZE, javax.swing.
GroupLayout.PREFERRED_SIZE))

410

.addPreferredGap(javax.swing.LayoutStyle.
ComponentPlacement.UNRELATED)

411

.addGroup(mainPanelLayout.createParallelGroup(javax.
swing.GroupLayout.Alignment.BASELINE)

412

.addComponent(jCheckBox3)

413

.addComponent(jTextField3, javax.swing.
GroupLayout.PREFERRED_SIZE, javax.swing.
GroupLayout.DEFAULT_SIZE, javax.swing.
GroupLayout.PREFERRED_SIZE))

Jos Enrique Cabaas Ceballos

83

B.5. CDIGO DE DE LA INTERFACE GRFICA

414

.addPreferredGap(javax.swing.LayoutStyle.
ComponentPlacement.UNRELATED)

415

.addGroup(mainPanelLayout.createParallelGroup(javax.
swing.GroupLayout.Alignment.BASELINE)

416

.addComponent(jCheckBox4)

417

.addComponent(jTextField4, javax.swing.
GroupLayout.PREFERRED_SIZE, javax.swing.
GroupLayout.DEFAULT_SIZE, javax.swing.
GroupLayout.PREFERRED_SIZE))

418

.addPreferredGap(javax.swing.LayoutStyle.
ComponentPlacement.UNRELATED)

419

.addGroup(mainPanelLayout.createParallelGroup(javax.
swing.GroupLayout.Alignment.BASELINE)

420

.addComponent(jCheckBox5)

421

.addComponent(jTextField5, javax.swing.
GroupLayout.PREFERRED_SIZE, javax.swing.
GroupLayout.DEFAULT_SIZE, javax.swing.
GroupLayout.PREFERRED_SIZE))

422

.addPreferredGap(javax.swing.LayoutStyle.
ComponentPlacement.UNRELATED)

423

.addGroup(mainPanelLayout.createParallelGroup(javax.
swing.GroupLayout.Alignment.BASELINE)

424

.addComponent(jCheckBox6)

425

.addComponent(jTextField6, javax.swing.
GroupLayout.PREFERRED_SIZE, javax.swing.
GroupLayout.DEFAULT_SIZE, javax.swing.
GroupLayout.PREFERRED_SIZE))

426

.addPreferredGap(javax.swing.LayoutStyle.
ComponentPlacement.UNRELATED)

427

.addGroup(mainPanelLayout.createParallelGroup(javax.
swing.GroupLayout.Alignment.BASELINE)

428

.addComponent(jCheckBox7)

Jos Enrique Cabaas Ceballos

84

B.5. CDIGO DE DE LA INTERFACE GRFICA

429

.addComponent(jTextField7, javax.swing.
GroupLayout.PREFERRED_SIZE, 22, javax.swing.
GroupLayout.PREFERRED_SIZE))

430

.addGap(28, 28, 28)

431

.addGroup(mainPanelLayout.createParallelGroup(javax.
swing.GroupLayout.Alignment.BASELINE)

432

.addComponent(jButton1, javax.swing.GroupLayout.
PREFERRED_SIZE, 35, javax.swing.GroupLayout.
PREFERRED_SIZE)

433

.addComponent(jLabel7))

434

.addGap(34, 34, 34)

435

.addGroup(mainPanelLayout.createParallelGroup(javax.
swing.GroupLayout.Alignment.BASELINE)

436

.addComponent(jLabel5)

437

.addComponent(jTextField8, javax.swing.
GroupLayout.PREFERRED_SIZE, javax.swing.
GroupLayout.DEFAULT_SIZE, javax.swing.
GroupLayout.PREFERRED_SIZE))

438

.addPreferredGap(javax.swing.LayoutStyle.
ComponentPlacement.RELATED)

439

.addGroup(mainPanelLayout.createParallelGroup(javax.
swing.GroupLayout.Alignment.BASELINE)

440

.addComponent(jLabel6)

441

.addComponent(jTextField9, javax.swing.
GroupLayout.PREFERRED_SIZE, javax.swing.
GroupLayout.DEFAULT_SIZE, javax.swing.
GroupLayout.PREFERRED_SIZE))

442

.addPreferredGap(javax.swing.LayoutStyle.
ComponentPlacement.RELATED)

443

.addGroup(mainPanelLayout.createParallelGroup(javax.
swing.GroupLayout.Alignment.LEADING)

444

.addComponent(jTextField11, javax.swing.

Jos Enrique Cabaas Ceballos

85

B.5. CDIGO DE DE LA INTERFACE GRFICA

GroupLayout.PREFERRED_SIZE, javax.swing.
GroupLayout.DEFAULT_SIZE, javax.swing.
GroupLayout.PREFERRED_SIZE)
445

446

.addComponent(jLabel8))
.addPreferredGap(javax.swing.LayoutStyle.
ComponentPlacement.RELATED)

447

.addGroup(mainPanelLayout.createParallelGroup(javax.
swing.GroupLayout.Alignment.LEADING)

448

.addComponent(jTextField12, javax.swing.
GroupLayout.PREFERRED_SIZE, javax.swing.
GroupLayout.DEFAULT_SIZE, javax.swing.
GroupLayout.PREFERRED_SIZE)

449

.addComponent(jLabel9))

450

.addGap(33, 33, 33)

451

.addGroup(mainPanelLayout.createParallelGroup(javax.
swing.GroupLayout.Alignment.BASELINE)

452

.addComponent(jTextField13, javax.swing.
GroupLayout.PREFERRED_SIZE, javax.swing.
GroupLayout.DEFAULT_SIZE, javax.swing.
GroupLayout.PREFERRED_SIZE)

453

454

.addComponent(jLabel10))
.addPreferredGap(javax.swing.LayoutStyle.
ComponentPlacement.RELATED)

455

.addGroup(mainPanelLayout.createParallelGroup(javax.
swing.GroupLayout.Alignment.BASELINE)

456

.addComponent(jLabel12)

457

.addComponent(jTextField14, javax.swing.
GroupLayout.PREFERRED_SIZE, javax.swing.
GroupLayout.DEFAULT_SIZE, javax.swing.
GroupLayout.PREFERRED_SIZE))

458

.addGap(18, 18, 18)

459

.addComponent(jLabel2, javax.swing.GroupLayout.

Jos Enrique Cabaas Ceballos

86

B.5. CDIGO DE DE LA INTERFACE GRFICA

PREFERRED_SIZE, 28, javax.swing.GroupLayout.


PREFERRED_SIZE))
460

);

461

462

menuBar.setName("menuBar"); // NOI18N

463

464

org.jdesktop.application.ResourceMap resourceMap = org.


jdesktop.application.Application.getInstance(
factor_friccion.Factor_friccionApp.class).getContext().
getResourceMap(Factor_friccionView.class);

465

fileMenu.setText(resourceMap.getString("fileMenu.text")); //
NOI18N

466

fileMenu.setName("fileMenu"); // NOI18N

467

468

javax.swing.ActionMap actionMap = org.jdesktop.application.


Application.getInstance(factor_friccion.
Factor_friccionApp.class).getContext().getActionMap(
Factor_friccionView.class, this);

469

exitMenuItem.setAction(actionMap.get("quit")); // NOI18N

470

exitMenuItem.setName("exitMenuItem"); // NOI18N

471

fileMenu.add(exitMenuItem);

472

473

menuBar.add(fileMenu);

474

475

helpMenu.setText(resourceMap.getString("helpMenu.text")); //
NOI18N

476

helpMenu.setName("helpMenu"); // NOI18N

477

478

aboutMenuItem.setAction(actionMap.get("showAboutBox")); //
NOI18N

479

aboutMenuItem.setName("aboutMenuItem"); // NOI18N

480

helpMenu.add(aboutMenuItem);

Jos Enrique Cabaas Ceballos

87

B.5. CDIGO DE DE LA INTERFACE GRFICA

481

482

menuBar.add(helpMenu);

483

484

statusPanel.setName("statusPanel"); // NOI18N

485

486

statusPanelSeparator.setName("statusPanelSeparator"); //
NOI18N

487

488

statusMessageLabel.setName("statusMessageLabel"); // NOI18N

489

490

statusAnimationLabel.setHorizontalAlignment(javax.swing.
SwingConstants.LEFT);

491

statusAnimationLabel.setName("statusAnimationLabel"); //
NOI18N

492

493

progressBar.setName("progressBar"); // NOI18N

494

495

jLabel3.setText(resourceMap.getString("jLabel3.text")); //
NOI18N

496

jLabel3.setName("jLabel3"); // NOI18N

497

498

javax.swing.GroupLayout statusPanelLayout = new javax.swing.


GroupLayout(statusPanel);

499

statusPanel.setLayout(statusPanelLayout);

500

statusPanelLayout.setHorizontalGroup(

501

statusPanelLayout.createParallelGroup(javax.swing.
GroupLayout.Alignment.LEADING)

502

.addComponent(statusPanelSeparator, javax.swing.
GroupLayout.DEFAULT_SIZE, 641, Short.MAX_VALUE)

503

504

.addGroup(statusPanelLayout.createSequentialGroup()
.addGroup(statusPanelLayout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)

Jos Enrique Cabaas Ceballos

88

B.5. CDIGO DE DE LA INTERFACE GRFICA

.addGroup(statusPanelLayout.

505

createSequentialGroup()
506

.addContainerGap()

507

.addComponent(statusMessageLabel))
.addGroup(statusPanelLayout.

508

createSequentialGroup()
509

.addGap(72, 72, 72)

510

.addComponent(jLabel3, javax.swing.
GroupLayout.PREFERRED_SIZE, 142, javax.
swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.

511

ComponentPlacement.RELATED, 267, Short.MAX_VALUE)


.addComponent(progressBar, javax.swing.GroupLayout.

512

PREFERRED_SIZE, javax.swing.GroupLayout.
DEFAULT_SIZE, javax.swing.GroupLayout.
PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.

513

ComponentPlacement.RELATED)
514

.addComponent(statusAnimationLabel)

515

.addContainerGap())

516

);

517

statusPanelLayout.setVerticalGroup(

518

statusPanelLayout.createParallelGroup(javax.swing.
GroupLayout.Alignment.LEADING)

519

520

.addGroup(statusPanelLayout.createSequentialGroup()
.addComponent(statusPanelSeparator, javax.swing.
GroupLayout.PREFERRED_SIZE, 2, javax.swing.
GroupLayout.PREFERRED_SIZE)

521

.addPreferredGap(javax.swing.LayoutStyle.
ComponentPlacement.RELATED)

522

.addGroup(statusPanelLayout.createParallelGroup(
javax.swing.GroupLayout.Alignment.TRAILING)

Jos Enrique Cabaas Ceballos

89

B.5. CDIGO DE DE LA INTERFACE GRFICA

.addGroup(statusPanelLayout.

523

createSequentialGroup()
.addGroup(statusPanelLayout.

524

createParallelGroup(javax.swing.
GroupLayout.Alignment.BASELINE)
525

.addComponent(statusMessageLabel)

526

.addComponent(statusAnimationLabel)

527

.addComponent(progressBar, javax.swing.
GroupLayout.PREFERRED_SIZE, javax.
swing.GroupLayout.DEFAULT_SIZE, javax
.swing.GroupLayout.PREFERRED_SIZE))
.addGap(3, 3, 3))

528

.addComponent(jLabel3, javax.swing.GroupLayout.

529

DEFAULT_SIZE, 17, Short.MAX_VALUE)))


530

);

531

532

jPanel1.setName("jPanel1"); // NOI18N

533

534

javax.swing.GroupLayout jPanel1Layout = new javax.swing.


GroupLayout(jPanel1);

535

jPanel1.setLayout(jPanel1Layout);

536

jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.

537

GroupLayout.Alignment.LEADING)
.addGap(0, 100, Short.MAX_VALUE)

538

539

);

540

jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.

541

GroupLayout.Alignment.LEADING)
.addGap(0, 100, Short.MAX_VALUE)

542

543

);

544

Jos Enrique Cabaas Ceballos

90

B.5. CDIGO DE DE LA INTERFACE GRFICA

jLabel11.setText(resourceMap.getString("jLabel11.text")); //

545

NOI18N
jLabel11.setName("jLabel11"); // NOI18N

546

547

jTextField10.setText(resourceMap.getString("jTextField10.

548

text")); // NOI18N
jTextField10.setName("jTextField10"); // NOI18N

549

550

551

setComponent(mainPanel);

552

setMenuBar(menuBar);

553

setStatusBar(statusPanel);

554

}// </editor-fold>

555

/** Este mtodo recoge los datos y gestiona las operaciones

556

* llamando a los metodos necesarios para calcular el factor de


friccion

557

*/

558

559

private void jButton1ActionPerformed(java.awt.event.ActionEvent


evt) {

560

// TODO add your handling code here:

561

double D,e,vis,vel,Re,q,vel1,vel2,Re1,Re2,D1,D2,Den;

562

D=0;

563

e=0;

564

Re=0;

565

vel=0;

566

vis=0;

567

q=0;

568

if(jCheckBox1.isSelected())

569

{
Den =

570

Double.parseDouble(jTextField1.getText());

571

572

if(jCheckBox2.isSelected())

Jos Enrique Cabaas Ceballos

91

B.5. CDIGO DE DE LA INTERFACE GRFICA

573

574

vis =

Double.parseDouble(jTextField2.getText());

575

if(jCheckBox3.isSelected())

576

577

D =

Double.parseDouble(jTextField3.getText());

578

if(jCheckBox4.isSelected())

579

580

e =

Double.parseDouble(jTextField4.getText());

581

if(jCheckBox5.isSelected())

582

{
q =

583

Double.parseDouble(jTextField5.getText
());

584

if (jCheckBox6.isSelected())

585

{
Re = Double.parseDouble(jTextField6.

586

getText());
587

if (jCheckBox7.isSelected())

588

{
vel = Double.parseDouble(jTextField7

589

.getText());
590

vel1=calculos.getVelocidad(q,D);

591

vel2=calculos.getVel(Re,D,vis);

592

if(vel1!=vel2)

593

{
jLabel7.setText("problemas de

594

compatibilidad!!! necesario
desmarcar alguna variable");
}

595

596

597

else

598

{
vel1=calculos.getVelocidad(q,D);

599

Jos Enrique Cabaas Ceballos

92

B.5. CDIGO DE DE LA INTERFACE GRFICA

600

vel2=calculos.getVel(Re,D,vis);

601

if(vel1!=vel2)

602

{
jLabel7.setText("sistema

603

incompatible desmarca alguna


variable");
604

jTextField7.setText(""+vel1);

605

vel = Double.parseDouble(
jTextField7.getText());
}

606

607

608

609

else

610

611

if (jCheckBox7.isSelected())

612

{
vel = Double.parseDouble(jTextField7

613

.getText());
vel1 = Double.parseDouble(

614

jTextField7.getText());
vel2=calculos.getVelocidad(q,D);

615

if(vel1!=vel2)

616

617

jLabel7.setText("sistema

618

incompatible desmarca alguna


variable");
jTextField7.setText(""+vel1);

619

620

621

622

Re=calculos.getReynolds(D, vel, vis)


;
jTextField6.setText(""+Re);

623

Jos Enrique Cabaas Ceballos

93

B.5. CDIGO DE DE LA INTERFACE GRFICA

624

625

else

626

627

vel=calculos.getVelocidad(q,D);

628

jTextField7.setText(""+vel);

629

Re=calculos.getReynolds(D, vel, vis)


;
jTextField6.setText(""+Re);

630

631

632

633

634

else

635

636

if (jCheckBox6.isSelected())

637

{
Re = Double.parseDouble(jTextField6.

638

getText());
639

if (jCheckBox7.isSelected())

640

{
vel = Double.parseDouble(jTextField7

641

.getText());
Re1=calculos.getReynolds(D, vel, vis

642

);
643

if(Re!=Re1)

644

{
jLabel7.setText("problemas de

645

compatibilidad desmarca
alguna variable");
646

647

q=calculos.getCaudal(D, vel);

648

jTextField5.setText(""+q);
}

649

Jos Enrique Cabaas Ceballos

94

B.5. CDIGO DE DE LA INTERFACE GRFICA

650

else

651

652

vel=calculos.getVel(Re,D,vis);

653

jTextField7.setText(""+vel);

654

q=calculos.getCaudal(D,vel);

655

jTextField5.setText(""+q);
}

656

657

658

else

659

660

if (jCheckBox7.isSelected())

661

{
vel = Double.parseDouble(jTextField7

662

.getText());
663

q=calculos.getCaudal(D, vel);

664

jTextField5.setText(""+q);

665

Re=calculos.getReynolds(D, vel, vis)


;
jTextField6.setText(""+Re);

666

667

668

else

669

670

jLabel7.setText("datos insuficientes

671

");
}

672

673

674

675

676

else

677

678

if(jCheckBox5.isSelected())

Jos Enrique Cabaas Ceballos

95

B.5. CDIGO DE DE LA INTERFACE GRFICA

679

680

q =

Double.parseDouble(jTextField5.getText
());

681

if (jCheckBox6.isSelected())

682

{
Re = Double.parseDouble(jTextField6.

683

getText());
684

if (jCheckBox7.isSelected())

685

{
vel = Double.parseDouble(jTextField7

686

.getText());
jLabel7.setText("necesario dato

687

rugosidad");
688

689

else

690

{
jLabel7.setText("necesario dato

691

rugosidad");
}

692

693

694

else

695

696

if (jCheckBox7.isSelected())

697

{
vel = Double.parseDouble(jTextField7

698

.getText());
jLabel7.setText("necesario dato

699

rugosidad");
700

701

else

702

{
jLabel7.setText("necesario dato

703

Jos Enrique Cabaas Ceballos

96

B.5. CDIGO DE DE LA INTERFACE GRFICA

rugosidad");
}

704

705

706

707

else

708

709

if (jCheckBox6.isSelected())

710

{
Re = Double.parseDouble(jTextField6.

711

getText());
712

if (jCheckBox7.isSelected())

713

{
vel = Double.parseDouble(jTextField7

714

.getText());
jLabel7.setText("necesario dato

715

rugosidad");
716

717

else

718

{
jLabel7.setText("necesario dato

719

rugosidad");
}

720

721

722

else

723

724

if (jCheckBox7.isSelected())

725

{
vel = Double.parseDouble(jTextField7

726

.getText());
jLabel7.setText("necesario dato

727

rugosidad");
}

728

Jos Enrique Cabaas Ceballos

97

B.5. CDIGO DE DE LA INTERFACE GRFICA

729

else

730

{
jLabel7.setText("necesario dato

731

rugosidad");
}

732

733

734

735

736

737

else

738

739

if(jCheckBox4.isSelected())

740

741

e =

Double.parseDouble(jTextField4.getText());

742

if(jCheckBox5.isSelected())

743

{
q =

744

Double.parseDouble(jTextField5.getText
());

745

if (jCheckBox6.isSelected())

746

{
Re = Double.parseDouble(jTextField6.

747

getText());
748

if (jCheckBox7.isSelected())

749

{
vel = Double.parseDouble(jTextField7

750

.getText());
751

D1=calculos.getD(Re, vis, vel);

752

D2=calculos.getD(q, vel);

753

if(D1!=D2){
jLabel7.setText("problemas de

754

compatibilidad!!! desmarca
alguna variable");

Jos Enrique Cabaas Ceballos

98

B.5. CDIGO DE DE LA INTERFACE GRFICA

755

756

D=D2;

757

jTextField3.setText(""+D);

758

759

760

else

761

762

D=calculos.getD1(Re, vis, q);

763

jTextField3.setText(""+D);

764

vel=calculos.getVelocidad(q, D);

765

jTextField7.setText(""+vel);
}

766

767

768

else

769

770

if (jCheckBox7.isSelected())

771

{
vel = Double.parseDouble(jTextField7

772

.getText());
773

D=calculos.getD(q, vel);

774

jTextField3.setText(""+D);

775

Re=calculos.getReynolds(D,vel,vis);

776

jTextField6.setText(""+Re);

777

778

else

779

{
jLabel7.setText("datos insuficientes

780

");
}

781

782

783

784

else

Jos Enrique Cabaas Ceballos

99

B.5. CDIGO DE DE LA INTERFACE GRFICA

785

786

if (jCheckBox6.isSelected())

787

{
Re = Double.parseDouble(jTextField6.

788

getText());
789

if (jCheckBox7.isSelected())

790

{
vel = Double.parseDouble(jTextField7

791

.getText());
792

D=calculos.getD(Re,vel,vis);

793

jTextField3.setText(""+D);

794

q=calculos.getCaudal(D, vel);

795

jTextField5.setText(""+q);

796

797

else

798

{
jLabel7.setText("datos insuficientes

799

");
}

800

801

802

else

803

804

if (jCheckBox7.isSelected())

805

{
vel = Double.parseDouble(jTextField7

806

.getText());
jLabel7.setText("datos insuficientes

807

");
808

809

else

810

{
jLabel7.setText("datos insuficientes

811

Jos Enrique Cabaas Ceballos

100

B.5. CDIGO DE DE LA INTERFACE GRFICA

");
}

812

813

814

815

816

else

817

818

if(jCheckBox5.isSelected())

819

820

q =

Double.parseDouble(jTextField5.getText
());

821

if (jCheckBox6.isSelected())

822

{
Re = Double.parseDouble(jTextField6.

823

getText());
824

if (jCheckBox7.isSelected())

825

{
vel = Double.parseDouble(jTextField7

826

.getText());
jLabel7.setText("necesario dato

827

rugosidad");
828

829

else

830

{
jLabel7.setText("necesario dato

831

rugosidad");
}

832

833

834

else

835

836

if (jCheckBox7.isSelected())

837

Jos Enrique Cabaas Ceballos

101

B.5. CDIGO DE DE LA INTERFACE GRFICA

vel = Double.parseDouble(jTextField7

838

.getText());
jLabel7.setText("necesario dato

839

rugosidad");
840

841

else

842

{
jLabel7.setText("necesario dato

843

rugosidad");
}

844

845

846

847

else

848

849

if (jCheckBox6.isSelected())

850

{
Re = Double.parseDouble(jTextField6.

851

getText());
852

if (jCheckBox7.isSelected())

853

{
vel = Double.parseDouble(jTextField7

854

.getText());
jLabel7.setText("necesario dato

855

rugosidad");
856

857

else

858

{
jLabel7.setText("necesario dato

859

rugosidad");
}

860

861

862

else

Jos Enrique Cabaas Ceballos

102

B.5. CDIGO DE DE LA INTERFACE GRFICA

863

864

if (jCheckBox7.isSelected())

865

{
vel = Double.parseDouble(jTextField7

866

.getText());
jLabel7.setText("necesario dato

867

rugosidad");
868

869

else

870

{
jLabel7.setText("necesario dato

871

rugosidad");
}

872

873

874

875

876

877

878

else

879

880

881

if(jCheckBox3.isSelected())
{

882

D =

Double.parseDouble(jTextField3.getText());

883

if(jCheckBox4.isSelected())

884

885

e =

Double.parseDouble(jTextField4.getText());

886

if(jCheckBox5.isSelected())

887

{
q =

888

Double.parseDouble(jTextField5.getText
());

889

if (jCheckBox6.isSelected())

890

Jos Enrique Cabaas Ceballos

103

B.5. CDIGO DE DE LA INTERFACE GRFICA

Re = Double.parseDouble(jTextField6.

891

getText());
892

if (jCheckBox7.isSelected())

893

{
vel = Double.parseDouble(jTextField7

894

.getText());
895

vel1=calculos.getVelocidad(q, D);

896

if(vel!=vel1){
jLabel7.setText("problemas de

897

compatibilidad!!! desmarca
alguna variable");
898

899

vis=calculos.getViscosidad(Re,D,vel)
;
jTextField2.setText(""+vis);

900

901

902

else

903

904

vel=calculos.getVelocidad(q, D);

905

jTextField7.setText(""+vel);

906

vis=calculos.getViscosidad(Re, D,
vel);
jTextField2.setText(""+vis);

907

908

909

910

911

else

912

913

if (jCheckBox7.isSelected())

914

{
vel = Double.parseDouble(jTextField7

915

.getText());

Jos Enrique Cabaas Ceballos

104

B.5. CDIGO DE DE LA INTERFACE GRFICA

jLabel7.setText("datos infuficientes

916

");
917

918

else

919

{
jLabel7.setText("datos insuficientes"

920

);
}

921

922

923

924

else

925

926

if (jCheckBox6.isSelected())

927

{
Re = Double.parseDouble(jTextField6.

928

getText());
929

if (jCheckBox7.isSelected())

930

{
vel = Double.parseDouble(jTextField7

931

.getText());
932

q=calculos.getCaudal(D, vel);

933

jTextField5.setText(""+q);

934

vis=calculos.getViscosidad(Re, D,
vel);
jTextField2.setText(""+vis);

935

936

937

else

938

{
jLabel7.setText("datos insuficientes

939

");
}

940

941

Jos Enrique Cabaas Ceballos

105

B.5. CDIGO DE DE LA INTERFACE GRFICA

942

else

943

944

if (jCheckBox7.isSelected())

945

{
vel = Double.parseDouble(jTextField7

946

.getText());
jLabel7.setText("datos insuficientes

947

");
948

949

else

950

{
jLabel7.setText("datos insuficientes

951

");
}

952

953

954

955

956

else

957

958

if(jCheckBox5.isSelected())

959

960

q =

Double.parseDouble(jTextField5.getText
());

961

if (jCheckBox6.isSelected())

962

{
Re = Double.parseDouble(jTextField6.

963

getText());
964

if (jCheckBox7.isSelected())

965

{
vel = Double.parseDouble(jTextField7

966

.getText());
jLabel7.setText("necesario dato

967

Jos Enrique Cabaas Ceballos

106

B.5. CDIGO DE DE LA INTERFACE GRFICA

rugosidad");
968

969

else

970

{
jLabel7.setText("necesario dato

971

rugosidad");
}

972

973

974

else

975

976

if (jCheckBox7.isSelected())

977

{
vel = Double.parseDouble(jTextField7

978

.getText());
jLabel7.setText("necesario dato

979

rugosidad");
980

981

else

982

{
jLabel7.setText("necesario dato

983

rugosidad");
}

984

985

986

987

else

988

989

if (jCheckBox6.isSelected())

990

{
Re = Double.parseDouble(jTextField6.

991

getText());
992

if (jCheckBox7.isSelected())

993

Jos Enrique Cabaas Ceballos

107

B.5. CDIGO DE DE LA INTERFACE GRFICA

vel = Double.parseDouble(jTextField7

994

.getText());
jLabel7.setText("necesario dato

995

rugosidad");
996

997

else

998

{
jLabel7.setText("necesario dato

999

rugosidad");
}

1000

1001

1002

else

1003

1004

if (jCheckBox7.isSelected())

1005

{
vel = Double.parseDouble(jTextField7

1006

.getText());
jLabel7.setText("necesario dato

1007

rugosidad");
1008

1009

else

1010

{
jLabel7.setText("necesario dato

1011

rugosidad");
}

1012

1013

1014

1015

1016

1017

else

1018

1019

if(jCheckBox4.isSelected())

Jos Enrique Cabaas Ceballos

108

B.5. CDIGO DE DE LA INTERFACE GRFICA

1020

1021

e =

Double.parseDouble(jTextField4.getText());

1022

if(jCheckBox5.isSelected())

1023

{
q =

1024

Double.parseDouble(jTextField5.getText
());

1025

if (jCheckBox6.isSelected())

1026

{
Re = Double.parseDouble(jTextField6.

1027

getText());
1028

if (jCheckBox7.isSelected())

1029

{
vel = Double.parseDouble(jTextField7

1030

.getText());
1031

D=calculos.getD(q, vel);

1032

jTextField3.setText(""+D);

1033

vis=calculos.getViscosidad(Re, D,
vel);
jTextField2.setText(""+vis);

1034

1035

1036

else

1037

{
jLabel7.setText("datos insuficientes

1038

");
}

1039

1040

1041

else

1042

1043

if (jCheckBox7.isSelected())

1044

{
vel = Double.parseDouble(jTextField7

1045

.getText());

Jos Enrique Cabaas Ceballos

109

B.5. CDIGO DE DE LA INTERFACE GRFICA

jLabel7.setText("datos insuficientes

1046

");
1047

1048

else

1049

{
jLabel7.setText("datos insuficientes

1050

");
}

1051

1052

1053

1054

else

1055

1056

if (jCheckBox6.isSelected())

1057

{
Re = Double.parseDouble(jTextField6.

1058

getText());
1059

if (jCheckBox7.isSelected())

1060

{
vel = Double.parseDouble(jTextField7

1061

.getText());
jLabel7.setText("datos insuficientes

1062

");
1063

1064

else

1065

{
jLabel7.setText("datos insuficientes

1066

");
}

1067

1068

1069

else

1070

{
if (jCheckBox7.isSelected())

1071

Jos Enrique Cabaas Ceballos

110

B.5. CDIGO DE DE LA INTERFACE GRFICA

1072

vel = Double.parseDouble(jTextField7

1073

.getText());
jLabel7.setText("datos insuficientes

1074

");
1075

1076

else

1077

{
jLabel7.setText("datos insuficientes

1078

");
}

1079

1080

1081

1082

1083

else

1084

1085

if(jCheckBox5.isSelected())

1086

1087

q =

Double.parseDouble(jTextField5.getText
());

1088

if (jCheckBox6.isSelected())

1089

{
Re = Double.parseDouble(jTextField6.

1090

getText());
1091

if (jCheckBox7.isSelected())

1092

{
vel = Double.parseDouble(jTextField7

1093

.getText());
jLabel7.setText("necesario dato

1094

rugosidad");
1095

1096

else

Jos Enrique Cabaas Ceballos

111

B.5. CDIGO DE DE LA INTERFACE GRFICA

1097

jLabel7.setText("necesario dato

1098

rugosidad");
}

1099

1100

1101

else

1102

1103

if (jCheckBox7.isSelected())

1104

{
vel = Double.parseDouble(jTextField7

1105

.getText());
jLabel7.setText("necesario dato

1106

rugosidad");
1107

1108

else

1109

{
jLabel7.setText("necesario dato

1110

rugosidad");
}

1111

1112

1113

1114

else

1115

1116

if (jCheckBox6.isSelected())

1117

{
Re = Double.parseDouble(jTextField6.

1118

getText());
1119

if (jCheckBox7.isSelected())

1120

{
vel = Double.parseDouble(jTextField7

1121

.getText());
jLabel7.setText("necesario dato

1122

Jos Enrique Cabaas Ceballos

112

B.5. CDIGO DE DE LA INTERFACE GRFICA

rugosidad");
1123

1124

else

1125

{
jLabel7.setText("necesario dato

1126

rugosidad");
}

1127

1128

1129

else

1130

1131

if (jCheckBox7.isSelected())

1132

{
vel = Double.parseDouble(jTextField7

1133

.getText());
jLabel7.setText("necesario dato

1134

rugosidad");
1135

1136

else

1137

{
jLabel7.setText("necesario dato

1138

rugosidad");
}

1139

1140

1141

1142

1143

1144

1145

}
if(D!=0&&e!=0&&vel!=0&&q!=0&&Re!=0&&vis!=0){

1146

double f=calculos.getFactor(Re, D, e);//colebrook

1147

double s=calculos.getFactor1(Re, D, e);//explicita

1148

//double g=Fluido.getFactor2(Re, D, e);//explicita arabe

1149

double k=calculos.getFactor3(Re);//prandtl

Jos Enrique Cabaas Ceballos

113

B.5. CDIGO DE DE LA INTERFACE GRFICA

1150

double h=calculos.getFactor4(D,e,Re);//Karman-Nikuradse

1151

double m=calculos.getMedia(f,s,k,Re,D);//Media de los


factores de friccin

1152

double PC=calculos.getPC(D, vel, m);

1153

jTextField14.setText(""+formateador.format(PC));

1154

jTextField8.setText(""+formateador.format(f));

1155

jTextField9.setText(""+formateador.format(s));

1156

jTextField11.setText(""+formateador.format(k));

1157

jTextField12.setText(""+formateador.format(h));

1158

jTextField13.setText(""+formateador.format(m));

1159

jLabel7.setText("PARMETROS CALCULADOS CORRECTAMENTE");


}

1160

1161

1162

1163

private void jComboBox1ActionPerformed(java.awt.event.


ActionEvent evt) {

1164

// TODO add your handling code here:

1165

int i = jComboBox1.getSelectedIndex();

1166

try {

1167

jTextField1.setText(Den[i]);

1168

jTextField2.setText(Vis[i]);

1169

1170

catch(ArrayIndexOutOfBoundsException e) {
jLabel7.setText("Dicho fluido no existe");

1171

1172

1173

1174

1175

private void jCheckBox1ActionPerformed(java.awt.event.


ActionEvent evt) {

1176

// TODO add your handling code here:

1177

jTextField1.setEnabled(jCheckBox1.isSelected());

1178

Jos Enrique Cabaas Ceballos

114

B.5. CDIGO DE DE LA INTERFACE GRFICA

1179

1180

private void jCheckBox2ActionPerformed(java.awt.event.


ActionEvent evt) {

1181

// TODO add your handling code here:

1182

jTextField2.setEnabled(jCheckBox2.isSelected());

1183

1184

1185

private void jCheckBox3ActionPerformed(java.awt.event.


ActionEvent evt) {

1186

// TODO add your handling code here:

1187

jTextField3.setEnabled(jCheckBox3.isSelected());

1188

1189

1190

private void jCheckBox4ActionPerformed(java.awt.event.


ActionEvent evt) {

1191

// TODO add your handling code here:

1192

jTextField4.setEnabled(jCheckBox4.isSelected());

1193

1194

1195

private void jCheckBox5ActionPerformed(java.awt.event.


ActionEvent evt) {

1196

// TODO add your handling code here:

1197

jTextField5.setEnabled(jCheckBox5.isSelected());

1198

1199

1200

private void jCheckBox6ActionPerformed(java.awt.event.


ActionEvent evt) {

1201

// TODO add your handling code here:

1202

jTextField6.setEnabled(jCheckBox6.isSelected());

1203

1204

1205

private void jComboBox2ActionPerformed(java.awt.event.

Jos Enrique Cabaas Ceballos

115

B.5. CDIGO DE DE LA INTERFACE GRFICA

ActionEvent evt) {
1206

// TODO add your handling code here:

1207

int i = jComboBox2.getSelectedIndex();

1208

try {
jTextField4.setText(Rug[i]);

1209

1210

catch(ArrayIndexOutOfBoundsException e) {

1211

jLabel7.setText("Dicho material no existe");

1212

1213

1214

1215

1216

private void jCheckBox7ActionPerformed(java.awt.event.


ActionEvent evt) {

1217

// TODO add your handling code hre:

1218

jTextField7.setEnabled(jCheckBox7.isSelected());

1219

1220

1221

// Variables declaration - do not modify

1222

private javax.swing.JButton jButton1;

1223

private javax.swing.JCheckBox jCheckBox1;

1224

private javax.swing.JCheckBox jCheckBox2;

1225

private javax.swing.JCheckBox jCheckBox3;

1226

private javax.swing.JCheckBox jCheckBox4;

1227

private javax.swing.JCheckBox jCheckBox5;

1228

private javax.swing.JCheckBox jCheckBox6;

1229

private javax.swing.JCheckBox jCheckBox7;

1230

private javax.swing.JComboBox jComboBox1;

1231

private javax.swing.JComboBox jComboBox2;

1232

private javax.swing.JLabel jLabel1;

1233

private javax.swing.JLabel jLabel10;

1234

private javax.swing.JLabel jLabel11;

1235

private javax.swing.JLabel jLabel12;

Jos Enrique Cabaas Ceballos

116

B.5. CDIGO DE DE LA INTERFACE GRFICA

1236

private javax.swing.JLabel jLabel2;

1237

private javax.swing.JLabel jLabel3;

1238

private javax.swing.JLabel jLabel4;

1239

private javax.swing.JLabel jLabel5;

1240

private javax.swing.JLabel jLabel6;

1241

private javax.swing.JLabel jLabel7;

1242

private javax.swing.JLabel jLabel8;

1243

private javax.swing.JLabel jLabel9;

1244

private javax.swing.JPanel jPanel1;

1245

private javax.swing.JTextField jTextField1;

1246

private javax.swing.JTextField jTextField10;

1247

private javax.swing.JTextField jTextField11;

1248

private javax.swing.JTextField jTextField12;

1249

private javax.swing.JTextField jTextField13;

1250

private javax.swing.JTextField jTextField14;

1251

private javax.swing.JTextField jTextField2;

1252

private javax.swing.JTextField jTextField3;

1253

private javax.swing.JTextField jTextField4;

1254

private javax.swing.JTextField jTextField5;

1255

private javax.swing.JTextField jTextField6;

1256

private javax.swing.JTextField jTextField7;

1257

private javax.swing.JTextField jTextField8;

1258

private javax.swing.JTextField jTextField9;

1259

private javax.swing.JPanel mainPanel;

1260

private javax.swing.JMenuBar menuBar;

1261

private javax.swing.JProgressBar progressBar;

1262

private javax.swing.JLabel statusAnimationLabel;

1263

private javax.swing.JLabel statusMessageLabel;

1264

private javax.swing.JPanel statusPanel;

1265

// End of variables declaration

1266

private final Timer messageTimer;

1267

private final Timer busyIconTimer;

Jos Enrique Cabaas Ceballos

117

B.6. FACTOR_FRICCIONAPP.JAVA

1268

private final Icon idleIcon;

1269

private final Icon[] busyIcons = new Icon[15];

1270

private int busyIconIndex = 0;

1271

private JDialog aboutBox;

1272

B.6.
1

Factor_friccionApp.java

/*

* Factor_friccionApp.java

*/

package factor_friccion;

import org.jdesktop.application.Application;

import org.jdesktop.application.SingleFrameApplication;

10

/**

11

* The main class of the application.

12

*/

13

public class Factor_friccionApp extends SingleFrameApplication {

14

15

/**

16

* At startup create and show the main frame of the application.

17

*/

18

@Override protected void startup() {


show(new Factor_friccionView(this));

19

20

21

22

/**

Jos Enrique Cabaas Ceballos

118

B.7. FACTOR_FRICCIONABOUTBOX.JAVA

* This method is to initialize the specified window by

23

injecting resources.
* Windows shown in our application come fully initialized from

24

the GUI
25

* builder, so this additional configuration is not needed.

26

*/

27

@Override protected void configureWindow(java.awt.Window root) {

28

29

/**

30

31

* A convenient static getter for the application instance.

32

* @return the instance of Factor_friccionApp

33

*/
public static Factor_friccionApp getApplication() {

34

return Application.getInstance(Factor_friccionApp.class);

35

36

37

/**

38

39

* Main method launching the application.

40

*/
public static void main(String[] args) {

41

launch(Factor_friccionApp.class, args);

42

43

44

B.7.
1

Factor_friccionAboutBox.java

/*

* Factor_friccionAboutBox.java

*/

Jos Enrique Cabaas Ceballos

119

B.7. FACTOR_FRICCIONABOUTBOX.JAVA

package factor_friccion;

import org.jdesktop.application.Action;

public class Factor_friccionAboutBox extends javax.swing.JDialog {

10

11

public Factor_friccionAboutBox(java.awt.Frame parent) {

12

super(parent);

13

initComponents();

14

getRootPane().setDefaultButton(closeButton);

15

16

17

@Action public void closeAboutBox() {


dispose();

18

19

20

21

/** This method is called from within the constructor to

22

* initialize the form.

23

* WARNING: Do NOT modify this code. The content of this method


is

24

* always regenerated by the Form Editor.

25

*/

26

// <editor-fold defaultstate="collapsed" desc="Generated Code">

27

private void initComponents() {

28

29

closeButton = new javax.swing.JButton();

30

javax.swing.JLabel appTitleLabel = new javax.swing.JLabel();

31

javax.swing.JLabel versionLabel = new javax.swing.JLabel();

32

javax.swing.JLabel appVersionLabel = new javax.swing.JLabel


();

33

javax.swing.JLabel vendorLabel = new javax.swing.JLabel();

Jos Enrique Cabaas Ceballos

120

B.7. FACTOR_FRICCIONABOUTBOX.JAVA

34

javax.swing.JLabel appVendorLabel = new javax.swing.JLabel()


;

35

javax.swing.JLabel appDescLabel = new javax.swing.JLabel();

36

javax.swing.JLabel imageLabel = new javax.swing.JLabel();

37

javax.swing.JLabel vendorLabel1 = new javax.swing.JLabel();

38

javax.swing.JLabel appVendorLabel1 = new javax.swing.JLabel


();

39

40

setDefaultCloseOperation(javax.swing.WindowConstants.
DISPOSE_ON_CLOSE);

41

setTitle("CALCULAR FACTOR DE FRICCIN Y PRDIDA DE CARGA");

42

setModal(true);

43

setName("aboutBox"); // NOI18N

44

setResizable(false);

45

46

javax.swing.ActionMap actionMap = org.jdesktop.application.


Application.getInstance(factor_friccion.
Factor_friccionApp.class).getContext().getActionMap(
Factor_friccionAboutBox.class, this);

47

closeButton.setAction(actionMap.get("closeAboutBox")); //
NOI18N

48

closeButton.setName("closeButton"); // NOI18N

49

50

appTitleLabel.setFont(appTitleLabel.getFont().deriveFont(
appTitleLabel.getFont().getStyle() | java.awt.Font.BOLD,
appTitleLabel.getFont().getSize()+4));

51

appTitleLabel.setText("CALCULAR FACTOR DE FRICCIN EN


TUBERAS");

52

appTitleLabel.setName("appTitleLabel"); // NOI18N

53

54

versionLabel.setFont(versionLabel.getFont().deriveFont(
versionLabel.getFont().getStyle() | java.awt.Font.BOLD));

Jos Enrique Cabaas Ceballos

121

B.7. FACTOR_FRICCIONABOUTBOX.JAVA

55

org.jdesktop.application.ResourceMap resourceMap = org.


jdesktop.application.Application.getInstance(
factor_friccion.Factor_friccionApp.class).getContext().
getResourceMap(Factor_friccionAboutBox.class);

56

versionLabel.setText(resourceMap.getString("versionLabel.
text")); // NOI18N

57

versionLabel.setName("versionLabel"); // NOI18N

58

59

appVersionLabel.setText(" 1.1 ");

60

appVersionLabel.setName("appVersionLabel"); // NOI18N

61

62

vendorLabel.setFont(vendorLabel.getFont().deriveFont(
vendorLabel.getFont().getStyle() | java.awt.Font.BOLD));

63

vendorLabel.setText("Autor");

64

vendorLabel.setName("vendorLabel"); // NOI18N

65

66

appVendorLabel.setText("Jos Enrique Cabaas Ceballos");

67

appVendorLabel.setName("appVendorLabel"); // NOI18N

68

69

appDescLabel.setText("A simple Java desktop application


based on Swing Application Framework.");

70

appDescLabel.setName("appDescLabel"); // NOI18N

71

72

imageLabel.setIcon(resourceMap.getIcon("imageLabel.icon"));
// NOI18N

73

imageLabel.setName("imageLabel"); // NOI18N

74

75

vendorLabel1.setFont(vendorLabel1.getFont().deriveFont(
vendorLabel1.getFont().getStyle() | java.awt.Font.BOLD));

76

vendorLabel1.setText("Fecha ltima modidicacin");

77

vendorLabel1.setName("vendorLabel1"); // NOI18N

78

Jos Enrique Cabaas Ceballos

122

B.7. FACTOR_FRICCIONABOUTBOX.JAVA

79

appVendorLabel1.setText("08/03/2010");

80

appVendorLabel1.setName("appVendorLabel1"); // NOI18N

81

82

javax.swing.GroupLayout layout = new javax.swing.GroupLayout


(getContentPane());

83

getContentPane().setLayout(layout);

84

layout.setHorizontalGroup(

85

layout.createParallelGroup(javax.swing.GroupLayout.
Alignment.LEADING)

86

.addGroup(layout.createSequentialGroup()

87

.addComponent(imageLabel)

88

.addGap(18, 18, 18)

89

.addGroup(layout.createParallelGroup(javax.swing.
GroupLayout.Alignment.LEADING)

90

.addComponent(appTitleLabel)

91

.addComponent(appDescLabel, javax.swing.
GroupLayout.DEFAULT_SIZE, 280, Short.
MAX_VALUE)

92

.addComponent(closeButton, javax.swing.
GroupLayout.Alignment.TRAILING)

93

.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.

94

swing.GroupLayout.Alignment.LEADING)
95

.addComponent(versionLabel)

96

.addComponent(vendorLabel)

97

.addComponent(vendorLabel1))
.addPreferredGap(javax.swing.LayoutStyle.

98

ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.

99

swing.GroupLayout.Alignment.LEADING)
100

.addComponent(appVendorLabel1)

101

.addComponent(appVersionLabel)

Jos Enrique Cabaas Ceballos

123

B.7. FACTOR_FRICCIONABOUTBOX.JAVA

.addComponent(appVendorLabel))

102

.addGap(110, 110, 110)))

103

.addContainerGap())

104

105

);

106

layout.setVerticalGroup(

107

layout.createParallelGroup(javax.swing.GroupLayout.
Alignment.LEADING)

108

.addComponent(imageLabel, javax.swing.GroupLayout.
PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)

109

.addGroup(layout.createSequentialGroup()

110

.addContainerGap()

111

.addComponent(appTitleLabel)

112

.addPreferredGap(javax.swing.LayoutStyle.
ComponentPlacement.RELATED)

113

.addComponent(appDescLabel)

114

.addPreferredGap(javax.swing.LayoutStyle.
ComponentPlacement.RELATED)

115

.addGroup(layout.createParallelGroup(javax.swing.
GroupLayout.Alignment.BASELINE)

116

.addComponent(versionLabel)

117

.addComponent(appVersionLabel))

118

.addPreferredGap(javax.swing.LayoutStyle.
ComponentPlacement.RELATED)

119

.addGroup(layout.createParallelGroup(javax.swing.
GroupLayout.Alignment.BASELINE)

120

.addComponent(vendorLabel)

121

.addComponent(appVendorLabel))

122

.addPreferredGap(javax.swing.LayoutStyle.
ComponentPlacement.RELATED)

123

.addGroup(layout.createParallelGroup(javax.swing.
GroupLayout.Alignment.BASELINE)

Jos Enrique Cabaas Ceballos

124

B.7. FACTOR_FRICCIONABOUTBOX.JAVA

124

.addComponent(vendorLabel1)

125

.addComponent(appVendorLabel1))
.addPreferredGap(javax.swing.LayoutStyle.

126

ComponentPlacement.RELATED, 33, Short.MAX_VALUE)


127

.addComponent(closeButton)

128

.addContainerGap())
);

129

130

pack();

131

}// </editor-fold>

132

133

134

// Variables declaration - do not modify

135

private javax.swing.JButton closeButton;

136

// End of variables declaration

137

138

Jos Enrique Cabaas Ceballos

125

ANEXO C. CLCULOS MEDIANTE MATLAB

Anexo C

CLCULOS MEDIANTE MATLAB

En este apndice se exponen los programas de Matlab utilizados para la modelizacin de


las ecuaciones, representacion grfica y clculo de los parmetros del flujo:

C.1.
1

Tratamiento de los datos experimentales.

%declaracion de constantes:

diametro=13.6e-3; %metros

volumen=15; %litros

longitud=0.915; %metros

viscosidad=1e-6; %m^2/s

area=3.1415926*(diametro/2)^2; %m^2

areamm=3.1415926*(diametro*1000/2)^2; %mm^2

10

%definicion de los vectores de los tiempos medidos, y caidas de


presion y caudal

11

%calculo de la media y el error cometido(error cuadratico medio,


desviacion tipica):

Jos Enrique Cabaas Ceballos

126

C.1. TRATAMIENTO DE LOS DATOS...

12

13

tiempo1=[49.88, 49.43, 49.08, 49.25, 49.13, 49.7, 49.43, 49.63,


49.55, 49.67, 50.58, 50.13, 50.18, 49.91];

14

tmedio1=sum(tiempo1)/length(tiempo1);

15

caudal1=volumen./tiempo1;

16

cmedio1=sum(caudal1)/length(caudal1);

17

p1a=[525,525,525,525,525,525,525,525,525,525,530,530,530,530];

18

p1b=[140,140,145,145,145,145,145,145,145,145,150,150,150,150];

19

AP1=p1a-p1b;

20

P1=sum(AP1)/length(AP1);

21

for i=1:length(caudal1)
Z1(i)=(caudal1(i)-cmedio1)^2;

22

23

end

24

ecmc1=sqrt(sum(Z1)/length(caudal1));

25

for i=1:length(AP1)
C1(i)=(AP1(i)-P1)^2;

26

27

end

28

emcpc1=sqrt(sum(C1)/length(AP1));

29

epc1=std(AP1);

30

e1=std(tiempo1);

31

32

tiempo2=[53, 52.89, 52.78, 52.95, 53.13];

33

tmedio2=sum(tiempo2)/length(tiempo2);

34

caudal2=volumen./tiempo2;

35

cmedio2=sum(caudal2)/length(caudal2);

36

p2a=[525,525,525,525,530];

37

p2b=[185,185,185,185,185];

38

AP2=p2a-p2b;

39

P2=sum(AP2)/length(AP2);

40

for i=1:length(caudal2)
Z2(i)=(caudal2(i)-cmedio2)^2;

41

42

end

Jos Enrique Cabaas Ceballos

127

C.1. TRATAMIENTO DE LOS DATOS...

43

ecmc2=sqrt(sum(Z2)/length(caudal2));

44

for i=1:length(AP2)
C2(i)=(AP2(i)-P2)^2;

45

46

end

47

emcpc2=sqrt(sum(C2)/length(AP2));

48

epc2=std(AP2);

49

e2=std(tiempo2);

50

51

tiempo3=[57.25, 56.7, 56.98, 57.05, 57.13];

52

tmedio3=sum(tiempo3)/length(tiempo3);

53

caudal3=volumen./tiempo3;

54

cmedio3=sum(caudal3)/length(caudal3);

55

p3a=[520,520,520,520,525];

56

p3b=[220,220,220,220,220];

57

AP3=p3a-p3b;

58

P3=sum(AP3)/length(AP3);

59

for i=1:length(caudal3)
Z3(i)=(caudal3(i)-cmedio3)^2;

60

61

end

62

ecmc3=sqrt(sum(Z3)/length(caudal3));

63

for i=1:length(AP3)
C3(i)=(AP3(i)-P3)^2;

64

65

end

66

emcpc3=sqrt(sum(C3)/length(AP3));

67

epc3=std(AP3);

68

e3=std(tiempo3);

69

70

tiempo4=[67.17, 68.48, 67.36, 68.23, 68.01];

71

tmedio4=sum(tiempo4)/length(tiempo4);

72

caudal4=volumen./tiempo4;

73

cmedio4=sum(caudal4)/length(caudal4);

74

p4a=[510,510,515,510,510];

Jos Enrique Cabaas Ceballos

128

C.1. TRATAMIENTO DE LOS DATOS...

75

p4b=[290,290,290,290,290];

76

AP4=p4a-p4b;

77

P4=sum(AP4)/length(AP4);

78

for i=1:length(caudal4)
Z4(i)=(caudal4(i)-cmedio4)^2;

79

80

end

81

ecmc4=sqrt(sum(Z4)/length(caudal4));

82

for i=1:length(AP4)
C4(i)=(AP4(i)-P4)^2;

83

84

end

85

emcpc4=sqrt(sum(C4)/length(AP4));

86

epc4=std(AP4);

87

e4=std(tiempo4);

88

89

tiempo5=[89.86, 91.28, 91.41, 91.86, 90.53];

90

tmedio5=sum(tiempo5)/length(tiempo5);

91

caudal5=volumen./tiempo5;

92

cmedio5=sum(caudal5)/length(caudal5);

93

p5a=[505,500,500,500,500];

94

p5b=[370,370,370,370,370];

95

AP5=p5a-p5b;

96

P5=sum(AP5)/length(AP5);

97

for i=1:length(caudal5)
Z5(i)=(caudal5(i)-cmedio5)^2;

98

99

end

100

ecmc5=sqrt(sum(Z5)/length(caudal5));

101

for i=1:length(AP5)
C5(i)=(AP5(i)-P5)^2;

102

103

end

104

emcpc5=sqrt(sum(C5)/length(AP5));

105

epc5=std(AP5);

106

e5=std(tiempo5);

Jos Enrique Cabaas Ceballos

129

C.1. TRATAMIENTO DE LOS DATOS...

107

108

tiempo6=[131.84, 130.21, 131.97, 130.59, 130.91];

109

tmedio6=sum(tiempo6)/length(tiempo6);

110

caudal6=volumen./tiempo6;

111

cmedio6=sum(caudal6)/length(caudal6);

112

p6a=[495,495,495,490,490];

113

p6b=[425,425,425,425,425];

114

AP6=p6a-p6b;

115

P6=sum(AP6)/length(AP6);

116

for i=1:length(caudal6)
Z6(i)=(caudal6(i)-cmedio6)^2;

117

118

end

119

ecmc6=sqrt(sum(Z6)/length(caudal6));

120

for i=1:length(AP6)
C6(i)=(AP6(i)-P6)^2;

121

122

end

123

emcpc6=sqrt(sum(C6)/length(AP6));

124

epc6=std(AP6);

125

e6=std(tiempo6);

126

127

tiempo7=[155.96, 154.56, 153.28, 154.92, 153.88];

128

tmedio7=sum(tiempo7)/length(tiempo7);

129

caudal7=volumen./tiempo7;

130

cmedio7=sum(caudal7)/length(caudal7);

131

p7a=[490,490,490,490,495];

132

p7b=[440,440,440,440,440];

133

AP7=p7a-p7b;

134

P7=sum(AP7)/length(AP7);

135

for i=1:length(caudal7)
Z7(i)=(caudal7(i)-cmedio7)^2;

136

137

end

138

ecmc7=sqrt(sum(Z7)/length(caudal7));

Jos Enrique Cabaas Ceballos

130

C.1. TRATAMIENTO DE LOS DATOS...

139

for i=1:length(AP7)
C7(i)=(AP7(i)-P7)^2;

140

141

end

142

emcpc7=sqrt(sum(C7)/length(AP7));

143

epc7=std(AP7);

144

e7=std(tiempo7);

145

146

tiempo8=[167.55, 165.36, 166.45, 165.94, 166.91];

147

tmedio8=sum(tiempo8)/length(tiempo8);

148

caudal8=(volumen./tiempo8);

149

cmedio8=sum(caudal8)/length(caudal8);

150

p8a=[485,485,485,480,485];

151

p8b=[440,440,440,440,440];

152

AP8=p8a-p8b;

153

P8=sum(AP8)/length(AP8);

154

for i=1:length(caudal8)
Z8(i)=(caudal8(i)-cmedio8)^2;

155

156

end

157

ecmc8=sqrt(sum(Z8)/length(caudal8));

158

for i=1:length(AP8)
C8(i)=(AP8(i)-P8)^2;

159

160

end

161

emcpc8=sqrt(sum(C8)/length(AP8));

162

epc8=std(AP8);

163

e8=std(tiempo8);

164

165

166

%creacion de los vectores de los parametros:


ecmpc=[emcpc1,emcpc2,emcpc3,emcpc4,emcpc5,emcpc6,emcpc7,emcpc8]; %
error cuadratico medio perdida de carga

167

ecmc=[ecmc1,ecmc2,ecmc3,ecmc4,ecmc5,ecmc6,ecmc7,ecmc8]; %error
cuadratico medio caudal

168

errort=[e1,e2,e3,e4,e5,e6,e7,e8]; %desviacion tipica caudal

Jos Enrique Cabaas Ceballos

131

C.1. TRATAMIENTO DE LOS DATOS...

169

errorpc=[epc1,epc2,epc3,epc4,epc5,epc6,epc7,epc8]; %desviacion tipica


perdida de carga

170

pc=[P1,P2,P3,P4,P5,P6,P7,P8]; %milimetros

171

PC=0.001.*pc; %metros

172

PCM=1./longitud.*PC; %perdida de carga por metro de longitud


expresada en metros

173

tiempo=[tmedio1,tmedio2,tmedio3,tmedio4,tmedio5,tmedio6,tmedio7,
tmedio8]; %vector de tiempos medios

174

caudal=[cmedio1,cmedio2,cmedio3,cmedio4,cmedio5,cmedio6,cmedio7,
cmedio8]; %litros/s

175

caudalm3=0.001.*caudal; %m^3/s

176

velocidad=(1/area).*caudalm3; %m/s

177

Re=(diametro/viscosidad).*velocidad;

178

flam=64./Re;

179

180

% Aplicando el modelo de Darcy-Weisbach (1875):

181

cte=(2*9.81*diametro/longitud);

182

for i=1:8
f(i)=PC(i)*cte/(velocidad(i)^2);

183

184

end

185

f;

186

187

% Para el calculo de la rugosidad aplicaremos el modelo de colebrook

188

for i=1:8

189

r(i)=3.71*diametro*(10^(-1/(2*sqrt(f(i))))-2.51/(Re(i)*sqrt(f(i))));
%rugosidad absoluta en metros

190

rr(i)=r(i)/diametro; %rugosidad relativa

191

end

192

r;

193

rr;

Jos Enrique Cabaas Ceballos

132

C.2. REPRESENTACIN GRFICA DE LA...

C.2.

Representacin grfica de la dependencia de las variables respecto al nmero de Reynolds.

%VARIABLES

Re1=[100:100:10000];

Re2=[10000:1000:10e8];

Re=[Re1 Re2];

f=[0:0.001:1];

e1=0.0000001;

e3=0.00001;

e4=0.0001;

10

e6=0.01;

11

12

%ECUACIONES

13

14

15

%laminar
laminar=64./Re;

16

17

%explicita

18

19

explicita1=1./(-2.*log10(e1/3.7065-(5.0272./Re).*log10(e1
/3.827-(4.567./Re).*log10((e1/7.7918)^0.9924+(5.3326./(Re
+208.815)).^0.9345)))).^2;

20

21

%=1./(-2.*log10(e2/3.7065-(5.0272./Re).*log10(e2/3.827-(4.567./Re).*
log10((e2/7.7918)^0.9924+(5.3326./(Re+208.815)).^0.9345)))).^2;

22

23

explicita3=1./(-2.*log10(e3/3.7065-(5.0272./Re).*log10(e3
/3.827-(4.567./Re).*log10((e3/7.7918)^0.9924+(5.3326./(Re
+208.815)).^0.9345)))).^2;

Jos Enrique Cabaas Ceballos

133

C.3. REPRESENTACIN GRFICA DE LOS...

24

25

explicita4=1./(-2.*log10(e4/3.7065-(5.0272./Re).*log10(e4
/3.827-(4.567./Re).*log10((e4/7.7918)^0.9924+(5.3326./(Re
+208.815)).^0.9345)))).^2;

26

27

%explicita5=1./(-2.*log10(e5/3.7065-(5.0272./Re).*log10(e5
/3.827-(4.567./Re).*log10((e5/7.7918)^0.9924+(5.3326./(Re
+208.815)).^0.9345)))).^2;

28

29

explicita6=1./(-2.*log10(e6/3.7065-(5.0272./Re).*log10(e6
/3.827-(4.567./Re).*log10((e6/7.7918)^0.9924+(5.3326./(Re
+208.815)).^0.9345)))).^2;

30

31

%GRAFICOS

32

33

plot(Re,laminar,g);

34

hold on

35

plot(Re,explicita1,b);

36

%plot(Re,explicita2,r);

37

plot(Re,explicita3,k);

38

plot(Re,explicita4,c);

39

%plot(Re,explicita5,r);

40

plot(Re,explicita6,r);

41

hold off

C.3.
1

Representacin grfica de los modelos tericos.

%VARIABLES

Re1=[100:100:10000];

Jos Enrique Cabaas Ceballos

134

C.3. REPRESENTACIN GRFICA DE LOS...

Re2=[10000:1000:10e8];

Re=[Re1 Re2];

f=[0:0.001:1];

e1=0.0000001;

e3=0.00001;

e4=0.0001;

10

e6=0.01;

11

12

%ECUACIONES

13

14

15

%laminar
laminar=64./Re;

16

17

%explicita

18

19

explicita1=1./(-2.*log10(e1/3.7065-(5.0272./Re).*log10(e1
/3.827-(4.567./Re).*log10((e1/7.7918)^0.9924+(5.3326./(Re
+208.815)).^0.9345)))).^2;

20

21

%=1./(-2.*log10(e2/3.7065-(5.0272./Re).*log10(e2/3.827-(4.567./Re).*
log10((e2/7.7918)^0.9924+(5.3326./(Re+208.815)).^0.9345)))).^2;

22

23

explicita3=1./(-2.*log10(e3/3.7065-(5.0272./Re).*log10(e3
/3.827-(4.567./Re).*log10((e3/7.7918)^0.9924+(5.3326./(Re
+208.815)).^0.9345)))).^2;

24

25

explicita4=1./(-2.*log10(e4/3.7065-(5.0272./Re).*log10(e4
/3.827-(4.567./Re).*log10((e4/7.7918)^0.9924+(5.3326./(Re
+208.815)).^0.9345)))).^2;

26

27

%explicita5=1./(-2.*log10(e5/3.7065-(5.0272./Re).*log10(e5
/3.827-(4.567./Re).*log10((e5/7.7918)^0.9924+(5.3326./(Re

Jos Enrique Cabaas Ceballos

135

C.3. REPRESENTACIN GRFICA DE LOS...

+208.815)).^0.9345)))).^2;
28

29

explicita6=1./(-2.*log10(e6/3.7065-(5.0272./Re).*log10(e6
/3.827-(4.567./Re).*log10((e6/7.7918)^0.9924+(5.3326./(Re
+208.815)).^0.9345)))).^2;

30

31

%GRAFICOS

32

33

plot(Re,laminar,g);

34

hold on

35

plot(Re,explicita1,b);

36

%plot(Re,explicita2,r);

37

plot(Re,explicita3,k);

38

plot(Re,explicita4,c);

39

%plot(Re,explicita5,r);

40

plot(Re,explicita6,r);

41

hold off

Jos Enrique Cabaas Ceballos

136

También podría gustarte