Logo Studenta

TFG-3708TIERRAGÓMEZ,VICENTE

¡Este material tiene más páginas!

Vista previa del material en texto

Trabajo Fin de Grado
Grado en Ingeniería Aeroespacial
Rotura Autoinducida de Chorros Capilares
Autor: Vicente Tierra Gómez
Tutores: Pedro Ángel Vázquez González
Heliodoro González García
Dpto. de Física Aplicada III
Escuela Técnica Superior de Ingeniería
Universidad de Sevilla
Sevilla, 2021
Trabajo Fin de Grado
Grado en Ingeniería Aeroespacial
Rotura Autoinducida de Chorros Capilares
Autor:
Vicente Tierra Gómez
Tutores:
Pedro Ángel Vázquez González
Profesor Titular
Heliodoro González García
Profesor Titular
Dpto. de Física Aplicada III
Escuela Técnica Superior de Ingeniería
Universidad de Sevilla
Sevilla, 2021
Trabajo Fin de Grado: Rotura Autoinducida de Chorros Capilares
Autor: Vicente Tierra Gómez
Tutores: Pedro Ángel Vázquez González
Heliodoro González García
El tribunal nombrado para juzgar el trabajo arriba indicado, compuesto por los siguientes profe-
sores:
Presidente:
Vocal/es:
Secretario:
acuerdan otorgarle la calificación de:
El Secretario del Tribunal
Fecha:
A mi familia,
a Sevilla
y todos los amigos que me ha brindado.
I
Resumen
El presente estudio tiene como objetivo la identificación de regímenes cuasi-periódicos enla generación de gotas de un chorro capilar sin estimulaciones externas. Para ello, se ha
hecho uso del software Basilisk con la intención de crear un módelo numérico capaz de simular
el comportamiento del fluido. Mediante múltiples barridos, se han podido esclarecer resultados
cualititavos y cuantitativos de cuáles son las variables que consiguen el efecto deseado. Asimismo,
la similitud que pueda existir entre estos resultados y las predicciones teóricas, confirmará la validez
del modelo numérico y las hipótesis inicialmente planteadas.
II
Abstract
The study that lies in this document, has for goal the identification of single droplets under aquasi periodic regimen in a capillary jet without any external stimulation. For this purpose,
Basilisk software has been used in order to build a numerical model able to simulate the fluid
behaviour. Through multiple sweeps, qualitative and quantitative results had been clarified as mean
to obtain the variables that achieve the desired effect. Likewise, the similarity that may exist between
these results and the theoretical predictions, will confirm the validity of the numerical model and
the hypotheses initially made.
III
Índice Abreviado
Resumen II
Abstract III
Índice Abreviado IV
Notación VII
Índice de Figuras IX
1 Introducción 1
1.1 Antecedentes históricos 1
1.2 Aplicaciones actuales 2
1.3 Objetivo 3
1.4 Software Basilisk 3
1.5 Software MATLAB 4
2 Descripción del problema 6
2.1 Descripción física 6
2.2 Condiciones iniciales y de contorno 8
3 Rutinas Empleadas 12
3.1 Basilisk 12
3.2 MATLAB 23
4 Análisis de los resultados 29
4.1 Para distintos números de Weber y número de Ohnesorge 0.003 39
5 Análisis de la influencia de la viscosidad 45
6 Conclusiones y Trabajos Futuros 55
Apéndice A Códigos Basilisk 58
A.1 Código Basilisk Inicial 58
A.2 Código Basilisk Definitivo 65
A.3 Código Basilisk Modificado 73
Índice de Tablas 82
Bibliografía 83
IV
Índice
Resumen II
Abstract III
Índice Abreviado IV
Notación VII
Índice de Figuras IX
1 Introducción 1
1.1 Antecedentes históricos 1
1.2 Aplicaciones actuales 2
1.3 Objetivo 3
1.4 Software Basilisk 3
1.5 Software MATLAB 4
2 Descripción del problema 6
2.1 Descripción física 6
2.2 Condiciones iniciales y de contorno 8
2.2.1 Condiciones iniciales 8
2.2.2 Condiciones de contorno 9
2.2.3 Ecuaciones adimensionales 10
3 Rutinas Empleadas 12
3.1 Basilisk 12
3.1.1 Rutina Principal 12
3.1.2 Rutinas Secundarias 20
Rutina de Snapshots 21
Rutina de Facets 21
Rutina de Movie y MoviePPM 22
3.2 MATLAB 23
3.2.1 Rutina de representación gráfica 23
3.2.2 Rutina de Transformada de Fourier 26
4 Análisis de los resultados 29
Evolución de la longitud del chorro para distintos números de Weber 30
Comparativa de los valores de ruptura media para distintos
números de Weber 30
V
Índice VI
Para Weber 3 con altura de celda igual a 1.09375 ·10−1 32
Para Weber 3 con altura de celda igual a 9.375 ·10−2 33
Para Weber 4 con altura de celda igual a 9.375 ·10−2 34
Transformadas de Fourier para Weber 2 con altura de celda igual
a 9.375 ·10−2 36
Evolución de xFront para Weber 2 con altura de celda igual a
9.375 ·10−2 37
Evolución de xFront para Weber 3 38
Evolución de xFront para Weber 4 38
4.1 Para distintos números de Weber y número de Ohnesorge 0.003 39
Transformadas de Fourier para Weber 5 y Ohnesorge 0.003 39
Transformadas de Fourier para Weber 6 y Ohnesorge 0.003 40
Transformadas de Fourier para Weber 7 y Ohnesorge 0.003 41
Transformadas de Fourier para Weber 8 y Ohnesorge 0.003 42
5 Análisis de la influencia de la viscosidad 45
Evolución de la longitud del chorro para Weber 4 y distintos
Ohnesorge 46
Comparativa de los valores de ruptura media para distintos
números de Ohnesorge 46
Evolución de la longitud del chorro para Weber 4 y Ohnesorge 0.001 47
5.0.1 Para Weber 4 y número de Ohnesorge 0.001 48
Transformadas de Fourier para Weber 4 y Ohnesorge 0.001 48
5.0.2 Para Weber 4 y número de Ohnesorge 0.003 49
Transformadas de Fourier para Weber 4 y Ohnesorge 0.003 49
5.0.3 Para Weber 4 y número de Ohnesorge 0.005 50
Transformadas de Fourier para Weber 4 y Ohnesorge 0.005 50
5.0.4 Para Weber 4 y número de Ohnesorge 0.009 51
Transformadas de Fourier para Weber 4 y Ohnesorge 0.009 51
5.0.5 Para Weber 4 y número de Ohnesorge 0.013 52
Transformadas de Fourier para Weber 4 y Ohnesorge 0.013 52
6 Conclusiones y Trabajos Futuros 55
Apéndice A Códigos Basilisk 58
A.1 Código Basilisk Inicial 58
A.2 Código Basilisk Definitivo 65
A.3 Código Basilisk Modificado 73
Índice de Tablas 82
Bibliografía 83
Notación
∇ Gradiente
∂ Derivada parcial
© Copyright
~ex Vector unitario en la dirección axial
H Altura de celda
~n Vector normal a la interfase del chorro
Oh Número de Ohnesorge
P Presión
R Radio del chorro
r Coordenada de dirección radial
t Tiempo
t0 Tiempo adimensional
~u Velocidad del chorro
ux Velocidad axial del chorro
uy Velocidad radial del chorro
U0 Velocidad adimensional
We Número de Weber
x Coordenada de dirección axial
δs Función delta de Dirac
κ Curvatura de fase
µ Viscosidad dinámica
µaire Viscosidad dinámica del medio externo
µagua Viscosidad dinámica del fluido bajo estudio
µ̄ Viscosidad dinámica adimensional
ρ Densidad
ρaire Densidad del medio externo
ρagua Densidad del fluido bajo estudio
ρ̄ Densidad adimensional
σ Tensión superficial
φ Variable binaria
VII
VIII
Acrónimos
ETSI Escuela Técnica Superior de Ingeniería de Sevilla
DOD Drop-on-Demand
CIJ Continuous Inkjet
CFD Computational Fluid Dynamics
FFT Fast Fourier Transform
CFL Número de Courant-Friedrichs-Levy
Índice de Figuras
1.1 Métodos de Impresión por Inyección [1] 2
1.2 Longitud de ruptura en condiciones de microgravedad [2] 3
1.3 Logo MATLAB © 1994-2021 The MathWorks, Inc 4
2.1 Régimen de jetting y dripping [3] 6
2.2 Esquema de la geometría del sistema 7
2.3 Zonas del dominio donde se imponen condiciones de contorno 9
3.1 Comando para iniciar la rutina SelfExcitement.tst 12
3.2 Líneas 10-27 de la rutina principal 14
3.3 Líneas 34-44 de la rutina principal 14
3.4 Líneas 47-65 de la rutina principal 15
3.5 Líneas 115-132 de la rutina principal 16
3.6 Líneas 138-166 de la rutina principal 16
3.7 Líneas 168-202 de la rutina principal 17
3.8 Líneas 205-224 de la rutina principal 18
3.9 Ficheros data- generados por la rutina 18
3.10 Líneas 231-250 de la rutina principal 19
3.11 Líneas 254-270 de la rutina principal 19
3.12 Líneas 272-301 de la rutina principal 20
3.13 Líneas 303-324 de la rutina principal 20
3.14 Líneas 326-331 de la rutina principal 21
3.15 Líneas 353-367 de la rutina principal 21
3.16 Ejemplo de archivo Ux.png 21
3.17 Líneas 338-351 de la rutina principal 22
3.18 Líneas 369-387 de la rutina principal 22
3.19 Captura de imagen del archivo .mpg generado 22
3.20 Fichero apto para su lectura en MATLAB 23
3.21 Transformación de vector tras lecturaen matriz deseada 24
3.22 Construcción de vectores y matriz con las variables de interés 24
3.23 Elaboración de gráficas para la evolución de la velocidad 25
3.24 Elaboración de gráfica para la evolución espacial del chorro 25
3.25 Rutina de transformada de Fourier para la evolución de la velocidad 26
3.26 Obtención de velocidad promedio 26
3.27 Rutina de transformada de Fourier para la evolución del chorro 27
4.1 Evolución de la longitud del chorro para distintos números de Weber 30
IX
Índice de Figuras X
4.2 Comparativa de los valores de ruptura media para distintos números de
Weber 30
4.3 Weber 3 con altura de celda igual a 1.09375 ·10−1 32
4.4 Weber 3 con altura de celda igual a 9.375 ·10−2 33
4.5 Weber 4 con altura de celda igual a 9.375 ·10−2 35
4.6 Transformadas de Fourier con Weber 2 y altura de celda igual a 9.375 ·10−2 36
4.7 Evolución de xFront con Weber 2 y altura de celda igual a 9.375 ·10−2 37
4.8 Evolución de xFront con Weber 3 38
4.9 Evolución de xFront con Weber 4 38
4.10 Transformadas de Fourier con Weber 5 y Ohnesorge 0.003 39
4.11 Transformadas de Fourier con Weber 6 y Ohnesorge 0.003 40
4.12 Transformadas de Fourier con Weber 7 y Ohnesorge 0.003 41
4.13 Transformadas de Fourier con Weber 8 y Ohnesorge 0.003 42
5.1 Evolución de la longitud del chorro para Weber 4 y distintos Ohnesorge 46
5.2 Comparativa de los valores de ruptura media para distintos números de
Ohnesorge 46
5.3 Evolución de la longitud del chorro para Weber 4 y Ohnesorge 0.001 47
5.4 Transformadas de Fourier con Weber 4 y Ohnesorge 0.001 48
5.5 Transformadas de Fourier con Weber 4 y Ohnesorge 0.003 49
5.6 Transformadas de Fourier con Weber 4 y Ohnesorge 0.005 50
5.7 Transformadas de Fourier con Weber 4 y Ohnesorge 0.009 51
5.8 Transformadas de Fourier con Weber 4 y Ohnesorge 0.013 52
1 Introducción
“La mente que se abre a una nueva idea, jamás volverá a
su tamaño original”
Albert Einstein
1.1 Antecedentes históricos
El estudio de la física que rodea a los fenómenos relacionados con la tensión superficial, ha
sido objeto de interés durante siglos. Pero no fue hasta principios del siglo XIX cuando comenzó a
formalizarse su estudio, gracias a la labor pionera de Thomas Young [4] y Pierre-Simon Laplace [5].
Pero debido a la escasez de conocimientos y medios para ser investigada, en sus comienzos el
estudio se limitó a los fenómenos estáticos con la aportación de físicos como Eötvös [6], Lenard [7]
y Bohr [8].
Tras esta primera aproximación, de manera totalmente independiente, Savart y Plateau abrieron
las puertas a futuros estudios relacionados con la formación de gotas. Savart logró, a pesar de las
dificultades que suponía la observación de la ruptura de gotas con el ojo desnudo, extraer retratos
del proceso con una precisión asombrosa [9] . Mientras que por el otro lado, Plateau, apoyándose
en técnicas experimentales desarrolladas por él mismo, fue capaz de obtener la relación existente
entre la inestabilidad del chorro y la tensión superficial [10] [11].
τ =
√
r3ρ
σ
. (1.1)
Siguiendo la línea de estudio ofrecida por Plateau, Rayleigh desarrolló el primer método de
predicción de formación de gotas mediante un análisis lineal de estabilidad [12]. Introduciendo la
dinámica de fluidos al proceso de ruptura, definió el “tiempo capilar”, parámetro descrito con la
expresión 1.1, que permite establecer la escala temporal en la que los fenómenos capilares tienen
lugar. Aunque constituyó un gran avance en su contexto histórico y es de gran utilidad para describir
el crecimiento de inestabilidades, estemétodo falla a la hora de predecir la formación de gotas satélite.
Durante años, la herramienta diseñada por Rayleigh era lo único de lo que se disponía a la hora de
analizar el comportamiento de roturas de chorros. Pero esta no permitía comprender la formación de
gotas satélites. Esta preocupación, fue la que propició el desarrollo del "drop weight method" [13];
en el que se define la tensión superficial con el peso de la gota. Además, Edgerton et al. [14],
1
1.2 Aplicaciones actuales 2
profundizaron años más tarde en el estudio realizado por Lenard, redescubriendo y ampliando lo
analizado por el físico.
Tras el artículo presentado por Edgerton et al., no fue hasta finales del siglo pasado que se
consiguió arrojar algo de luz en el estudio de los aspectos no lineales de la ruptura de gotas. Primero
Peregrine [15], con una detallada secuencia de la ruptura y nuevas ideas acerca de las limitaciones
del chorro; y después Kowalewski [16], con imágenes experimentales increíblemente precisas
haciendo uso de la técnica estroboscópica, fueron lo más relevante que experimentó este campo de
estudio el siglo pasado.
Actualmente, con el auge de aplicaciones en las que los fenómenos de ruptura de chorros resultan
de gran utilidad, este estudio se ha convertido en una labor más pragmática que teórica. Dentro de
esta tendencia, no querría desaprovechar la oportunidad de hacer mención a los estudios elaborados
por el Departamento de Física Aplicada III [17] [18] y los proyectos desarrollados por alumnos de
esta escuela bajo el tutelaje del mismo [19] [20].
1.2 Aplicaciones actuales
Tal y como se expuso al final del apartado anterior, han surgido una amplia variedad de aplicaciones
técnicas para las cuales, estos fenómenos de ruptura, resultan de un inestimable provecho. Es por
ello, que aporta una enorme riqueza no perder la perspectiva práctica del estudio realizado en este
documento. Entre ellas, se va a destacar la impresión por inyección, que ha experimentado un auge
en los últimos años.
Esta técnica consiste en la impresión sobre cualquier superficie física mediante gotas generadas a
través de la ruptura del chorro. Dentro de esta aplicación, podemos distinguir dos métodos, el DOD
(de sus siglas en inglés “drop-on-demand”) y el CIJ (acrónimo de“continuous inkjet”) [21].
Figura 1.1 Métodos de Impresión por Inyección [1].
En el DOD, la ruptura del chorro se alcanza mediante la aplicación de un pulso de presión
en el inyector, lo que da lugar a la formación de gotas en la salida de este. Mientras que en el
CIJ, se tiene un chorro continuo que es estimulado tras la salida del inyector a traves de elementos
piezoeléctricos, lo que provoca su ruptura. Este último método, incorpora un canal tras este elemento
1.4 Software Basilisk 3
piezoeléctrico, dando la posibilidad de reciclar el fluido y mejorando así la producción y el control
de las perturbaciones inducidas. Ambos métodos se recogen en la imagen 1.1.
Cabe mencionar, que al tratarse de un campo de estudio aún en una fase muy temprana de su
desarrollo, muchas de las futuras aplicaciones que podría tener son todavía innovadoras ideas
esperando a prosperar. Aunque no sería muy descabellado pensar en futuras aplicaciones dentro del
ámbito de la salud, campo donde la fluidomecánica ha permitido entender numerosos fenómenos
cardíacos [22], entre otros.
1.3 Objetivo
Esta investigación tiene como objetivo la identificación de un régimen de goteo periódico de un
chorro capilar. A diferencia de algunos trabajos previamente realizados en esta materia [19], el
motor de este régimen se trata del chorro, sin necesidad de que intervenga una perturbación externa.
Es por ello, que se trata de seguir la línea de investigación aportada por el artículo “Self-destabilising
loop of a low-speed water jet emanating from an orifice in microgravity” [2], que ha sido de gran
utilidad a la hora de encontrar respaldo experimental a los resultados numéricos hallados.
Figura 1.2 Longitud de ruptura en condiciones de microgravedad [2].
Partiendo de esta premisa, y empleando el software Basilisk, cuya utilización será posteriormente
justificada en mayor detalle, se dispuso a realizar un amplio barrido para identificar bajo qué valores
del número de Weber -parámetro indispensable en los fénomenos de tensión superficial que cuanti-
fica el peso relativo de los efectos inerciales frente a su tensión superficial- se lograba este régimen.
Una vez hallada esta horquilla de valores,se llevaron a cabo diversas simulaciones bajo supuestos
diferentes, con la finalidad de poder discernir si los resultados que se mostrarán a continuación,
son fruto de la física intrínseca del problema planteado o se deben a la casuística de la simulación.
Además de poder establecer relaciones cualitativas acerca de cómo afectan estos parámetros al
desarrollo del fenómeno.
1.4 Software Basilisk
Basilisk es un software de código abierto englobado dentro de lo que se conoce como dinámica de
fluidos computacional, más comunmente denotado como CFD. Trata de mejorar y ser sucesor del
1.5 Software MATLAB 4
conocido software Gerris, y se encuentra desarrollado por los mismos autores [23] [24].
En lo que se refiere a este documento, se ha decidido trabajar con este software por los siguientes
motivos.
• Alta exactitud en los resultados. En particular, se trata de un eficiente software numérico en
lo que se refiere a los problemas de tensión superficial, indispensable en los fenómenos de
chorros capilares.
• Gran flexibilidad en la realización de cálculos. Basilisk cuenta con la posibilidad de delimitar
el estudio a unas cajas, “boxes”, cuyas dimensiones son establecidas por el usuario. Además,
se permite destinar los cálculos de cada caja a un procesador distinto; lo que permite agilizar
en gran medida todo el proceso numérico, además de la gran libertad que le otorga al usuario
para centrar su estudio a una región de interés.
• Libre selección demallado ymallado adaptativo. Durante las fases preliminares del estudio, los
barridos iniciales se realizaron con mallas muy gruesas gracias a esta alternativa, reduciendo
así el tiempo de cálculo. Además, el propio software es capaz de identificar los lugares donde
coexisten ambas fases para poder refinar el mallado donde sea estrictamente necesario, y no
caer en grandes divergencias entre el modelo numérico y el fenómeno físico sin comprometer
los tiempos de simulación.
• Animaciones. El software incorpora diferentes herramientas que generan imágenes y vídeos
de la simulación, permitiendo así visualizar la evolución del chorro.
1.5 Software MATLAB
MATLAB en cambio, es un software de cómputo numérico especializado en la manipulación de
matrices y cálculo algebraico, así como en la representación de datos y funciones [25]. Es esta
última aplicación, junto con la experiencia que he desarollado durante todo mi recorrido académico,
la que ha determinado su uso.
Además de esto, cuenta con una amplia gama de funciones ya preinstaladas que son de gran
utilidad para el estudio en cuestión. Aunque serán analizadas en profundidad en posteriores páginas,
entre estas funciones destaca la FFT, tansformada rápida de Fourier; capaz de llevar al dominio de
la frecuencia las evoluciones temporales de las variables bajo investigación.
Figura 1.3 Logo MATLAB © 1994-2021 The MathWorks, Inc.
1.5 Software MATLAB 5
2 Descripción del problema
“La religión es una cultura de fe, la ciencia es una cultu-
ra de duda”
Richard P. Feynman
En lo que se refiere a este apartado, se va a proceder a realizar una explicación de la física que
se esconde detrás de este estudio, enunciando las hipótesis realizadas, con el fin de establecer un
problema asumible desde el punto de vista del cálculo numérico. Por último, se establecerán tanto
las condiciones iniciales como las de contorno, tratando de que se ajusten lo máximo posible al
problema que tratamos de simular.
2.1 Descripción física
El modelo trata de replicar la evolución de un chorro de radio de salida igual a R, proveniente de un
depósito carente de interés en el estudio, por lo que se ha supuesto infinito para poder despreciar el
ruido que pudiese provocar en los resultados. El motor de este movimiento es la inercia, ya que al
inicio del chorro (conocido como “inlet” en inglés), se le ha impuesto la velocidad. En oposición a
esta fuerza impuesta, el chorro experimentará los efectos de la tensión superficial al avanzar a través
del aire, decelerando consecuentemente el fluido bajo análisis.
Figura 2.1 Régimen de jetting y dripping [3].
6
2.1 Descripción física 7
Es esta competición entre inercia y capilaridad, la que determina la longitud intacta de chorro,
puesto que la tendencia a formar gotas, que disminuyen la superficie líquida, debe luchar contra la
resistencia a los cambios de velocidad que ello requiere. Bajo estos dos efectos toma lugar nuestro
análisis. En el ámbito académico a este régimen se le conoce como “ jetting′′, que a diferencia del
“dripping′′, forma gotas tras la ruptura de una columna fluida. Un ejemplo gráfico de estos dos
regimenes se aprecia en la figura 2.1
Tal y como expuso Rayleigh en su estudio [12], el carácter axisimétrico del problema permite
que las interacciones que existen entre chorro y aire puedan extrapolarse al estudio del problema
bidimensional. Estableciendo el sistema de referencia inercial en la salida del chorro, con el eje x
en el eje de simetría del chorro y con el eje r perpendicular a este, queda definido un sistema como
el que se muestra en la imagen 2.2.
Figura 2.2 Esquema de la geometría del sistema.
La geometría y los parámetros que definen el problema, se ven reflejados también en la imagen
2.2. El radio del chorro R, con su correspondiente velocidad, denotada por~u. Para caracterizar cada
uno de los fluidos, son necesarias las densidades y viscosidades dinámicas de estos, ρ y µ con
sus respectivos subíndices. El vector~n es el vector normal a la interfaz entre el chorro y el medio
externo con dirección al aire.
Previo a la introducción de las ecuaciones que definen el problema bajo análisis, es necesario
enumerar las hipótesis que se han tenido en cuenta a la hora de hacer frente su estudio.
• En primer lugar, se desprecia el efecto de la gravedad de todo el estudio capilar. Para satisfacer
esta hipótesis, se asume que el estudio se da en ambientes de microgravedad.
• El chorro capilar se ha considerado un fluido newtoniano e incompresible que fluye sin
interacción a través de un medio establecido como aire en condiciones ambiente.
• Se asume la ausencia de gradientes térmicos y de concentración.
• La densidad y viscosidad dinámica del fluido en el chorro se han considerado constantes a
efectos de las dos hipótesis anteriores.
2.2 Condiciones iniciales y de contorno 8
∇ ·~u = 0, (2.1)
ρ
∂~u
∂ t
+ρ~u ·∇~u =−∇P+µ∇2~u+σκδs~n, (2.2)
donde la curvatura, κ , definida por κ = ∇ ·~n, P es la presión del fluido y σ su tensión superficial.
Como todo problema fluidomecánico, las ecuaciones que gobiernan el flujo son las conocidas
como ecuaciones de Navier-Stokes, definidas en 2.1 y 2.2. Nótese como en la ecuación 2.2, se ha
hecho uso de la función delta de Dirac, δs. Esta se define de tal manera que toma valor unidad
exclusivamente en la interfase entre ambos, lugar donde los efectos de la tensión superficial tienen
lugar.
∂φ
∂ t
+~u ·∇φ = 0. (2.3)
Para definir por completo el problema, recurrimos a una variable binaria, que se denota por φ ,
llamada trazador. Esta nace de la necesidad de discernir entre las dos fases existentes en el estudio.
Valiendo la unidad cuando se trata del chorro, y cero cuando se localice en el medio exterior, se
define la ecuación 2.3, capaz de caracterizar la evolución de la interfase.
2.2 Condiciones iniciales y de contorno
Para finalizar esta sección del documento, y así cerrar todo lo que concierne a la descripción física
del problema, solo resta plantear las condiciones iniciales y de contorno.
2.2.1 Condiciones iniciales
ux(t = 0) = u0, (2.4)
En primer lugar, la condición inicial exigida para el presente estudio se muestra en 2.4. En esta,
se impone que la velocidad axial inicial sea igual al módulo de la velocidad en la salida del chorro.
Como consecuencia de la búsqueda de un fenómeno axisimétrico, el valor de la velocidad transversal
debe ser nulo.
2.2 Condiciones iniciales y de contorno 9
2.2.2 Condiciones de contorno
Las condiciones de contorno, tomando como referencia la figura 2.3 son
Entrada:
ux=
{
u0 si r ≤ R,
0 si r > R.
ur = 0,
Salida:
∂ux
∂x
=
∂ur
∂x
= 0,
P = 0,
Arriba:
ux = ur = 0.
(2.5)
La frontera inferior corresponde al eje axisimétrico. Las condiciones de contorno a la salida son las
típicas condiciones de salida de flujo.
Figura 2.3 Zonas del dominio donde se imponen condiciones de contorno.
2.2 Condiciones iniciales y de contorno 10
2.2.3 Ecuaciones adimensionales
Finalmente, a la hora de implementar estas ecuaciones en el software numérico, se ha procedido a
tomar variables adimensionales con vistas a generalizar el cálculo. Al ser la capilaridad la que estable-
ce la fuerza dominante, se decide tomar esta como la base de la adimensionalización de las variables.
U0 =
√
σ
ρR
, (2.6)
P0 =
σ
R
, (2.7)
t0 =
R
U0
=
√
ρR3
σ
. (2.8)
De este modo, la velocidad, la presión y el tiempo pasan a seguir las relaciones 2.6, 2.7 y 2.8
respectivamente.
ρ̄(φ) = φ +(1−φ) ρaire
ρagua
, (2.9)
µ̄(φ) = φ +(1−φ) µaire
µagua
. (2.10)
De la misma manera, la densidad y la viscosidad dinámica; dependientes del fluido en cuestión,
pasan a ser definidas como 2.9 y 2.10. Con estas variables, las ecuaciones resultantes se muestran a
continuación.
Las ecuaciones de Navier-Stokes adimensionales son
∇ ·~u′ = 0, (2.11)
ρ̄
∂~u′
∂ t ′
+ ρ̄~u′ ·∇~u′ =−∇P′+Ohµ̄∇2~u′+ κ̄δ ′s~n, (2.12)
La ecuación adimensional para el trazador es
∂φ
∂ t ′
+~u′ ·∇φ = 0. (2.13)
Las condiciones iniciales adimensionales son
u′x(t ′ = 0) =
√
We = β ,
φ =
{
1 r < 1 y x < Li,
0 resto.
(2.14)
El programa elimina en cada paso de cálculo las gotas que se forman y se queda con el volumen mas
grande de líquido. Para asegurarse de que este volumen corresponde siempre al chorro, al inicio se
fija un volumen de líquido en forma de rectándulo de longitud Li. En las simlaciones típicamente
Li = 5.
2.2 Condiciones iniciales y de contorno 11
Las condiciones de contorno adimensionales son
Entrada:
u′x =
{
β si r ≤ 1,
0 si r > 1.
u′y = 0,
φ =
{
1 si r ≤ 1,
0 si r > 1.
Salida :
∂u′x
∂x′
=
∂u′r
∂x′
= 0,
∂φ
∂x′
= 0,
P′ = 0,
Arriba :
u′x = u′r = 0,
∂φ
∂ r′
= 0.
(2.15)
Los parámetros adimensionales que aparecen en las expresiones previas son
We =
√
ρaguaU20 R
σ
, Oh =
µagua√
ρaguaσR
. (2.16)
El número de Weber, We, representa el balance entre la inercia y la tensión superficial. Para We
altos la inercia domina y para We bajos lo hace la tensión superficial. El número de Ohnesorge
representa el efecto de la viscosidad: valores altos corresponden a viscosidad elevada y valores
bajos a flujos poco viscosos. En (2.14) se define el parámetro β como la raíz cuadrada de We.
3 Rutinas Empleadas
Toda la física es o bien imposible o trivial. Es imposible
hasta que la entiendes, y luego se vuelve trivial
Ernest Rutherford
Tal y como se introdujo en el apartado 1 del documento, todos los resultados numéricos han
sido obtenidos gracias al software Basilisk. Mientras que las representaciones gráficas y cálculos
ajenos al problema fluidomecánico se han hallado a través de MATLAB. En esta sección, previa a
la exposición de los resultados obtenidos, se enuncian y hacen comprensibles las rutinas empleadas
en dichos softwares.
3.1 Basilisk
En lo que concierne al código realizado en Basilisk, es necesario mencionar previamente que se
han utilizado dos rutinas. La primera de ellas corresponde al estudio preliminar, en el que se realizó
un barrido para poder identificar el abanico de valores que se encuentra bajo el régimen que ocupa
este análisis. Es por ello, que esta primera rutina no será incorporada aquí, ya que se trata de una
versión más rudimentaria que la que finalmente se ha desarrollado, en la que se hacía uso de un
mallado adaptativo que no presentaba buenos resultados. De todos modos, esta primera versión se
encuentra en el anexo A.1.
3.1.1 Rutina Principal
Dejando de lado esta primera aproximación, se va a proceder a realizar una minuciosa explicación,
línea a línea, de la rutina principal empleada. Esta se encuentra adjuntada en el anexo A.2.
Figura 3.1 Comando para iniciar la rutina SelfExcitement.tst.
A la hora de empezar a correr la simulación, se recurre a la orden que aparece en 3.1. Para poner
en marcha la orden make SelfExcitement.tst, es necesario definir de antemano las variables del
problema que se encuentran en 3.2. Estas se corresponden con,
12
3.1 Basilisk 13
• MPI: Define el número de procesadores que se emplearán para simular la evolución del
chorro.
• NX: Se trata del número de “boxes” que posee la simulación. El código esta elaborado de tal
manera que cada caja tenga asociada un único procesador. Es por esto que MPI y NX deben
de ser iguales.
• DISPLAY: Es una variable relacionada con la visualización del desarrollo del chorro en
la simulación, que toma exclusivamente tres valores. Si se le introduce el valor 1, la rutina
empieza a correr con la posibilidad de que en algún momento posterior puedas recurrir a esta
visualización. Para 0, la simulación comienza sin generar ningun tipo de representación gráfica.
Y para -1, la rutina no se inicia hasta que no se abre la herramienta para la visualización.
• LEVEL: Establece la altura de la caja mínima en el mallado. esta sigue la ley exponencial
mostrada a continuación,
H = NX ·LBOX/2LEV EL siendo H el lado de la celda. (3.1)
• WEBER: Determina el número de Weber que experimenta el chorro bajo estudio.
• TEND: Corresponde con el tiempo total, en segundos, que se quiere simular dentro del
problema.
• DTMAX: Fija el paso en segundos que existe entre cada evento de la simulación.
• DTOUT: Establece el paso también en segundos, de las capturas y los videos de la simulación.
• JACOBI: Si se define como 1, utiliza el método iterativo de Jacobi para resolver el problema.
• LBOX: Impone la longitud de la simulación.
• SNAPSHOTS: Es una variable binaria, definida de tal manera que si toma el valor 1, muestra
en cada instante definido por DTOUT la representación gráfica del chorro.
• MOVIE: Se trata de otra variable binaria, que si se le otorga el valor 1, genera un archivo
.ogv con la evolución del chorro.
• DUMP: Permite guardar los archivos de volcado de memoria si se le da el valor 1.
• FACETS: Si se le da el valor 1, guardará el perfil del chorro para determinados instantes
temporales en un archivo independiente.
• MOVIEPPM: Análoga a la variable MOVIE, solo que en esta ocasión el formato del vídeo
es .mpg, con la finalidad de que cualquier dispositivo pueda reproducirlo.
3.1 Basilisk 14
Figura 3.2 Líneas 10-27 de la rutina principal.
Nótese como no todas estas variables han sido definidas al ejecutar la orden 3.1. Esto se debe a
que algunas de estas han sido ya incorporadas con valores predeterminados, y solo es necesario
recurrir a ellas en el caso de que se quiera modificarlas.
Figura 3.3 Líneas 34-44 de la rutina principal.
Entrando en lo que al propio código se refiere, lo primero que se encuentra es la llamada de las
funciones necesarias para definir el estudio, junto con la igualdad que se expuso en 2.9 y 2.10. Estas
líneas del código se corresponden con la imagen 3.3. Las funciones empleadas en esta rutina son,
• La función grid/multigrid.h permite establecer el mallado que discretiza las variables a
resolver en las ecuaciones diferenciales. La opción de multigrid, nos permite además, dis-
criminar zonas del dominio de estudio donde no es necesario incluir un mallado muy fino,
optimizando así el proceso de resolución numérico.
• La línea de comando donde se define axi.h se emplea en los problemas donde existe simetría
de revolución alrededor de un eje. Es por esto, que nuestra simulación hace uso de esta
función, donde se impone la utilización de un sistema de coordenadas cilíndricas.
• La órden donde se incluye navier-stokes/centered.h es utilizada para la resolución iterativa
de las ecuaciones de Navier-Stokes para fluidos incompresibles. El método utilizado, parecido
al incluido en Gerris, hace uso de un ciclo temporal genérico, un paso temporal límitado por
el número de CFL [26], el esquemade advección Bell-Colella-Glaz [27] para la resolución
de ecuaciones diferenciales y de un solver de viscosidad.
3.1 Basilisk 15
• La orden donde se hace referencia al archivo two-phase.h, se corresponde con la función
empleada en simulaciones donde se tienen dos fluidos inmiscibles. En ella, se define una
variable binaria f que correspondería con la vista en ??.
• Para la línea donde se hace alusión a tension.h, se incluye con el fin de modelar los fénomenos
relacionados con la tensión superficial. Junto con el archivo anterior, los fenómenos en la
interfase quedan totalmente descritos.
• La utilización del archivo view.h viene motivada por la necesidad de obtener representaciones
gráficas de la simulación en cuestión. Todas las renderizaciones de estas representaciones se
realizan con OpenGL.
• La función tag.h permite vincular cada celda dentro de un vecindario con una “etiqueta”, de
este modo se pueden discriminar los distintos volúmenes fluidos presentes en la simulación.
Su implementación responde a la posibilidad de poder eliminar las distintas gotas que se
formasen ajenas al volumen fluido principal y así reducir el ruido que pudiesen provocar estas
perturbaciones.
Tras definir las funciones que se emplean en la rutina, se ha decidido otorgar el valor predetermi-
nado a los parámetros que caracterizan la simulación. Dicha orden se realiza con vistas a agilizar el
proceso de ejecución del código y no impedir el análisis si no se declaran al comenzar la rutina
todas la variables que lo definen. Una ejemplificación se puede ver en la imagen 3.4.
Figura 3.4 Líneas 47-65 de la rutina principal.
Una vez hecho esto, se definen las propiedades físicas de los fluidos junto con las variables
globales del mismo, donde se incluyen la longitud del chorro y las dimensiones del canal a analizar.
Estas líneas del código se corresponden con 3.5. Entre las propiedades de los fluidos se encuentran,
por este mismo orden: la densidades y las viscosidades dinámicas de ambos, la longitud de la
salida del chorro en metros, la tensión superficial del agua, una variable definida como contador
y el número adimesional de Ohnesorge, fundamental en los fenómenos capilares que relaciona la
magnitud que poseen las fuerzas viscosas frente a las de tensión superficial.
3.1 Basilisk 16
Figura 3.5 Líneas 115-132 de la rutina principal.
A continuación de las líneas de código anteriores, se han definido las condiciones de contorno
que gobiernan el problema, como se puede apreciar en la figura 3.6. En primer lugar, se establece un
bucle del tipo “if” en el que se impone la velocidad en el inlet a los puntos que cumplan la condición
de tener menor coordenada transversal que 2 ·R, es decir, que formen parte de lo que se ha definido
como chorro. En caso de que la condición se incumpla, se impone el valor nulo de la velocidad
transversal.
Figura 3.6 Líneas 138-166 de la rutina principal.
Los siguientes tres conjuntos de órdenes, se corresponden con las condiciones de contorno ??,
?? y ??, expuestas en la sección anterior. Las variables u.n, u.t, p y f se corresponden con la
velocidad axial y transversal, la presión y un parámetro que recoge la evolución del perfil del chorro
respectivamente.
Las condiciones de contorno han sido impuestas mediante el uso de las funciones dirichlet y
neumann. estas definen las ecuaciones que su propio nombre indican, la condición de frontera de
Neumann 3.2 y la condición de frontera de Dirichlet 3.3.
{ dy
dx(0) = α1
dy
dx(1) = α2
(3.2)
3.1 Basilisk 17
{
y(0) = α1
y(1) = α2
(3.3)
Una vez establecidas todas las variables necesarias para definir el problema desde un punto de
vista físico, se prosigue con lo que corresponde a la propia estructura del programa que realiza la si-
mulación, que se encuentra en la figura 3.7. Para comenzar, se recurre a la línea habitual de cualquier
rutina que emplee lenguaje en C++ y se inicia el mallado en las líneas contiguas, entre la 177 y la 181.
Figura 3.7 Líneas 168-202 de la rutina principal.
Entre las líneas 183 y 187 se define el valor de las variables físicas del fluido, haciéndose dis-
tinción entre agua y aire mediante la variable binaria. La ultima línea, hace alusión a los flujos de
Stokes, para los cuales los efectos de la inercia son insignificantes frente a la viscosidad. Por ello, al
dar la orden stokes = false, se impide que se omita el término de advección en las ecuaciones de
Navier-Stokes.
Para concluir con la figura 3.7, restan las líneas de la 190 a la 202. Tratan de un bucle con
una condición “if”, en el que se establece que si el valor de la variable identificatoria del proceso
(“pid” de Process ID en inglés) es igual a 0 -que la rutina se encuentre en la primera iteración de
la simulación- se mostrará en pantalla toda la información de color púrpura entrecomillada con el
comando fprintf. De este modo, se crea un encabezado para todos los archivos que se generen de la
simulación.
Para la representación de los valores que adquieren estas variables, es necesario aclarar que
dependiendo de la variable a mostrar, es imprescindible indicar si se trata de un decimal con signo
de un entero, cuya representación sería la de %d\n, de una conversión a coma flotante con signo en
notación científica, que se denota con %e\n, o de una conversión a coma flotante haciendo uso de
la notación que requiera menor espacio, en cuyo caso se usa %g\n.
Realizando una estructura similar para guardar los datos en ficheros, se hace uso de lo mostrado
en la imagen 3.8. En estas líneas, se genera un fichero por cada núcleo que se tiene dentro del
proceso y que recopila los parámetros de interés en el estudio. La orden sprintf, le otorga el nombre
“data-0nºdenúcleo” y presenta el formato que se ve en 3.9.
3.1 Basilisk 18
Figura 3.8 Líneas 205-224 de la rutina principal.
Estas líneas, referentes a la figura 3.8, representan el final del planteamiento inicial, y lo que resta
de rutina se corresponde con los eventos generados para la evolución del chorro en cada instante
temporal.
Figura 3.9 Ficheros data- generados por la rutina.
Las líneas asociadas a los eventos son las que se pueden ver en la imagen 3.10. Se define el tiempo
inicial, igual a 0, y las respectivas variables que se corresponden con las ecuaciones 2.4. Se hace
uso además de la orden boundary para no encontrar excepciones a la hora de realizar ecuaciones
diferenciales. Esto se debe a que, al encontrarse dividido el dominio en celdas, cuando se inicia
un proceso, el valor de las celdas dentro de un vecindario se actualiza, mientras que las que se
encuentran fuera del dominio computacional, denominadas “ghost-cells”, no. Dicha orden arregla
este problema, dando valor a estas ghost cells una vez se ha iniciado el proceso.
Una vez impuestas las condiciones iniciales, se recurre a la función remove droplets, que tal y
como su nombre indica, elimina la aparición de gotas excesivamente pequeñas como para tenerlas en
cuenta en este estudio, evitando así el ruido generado. Así mismo, la función incorpora la posibilidad
de eliminar las burbujas que surjan de estos procesos mediante la orden bubbles=true.
3.1 Basilisk 19
Figura 3.10 Líneas 231-250 de la rutina principal.
Tras esto, se realiza la localización del punto de máxima longitud del chorro, denominado de aquí
en adelante como xfront. Para ello, se emplean las líneas de código que se encuentran en la figura
3.11. En ellas, se realiza un filtro inicial donde se discriminan los valores de f, parámetro entre 1 y
0 que representa el perfil del chorro, menores que la cota THR. Con los valores almacenados de
f donde se tiene el volumen fluido bajo estudio, se halla el máximo y se almacena en la variable
xfront en cada paso temporal.
Figura 3.11 Líneas 254-270 de la rutina principal.
A continuación, se procede a guardar las actualizaciones de las variables de interés. Esto se
corresponde con lo que se puede visualizar en la imagen 3.12. De manera análoga a la vista en 3.7 y
3.8, se establece el cabecero de los ficheros para cuandoel iterante, variable i, se encuentra en el
comienzo.
Posteriormente, se dispone a completar el fichero con las variables que definen el problema. Para
su extracción se han definido 5 puntos. Estos se encuentran a una distancia de uno, dos, tres, cinco
y diez radios respectivamente. Las variables guardadas en el archivo, son el tiempo, el incremento
de tiempo, el número de iteraciones realizadas, la evolución espacial del chorro antes definida, el
número de iteraciones realizadas en cada uno de los tres primeros puntos definidos y sus respectivas
velocidades. Nótese como para el cálculo de las velocidades, se ha hecho uso de la orden interpolate,
que tal y como su propio nombre indica, interpola la función en primer lugar, u.x en esta caso, en
las coordenadas que se indiquen.
3.1 Basilisk 20
Figura 3.12 Líneas 272-301 de la rutina principal.
Para dar por finalizado el análisis de la rutina principal, quedan por definir las líneas correspon-
dientes a 3.13. En estas, se crea un archivo en el que se recogen todas las velocidades axiales del
chorro para toda su longitud. Véase como para cada núcleo se genera un archivo .dat con la orden
sprintf.
Para obtener estas magnitudes, se recurre a un bucle “while”, y se definen las cuatro variables
necesarias para realizar esta función. En primer lugar, x0 se corresponde con el valor inicial de la
celda en cuestión, x1 con el límite de esta, xx con la variable espacial que va a aumentar en cada
iteración y dx con el paso con el que aumenta xx. Descritas estas variables, se introduce la condición
de que xx no supere a x1 y que mientras esto suceda, se guarden los valores de la velocidad y presión
mediante la orden interpolate.
Figura 3.13 Líneas 303-324 de la rutina principal.
3.1.2 Rutinas Secundarias
Lo analizado anteriormente constituye la estructura fundamental de la rutina, en lo que a obtención
de los resultados se refiere. Pero además de lo expuesto, se han incluido rutinas de postprocesado
que merecen ser mencionadas y analizadas. Estas subrutinas son llamadas siempre que a la hora de
iniciar el código se les establezca su valor correspondiente, tal y como se indicó en 3.1. Además,
se va a seguir una estructura similar a la sección anterior, en la que se realizará una meticulosa
explicación de las funciones y órdenes empleadas en la obtención de resultados auxiliares.
3.1 Basilisk 21
Rutina de Snapshots
En lo que se refiere a la subrutina utilizada para la obtención de representaciones gráficas del chorro,
se han empleado las líneas de código que se encuentran en 3.14 y en 3.15. En primer lugar, se
recurre a la función snapshots incorporada en el conjunto view.h antes mencionado. De este modo,
se crea un evento que comienza en el instante inicial y que aumenta a cada paso temporal dentro de
la simulación. Su valor límite se establece al comenzar la rutina.
Figura 3.14 Líneas 326-331 de la rutina principal.
Figura 3.15 Líneas 353-367 de la rutina principal.
En 3.15 se hace uso de la función draw-vof, capaz de representar el volumen fluido, junto con
la orden squares, que permite generar un mapa de color tras establecer dos valores límites. En
particular, estos son los valores máximo y mínimo de la velocidad axial, hallados en las líneas 359
y 360. A continuación, se genera un archivo .png que se actualiza a cada paso temporal estipulado
dentro del código.
En la línea 364, se actualizan estas variables a cada paso de tiempo y la función draw-string
aporta la leyenda a la imagen. Un ejemplo de estos archivos generados es el que se ve en 3.16.
Figura 3.16 Ejemplo de archivo Ux.png.
Rutina de Facets
En las líneas 3.17, se busca almacenar el contorno del chorro mediante la variable f. Para ello, se
crea un archivo con el nombre “facets-nºPID”, que se corresponde con el antes mencionado Process
ID. Después, se genera un escalar, el ff, que se corresponde con un filtro de alta frecuencia de la
variable f, en el que se le otorga el valor nulo a todos aquellos valores que no superen el umbral de
1 ·10−6. De este modo, la salida queda mucho más depurada.
3.1 Basilisk 22
Figura 3.17 Líneas 338-351 de la rutina principal.
Rutina de Movie y MoviePPM
Con la intención de generar algunos archivos de vídeo que hagan acopio de lo simulado, se escriben
las líneas 3.18. En ellas, se ha utilizado dos formatos de video distintos con la finalidad de poder ser
visualizados sin la necesidad de tener instalado el paquete ffmpeg, imprescindible en el visionado
de archivos .ogv.
Figura 3.18 Líneas 369-387 de la rutina principal.
Las líneas que abarcan de las 369 a la 373, se corresponden con las que generan el archivo .ogv,
función viene incomporada dentro del archivo view.h.
Las líneas hasta ahora no analizadas, hacen alusión a la generación del archivo .mpg, que es
reproducible desde el software instalado por defecto en Windows. Para ello, se crea un evento que se
actualiza en cada paso temporal dentro de la simulación hasta el límite impuesto. En él, se programa
el almacenaje de todas las imagenes .ppm al archivo final en formato video. El resultado obtenido
es el que se muestra en la imagen 3.19.
Figura 3.19 Captura de imagen del archivo .mpg generado.
3.2 MATLAB 23
3.2 MATLAB
3.2.1 Rutina de representación gráfica
Una vez se han generado los ficheros con las evoluciones de la velocidad en los puntos antes
mencionados, es necesario representar estos valores frente al tiempo. La estructura que se aprecia
en 3.9 corresponde con los archivos generados por la rutina. En ellos va incorporado, además de los
valores de la velocidad; el valor de la evolución del chorro, xfront, y el valor del tiempo dentro de la
simulación, entre otros.
MATLAB, a la hora de realizar la lectura de un fichero, devuelve un valor nulo si encuentra
caracteres. Como consecuencia de esta incapacidad de discriminar los valores a representar del
encabezado del archivo, es necesario corregir el formato en el que se presentan los resultados. De
este modo, nuestros ficheros deben tomar la forma mostrada en 3.20.
Figura 3.20 Fichero apto para su lectura en MATLAB.
Al introducir este fichero, se realiza la lectura del mismo e inserta los valores en un vector columna,
nombrado en esta ocasión como A, cuyas componentes son todas las variables separadas por un espa-
cio. Para poder tratar todas estas variables con mayor soltura y que se tenga una estructura análoga a
la ofrecida por el fichero inicial, se transforma este vector en una matriz donde cada columna repre-
sente la evolución de todas las variables. Para ello, se emplean las líneas de código mostradas en 3.21.
En ellas, se define un parámetro numérico, denotado como parn, que fija el número de filas
que posee cada columna. Tras obtener este valor, se crea una matriz auxiliar, llamada “aux”, de
coeficientes aleatorios con las dimensiones deseadas, es decir, 12 columnas y parn filas. Con
la ayuda de un bucle del tipo “for”, que recorre el vector A componente a componente, se van
sustituyendo los valores aleatorios en el vector aux por los correspondientes en A. Para finalizar, se
iguala la matriz auxiliar obtenida por A, con el fin de trabajar con la misma notación.
3.2 MATLAB 24
Figura 3.21 Transformación de vector tras lectura en matriz deseada.
Estas líneas de código son ejecutadas en tantas ocasiones como ficheros “data” generados por
la rutina de Basilisk resulten de interés. Esto se debe a que, como se mencionó anteriormente,
los resultados que se obtienen en cada “box” dentro de la simulación corresponden a un fichero
independiente. Así, para este caso particular -con una longitud de caja igual a 4 ·R- los tres primeros
puntos de estudio se encuentran dentro del primer fichero (ya que el punto P3 se encuentra a una
distancia de 3 ·R), el cuarto punto en el segundo y el último en el tercero.
Figura 3.22 Construcción de vectores y matriz con las variables de interés.
El siguiente paso para la representación consiste en la extracción de los datos de interés que
tenemos en la matriz. De esta forma, tal y comose puede apreciar en 3.22, se generan 2 vectores y
una matriz. El vector t se compone de la evolución del tiempo dentro de la simulación, mientras que
el vector x f ront almacena la evolución del chorro en el eje x. Por último, en la matriz v se guardan
las componentes de la velocidad de tal modo que cada columna se corresponde con un punto de
estudio. Cabe mencionar que en la figura 3.22, B y C hacen alusión a las dos matrices asociadas a
los ficheros data para la segunda y tercera caja respectivamente.
Para concluir con la rutina asociada a la representación gráfica, se define el parámetro Beta que
se corresponde con la raíz cuadrada del número de Weber, al igual que se estableció en la rutina de
Basilisk. Este valor se representará junto a las evoluciones de la velocidad para corroborar que los
resultados son coherentes. Haciendo uso de la función plot de MATLAB, se obtienen finalmente
las representaciones deseadas.
3.2 MATLAB 25
Figura 3.23 Elaboración de gráficas para la evolución de la velocidad.
Dado que se han representado los valores en más de una gráfica -como se ve en la imagen 3.23-
se utiliza la función f igure en dos ocasiones. Esta función, junto con los comandos hold on y hold
off, permite la representación de todo lo que se encuentre entre estas dos órdenes en una misma
gráfica. Además, se han incorporado órdenes que facilitan una mejor interpretación de la imagen
resultante.
En primer lugar, la función legend incorpora una leyenda a la representación gráfica. Las órdenes
xlabel e ylabel le añaden una etiqueta al eje en cuestión, otorgando la capacidad de nombrar qué
variables estamos representando. El comando ylim tiene la función de establecer los límites en el
eje de ordenadas a representar. Para concluir, las funciones grid on y grid minor aportan un fino
mallado con el fin de poder localizar mejor en qué orden de valores se encuentran los resultados.
Procediendo de manera análoga para la evolución espacial del chorro -correspondiente a 3.24-
se da por finalizada esta rutina. Veáse cómo en ambas líneas de código, para la representación se
han descartado los primeros valores obtenidos. Esto se debe a que se ha tratado de eliminar las
imposiciones iniciales que se tienen en la simulación. Además de mejorar los resultados de las
velocidades en puntos muy alejados de la salida del chorro en los instantes iniciales.
Figura 3.24 Elaboración de gráfica para la evolución espacial del chorro.
3.2 MATLAB 26
3.2.2 Rutina de Transformada de Fourier
Tanto para la evolución temporal de la velocidad, como para la distancia que recorre el chorro, se
han representado las tranformadas de Fourier con el fin de observar las frecuencias dominantes;
con el fin de encontrar periodicidad en los resultados.
Con vistas a realizar dicha labor para las velocidades, se ha confeccionado el código que se ve en
la figura 3.25. En primer lugar, se definen las variables correspondientes al periodo de la muestra,
que viene impuesto en el código elaborado en Basilisk, y la longitud de la muestra, que será igual a
la variable parn mencionada.
Figura 3.25 Rutina de transformada de Fourier para la evolución de la velocidad.
Tras esto, se elabora un bucle para los cinco distintos puntos donde se realiza el análisis de la ve-
locidad axial. La primera función empleada en este bucle es la fft, capaz de calcular la transformada
discreta de Fourier del vector velocidad usando un algoritmo de transformada rápida de Fourier
implementado en el software.
Nótese que la matriz introducida es velprom y no la matriz vel antes definida. Esta matriz viene
dada por las líneas de código 3.26, en donde se suprime la componente promedio de la velocidad
impuesta por las condiciones iniciales. A pesar de saber que esta componente es igual a Beta, para
eliminar errores de cálculo numérico se ha optado por calcular la media a todo el vector en cuestión y
restar dicha media. Esta operación se ha llevado a cabo con la función mean, que ha sido comparada
en todas las ocasiones con el valor de Beta; confirmando que es el mismo valor con un error de un
orden despreciable.
Figura 3.26 Obtención de velocidad promedio.
3.2 MATLAB 27
Después de realizar el algoritmo de transformada rápida de Fourier en la rutina 3.25, se cálcula
el espectro bilateral, denotado como P2, y el espectro unilateral basado en el espectro bilateral y la
longitud de la entrada, llamado P1 en este código.
Para poder representar la transformada, se define el dominio de la frecuencia f tal y como se
muestra en la línea 98. Una vez determinado, de nuevo se recurre al comando f igure para elaborar
una gráfica para los cinco distintos puntos de estudio. Y con la orden plot, se representa el valor de
la transformada rápida de Fourier de la velocidad en el dominio de la frecuencia. Es remarcable
el hecho de que se han vuelto a utilizar las mismas funciones de diseño de gráficas, con el fin de
aportar mayor clarividencia a la hora de visualizar las representaciones.
Extrapolando esta misma rutina elaborada para la velocidad a la evolución espacial del chorro,
obtenemos el código 3.27. Como diferencia entre ambas rutinas, se debe hacer mención a lo que se
encuentra en la línea 110. En ella, se puede apreciar como la media se toma para todos los valores
del xfront menos para el inicial. Esto se debe a que el primer valor que devuelve la rutina de Basilisk
carece de interés para el estudio.
Figura 3.27 Rutina de transformada de Fourier para la evolución del chorro.
3.2 MATLAB 28
4 Análisis de los resultados
No se puede enseñar nada a un hombre, sólo se le puede
ayudar a descubrirse a sí mismo
Galileo Galilei
La estrategia seguida para la verificación del régimen de autoexcitado se fudamenta en una
hipótesis. Se ha admitido que un indicio de este régimen es la aparición de frecuencias asociadas
a la presencia de un régimen periódico en puntos intermedios del chorro. Para ello, se mide en
distintos puntos la evolución temporal de la velocidad axial en el eje.
En primer lugar, se realizó un descarte preliminar gracias a la retroalimentación con lo que se iba
simulando. En esta sección del apartado, se hizo uso de la rutina A.1, extremadamente simplista, ya
que lo que primaba era la cadencia con la que se obtenían los resultados.
Tras este primer acercamiento hacia el problema bajo estudio, se determinó en una primera
instancia, que la horquilla de valores para los que se apreciaba cierto comportamiento oscilatorio
iba de Weber 2 hasta Weber 4. Para velocidades mayores, no se apreciaron periodicidades en las
magnitudes evaluadas.
29
30
Evolución de la longitud del chorro para distintos números de Weber
Figura 4.1 Evolución de la longitud del chorro para distintos números de Weber.
Comparativa de los valores de ruptura media para distintos números de Weber
Figura 4.2 Comparativa de los valores de ruptura media para distintos números de Weber.
Una muestra de este efecto, se puede apreciar en las representaciones 4.1 y 4.2, realizadas en
una etapa final del estudio, pero colocadas aquí para reafirmar esta criba inicial. En ella, se puede
observar como a partir de números de Weber mayores a 4, el fenómeno de autoexcitado no tiene
lugar y no se provoca la ruptura prematura del chorro. Sin embargo, la comparación entre 1.2 y 4.2
muestra discrepancias entre lo observado por Umemura [2] y lo simulado.
Tras estos primeros análisis, y debido a que esta elección se debía a la mera observación de las
gráficas obtenidas, se dispuso a comprobar qué frecuencias eran las dominantes en la evolución
31
temporal de las velocidades; en el caso de que nuestra suposición de que existía cierta perodiciodad
fuese cierta. Esto, no hizo más que corroborar las suposiciones iniciales.
A la vista de que esto suponía un buen punto de partida para analizar en mayor profundidad la
naturaleza de estos resultados, se optó por aumentar la finura del mallado y el tiempo de exposición, y
de este modo, verificar si el efecto observado se debía a la incapacidad de la simulacióna reproducir
la realidad o si por el contrario, es inherente a la física del problema.
Una muestra de esto, se ve en las figuras 4.3 y 4.4. En ellas, se ha representado la evolución
temporal de la velocidad axial en dos puntos con sus respectivas transformadas de Fourier. Cabe
aclarar que la elección de estos dos puntos no es arbitraria, y se han tomado de manera que el punto
P4 se encontrase a medio camino entre el orificio de salida y la ruptura del chorro, con el fin de
tener unos resultados independientes a las perturbaciones que pudiesen provocar estos; y el punto
P5 cerca de donde se produce dicha ruptura. En el estudio llevado acabo por el físico nipón Akira
Umemura [2], este valor es del orden de 20, como se ve en 1.2.
K = 2πFrec./β . (4.1)
A la vista de las representaciones obtenidas, queda clara la predominancia de una frecuencia
alrededor de 0.25 Hz, que se mantiene con independencia del punto de estudio y el tamaño de celda
utilizado en el mallado. Resulta de gran interés, comparar estos picos con el máximo de Rayleigh,
K, situado en torno a 0.7. Para convertir el valor en el dominio de la frecuencia a la longitud de
onda adimensional, se hace uso de la fórmula en 4.1. Estos valores han sido tabulados en 4.1, en los
que se puede apreciar la cercanía con el valor hallado por Rayleigh.
Tabla 4.1 Valores de la longitud de onda adimensional en P4 y P5.
Frec(P4) K(P4) Frec(P5) K(P5)
Weber 3 H = 1.09375 ·10−1 0.2385 0.8652 0.2385 0.8652
Weber 3 H = 9.375 ·10−2 0.237 0.8597 0.237 0.8597
Weber 4 H = 1.09375 ·10−1 0.3045 0.9566 0.2774 0.8718
Weber 4 H = 9.375 ·10−2 0.312 0.9802 0.285 0.8954
32
Para Weber 3 con altura de celda igual a 1.09375 ·10−1
Figura 4.3 Weber 3 con altura de celda igual a 1.09375 ·10−1.
33
Para Weber 3 con altura de celda igual a 9.375 ·10−2
Figura 4.4 Weber 3 con altura de celda igual a 9.375 ·10−2.
34
Estos mismos resultados para Weber igual a 3, se reproducían para Weber igual a 4, con la
salvedad de que la evolución de la velocidad se encontraba altamente amortiguada y este efecto era
mucho más tenue. Con la finalidad de ejemplificar esta afirmación, se han adjuntado las figuras 4.5,
que de manera análoga a lo representado para Weber 3, se han tomado los puntos P3, localizado
a una distancia de 3 radios del inlet, P4 y P5 para representar la evolución de la velocidad y sus
transfromadas en el dominio de la frecuencia.
Además de esto, se ha incorporado una vista aumentada de dicha evolución de la velocidad para
poder visualizar el comportamiento oscilatorio que presenta. De nuevo, las representaciones de
estas en el dominio de la frecuencia presentan un máximo que es invariable con el lugar donde se
analice, aunque su presencia se mitiga a medida que el análisis se realiza cerca del punto de ruptura
del chorro. Los valores de los máximos de la frecuencia están tabulados en 4.1.
Para Weber 4 con altura de celda igual a 9.375 ·10−2
35
Figura 4.5 Weber 4 con altura de celda igual a 9.375 ·10−2.
36
Sin embargo, a pesar de que para Weber 2 las tendencias se mantenían, a medida que se disminuía
el tamaño de las celdas del mallado se introducía gran cantidad de ruido a las visualizaciones de la
transformada de Fourier de las evoluciones de la velocidad, como se puede comprobar en 4.6.
En un primer momento, se hipotetizó acerca de la posibilidad de que la simulación no caracterizase
correctamente el fenómeno bajo estudio. Pero tras comprobar que los valores de la evolución del
xfront, mostrados en 4.7, estaban respaldados por el estudio de Umemura [2], se teorizó acerca de
la posibilidad de que se tratase del caso límite entre “jetting” y “dripping”. Ante esta hipótesis, se
optó por realizar simulaciones en video y comprobar qué sucedía. Y en efecto, el régimen tratado
se encontraba en este límite. Es por esto, que se decidió descartar esta valor del número de Weber
de este estudio.
Transformadas de Fourier para Weber 2 con altura de celda igual a 9.375 ·10−2
Figura 4.6 Transformadas de Fourier con Weber 2 y altura de celda igual a 9.375 ·10−2.
37
Evolución de xFront para Weber 2 con altura de celda igual a 9.375 ·10−2
Figura 4.7 Evolución de xFront con Weber 2 y altura de celda igual a 9.375 ·10−2.
En este punto del estudio, se encuentra que la simulación es incapaz de aumentar el dominio
computacional sin comprometer el tiempo de cálculo o la altura de las celdas que componían el
mallado. Este obstáculo, era el causante de que no se lograse visualizar la evolución del xfront para
valores mayores que 3, ya que la ruptura se producía fuera del dominio. Con vistas a solventar este
problema se modifica la rutina principal.
La particularidad de esta, es la asignación de celdas del mallado a núcleos independientes. De
esta manera, se puede ampliar la longitud del chorro sin comprometer el tiempo de cálculo. La
modificación a la que hace referencia esta parte se encuentra en A.3. Cabe resaltar que para esta
parte se hizo uso de la computadora del departamento, ya que disponía de 16 núcleos y agilizaba en
gran medida el proceso.
En lo que respecta a Weber 3, estos resultados no arrojan mucha luz al estudio previo, ya que
la altura de la malla es similar a la más fina y el anterior código no imponía ninguna limitación
en el dominio. Sin embargo, este nuevo enfoque permite confirmar lo relativo a la evolución de la
longitud del chorro, apartado que se ha refinado en esta sección. Es por esto, que en este caso, sí
se puede afirmar que los resultados concuerdan con lo hallado experimentalmente [2], tal y como
observamos comparando 1.2 y 4.8.
38
Evolución de xFront para Weber 3
Figura 4.8 Evolución de xFront con Weber 3.
Sin embargo para Weber igual a 4, correspondiente con la imagen 4.9, estos valores se salen de
lo estimado por Umemura [2], ya que deberían rondar los 40, como se ve en 1.2. Este hecho es el
que ha motivado el estudio complementario que se recoge en 5. En él, se trata de evaluar cuál es la
longitud media de ruptura del chorro frente a un parámetro de gran interés en estos fenómenos, el
número de Ohnesorge.
A pesar de esto, los valores de las evoluciones de la velocidad sí que se mantienen dentro de lo
visto hasta ahora. Esto, junto con el análisis que viene a continuación, tratará de justificar la validez
del estudio.
Evolución de xFront para Weber 4
Figura 4.9 Evolución de xFront con Weber 4.
4.1 Para distintos números de Weber y número de Ohnesorge 0.003 39
4.1 Para distintos números de Weber y número de Ohnesorge 0.003
En esta sección del documento, que ha permitido la obtención de las representaciones 4.1 y 4.2,
se va a corroborar que la horquilla de valores tomada inicialmente era correcta y que no se ha
descartado de la criba preliminar ningún resultado que pudiese ser de interés. Para ello, se va
a mostrar la transformada al dominio de la frecuencia de la velocidad axial en dos puntos, uno
previo a la longitud de ruptura y otro tras este, para distintos valores del número de Weber. La
elección de estos dos puntos, tiene como fin comprobar que los efectos del autoexcitado son visibles
exclusivamente en estos puntos previos a la rotura.
Transformadas de Fourier para Weber 5 y Ohnesorge 0.003
Figura 4.10 Transformadas de Fourier con Weber 5 y Ohnesorge 0.003.
4.1 Para distintos números de Weber y número de Ohnesorge 0.003 40
Transformadas de Fourier para Weber 6 y Ohnesorge 0.003
Figura 4.11 Transformadas de Fourier con Weber 6 y Ohnesorge 0.003.
4.1 Para distintos números de Weber y número de Ohnesorge 0.003 41
Transformadas de Fourier para Weber 7 y Ohnesorge 0.003
Figura 4.12 Transformadas de Fourier con Weber 7 y Ohnesorge 0.003.
4.1 Para distintos números de Weber y número de Ohnesorge 0.003 42
Transformadas de Fourier para Weber 8 y Ohnesorge 0.003
Figura 4.13 Transformadas de Fourier con Weber 8 y Ohnesorge 0.003.
A la vista de estos resultados, se puede inferir lo siguiente. Para todos estos números de Weber,
en los puntos previos a la longitud de ruptura media, se encuentran picos alrededorde la frecuencia
que se observa en Weber 4. Sin embargo, para los puntos tras la ruptura, los picos han desaparecido.
Tabla 4.2 Valores de F(vel) y longitud de onda adimensional para distintos números de Weber.
Número de Weber F(vel) Amplitud de la transformada
5 0.000439 0.969548
6 0.000135 1.028715
7 6.2651·10−5 0.517468
8 4.04291 ·10−5 0.521841
En la tabla 4.2, se han recogido los valores de la función en el dominio de la frecuencia y la
longitud de onda adimensional en los puntos previos a la ruptura. Es por esto que, tomando los
valores de esta tabla como apoyo, se concluye que, a pesar de que sí existen frecuencias dominantes
4.1 Para distintos números de Weber y número de Ohnesorge 0.003 43
para estos números de Weber, el valor que toman estas son tan pequeñas que impiden la aparición
del régimen autoexcitado.
4.1 Para distintos números de Weber y número de Ohnesorge 0.003 44
5 Análisis de la influencia de la
viscosidad
Nada en la vida es para ser temido, es sólo para ser
comprendido. Ahora es el momento de entender más, de
modo que podamos temer menos
Marie Curie
En esta sección del estudio, con vistas a dotar de mayor amplitud al análisis, se va comprobar si
al aumentar la viscosidad el comportamiento autoexcitado desaparece. Ya que la viscosidad atenúa
las perturbaciones que se propagan aguas arriba desde la ruptura del chorro.
Por ello, se ha optado por representar para Weber igual a 4 la evolución temporal del punto de
máxima longitud del chorro para distintos valores del número de Ohnesorge. Y de este modo, poder
determinar la consecuencia de los anteriores resultados y comprobar que existe un límite a partir
del cual el fluido es tan viscoso que se erradican los efectos de la autoestimulación.
Resaltar que para todas las simulaciones previas, el valor del número de Ohnesorge era igual a
0.00333105, resultado de tomar el parámetro característico definido como ROD en 3.5, igual a 0.001.
Asimismo, junto a las representaciones mencionadas, se incorporan las respectivas transformadas
al dominio de la frecuencia de la evolución de las velocidades en dos puntos, uno localizado antes
de la longitud de ruptura media y otro después, con el fin de corroborar que este efecto desaparece
si analizamos puntos a la derecha de este valor. La motivación de estas gráficas nace de la necesidad
de poseer mayores argumentos en favor de la veracidad de los resultados hallados.
Con vistas a mejorar la visualización, y consecuentemente, las conclusiones inferidas, se ha
elaborado una imagen que agrupa las evoluciones del xFront para los distintos números de Ohnesorge,
5.1, y la tabla 5.2, en la que se comparan los valores medios de ruptura. La línea vertical denota
la desviación típica de los valores hallados, haciendo así una estimación de lo esperado para los
valores intermedios.
45
46
Evolución de la longitud del chorro para Weber 4 y distintos Ohnesorge
Figura 5.1 Evolución de la longitud del chorro para Weber 4 y distintos Ohnesorge.
Comparativa de los valores de ruptura media para distintos números de Ohnesorge
Figura 5.2 Comparativa de los valores de ruptura media para distintos números de Ohnesorge.
Gracias a estas representaciones, se puede apreciar un comportamiento inicial algo lineal, que
finalmente se amortigua, pudiendo inferir cierta saturación a partir de Ohnesorge 0.007, indicando
así el límite de la viscosidad para la cual se produce el fenómeno autosostenido.
Cabe mencionar, que para valores de Ohnesorge menores a 0.003, el fluido simulado es tan poco
viscoso que se tienen grandes errores en lo que concierne al cálculo numérico. Un ejemplo de esto
se encuentra en la imagen 5.3, correspondiente a la evolución temporal de la longitud del chorro
para Ohnesorge igual a 0.001, valor para el que se agrava el efecto.
47
Esto es consecuencia de que la rutina elimina las gotas que se producen en la ruptura, reteniendo
un único volumen de agua. En la gráfica se observa como el chorro no se rompe y llega hasta el
final del dominio fluido, donde desaparece por completo y vuelve a iniciarse en la salida.
Evolución de la longitud del chorro para Weber 4 y Ohnesorge 0.001
Figura 5.3 Evolución de la longitud del chorro para Weber 4 y Ohnesorge 0.001.
48
5.0.1 Para Weber 4 y número de Ohnesorge 0.001
Dado que para estos valores, el fluido es muy poco viscoso, los resultados reflejan la presencia
de excesivo ruido de perturbaciones. A pesar de tener una señal tan poco filtrada, esta frecuencia
dominante se encuentra presente en el punto previo a la ruptura y desaparece después, tal y como se
puede apreciar en la figura 5.4.
Transformadas de Fourier para Weber 4 y Ohnesorge 0.001
Figura 5.4 Transformadas de Fourier con Weber 4 y Ohnesorge 0.001.
49
5.0.2 Para Weber 4 y número de Ohnesorge 0.003
La principal diferencia encontrada para Ohnesorge 0.003, imagen 5.5, es la eliminación de gran
parte del ruido ocasionado por esta falta de viscosidad. Esto provoca que el pico de frecuencias se
visualice de manera mucho más clara para el punto previo a su ruptura. De nuevo, si centramos el
análisis en puntos tras la longitud de ruptura, este efecto no existe.
Transformadas de Fourier para Weber 4 y Ohnesorge 0.003
Figura 5.5 Transformadas de Fourier con Weber 4 y Ohnesorge 0.003.
50
5.0.3 Para Weber 4 y número de Ohnesorge 0.005
Para esta pareja de representaciones, 5.6, asociadas a Ohnesorge igual a 0.005, que no supera el
límite de saturación mostrado en 5.1, la presencia de este frecuencia dominante en el punto previo al
lugar de ruptura se hace bastante notable. En cambio, para el punto posterior a la ruptura, este efecto
vuelve a desaparecer por completo. Se puede comprobar también, que el efecto de las perturbaciones
producido por la falta de viscosidad se ha erradicado.
Transformadas de Fourier para Weber 4 y Ohnesorge 0.005
Figura 5.6 Transformadas de Fourier con Weber 4 y Ohnesorge 0.005.
51
5.0.4 Para Weber 4 y número de Ohnesorge 0.009
Para el caso de Ohnesorge igual a 0.009, representación 5.7, el valor otorga tanta viscosidad
que provoca que el pico de frecuencias, aunque se localice en el mismo lugar, se encuentra muy
disminuido.
Transformadas de Fourier para Weber 4 y Ohnesorge 0.009
Figura 5.7 Transformadas de Fourier con Weber 4 y Ohnesorge 0.009.
52
5.0.5 Para Weber 4 y número de Ohnesorge 0.013
Al igual que sucedía para el caso anterior, para Ohnesorge 0.013 reflejado en 5.8, el pico en las
frecuencias es significativamente más pequeño que para los casos de escasa viscosidad.
Transformadas de Fourier para Weber 4 y Ohnesorge 0.013
Figura 5.8 Transformadas de Fourier con Weber 4 y Ohnesorge 0.013.
En la tabla 5.1 se recogen los valores de F(vel) de los picos y la longitud de onda adimensional.
Tras todas estas representaciones, se puede concluir que el pico de las frecuencias localizado en
torno a 0.25 Hz, es independiente del valor del Ohnesorge que se emplee. Además, si se supera
el límite observado en 5.1 de 0.007, la viscosidad es tan elevada que el pico en el dominio de la
frecuencia, y consecuentemente el efecto de autoexcitado, se atenúa notablemente.
53
Tabla 5.1 Valores de F(v) para los distintos números de Ohnesorge..
Número Ohnesorge F(vel) Amplitud de la transformada
0.001 0.049683 0.546656
0.003 0.169623 0.766561
0.005 0.000616 0.885951
0.009 0.003047 0.926926
0.013 0.002595 0.923785
Por último, recalcar que la hipótesis de que este efecto desaparecía para puntos localizados tras
el valor de la longitud de ruptura media se ha visto reforzada con estas simulaciones.
54
6 Conclusiones y Trabajos Futuros
“La ciencia aumenta nuestro poder en la medida en que
reduce nuestra soberbia.”
Herbert Spencer
Tras exponer los resultados de manera cronológicamente coherente, y tomando el testigo del
trabajo realizado en esta materia por Daniel Fernández García en “Generación de gotas aisladas
en chorros líquidos” [19], se pueden inferir las siguientes conclusiones acerca del estudio que se
encuentra recogido en estedocumento.
• El estudio se ha beneficiado de una mejora progresiva de los códigos debida al análisis crítico
de los sucesivos resultados, detectando comportamientos no físicos y refinando la elección
de parámetros. Además, el enfoque aportado en la sección 5, no sólo reafirma esta idea, si no
que dota de mayor profundidad al análisis.
• La alta capacidad de computación y fiabilidad del software Basilisk se han visto demostradas.
Todos los resultados numéricos comparados con estudios teóricos o experimentales han
mostrado insignificantes discrepancias.
• La premisa inicial de que existe un régimen bajo el cual el propio chorro induce la generación
gotas de manera periódica, se ha visto reforzada tras los resultados obtenidos. Para valores del
número de Weber entre 3 y 4, se tienen alentadoras previsiones alrededor de este fenómeno.
• El fenómeno de autoexcitado necesita de un chorro que se encuentre totalmente desarrollado.
En vista de lo obtenido para pequeños tiempos de exposición, se ha determinado que estos
resultados son inconcluyentes tras observar los efectos ante largos periodos de simulación.
• La gráfica donde se representa la longitud de ruptura media frente al número de Ohnesorge,
establece un diferenciado cambio régimen ante un exceso de viscosidad. Esta tendencia
muestra una posible transición de autoestimulación a rotura ruidosa con este parámetro, que
debe ser comprobada con estudios posteriores.
Dada la gran complejidad física del problema, es imprescindible mencionar que este estudio
cualitativo debe tomarse como una primera aproximación al problema de chorros autoexcitados;
ya que sería necesario realizar futuros análisis con vistas a obtener mayor exactitud en el modelo
predictivo, además de resultados experimentales que evidenciasen la veracidad de estos resultados
numéricos.
En particular, además de la detección de frecuencias asociadas a modos autosostenidos, explorada
en este trabajo, puede ser de interés la detección de patrones espaciales que muestren la presencia
55
56
del modo inestable que se propaga aguas abajo y la de un modo estable que viaja desde la zona de
rotura hasta el orificio de salida, cerrando el bucle de autoexcitación.
Es por ello, que las conclusiones aquí halladas, esperan servir como referencia y punto de partida
a próximos proyectos que decidiesen abordar este fenómeno. Además de suponer una guía a cual-
quiera que quisiera informarse e iniciarse en el uso de softwares de CFD a través de Basilisk.
57
Apéndice A
Códigos Basilisk
A.1 Código Basilisk Inicial
En esta sección del anexo, se expone el código preliminar utilizado en el barrido inicial para
determinar la zona donde se tiene el régimen de autoestimulación.
/*
* =====================================================================
*
* Filename: selfExcitment.c
*
* Description: Simulation of jets
*
* CC=’mpicc -D_MPI=_ -DDISPLAY=_ -DLEVEL=_ -DADAPT=_ -DLEVELMAX=_ -
DLEVELMIN=_ -DWEBER=_ -DTEND=_ -DDTMAX=_ -DDTOUT=_ -DJACOBI=_ -DLY
=_ -DFILTERED=_ -DSNAPSHOTS=_’ make selfExcitement.tst
* MPI = number of processes
* DISPLAY = 1, play controls, start running immediately.
* -1: play controls, initially paused.
* 0: no play controls, start running
immediately.
* LEVEL = initial refinement level (default 6)
* ADAPT = 1-> adaptive refinement (default 0)
* LEVELMAX = max refinement level (default 7)
* LEVELMIN = min refinement level (default 3)
* WEBER = Weber number (required)
* TEND = computational total time (required)
* DTMAX = maximum size of the time step (default 1.e.3)
* DTOUT = time interval to output data (default 1.0)
* LY = size of the box (default 16.0)
* SNAPSHOTS = 1 -> save snapshots images and simulation (
default 0)
* JACOBI = 1 set Jacobi option for the solver (default
0)
58
A.1 Código Basilisk Inicial 59
* FILTERED = 1 -> takes the average of the tracer at the
corners of each cell (default 0)
* Version: 1.0
* Created: 28/05/19 15:00
* Revision: none
* Compiler: qcc
*
* Author: Pedro A. Vazquez
* Company:
*
*
* =====================================================================
*/
#include "axi.h"
#include "navier-stokes/centered.h"
#define mu(f) (clamp(f,0,1)*(mu1-mu2) + mu2)
#define rho(f) (clamp(f,0,1)*(rho1-rho2) + rho2)
//#define mu(f) (mu1*mu2/(mu1 + clamp(f,0,1)*(mu2-mu1)))
//#define rho(f) (rho1*rho2/(rho1 + clamp(f,0,1)*(rho2-rho1)))
#include "two-phase.h"
#include "tension.h"
#include "view.h"
#include "tag.h"
//#include "axistream.h"
//#include "adapt_wavelet_leave_interface.h"
//#include "drop_stat.h"
#define PI (3.14159265359)
/* Parameters */
#define R 1.0
#ifndef LY
#define LY (16.0)
#endif
#define LX (LY)
#ifndef WEBER
#define WEBER 3.0
#endif
#ifndef BETA
#define BETA (sqrt(WEBER))
#endif
#ifndef TEND
#define TEND 10.
#endif
A.1 Código Basilisk Inicial 60
#ifndef DTOUT
#define DTOUT 1.0
#endif
#ifndef DTMAX
#define DTMAX (1.e-3)
#endif
#ifndef ADAPT
#define ADAPT 0
#endif
#ifndef LEVEL
#define LEVEL 6
#endif
#ifndef LEVELMAX
#define LEVELMAX 7
#endif
#ifndef LEVELMIN
#define LEVELMIN 3
#endif
#ifndef SNAPSHOTS
#define SNAPSHOTS 0
#endif
#define RHOW (1000.)
#define RHOA (1.18)
#define MUW (0.0009)
#define MUA (0.0000185)
#define ROD (0.001)
#define GAMMA (0.073)
#define OH (MUW/sqrt(RHOW*GAMMA*ROD))
/**
Global variables */
double xFront;
double adapt_f = 1.e-2;
double adapt_u = 3.e-2;
/****************************************
C FUNCTIONS
*************************************** */
/**
Boundary conditions for velocity at inlet */
float Ud ( double xp, double yp) {
A.1 Código Basilisk Inicial 61
if ( yp<=4.*R )
return BETA;
else
return 0.;
}
/****************************************
FIELDS AND BOUNDARY CONDIIONS
*************************************** */
// Boundary conditions at inlet
u.n[left] = dirichlet( Ud(x, y) );
u.t[left] = dirichlet(0);
p[left] = neumann(0.);
f[left] = dirichlet( (y<=R));
// Boundary conditions at outlet
u.n[right] = neumann(0);
u.t[right] = neumann(0.);
p[right] = dirichlet(0);
pf[right] = dirichlet(0);
f[right] = neumann(0);
// Boundary conditions at top
u.n[top] = dirichlet(0.); // slip
u.t[top] = neumann(0);
f[top] = neumann(0.);
/****************************************
MAIN PROGRAM
*************************************** */
int main (int argc, char * argv[])
{
DT = DTMAX;
TOLERANCE = 1.e-4;
// Initialize the grid
size (LY);
init_grid (1 << LEVEL);
origin (0, 0);
// fluid parameters
rho1 = 1., mu1 = OH;
rho2 = RHOA/RHOW, mu2 = OH*MUA/MUW;
f.sigma = 1.;
stokes = false;
// print configuration
if ( pid()==0 ) {
A.1 Código Basilisk Inicial 62
fprintf(stdout,"# npe (number of processes)= %d\n", npe());
fprintf(stdout,"# WEBER : %g\n", WEBER);
fprintf(stdout,"# BETA : %g\n", BETA);
fprintf(stdout,"# OH : %g\n", OH);
fprintf(stdout,"# LY : %g\n", LY);
fprintf(stdout,"# DTMAX : %g\n", DTMAX);
fprintf(stdout,"# LEVEL : %d\n", LEVEL);
if (ADAPT!=0) {
fprintf(stdout,"# LEVELMAX : %d\n", LEVELMAX);
fprintf(stdout,"# LEVELMIN : %d\n", LEVELMIN);
}
}
run();
//MPI_Barrier (MPI_COMM_WORLD);
}
/****************************************
EVENTS
*************************************** */
/* Init event */
event init (t = 0) {
//CFL = 0.45;
// initial state
foreach() {
u.x[] = ( BETA );
u.y[] = 0.;
//f[] = ( (y<R) ? 1. : 0.);
f[] = 0.;
}
boundary ((scalar *){f,u});
}
#if 0
event acceleration (i++) {
face vector av = a;
foreach_face(x) {
av.x[] += BO;
}
}
#endif
// remove bubbles
event remove_bubbles_droplets ( i+=1 ) {
A.1 Código Basilisk Inicial 63
remove_droplets (f, minsize = 10, bubbles = true);
//remove_droplets (f, minsize = 10, bubbles = false);
}
#if 0
// Save interface
event interface(i+=10)
{
char name[200];
sprintf(name, "int-%02d",pid());
FILE * fp = fopen(name,"w");
//face vector s[];
output_facets (f, fp);
fclose(fp);
}
#endif
// Compute position of front of main jet
event front (i+=10)
{
scalar m[];
double THR = 1.e-2;
foreach()
m[] = (f[]>THR);
tag (m);
scalar c[];
foreach()
c[] = m[]==1 ? f[] : 0;
boundary({c});
scalar pos[];
position (c,pos,{1.,0.});

Continuar navegando