Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Análisis Numérico y Comprobación Experimental de Las Ecuaciones Básicas en El Transporte de Fluidos
Análisis Numérico y Comprobación Experimental de Las Ecuaciones Básicas en El Transporte de Fluidos
CIUDAD REAL
Autor:
JOS ENRIQUE CABAAS CEBALLOS
Director de proyecto:
GONZALO RODRGUEZ PRIETO
Noviembre 2010
Captulo 1
OBJETIVOS, ANTECEDENTES Y
MOTIVACIN
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.
1.1.
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:
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
U 2
U L
Ef ectos de inercia
=
=
Ef ectos viscosos
U/L
(1.1)
Figura 1.2: Modificacin del sifn utilizado por Reynolds. Imagen adaptada de [10]
Figura 1.3: Esquema de la instalacin utilizada por Reynolds. Imagen adaptada de [8]
10
1.3.
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]:
11
hf =
L f v2
2Dg
(1.2)
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)
12
1.3.2.
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.
13
1
= 2,0 log10
f
1.3.5.
Re f
.
2, 51
(1.6)
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.
14
1.3.7.
Ecuacin Explcita.
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.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)
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
17
Captulo 2
PROCEDIMIENTO EXPERIMENTAL
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.
18
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.
19
2.2. FUNCIONAMIENTO.
2.2.
Funcionamiento.
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
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.
21
2.4.
22
hf [m] =
f LV 2 [m3 /s2 ]
,
2Dg [m2 /s2 ]
(2.2)
f [adimensional] =
(2.3)
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)
23
r [adimensional] =
[m]
.
D [m]
(2.6)
.
r =
= 3,7065 10 f
D
Re f
(2.7)
24
CAPTULO 3. RESULTADOS
Captulo 3
RESULTADOS
3.1.
25
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
26
27
28
Figura 3.3: Rugosidad relativa obtenida experimentalmente frente al nmero de Reynolds utilizando el modelo de Colebrook.
29
3.2.
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
31
Figura 3.5: Factor de friccin para tubera lisa. Rugosidad relativa 1 108
3.2.2.
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.3.
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
34
3.2.4.
3.2.5.
35
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 .
36
37
3.3.
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.
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.
39
CAPTULO 4. CONCLUSIONES
Captulo 4
CONCLUSIONES
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.
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.
43
BIBLIOGRAFA
Bibliografa
44
BIBLIOGRAFA
[10] Iaki Carrascal Mozo. Ciencias Fsicas, Vicens Vives (1988)
45
Anexo A
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.
46
A.3.
Requisitos de Software.
A.4.
A.5.
Introduccin de datos.
47
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.
materiales:
material1;rugosidad1;material2;rugosidad2; etc
49
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.
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
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
51
52
Anexo B
B.1.
Clculos
package factor_friccion;
*/
53
B.1. CLCULOS
10
11
12
13
this.nombre = nom;
14
this.densidad = densidad;
15
this.viscosidad = viscosidad;
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
double A=3.1415926*D*D*(1e-6)/4;
54
B.1. CLCULOS
37
double vel=q/A;
38
return vel;
39
40
41
double Re=L*(1e-3)*vel/vis;
42
return Re;
43
44
45
double vis=vel*D*1e-3/Re;
46
return vis;
47
48
49
double A=3.1415926*D*D*(1e-6)/4;
50
double q=vel*A;
51
return q;
52
53
54
double vel=Re*vis/(D*1e-3);
55
return vel;
56
57
58
double D=Re*vis*1000/vel;
59
return D;
60
61
62
double D=4000*q/(3.1415926*Re*vis);
63
return D;
64
65
66
double A=q/vel;
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
82
83
84
double f,x,X,s,a,b=0;
85
if(Re<=5000)
86
{
s=64/Re;
87
88
89
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);
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
105
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
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
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
132
133
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
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
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
168
169
170
double g=9.81;
171
double PC=media*vel*vel/(2*g*(0.001*D));
172
return PC;
}
173
174
59
B.2.
package factor_friccion;
this.nombre = nom;
double rugosidad){
this.nombre = nom;
this.rugosidad = rugosidad;
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
60
B.3.
package factor_friccion;
import java.io.*;
FileReader fr = null;
BufferedReader br = null;
String linea=null;
10
String z[]=null;
11
try
12
{
/*
13
14
poder
15
16
*/
17
18
19
br = new BufferedReader(fr);
20
21
while((linea=br.readLine())==null)
22
System.out.println("");
23
24
catch(Exception e)
25
{
e.printStackTrace();
26
27
61
28
finally
29
30
31
32
// una excepcion.
33
try
34
35
if( null != fr )
36
{
fr.close();
37
38
39
40
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
49
sea ";"
{
50
51
subdividir linea
}
52
53
54
}
String [] W=new String [y];
55
56
for(int b=0;b<y;b++)
57
62
W[b]="";
58
59
60
int a=0;
61
for(int t=0;t<linea.length();t++)
{
62
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
74
75
return W;
76
77
78
B.4.
package factor_friccion;
import java.io.*;
//import java.util.StringTokenizer;
63
FileReader fr = null;
10
BufferedReader br = null;
11
String linea=null;
12
String z[]=null;
13
try
14
{
/*
15
16
poder
17
18
*/
19
20
21
br = new BufferedReader(fr);
22
23
while((linea=br.readLine())==null)
24
System.out.println("");
25
26
catch(Exception e)
27
{
e.printStackTrace();
28
29
30
finally
31
32
33
34
// una excepcion.
35
try
64
36
37
if( null != fr )
38
{
fr.close();
39
40
41
42
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
51
sea ";"
{
52
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
65
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
76
77
return W;
78
79
80
B.5.
/*
* 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;
66
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
23
*/
24
25
26
String Z[]=Leermateriales.leerfichero();
27
int q=Z.length;
28
int y=1+(q/2);
29
30
31
String W[]=leerfluidos.leerfichero();
32
int r=W.length;
33
int p=r/3;
34
35
36
37
38
39
40
41
super(app);
42
67
43
44
Nombres[a]=Z[2*a];
45
Rug[a]=Z[(2*a)+1];
46
//System.out.print(Nombres[a]);
47
48
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
56
57
initComponents();
58
59
60
61
62
63
statusMessageLabel.setText("");
64
65
66
});
67
messageTimer.setRepeats(false);
68
69
70
68
" + i + "]");
71
72
73
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
83
84
taskMonitor.addPropertyChangeListener(new java.beans.
PropertyChangeListener() {
85
86
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)) {
69
96
busyIconTimer.stop();
97
statusAnimationLabel.setIcon(idleIcon);
98
progressBar.setVisible(false);
99
progressBar.setValue(0);
} else if ("message".equals(propertyName)) {
100
101
102
103
104
} else if ("progress".equals(propertyName)) {
105
106
progressBar.setVisible(true);
107
progressBar.setIndeterminate(false);
108
progressBar.setValue(value);
}
109
110
});
111
112
113
114
@Action
115
116
117
getMainFrame();
118
119
aboutBox.setLocationRelativeTo(mainFrame);
120
121
Factor_friccionApp.getApplication().show(aboutBox);
122
123
124
125
70
126
127
128
*/
129
@SuppressWarnings("unchecked")
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
71
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
mainPanel.setName("mainPanel"); // NOI18N
183
184
72
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
});
73
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)");
74
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.
75
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)");
76
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
77
325
326
327
jLabel9.setName("jLabel9"); // NOI18N
328
329
jTextField13.setText("");
330
jTextField13.setName("jTextField13"); // NOI18N
331
332
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
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.
78
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
362
.addComponent(jComboBox1,
79
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
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
370
.addPreferredGap(javax.swing.LayoutStyle.
371
ComponentPlacement.RELATED)
.addGroup(mainPanelLayout.
372
createParallelGroup(javax.swing.
GroupLayout.Alignment.LEADING)
.addComponent(jLabel7, javax.swing.
373
80
.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
81
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
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.
82
.addComponent(jLabel4)
401
.addComponent(jComboBox2, javax.swing.
GroupLayout.PREFERRED_SIZE, 29, javax.swing.
GroupLayout.PREFERRED_SIZE))
402
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))
83
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)
84
429
.addComponent(jTextField7, javax.swing.
GroupLayout.PREFERRED_SIZE, 22, javax.swing.
GroupLayout.PREFERRED_SIZE))
430
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
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.
85
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
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
459
.addComponent(jLabel2, javax.swing.GroupLayout.
86
);
461
462
menuBar.setName("menuBar"); // NOI18N
463
464
465
fileMenu.setText(resourceMap.getString("fileMenu.text")); //
NOI18N
466
fileMenu.setName("fileMenu"); // NOI18N
467
468
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);
87
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
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)
88
.addGroup(statusPanelLayout.
505
createSequentialGroup()
506
.addContainerGap()
507
.addComponent(statusMessageLabel))
.addGroup(statusPanelLayout.
508
createSequentialGroup()
509
510
.addComponent(jLabel3, javax.swing.
GroupLayout.PREFERRED_SIZE, 142, javax.
swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.
511
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)
89
.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
);
531
532
jPanel1.setName("jPanel1"); // NOI18N
533
534
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
90
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
556
557
*/
558
559
560
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())
91
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
92
600
vel2=calculos.getVel(Re,D,vis);
601
if(vel1!=vel2)
602
{
jLabel7.setText("sistema
603
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
619
620
621
622
623
93
624
625
else
626
627
vel=calculos.getVelocidad(q,D);
628
jTextField7.setText(""+vel);
629
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
94
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
666
667
668
else
669
670
jLabel7.setText("datos insuficientes
671
");
}
672
673
674
675
676
else
677
678
if(jCheckBox5.isSelected())
95
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
96
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
97
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
752
D2=calculos.getD(q, vel);
753
if(D1!=D2){
jLabel7.setText("problemas de
754
compatibilidad!!! desmarca
alguna variable");
98
755
756
D=D2;
757
jTextField3.setText(""+D);
758
759
760
else
761
762
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
99
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
100
");
}
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
101
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
102
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
103
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());
104
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
105
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
106
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
107
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())
108
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());
109
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
110
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
111
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
112
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
1147
1148
1149
double k=calculos.getFactor3(Re);//prandtl
113
1150
double h=calculos.getFactor4(D,e,Re);//Karman-Nikuradse
1151
1152
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
1160
1161
1162
1163
1164
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
1176
1177
jTextField1.setEnabled(jCheckBox1.isSelected());
1178
114
1179
1180
1181
1182
jTextField2.setEnabled(jCheckBox2.isSelected());
1183
1184
1185
1186
1187
jTextField3.setEnabled(jCheckBox3.isSelected());
1188
1189
1190
1191
1192
jTextField4.setEnabled(jCheckBox4.isSelected());
1193
1194
1195
1196
1197
jTextField5.setEnabled(jCheckBox5.isSelected());
1198
1199
1200
1201
1202
jTextField6.setEnabled(jCheckBox6.isSelected());
1203
1204
1205
115
ActionEvent evt) {
1206
1207
int i = jComboBox2.getSelectedIndex();
1208
try {
jTextField4.setText(Rug[i]);
1209
1210
catch(ArrayIndexOutOfBoundsException e) {
1211
1212
1213
1214
1215
1216
1217
1218
jTextField7.setEnabled(jCheckBox7.isSelected());
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
116
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
117
B.6. FACTOR_FRICCIONAPP.JAVA
1268
1269
1270
1271
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
12
*/
13
14
15
/**
16
17
*/
18
19
20
21
22
/**
118
B.7. FACTOR_FRICCIONABOUTBOX.JAVA
23
injecting resources.
* Windows shown in our application come fully initialized from
24
the GUI
25
26
*/
27
28
29
/**
30
31
32
33
*/
public static Factor_friccionApp getApplication() {
34
return Application.getInstance(Factor_friccionApp.class);
35
36
37
/**
38
39
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
*/
119
B.7. FACTOR_FRICCIONABOUTBOX.JAVA
package factor_friccion;
import org.jdesktop.application.Action;
10
11
12
super(parent);
13
initComponents();
14
getRootPane().setDefaultButton(closeButton);
15
16
17
18
19
20
21
22
23
24
25
*/
26
27
28
29
30
31
32
33
120
B.7. FACTOR_FRICCIONABOUTBOX.JAVA
34
35
36
37
38
39
40
setDefaultCloseOperation(javax.swing.WindowConstants.
DISPOSE_ON_CLOSE);
41
42
setModal(true);
43
setName("aboutBox"); // NOI18N
44
setResizable(false);
45
46
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
52
appTitleLabel.setName("appTitleLabel"); // NOI18N
53
54
versionLabel.setFont(versionLabel.getFont().deriveFont(
versionLabel.getFont().getStyle() | java.awt.Font.BOLD));
121
B.7. FACTOR_FRICCIONABOUTBOX.JAVA
55
56
versionLabel.setText(resourceMap.getString("versionLabel.
text")); // NOI18N
57
versionLabel.setName("versionLabel"); // NOI18N
58
59
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
67
appVendorLabel.setName("appVendorLabel"); // NOI18N
68
69
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
77
vendorLabel1.setName("vendorLabel1"); // NOI18N
78
122
B.7. FACTOR_FRICCIONABOUTBOX.JAVA
79
appVendorLabel1.setText("08/03/2010");
80
appVendorLabel1.setName("appVendorLabel1"); // NOI18N
81
82
83
getContentPane().setLayout(layout);
84
layout.setHorizontalGroup(
85
layout.createParallelGroup(javax.swing.GroupLayout.
Alignment.LEADING)
86
.addGroup(layout.createSequentialGroup()
87
.addComponent(imageLabel)
88
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)
123
B.7. FACTOR_FRICCIONABOUTBOX.JAVA
.addComponent(appVendorLabel))
102
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)
124
B.7. FACTOR_FRICCIONABOUTBOX.JAVA
124
.addComponent(vendorLabel1)
125
.addComponent(appVendorLabel1))
.addPreferredGap(javax.swing.LayoutStyle.
126
.addComponent(closeButton)
128
.addContainerGap())
);
129
130
pack();
131
}// </editor-fold>
132
133
134
135
136
137
138
125
Anexo C
C.1.
1
%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
11
126
12
13
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
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
127
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
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
71
tmedio4=sum(tiempo4)/length(tiempo4);
72
caudal4=volumen./tiempo4;
73
cmedio4=sum(caudal4)/length(caudal4);
74
p4a=[510,510,515,510,510];
128
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
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);
129
107
108
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
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));
130
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
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
167
ecmc=[ecmc1,ecmc2,ecmc3,ecmc4,ecmc5,ecmc6,ecmc7,ecmc8]; %error
cuadratico medio caudal
168
131
169
170
pc=[P1,P2,P3,P4,P5,P6,P7,P8]; %milimetros
171
PC=0.001.*pc; %metros
172
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
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
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
191
end
192
r;
193
rr;
132
C.2.
%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;
133
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
%VARIABLES
Re1=[100:100:10000];
134
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
135
+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
136