Universidad Nacional de Córdoba Facultad de Ciencias Exactas, Físicas y Naturales - Ingeniería Aeronáutica Tesis de Grado “Análisis de fluidos alrededor de cuerpos bidimensionales mediante simulaciones computacionales"
Autor: Jorge Darío Montes Director: Ing. Jorge O. García Año 2010
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
Índice General PORTADA INDICE LISTA DE FIGURAS LISTA DE TABLAS LISTA DE SIMBOLOS AGRADECIMIENTOS OBJETIVOS
i ii v viii ix xi xii
ECUACIONES FUNDAMENTALES - CONCEPTOS PREVIOS 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9
VOLUMEN DE CONTROL PRINCIPIO DE CONSERVACIÓN DE LA MASA FORMA INTEGRAL DEL TEOREMA DE LA CANTIDAD DE MOVIMIENTO FORMA INTEGRAL DEL TEOREMA DEL MOMENTO CINÉTICO FORMA INTEGRAL DEL PRINCIPIO DE CONSERVACIÓN DE LA ENERGÍA ECUACIONES DE NAVIER-STOKES FUERZAS EN UN PERFIL AERODINÁMICO NÚMERO DE REYNOLDS NÚMERO DE MACH
1 1 1 2 2 3 4 7 8
INTRODUCCIÓN AL CFD 2.1 2.2 2.3
CONCEPTOS PREVIOS PROCEDIMIENTOS BÁSICOS EN LA IMPLEMENTACIÓN DEL CFD EL MÉTODO DE VOLÚMENES FINITOS:
10 12 13
CASOS ESTUDIADOS 3.1 3.2 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.4
VALIDACIÓN CILINDRO BIDIMENSIONAL Geometría Malla Condiciones de contorno Ejecuciones realizadas Número de Strouhal Coeficiente de resistencia y capa límite Comparación con fotografías experimentales Conclusiones PERFIL AERODINÁMICO NACA 0009 Geometría Malla Condiciones de contorno Ejecuciones realizadas Coeficiente de sustentación Coeficiente de resistencia Conclusiones PERFIL AERODINÁMICO NACA 0012
16 18 18 18 19 20 28 32 38 39 40 40 40 42 42 42 43 45 46
ii
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.6 3.4.7 3.5 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.5.6 3.5.7
Geometría Malla Condiciones de contorno Ejecuciones realizadas Coeficiente de sustentación Coeficiente de resistencia: Conclusiones PERFIL AERODINÁMICO NACA 4412 Geometría Malla Condiciones de contorno Ejecuciones realizadas Coeficiente de sustentación Coeficiente de resistencia Conclusiones
46 46 48 48 48 49 51 52 52 52 54 54 54 55 57
APENDICE A – SOFTWARE OPENFOAM A.1 A.2 A.3 A.4 A.5 A.6 A.7 A.8
INSTALACIÓN PASOS A SEGUIR UTILIZACIÓN DEL SOFTWARE OPENFOAM CARACTERÍSTICAS DE OPENFOAM ESTRUCTURA DE UN CASO DE OPENFOAM DESCRIPCIÓN DE LAS PARTES DE UN CASO DE ESTUDIO DESCRIPCIÓN DE SOLVERS UTILIZADOS UNIDADES FÍSICAS
59 59 66 66 67 68 69 69
APENDICE B – SOLVERS DE OPENFOAM B.1 SOLVER POTENTIALFOAM B.1.1 /case/system/controlDict B.1.2 /case/system/fvSolution B.1.3 /case/system/fvSchemes B.1.4 /case/system/sampleDict B.1.5 /case/constant/boundary B.1.6 /case/0/p B.1.7 /case/0/U B.1.8 Recomendación sobre el archivo U B.1.9 Generar un archivo de log con los resultados de pantalla B.1.10 Ejecutar automáticamente el solver B.2 SOLVER ICOFOAM B.2.1 /case/system/controlDict B.2.2 /case/system/fvSolution B.2.3 /case/system/fvSchemes B.2.4 /case/system/sampleDict B.2.5 /case/constant/boundary B.2.6 /case/constant/transportProperties B.2.7 /case/0/p B.2.8 /case/0/U B.2.9 Generar un archivo de log con los resultados de pantalla B.2.10 Ejecutar automáticamente el solver B.3 SOLVER SIMPLEFOAM
70 70 71 72 73 74 75 77 78 78 78 80 80 83 84 85 86 88 88 90 91 91 92
iii
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes B.3.1 /case/system/controlDict B.3.2 /case/system/fvSolution B.3.3 /case/system/fvSchemes B.3.4 /case/system/sampleDict B.3.5 /case/constant/boundary B.3.6 /case/constant/transportProperties B.3.7 /case/constant/turbulentProperties B.3.8 /case/constant/RASProperties B.3.9 /case/0/p B.3.10 /case/0/U B.3.11 /case/0/nuT B.3.12 /case/0/nuTilda B.3.13 Generar un archivo de log con los resultados de pantalla B.3.14 Ejecutar automáticamente el solver
92 95 96 97 98 100 101 104 104 106 107 108 109 109
APENDICE C – SOFTWARE GMSH C.1 C.2 C.3 C.4 C.4.1 C.4.2 C.5 C.6 C.6.1
INTRODUCCIÓN A LA GENERACIÓN DE LA MALLA CON GMSH INSTALACIÓN DE GMSH FUNCIONALIDADES DE GMSH MODULO GEOMÉTRICO Definir geometría con ficheros de texto Archivos de otros programas MÓDULO DE MALLADO COMPATIBILIDAD CON OPENFOAM Error en la conversión del archivo .msh
111 111 111 112 112 115 115 119 120
APENDICE D – SOFTWARE PARAVIEW D.1 D.2 D.3 D.4 D.4.1 D.4.2 D.4.3 D.4.4 D.4.5 D.4.6 D.4.7 D.4.8 D.5
POST-PROCESO FORMATO DE ARCHIVOS APARIENCIA DE PARAVIEW BARRAS Y VENTANAS DE HERRAMIENTAS Barra Menu Barra Main Controls Barra Active Variable Control Barra Camera Controls Barra VCR Controls Ventana Lookmarks Ventana Pipeline Browser Ventana Object Inspector EXPORTAR RESULTADOS
121 121 121 123 123 123 123 123 124 124 125 125 126
APENDICE E – EJECUCIÓN DE CASOS DE OPENFOAM E.1 E.2 E.3 NOTA
USO DEL SOLVER POTENTIALFOAM USO DEL SOLVER ICOFOAM USO DEL SOLVER SIMPLEFOAM IMPORTANTE:
REFERENCIAS
127 130 133 137 138
iv
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
Lista de Figuras Figura 1.1 – Fuerzas Actuantes en un avión en vuelo Figura 1.2 - Descomposición de esfuerzos Figura 2.1 – Ensayo CFD a un automóvil de fórmula uno Figura 2.2 – Aplicación de CFD al ciclismo de competición Figura 2.3 – (a) Esquema de Celda Centrada (b) Esquema de Celda y Vértice Figura 3.1 – Geometría y contorno del cilindro bidimensional Figura 3.2 – Malla del cilindro bidimensional Figura 3.3 – Geometría y contorno del cilindro bidimensional Figura 3.4 – Cilindro 2D Campo de Velocidades Re=30 Figura 3.5 – Cilindro 2D Campo de Presiones Re=30 Figura 3.6 – Cilindro 2D Campo de Velocidades Re=40 Figura 3.7 – Cilindro 2D Campo de Presiones Re=40 Figura 3.8 – Cilindro 2D Campo de Velocidades Re=50 Figura 3.9 – Cilindro 2D Campo de Presiones Re=50 Figura 3.10 – Cilindro 2D Campo de Velocidades Re=100 Figura 3.11 – Cilindro 2D Campo de Presiones Re=100 Figura 3.12 – Cilindro 2D Campo de Velocidades Re=200 Figura 3.13 – Cilindro 2D Campo de Presiones Re=200 Figura 3.14 – Cilindro 2D Campo de Velocidades Re=500 Figura 3.15 – Cilindro 2D Campo de Presiones Re=500 Figura 3.16 – Cilindro 2D Campo de Velocidades Re=1000 Figura 3.17 – Cilindro 2D Campo de Presiones Re=1000 Figura 3.18 – Cilindro 2D Campo de Velocidades Re=2000
v
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
Figura 3.19 – Cilindro 2D Campo de Presiones Re=2000 Figura 3.20 – Comportamiento del número de Strouhal para el cilindro 2D Figura 3.21 – Oscilaciones del coeficiente de sustentación para Re 100 Figura 3.22 – Oscilaciones del coeficiente de sustentación para Re 200 Figura 3.23 – Oscilaciones del coeficiente de sustentación para Re 500 Figura 3.24 – Oscilaciones del coeficiente de sustentación para Re 1000 Figura 3.25 – Oscilaciones del coeficiente de sustentación para Re 2000 Figura 3.26 – Coeficiente de sustentación para 70seg
vi
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
Figura 3.44 – Malla del perfil NACA 4412 Figura 3.45 – Coeficiente de sustentación en función del ángulo de ataque Figura 3.46 – Coeficiente de resistencia para distintos valores de Cl Figura 3.47 – Campo de velocidades para perfil NACA 4412 Figura A.1 – Estructura de un caso de OpenFOAM Figura C.1 – Mallado con el comando Extrude Figura C.2 – Uso del comando Transfinite Line = 5 Figura C.3 – Uso del comando Transfinite Line = 20 Figura C.4 – Cavidad con malla semi-estructurada con prismas triangulares Figura C.5 – Cavidad con malla no-estructurada con tetraedros Figura D.1 – Ventana de trabajo de ParaView Figura D.2 – Ventana de trabajo de ParaView con un caso en estudio Figura D.3 – Barra de Menu Figura D.4 – Controles de abrir-guardar-conectar Figura D.5 – Controles de variable activa Figura D.6 – Control de la cámara Figura D.7 – Control del tiempo Figura D.8 – Visualización 3D Figura D.9 – Navegador de objetos Figura D.10 – Opciones de filtros y vistas
vii
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
Lista de Tablas
Tabla 3.1 – Comparación de los números de Strouhal Tabla 3.2 – Comparación de los coeficientes de resistencia Tabla 3.3 – Coeficiente de sustentación en función del ángulo de ataque Tabla 3.4 – Coeficiente de resistencia para distintos valores del Cl Tabla 3.5 – Coeficiente de sustentación en función del ángulo de ataque Tabla 3.6 – Coeficiente de resistencia para distintos valores del Cl Tabla 3.7 – Coeficientes de sustentación en función del ángulo de ataque Tabla 3.8 – Coeficiente de resistencia para distintos valores de Cl
viii
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
Lista de Símbolos ∂ ∂t t
: tiempo
ρ
: densidad
τ
: volumen de control
V
: vector velocidad
n
: vector normal unitario
σ
: elemento de la superficie de control
Σ
: superficie de control
R
: resultante de las fuerzas externas
r
: radio vector
M
: resultante de los momentos externos
Q
: calor
T u
: potencia suministrada por el fluido
D Dt
: derivada parcial respecto del tiempo
: energía interna : derivada sustancial respecto al tiempo
K p
: campo vectorial
∇
: operador nabla
µ
: viscosidad dinámica
L
: fuerza de sustentación
N
: fuerza normal a la cuerda del perfil
A
: fuerza paralela a la cuerda del perfil
α
: ángulo de ataque
D
: fuerza de resistencia aerodinámica
: presión estática local
ix
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
ρ∞
: densidad de la corriente libre
V∞
: velocidad de la corriente libre
S
: superficie de referencia
CL
: coeficiente de sustentación tridimensional
Cl
: coeficiente de sustentación bidimensional
CD
: coeficiente de resistencia tridimensional
Cd
: coeficiente de resistencia bidimensional
CM
: coeficiente de momento de cabeceo tridimensional
Cm
: coeficiente de momento de cabeceo bidimensional
l
: longitud de referencia
q∞
: presión dinámica
Cp
: coeficiente de presión
p∞
: presión estática de la corriente libre
Re ν
: número de Reynolds : viscosidad cinemática
M a
: velocidad del sonido
ST
: número de Strouhal
ϖ
: frecuencia de desprendimiento
U∞
: magnitud de la velocidad de la corriente fluida
Co
: número de Courant
∆t
: paso de tiempo dado
∆x
: longitud de la celda en la dirección de la velocidad
U∞
: magnitud de la velocidad de la corriente fluida
: número de Mach
x
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
Agradecimientos En cuanto a la confección del presente trabajo y culminación de la carrera de Ingeniería Aeronáutica, es de destacar que se debe a un gran esfuerzo personal y al apoyo de mis padres y de mis familiares más cercanos, quienes siempre confiaron en mí, alentándome y dándome fuerza para que pudiera terminar con esta etapa de mi vida. También debo destacar el apoyo de mis amigos personales y mis compañeros de carrera que también gracias a ellos, seguí adelante. Otro agradecimiento sería para los docentes, que gracias a su apoyo me ayudaron a crecer intelectualmente y a desarrollarme como persona y como futuro profesional. Y por último me gustaría agradecer al director de mi tesis de grado, que confió en mi persona para lograr objetivos que al principio parecían lejanos y también me ayudó en situaciones difíciles para seguir con este trabajo. Una cosa para tener en cuenta es que “sin un mínimo de esfuerzo, nada se logra” y que en este largo camino, hubo que dedicar mucho tiempo y sacrificar muchas cosas para llegar al final que es el presente trabajo. Gracias. Jorge Darío Montes
xi
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
Objetivos Los principales objetivos de este trabajo son los siguientes: -
Conocer los pasos básicos en el campo de la mecánica de los fluidos computacional. Implementar el uso de programas computacionales de licencia libre y gratuita para modelar problemas físicos reales. Validar los resultados numéricos computacionales obtenidos mediante los datos experimentales conocidos de antemano. Generar un cierto adiestramiento en el uso del software OpenFOAM para luego volcarlo en una guía de usuario.
xii
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
1
1.1
Ecuaciones fundamentales - Conceptos previos
Volumen de control
Un volumen de control se define como un volumen arbitrario del espacio a través del cual pasa el fluido en movimiento. La superficie que delimita al volumen de control se denomina superficie de control y es siempre una superficie cerrada.
1.2
Principio de conservación de la masa
Es un principio básico de la mecánica clásica, y se expresa diciendo que "la masa de un punto material, y por lo tanto de un sistema de puntos materiales no se altera por efectos del movimiento" (Calvi, 2003). Este principio es un resumen conciso de las observaciones experimentales, estando ausentes los movimientos con velocidades del orden de la velocidad de la luz y las reacciones nucleares. La ecuación en su forma integral es:
∂ ∫τ ∂t ρdτ = −∫∫Σ ρV ⋅ n dσ
(1.1)
La interpretación física sería: "la variación de la masa dentro del volumen de control es igual al flujo neto de masa a través de la superficie de control" (Calvi, 2003). Si el movimiento es estacionario con respecto a un sistema de referencia fijo al volumen de control, todas las propiedades del fluido, incluida la densidad, deben permanecer invariables en el tiempo, por lo tanto se tiene:
∫∫ ρV ⋅ n dσ = 0
(1.2)
Σ
1.3
Forma integral del teorema de la cantidad de movimiento
1
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes Para una referencia inercial, la segunda ley del movimiento de Newton se expresa de la manera siguiente: "la derivada con respecto al tiempo de la cantidad de movimiento resultante de un sistema material cualquiera es igual, en cada instante, a la resultante de las fuerzas exteriores aplicadas al sistema" (Calvi, 2003). La ecuación es:
∂ ∫τ ∂t ( ρV )dτ + ∫∫Σ V ( ρV ⋅ n )dσ = R
(1.3)
Esta ecuación expresa que: "la resultante de las fuerzas externas que actúan sobre el fluido contenido dentro del volumen de control, es igual a la integral de la variación local de la cantidad de movimiento dentro del volumen de control, más el flujo neto de cantidad de movimiento a través de la superficie de control" (Calvi, 2003).
1.4
Forma integral del teorema del momento cinético
Para una referencia respecto al tiempo cualquiera es igual aplicadas al sistema"
inercial, el teorema se expresa: "la derivada con del momento cinético de un sistema material al momento resultante de las fuerzas exteriores (Calvi, 2003).
Por ello se tiene:
∂ ∫τ ∂t ( ρV × r )dτ + ∫∫Σ (V × r )( ρV ⋅ n )dσ = M
(1.4)
Otra forma de expresar sería: "el momento resultante de las fuerzas que en el instante t, actúan sobre el fluido contenido dentro del volumen de control, es igual a la variación total del momento cinético del fluido contenido dentro del volumen de control más el flujo neto de momento cinético a través de la superficie de control” (Calvi, 2003).
1.5
Forma integral del principio de conservación de la energía
El principio de la conservación de la energía expresa que: “la diferencia entre el gradiente de transferencia de calor a través de la superficie de
2
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes control y la potencia suministrada por el fluido contenido dentro del volumen de control es igual a la integral de la variación local de energía dentro del volumen de control más el flujo neto de energía a través de la superficie de control” (Calvi, 2003):
∂Q ∂T ∂ − = ∫ [ ρ ( 1 2 V 2 + u )]dt + ∫∫ ( 1 2V 2 + u )( ρV ⋅ n )dσ ∂t ∂t τ ∂t Σ 1.6
(1.5)
Ecuaciones de Navier-Stokes
Si se disponen de las expresiones que relacionan al campo de las tensiones debidas a la viscosidad con el campo de las velocidades, se puede establecer el valor de la presión dentro de la ecuación de cantidad de movimiento como función de las magnitudes cinemáticas que caracterizan el movimiento. Expresando la ecuación de la variación de la cantidad de movimiento en forma vectorial para flujo isotérmico y laminar queda:
ρ
DV = ρK − ∇p + µ ( 13 V ∇ ⋅ V + ∇ 2V ) Dt
(1.6)
En donde:
ρ
DV : es la resultante de las fuerzas inerciales por unidad de volumen Dt
ρK
: es la resultante de las fuerzas másicas por unidad de volumen
− ∇p
: es la resultante de las fuerzas de presión estática por unidad de volumen
µ ( 1 3 V ∇ ⋅ V + ∇ 2V )
: es la resultante de las fuerzas viscosas por unidad de
volumen Las siguientes ecuaciones escalares se las denominan ecuaciones de Navier-Stokes bajo la forma de Euler:
3
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
ρ(
∂u ∂u ∂u ∂u ∂p 1 ∂ +u +v + w ) = ρK x − + 3 µ (∇ ⋅ V ) + µ∇ 2u ) ∂t ∂x ∂y ∂z ∂x ∂x
(1.7)
ρ(
∂v ∂v ∂v ∂v ∂p + u + v + w ) = ρK y − + ∂t ∂x ∂y ∂z ∂y
(1.8)
ρ(
∂w ∂w ∂w ∂w ∂p 1 ∂ +u +v + w ) = ρK z − + 3 µ (∇ ⋅ V ) + µ∇ 2 w) ∂t ∂x ∂y ∂z ∂z ∂z
1
3
µ
∂ (∇ ⋅ V ) + µ∇ 2v ) ∂y
(1.9)
Las ecuaciones anteriores en conjunto con la ecuación de conservación de la masa, la ecuación de estado y la de la variación de la viscosidad con la densidad determinan la presión, la densidad y las componentes de la velocidad para el flujo isotérmico y laminar de un fluido (Calvi, 2003).
1.7
Fuerzas en un perfil aerodinámico
La fuerza resultante que surge de sumergir un perfil aerodinámico en una corriente fluida R, se puede descomponer en una fuerza perpendicular a la dirección de la velocidad de la corriente libre, la sustentación L, y una fuerza en la dirección de la velocidad de la corriente, llamada resistencia D, (Kundu y Cohen, 2010). En el diseño de los aviones, las alas se fabrican de acuerdo a distintos criterios y necesidades, ellas se fabrican acorde a un determinado perfil aerodinámico, si el avión está volando en vuelo recto y nivelado, la resistencia aerodinámica está equilibrada con la tracción del motor y la sustentación se equilibra con el peso del avión (ver figura 1.1).
4
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
Figura 1.1 – Fuerzas Actuantes en un avión en vuelo
Un diagrama de la descomposición de la fuerza R actuante sobre el perfil se muestra en la figura 1.2, en la que se nota que la resultante R se puede descomponer tanto en sus partes normal y paralela a la velocidad de la corriente libre como también normal y paralela a la cuerda del perfil.
Figura 1.2 - Descomposición de esfuerzos
5
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes El ángulo de ataque α se define como el ángulo entre la cuerda del perfil y la dirección de la velocidad de la corriente fluida (Anderson, 2001). Una formulación de las fuerzas de sustentación y resistencia se tiene que:
L = N cos α − Asenα
(1.10)
D = Nsenα + A cos α
(1.11)
Si se realiza una integración de las presiones y de las tensiones de corte sobre el perfil, se podrá obtener los coeficientes aerodinámicos (Kundu y Cohen, 2010). En general, en aerodinámica se suele trabajar con estos coeficientes adimensionales que dan una idea general del comportamiento de una magnitud sin importar las unidades empleadas. Se definen entonces los coeficientes de sustentación, resistencia y momento respectivamente:
CL =
L 1 ρ V 2S 2 ∞ ∞
(1.12)
CD =
D 1 ρ V 2S 2 ∞ ∞
(1.13)
CM =
M 1 ρ V 2 Sl 2 ∞ ∞
(1.14)
6
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes El coeficiente de sustentación es muy útil a la hora de evaluar el comportamiento de un cuerpo aerodinámico, como ser un perfil, un ala, etc, en cuanto a “que cantidad sustenta” ese mismo cuerpo para ciertas condiciones del campo de movimiento. El coeficiente de resistencia, refleja la resistencia al avance que el cuerpo ofrece al estar sumergido dentro de una corriente fluida. Los parámetros S y l se refieren a la superficie de referencia y a una longitud de referencia. Por ejemplo si se estudia un avión, la superficie de referencia será la planta alar y la longitud será la cuerda media aerodinámica, pero si se trata de una esfera, la superficie de referencia será la superficie frontal y la longitud de referencia será el diámetro de la misma (Anderson, 2001; Abbott y Doenhoff, 1959). De acuerdo a lo mencionado anteriormente, se tiene la necesidad de determinar un parámetro que se denomina presión dinámica y se expresa de la siguiente manera:
q∞ =
1 ρ ∞V∞ 2 2
(1.15)
De esta manera se podrá definir otro coeficiente de gran importancia en los cálculos aerodinámicos, este es el coeficiente de presión:
Cp =
p − p∞ q∞
(1.16)
El uso de estos coeficientes nos permite comparar resultados ya sea numéricos ó mediante experimentos sin necesidad de preocuparse por el sistema de unidades utilizado, siempre y cuando se mantengan las condiciones de similitud.
1.8
Número de Reynolds
El número de Reynolds se define como la relación entre las fuerzas másicas y las fuerzas viscosas. La fórmula es la siguiente:
Re =
ρ ⋅ V∞ ⋅ l V∞ ⋅ l = µ ν
(1.17)
7
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes En donde:
ρ:
es la densidad del fluido
V∞ : es la magnitud de la velocidad de la corriente fluida
l:
es la longitud de referencia (para un perfil es la cuerda, para un cilindro es el diámetro)
µ:
es la viscosidad dinámica
ν:
es la viscosidad cinemática, es la relación entre la viscosidad dinámica y la densidad. Un número de Reynolds alto implica que las fuerzas de inercia ó másicas son preponderantes, mientras que cuando el número de Reynolds es bajo, se deduce que son las fuerzas viscosas las que predominan. Cuando se realizan trabajos experimentales, se utilizan modelos a escala pequeña y se necesita que sus resultados sean comparables con un modelo de escala real, por ello en número de Reynolds para ambos casos (el real y el experimental) deberá cumplirse su igualdad. Cuando esto sucede, se dice que el experimento tiene similitud dinámica con la realidad (Shames, 1995).
1.9
Número de Mach
El número de Mach se define como la relación entre la velocidad local del fluido y la velocidad del sonido propia del fluido en cuestión. Su formulación es la siguiente:
M=
V∞ a
(1.18)
En donde:
a:
es la velocidad del sonido propia del fluido
V∞ : es la magnitud de la velocidad de la corriente fluida
8
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes Un dato importante que otorga el número de Mach, es que cuando su valor está cerca o es mayor a 0.3, comienzan a presentarse efectos de compresibilidad del fluido (Shames, 1995).
9
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
2 2.1
Introducción al CFD Conceptos previos
Las siglas CFD provienen del inglés Computational Fluid Dynamics y significan dinámica de fluidos computacional. El CFD es el análisis de sistemas, en el que están presentes flujos de fluidos, transferencia de calor y fenómenos asociados tales como reacciones químicas, basado en simulaciones computacionales (Versteeg y Malalasekera, 1995). Algunos ejemplos son: -
aerodinámica de aeronaves y vehículos: sustentación y resistencia hidrodinámica de barcos plantas de energía: combustión en motores y turbinas de gas turbo-máquinas: flujo en partes rotantes, difusores ingeniería eléctrica y electrónica: equipos para enfriamiento procesos químicos efectos del viento en estructuras civiles ingeniería marina hidrología y oceanografía: flujo en ríos, estuarios y océanos meteorología: predicción climática ingeniería biomédica: flujos de sangre en arterias y venas
Todos estos ejemplos del uso del CFD son prueba de que la expansión de las áreas de estudio en cuanto al diseño se trata, ha crecido de gran manera (Versteeg y Malalasekera, 1995). En la figura 2.1 se muestra la aplicación del CFD al estudio del campo de movimiento de un automóvil de fórmula uno de alta gama, en el cual el más mínimo detalle cuenta en lo que se refiere al diseño.
10
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
Figura 2.1 – Ensayo CFD a un automóvil de fórmula uno
En la siguiente figura (figura 2.2) se muestra el caso del estudio del campo de movimiento de un ciclista. Los resultados probablemente se inclinarán a un nuevo diseño del casco o de la indumentaria utilizada por el atleta.
Figura 2.2 – Aplicación de CFD al ciclismo de competición
En general cuando se desea probar un diseño nuevo de algún artefacto que está sumergido en una corriente fluida (un edificio, un avión, un puente, etc) los diseñadores recurren a los ensayos en túneles de viento para evaluar las características y parámetros del diseño y ver si se requiere ajustar alguna parte del mismo. Como la tecnología en cuanto a software y hardware ha crecido de manera abrupta, los diseños se realizan en potentes computadoras y
11
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes complejos paquetes de software que permiten incluir en el modelo, todos los parámetros y hacer un seguimiento de sus partes integrantes. Por ello, también existen paquetes de software que permiten la simulación e interacción de fluidos, como así también reacciones químicas, combustión, etc, tanto de uso comercial con licencia paga como así también de uso libre con licencia gratuita y de libre distribución. Si bien en el caso de software de licencia gratuita no tiene un costo inicial, estos demandan una gran inversión de tiempo en el aprendizaje de los mismos ya que por su licencia gratuita, no traen manuales detallados sino con breves explicaciones de las funciones generales. Lo de licencia gratuita se refiere al uso, modificación y distribución sin cargo alguno, pero en cuanto al soporte técnico y capacitación por parte de los programadores, se tiene un costo económico que no todos los usuarios están dispuestos y/o son capaces de alcanzar, sin mencionar que los cursos de capacitación no se realizan en países latinoamericanos. Una de las ventajas que un usuario tiene al utilizar un código CFD, es que le permite, una vez que ha adquirido cierta práctica con el mismo, realizar ajustes y simular condiciones que en un túnel de viento convencional requieren horas de preparación de los instrumentos y del modelo, siendo también impracticables algunos tipos de simulaciones y de un costo económico mayor. Un ejemplo podría ser que, en un determinado caso, se requiere variar la densidad del fluido en movimiento, si estamos en presencia de un túnel de viento, esto se puede lograr presurizando ó cambiando la temperatura dentro del mismo (que es algo difícil de lograr) mientras que en un código CFD, solo cambiando los parámetros de la densidad del ensayo y del solver, ya se tiene el modelo listo para correr, sin mencionar las posibilidades que se tiene en cuanto a la toma de datos, visualizaciones, etc. Pero no todo en CFD es color de rosa, sino que dependiendo del software utilizado, hay que lidiar y aprender a generar la geometría, lo más parecida al modelo, luego hay que discretizar ese volumen ó superficie en una malla para que el software CFD pueda leerla e interpretarla y que realice los cálculos, y por último se tiene a la visualización y obtención de los resultados ya sea con tablas, gráficos, etc.
2.2
Procedimientos básicos en la implementación del CFD
Podemos simplificar todo esto en 4 etapas básicas: 1) 2) 3) 4)
Generación de la geometría. Creación de la malla. Utilización del solver adecuado. Visualizar los resultados mediante tablas, gráficos, etc.
12
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes Los pasos 1) y 2) se conocen como el “pre-proceso”, el paso 3) se denomina el “proceso ó resolución” de los datos y el paso 4) se denomina “post-proceso”. Por ende, se requiere un paquete de software que le permita al usuario realizar todas estas tareas ó de otra manera tener varios software que realicen una o varias de estas tareas para que luego el “output” o salida de un determinado software sea compatible con el “input” o entrada del otro y así se continúa hasta terminar con el proceso. Básicamente, si se tiene un software mallador, el archivo de salida que contiene los datos de la malla, debería ser interpretado por el paso siguiente (el proceso del solver), que pueda leer e interpretar la malla para que se realicen los cálculos en forma correcta. Por otro lado, si se cuenta con un software post-procesador, lo que este realiza, es la visualización de los resultados y de la extracción de algunos datos de interés. En general, los experimentos de laboratorio tienen un alto costo ya que los modelos que se ensayan deben ser lo más parecido al prototipo en escala real, cualquier error dimensional llevará a resultados indeseados, también se tiene que los instrumentos de medición como las sondas de presión deben estar calibradas y colocadas en el modelo de manera que no perturbe el flujo alrededor de él. Otra cuestión a tener en cuenta es la puesta en marcha de los túneles de viento, las grandes potencias que requieren, demandan grandes consumos de energía eléctrica y por ende un alto costo económico. Por otro lado, un paquete CFD del tipo comercial de uso privado, puede proveer datos en pocas horas (dependiendo de la complejidad del modelo), datos relevantes en cuanto a la distribución de las presiones en el modelo y dar puntos claves en su diseño a un bajo costo, sin tener presente que se podrá optar por un software libre que no tiene costo alguno (siempre y cuando el usuario tenga la habilidad en el uso).
2.3
El método de volúmenes finitos:
El método de volúmenes finitos (FVM) utiliza directamente las leyes de conservación, o sea la formulación integral de las ecuaciones de NavierStokes. Fue utilizado por primera vez por McDonald para simulaciones de flujo bidimensional no viscoso (Blazek, 2001). El FVM discretiza las ecuaciones con la ayuda de la previa división del espacio físico en un número arbitrario de volúmenes de control
13
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes poliédricos, se sabe que un poliedro es un cuerpo geométrico de caras planas que encierra a un volumen finito. Para recordar, la ecuación de Navier-Stokes “define el intercambio (o sea el flujo) de masa, cantidad de movimiento y de energía a través de la superficie de un volumen de control que está fijo en el espacio” (Blazek, 2001). Existen varias formas para definir la forma y la posición del volumen de control en referencia a la malla. Se pueden apreciar dos casos particulares:
Esquema
de
Celda
Centrada (ver figura 2.3a): en este caso las
cantidades se almacenan en los centroides de las celdas, por ello el volumen de control coincide con la malla de la celda.
Esquema de Celda y Vértice (ver figura 2.3b): en este caso, las variables se almacenan en los puntos de cruce de la malla, por ello el volumen de control se puede interpretar como la unión de las celdas que contienen al punto de cruce o también como si fuera otro volumen de control centrado en el punto de cruce.
Figura 2.3 – (a) Esquema de Celda Centrada (b) Esquema de Celda y Vértice
La principal ventaja del FVM es que la discretización espacial se lleva a cabo directamente sobre el espacio físico, por ello no hay inconvenientes en cuanto a transformaciones entre sistemas de coordenadas. Otra ventaja del FVM es que es muy flexible y el mismo puede ser implementado en mallas estructuradas como en las no-estructuradas (Blazek, 2001).
14
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes De aquí se deduce que el FVM es aplicable para los casos de flujos en geometrías complejas. Como se sabe que el FVM se basa en la discretización directa de las leyes de conservación de la masa, cantidad de movimiento y de energía bajo un esquema numérico, por esto se deduce que otra importante característica del método que es la capacidad de procesar correctamente las soluciones simplificadas de las ecuaciones gobernantes. Sin embargo, en el caso de las ecuaciones de Euler, se debe satisfacer una condición adicional que es la condición de la entropía. Esto es necesario porque evita que aparezcan fenómenos que no son físicamente posibles, como ser la disminución de la entropía (Blazek, 2001). Es interesante notar que bajo ciertas condiciones, se pueden obtener resultados con el FVM que son comparables con el método de las diferencias finitas (FDM) o también con el método de elemento finito (FEM) de bajo orden (métodos no tratados en este trabajo) (Blazek, 2001).
15
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
Casos estudiados 3.1
Validación
En este capítulo se ha puesto de manifiesto el uso de los programas computacionales de uso libre, como ser el software OpenFOAM que contiene el código CFD (OpenFOAM-1.6a, 2009), el software Gmsh para generar la geometría y el mallado (Gmsh 2.4.2, 2009), y el software ParaView para visualizar y manipular los resultados (ParaView 3.6.1, 2010). El análisis realizado por el código CFD de OpenFOAM utilizó el solver icoFoam y simpleFoam y se han comparado los resultados con los datos experimentales (Abbott y Doenhoff, 1959) bajo las mismas condiciones de similitud dinámica, geométrica y cinemática. Además se han utilizado otros paquetes de software de referencia, como ser el XFLR5 (Drela XFLR5, 2010) y el Java Applet Multifoil (MultiFoil, 2007) que también son de uso gratuito. Los casos estudiados son de flujo de aire alrededor de perfiles aerodinámicos y de un cilindro bidimensional a determinados valores del número de Reynolds. El primer caso se trata del cilindro bidimensional en el cual se ha utilizado un solver para un número de Reynolds bajo (flujo laminar) y se obtuvieron los valores del coeficiente de resistencia aerodinámica y de sustentación en función del número de Reynolds y del tiempo respectivamente. El segundo caso se trata de un perfil aerodinámico NACA0009, el mismo es un perfil de la serie 4, simétrico, con un espesor máximo del 9% del largo de la cuerda. Se ensayó el mismo a distintos ángulos de ataque para poder obtener las curvas de coeficiente de sustentación en función del ángulo de ataque y también en función del coeficiente de resistencia, comúnmente llamada polar de resistencia. El tercer caso se trata de otro perfil de la serie 4, el NACA0012, este perfil es simétrico y tiene un espesor máximo del 12% del largo de la cuerda. El mismo se utiliza como estándar en la medición experimental e incluso como calibrador de túneles de viento a nivel mundial, ya que sus resultados se encuentran estudiados desde ya hace muchos años atrás y los valores obtenidos en el ensayo indican si el túnel de viento se encuentra en condiciones de operar correctamente.
16
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes El cuarto y último caso se trata de un perfil asimétrico de la serie 4, el NACA4412, este perfil tiene un espesor máximo del 12% del largo de la cuerda y su espesor máximo se encuentra al 40% de la cuerda. El hardware utilizado se basa en una computadora armada con un microprocesador Intel Core i3, con una placa madre Gigabyte H55MS2H, con 2Gb de memoria RAM, disco rígido de 320Gb, grabadora de DVD, lector de tarjetas y floppy, monitor CRT de 17 pulgadas, con teclado y mouse estándar. Como el hardware soporta la arquitectura de 64bit, se instaló inicialmente el sistema operativo Ubuntu Linux 10.04 64bit, pero al instalar el software CFD hubo problemas en la ejecución del software OpenFOAM 1.6 y se optó por la versión del sistema operativo Ubuntu Linux 10.04 32bit, en este caso ya no trajo problemas la instalación y ejecución del software OpenFOAM 1.6. El hecho de cambiar de la arquitectura del sistema operativo se debió a que la instalación propia del software CFD no sería una cuestión de minutos sino que requería de un adiestramiento en lo que se refiere a compilación de software bajo Linux, comandos específicos, etc. Se tiene presente que se sacrificó capacidad de proceso al cambiar de la arquitectura nativa de 64bit a 32bit, pero en los casos simples que se corrieron no se hubiesen encontrado grandes diferencias en los tiempos de ejecución ya que como el sistema operativo reconocía al microprocesador como si tuviera 4 núcleos, se corrían 4 casos a la vez, teniendo el factor crítico ó “cuello de botella” al disco rígido en cuanto a su velocidad de escritura y lectura. Además se contaba con el sistema operativo Microsoft Windows XP que podía arrancar en forma alternativa al sistema operativo Ubuntu para correr programas no nativos de Linux.
17
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
3.2
Cilindro bidimensional
El flujo alrededor de un cilindro (en sentido transversal) es uno de los casos más estudiados de la mecánica de los fluidos, como así el de la esfera y también de la placa plana. Algunos de ellos de estudian bajo la teoría de flujo potencial y también como ejemplos para desarrollar teorías acerca de la capa límite. El caso experimental del flujo alrededor de un cilindro otorga resultados interesantes para luego ser comparados con datos obtenidos mediante simulaciones numéricas.
3.2.1 Geometría Cantidad de puntos: 368 Cantidad de líneas: 15 Cantidad de superficies: 7 Cantidad de volúmenes: 1 Cantidad de grupos físicos (Physical Groups): 7 (arriba, abajo, entrada, salida, cilindro, laterales e internalField) Ancho: 1 Alto: 4 Largo: 22.5 Distancia al cilindro desde la entrada: 7 Diámetro del cilindro: 1 Origen del eje de coordenadas: en el centro del cilindro
Figura 3.1 – Geometría y contorno del cilindro bidimensional
3.2.2 Malla Cantidad de divisiones en las caras superior e inferior: 200 Cantidad de divisiones en las áreas de entrada y de salida: 100 Cantidad de divisiones del contorno del cilindro: 100 Escala puntual de mallado del cilindro: 0.01
18
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
Figura 3.2 – Malla del cilindro bidimensional
Cantidad Cantidad Cantidad Cantidad Cantidad
de de de de de
Nodos en las líneas: 1380 Nodos en las superficies: 24056 Triángulos: 49502 Cuadriláteros: 695 Prismas: 24751
3.2.3 Condiciones de contorno Se aplica la condición de no deslizamiento sobre las paredes del cilindro, las superficies superior e inferior del volumen de control tienen la condición de deslizamiento y sobre los laterales no se calcula nada.
Figura 3.3 – Geometría y contorno del cilindro bidimensional
19
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
3.2.4 Ejecuciones realizadas Se ensayó al cilindro bidimensional bajo distintos números de Reynolds con el solver icoFoam y se obtuvieron los datos del coeficiente de resistencia y el coeficiente de sustentación en función del número de Reynolds y del tiempo respectivamente.
3.2.4.1
Cilindro 2D – Re 30
En este caso, se presenta una estela por detrás del cilindro de una longitud de 7 veces el diámetro del cilindro. No hay presencia de vórtices ni de irregularidades en el flujo ya que se está en una condición laminar.
Figura 3.4 – Cilindro 2D Campo de Velocidades Re=30
Figura 3.5 – Cilindro 2D Campo de Presiones Re=30
20
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
3.2.4.2
Cilindro 2D – Re 40
Para esta condición, se tiene una estela de una longitud de más de 7 veces el diámetro del cilindro. Al igual que el caso anterior no presenta alteraciones en el flujo ya que se sigue con el régimen laminar.
Figura 3.6 – Cilindro 2D Campo de Velocidades Re=40
Figura 3.7 – Cilindro 2D Campo de Presiones Re=40
21
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
3.2.4.3
Cilindro 2D – Re 50
Este es un caso muy similar al anterior, estela larga sin alteraciones.
Figura 3.8 – Cilindro 2D Campo de Velocidades Re=50
Figura 3.9 – Cilindro 2D Campo de Presiones Re=50
22
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
3.2.4.4
Cilindro 2D – Re 100
Para el valor del número de Reynolds de 100, se tiene que a medida que el flujo se establece, comienza a alterarse levemente con movimientos alternativos de la estela. Existe la presencia de la calle de vórtices de Von Karman. El valor del coeficiente de resistencia sigue por encima de 1.5 y se puede apreciar que el movimiento alternativo del campo de presiones y por ende de velocidades causa una variación del coeficiente de sustentación del tipo alternativa en función del tiempo.
Figura 3.10 – Cilindro 2D Campo de Velocidades Re=100
Figura 3.11 – Cilindro 2D Campo de Presiones Re=100
23
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
3.2.4.5
Cilindro 2D – Re 200
Para esta condición de flujo, se tiene que es más notable la calle de vórtices de Von Karman y se presenta un leve incremento en la frecuencia del desprendimiento de los vórtices. Antes de que esto suceda, la estela toma un valor de su longitud que aparentemente es crítico para la formación de los vórtices.
Figura 3.12 – Cilindro 2D Campo de Velocidades Re=200
Figura 3.13 – Cilindro 2D Campo de Presiones Re=200
24
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
3.2.4.6
Cilindro 2D – Re 500
Ídem al caso anterior pero con efecto del desprendimiento de vórtices más intenso.
Figura 3.14 – Cilindro 2D Campo de Velocidades Re=500
Figura 3.15 – Cilindro 2D Campo de Presiones Re=500
25
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
3.2.4.7
Cilindro 2D – Re 1000
Ídem al caso anterior pero con efecto del desprendimiento de vórtices más intenso. La frecuencia del desprendimiento aumenta respecto al anterior valor anterior.
Figura 3.16 – Cilindro 2D Campo de Velocidades Re=1000
Figura 3.17 – Cilindro 2D Campo de Presiones Re=1000
26
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
3.2.4.8
Cilindro 2D – Re 2000
Ídem al caso anterior pero con efecto del desprendimiento de vórtices más intenso.
Figura 3.18 – Cilindro 2D Campo de Velocidades Re=2000
Figura 3.19 – Cilindro 2D Campo de Presiones Re=2000
27
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
3.2.5 Número de Strouhal El número de Strouhal es un número adimensional que relaciona el valor de la frecuencia del desprendimiento de los vórtices con la velocidad de la corriente y la longitud de referencia. Se ha demostrado que para un cilindro que embiste la corriente fluida en sentido transversal (por ejemplo un poste, un cable, etc) el número de Strouhal tiende al valor de aproximadamente 0.21 para un cierto rango del número de Reynolds menores a 5000 (Kundu y Cohen, 2010).
Figura 3.20 – Comportamiento del número de Strouhal para el cilindro 2D
Utilizando estos datos, es muy sencillo calcular la frecuencia de las oscilaciones a la que puede estar sometida una estructura cilíndrica. Por este fenómeno suele oírse el zumbido de los cables de energía eléctrica cuando los atraviesa una corriente de aire a cierta velocidad.
28
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes En la figura 3.20, se muestran los datos experimentales que se obtuvieron del número de Strouhal para distintos valores del número de Reynolds (NACA Report Nº1191, 1954). El número de Strouhal se expresa mediante la siguiente ecuación:
ST =
ϖ ⋅l U∞
(C1)
En donde:
ϖ
: es la frecuencia de desprendimiento [1/seg]
l
: es la longitud de referencia [m]
U∞
: es la magnitud de la velocidad de la corriente fluida [m/seg]
En el caso del cilindro bidimensional, la velocidad y la longitud de referencia se han tomado como unitarias para mayor claridad y simplicidad en los cálculos. La frecuencia se la puede calcular a través de un gráfico que relaciona el valor del coeficiente de sustentación con el tiempo (figura 3.26). En el mismo se observan las oscilaciones que sufre el cilindro y se mide el tiempo para que la oscilación cumpla un ciclo, se toma la inversa de ese valor de tiempo y así se obtiene la frecuencia. Como el resto de los factores que intervienen en el cálculo del número de Strouhal son de magnitud unitaria, el valor de la frecuencia coincide con el valor buscado del número de Strouhal. En las siguientes figuras se aprecian las oscilaciones del coeficiente de sustentación (gráficos de CL en abscisas y tiempo en ordenadas):
29
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes 1,0
Re 100
Cl
0,8 0,6 0,4 0,2
tiempo
0,0 0
10
20
30
40
50
60
70
80
90
100
-0,2 -0,4 -0,6 -0,8 -1,0
Figura 3.21 – Oscilaciones del coeficiente de sustentación para Re 100 1,0 Cl
Re 200
0,8 0,6 0,4 0,2
tiempo 0,0 0
10
20
30
40
50
60
70
80
90
100
-0,2 -0,4 -0,6 -0,8 -1,0
Figura 3.22 – Oscilaciones del coeficiente de sustentación para Re 200 1,0 Cl
Re 500
0,8 0,6 0,4 0,2
tiempo 0,0 0
10
20
30
40
50
60
70
80
90
100
-0,2 -0,4 -0,6 -0,8 -1,0
Figura 3.23 – Oscilaciones del coeficiente de sustentación para Re 500
30
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes 1,0 Cl
Re 1000
0,8 0,6 0,4 0,2
tiempo
0,0 0
10
20
30
40
50
60
70
80
90
100
-0,2 -0,4 -0,6 -0,8 -1,0
Figura 3.24 – Oscilaciones del coeficiente de sustentación para Re 1000 1,0
Re 2000
Cl
0,8 0,6 0,4 0,2
tiempo
0,0 0
10
20
30
40
50
60
70
80
90
100
-0,2 -0,4 -0,6 -0,8 -1,0
Figura 3.25 – Oscilaciones del coeficiente de sustentación para Re 2000 1,0 Re 100
Cl
Re 200
0,8
Re 500 Re 1000
0,6
Re 2000 0,4 0,2
tiempo 0,0 70
71
72
73
74
75
76
77
78
79
-0,2 -0,4 -0,6 -0,8 -1,0
Figura 3.26 – Coeficiente de sustentación para 70seg
31
80
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes De la figura 3.26, se calculan los números de Strouhal para los diferentes números de Reynolds. La tabla 3.1 muestra un resumen de los valores obtenidos: Tabla 3.1 – Comparación de los números de Strouhal
St
Experimental 0.21
Re 100 0,20
Re 200 0,21
Re 500 0,22
Re1000 0,23
Re2000 0,23
Se puede observar de los valores calculados que, para un número de Reynolds entre 100 y 500, se encuentran valores del número de Strouhal cercanos al valor experimental (ver figura 3.20), mientras que si el valor del número de Reynolds pasa el valor 1000, el número de Strouhal tiende a aumentar levemente para los resultados numéricos.
3.2.6 Coeficiente de resistencia y capa límite Si se considera el flujo alrededor de un cilindro, el valor del coeficiente de resistencia (Cd) cuando el número de Reynolds es cercano a 10, es elevado y por ende los efectos viscosos dominan el flujo y toda la resistencia se debe a la fricción superficial. A medida que el número de Reynolds aumenta, los efectos viscosos se limitan cada vez más a la capa límite y existe una disminución del coeficiente de resistencia. Sin embargo, cuando se alcanza un valor del Reynolds de 5000, el Cd empieza a incrementarse un poco, Esto se debe a que el proceso de separación se mueve hacia las partes superior e inferior del cilindro, al mismo tiempo, la presión en la estela se vuelve cada vez menor. Esto se debe a que la velocidad de la corriente principal es mayor a medida que se aproxima a las partes superior e inferior del cilindro, de manera que de acuerdo con la ecuación de Bernouilli, la presión de la corriente libre se vuelve cada vez menor. Luego la separación ocurre cerca de las partes superior e inferior del cilindro con una pequeña recuperación de la presión en la estela, hay una presión menor en la parte posterior del cilindro, lo que produce una resistencia mayor. A medida que se incrementa el número de Reynolds, hay un descenso súbito de la curva para Reynolds 105 y 106. Para números de Reynolds por debajo del que corresponde al descenso súbito, la separación ocurre en el lado aguas abajo del cilindro y es de una capa límite laminar. Sin embargo, a medida que el número de Reynolds en la corriente principal se incrementa, el número de Reynolds en la capa límite también se incrementa, por ello, la capa límite experimenta una transición a una capa límite turbulenta antes de la separación. Una de las diferencias importantes entre el flujo en una capa límite laminar y el flujo en una capa límite turbulenta consiste en que el perfil de
32
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes velocidades de la capa límite turbulenta es más “empinado”. Esto significa que para la misma velocidad de la corriente libre y para el mismo espesor, el flujo en una capa límite turbulenta tiene apreciablemente más cantidad de movimiento que el flujo en una capa límite laminar. Por esta razón, el flujo en una capa límite turbulenta puede atravesar más fácilmente un gradiente de presión adverso de lo que puede hacerlo una capa límite laminar antes de que ocurra la separación, de manera que cuando la transición ocurre en la capa límite del cilindro, el punto de separación súbitamente se vuelve hasta otra posición aguas abajo en la superficie del cilindro, con el resultado de que la resistencia disminuye de manera apreciable. Luego, es la transición en la capa límite lo que explica el descenso súbito mencionado antes, en la curva del coeficiente de resistencia (Shames, 1995). En la figura 3.27, se puede observar el comportamiento del coeficiente de resistencia experimental para un cilindro bidimensional (NACA Report Nº619, 1937).
Figura 3.27 – Coeficiente de resistencia experimental (NACA Report 619, 1937)
33
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes 100
Cd Cd - Experimental
10
1
Re 0 0,1
1
10
100
1000
10000
100000
1000000
10000000
Figura 3.28 – Zona de estudio por las simulaciones numéricas
En la figura 3.28, se puede apreciar la región de estudio por el solver icoFoam para el caso del cilindro bidimensional para ese rango del número de Reynolds, la misma se encuentra marcada con un óvalo.
34
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes 10
Cd
Cd - OpenFOAM Cd - Experimental
1
Re 0 10
100
1000
10000
Figura 3.29 – Coeficiente de resistencia experimental y CFD (30
En la figura 3.29 se aprecian gráficamente los resultados que comparan los valores del coeficiente de resistencia experimental para cierto rango del número de Reynolds con los valores obtenidos mediante las simulaciones computacionales.
Error Relativo: es la relación entre la diferencia del valor obtenido y el de referencia respecto al de referencia, e indica en porcentaje, cuan lejos está el valor calculado respecto al de referencia.
35
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
ErrorRELATIVO =
ValorCALCULADO − ValorREFERENCIA ValorREFERENCIA
(C2)
En donde:
ValorCALCULADO : es el valor que se obtiene como resultado de la simulación ValorREFERENCIA : es un valor de referencia, por ejemplo el experimental En la tabla 3.2 se muestran comparativamente los resultados obtenidos junto con su error relativo.
Tabla 3.2 – Comparación de los coeficientes de resistencia Re 30 40 50 100 200 500 1000 2000
Cd - Experimental 2,50 2,20 2,00 1,80 1,60 1,30 0,99 0,97
Cd - OpenFOAM 2,97 2,64 2,44 2,00 1,80 1,65 1,47 1,13
Error Relativo 18,69% 20,18% 21,88% 11,26% 12,33% 26,80% 48,02% 16,39%
Para tener una idea del campo de movimiento alrededor del cuerpo en estudio, se suele graficar la magnitud de la velocidad en el software ParaView mediante un gráfico de contornos. Se puede apreciar en la figura 3.30 comparando los resultados de las simulaciones para un número de Reynolds de 100 y de 200 para un tiempo total de 100 segundos. Es de notar que la formación de los vórtices es más acentuada y se genera más rápidamente para el Reynolds de 200 que para el de 100. Evidentemente, a número de Reynolds bajos, la presencia del efecto de la viscosidad es predominante.
36
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
Figura 3.30 – Contornos de Velocidades (izquierda Re=100, derecha Re=200)
37
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
3.2.7 Comparación con fotografías experimentales En las siguientes figuras se puede comparar los resultados experimentales con los de la simulación numérica para un número de Reynolds de 2000. En la figura 3.31, se nota la formación del enrollamiento de los vórtices en forma alternada (Van Dyke, 1982) y en la figura 3.32, muestra muy similares resultados obtenidos mediante la simulación numérica con el software OpenFOAM.
Figura 3.31 – Fotografía de un cilindro 2D a Re=2000, campo de velocidades
Figura 3.32 – Simulación de un cilindro 2D a Re=2000, campo de velocidades
38
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
3.2.8 Conclusiones Mediante las simulaciones computacionales, se puede apreciar que los valores obtenidos no difieren demasiado de los experimentales y que el campo de movimiento se asemeja a la realidad. Cabe destacar que el solver utilizado permitió simular las condiciones en un cierto rango del número de Reynolds ya que el mismo está limitado al régimen laminar. Por lo tanto si se quiere explorar el régimen turbulento, se deberá optar por otro solver. Para obtener mejores resultados, es probable que el refinamiento de la malla y la utilización del solver que incluye el modelo de turbulencia ayuden a disminuir el error relativo en cuanto al valor del coeficiente de resistencia y al número de Strouhal. Por ello se considera que los resultados obtenidos son buenos.
39
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
3.3
Perfil aerodinámico NACA 0009
En el presente trabajo se han simulado con OpenFOAM las condiciones de flujo alrededor del perfil NACA 0009 a distintos ángulos de ataque (0º, 5º, 10º y 12º) a un número de Reynolds de 3x106. Este es un perfil de la serie 4, simétrico con un espesor máximo del 9% de la cuerda. Los resultados son comparables con los datos experimentales del coeficiente de sustentación y de resistencia del libro Theory of Wing Sections (Abbott y Doenhoff, 1959), con el software de referencia XFLR5 (Drela XFLR5, 2010) que utiliza métodos integrales y con el Java Applet Multifoil (MultiFoil, 2007) que utiliza el método de los paneles para flujo potencial, son estos también de uso gratuito.
3.3.1 Geometría Cantidad de puntos: 412 Cantidad de líneas: 21 Cantidad de superficies: 9 Cantidad de volúmenes: 1 Cantidad de grupos físicos (Physical Groups): 7 (arriba, abajo, entrada, salida, perfil, laterales e internalField) Ancho: 1 Alto: 2 Largo: 3 Distancia al borde de ataque desde la entrada: 1 Cuerda del perfil: 1 Origen del eje de coordenadas: en el borde de ataque
3.3.2 Malla Cantidad de divisiones en las caras superior e inferior: 50 Cantidad de divisiones en las áreas de entrada y de salida: 50 Cantidad de divisiones del contorno del perfil: 300 Escala puntual de mallado del perfil: 0.01 Cantidad de Nodos en las líneas: 992 Cantidad de Nodos en las superficies: 20862 Cantidad de Triángulos: 42730 Cantidad de Cuadriláteros: 503 Cantidad de Prismas: 21365
40
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
Figura 3.33 – Geometría y contorno del perfil NACA 0009
Figura 3.34 – Malla del perfil NACA 0009
41
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
3.3.3 Condiciones de contorno Se aplica la condición de no deslizamiento sobre las paredes del perfil, la superficie superior e inferior del volumen de control tiene la condición de deslizamiento y tenemos la entrada y la salida del flujo.
3.3.4 Ejecuciones realizadas El perfil se ensayó bajo distintos ángulos de ataque y para un número de Reynolds de 3x106 con el solver simpleFoam y se obtuvieron los datos del coeficiente de resistencia y el coeficiente de sustentación en función del ángulo de ataque del perfil. El solver simpleFoam puede configurarse tanto para flujo laminar como para flujo turbulento, el mismo cuenta con varios modelos de turbulencia que se pueden configurar para aplicarse al caso en cuestión. En este caso y debido al elevado número de Reynolds, se utilizó el modelo de turbulencia de Spalart-Almaras (Blazek, 2001), que es un modelo de turbulencia de una sola ecuación.
3.3.5 Coeficiente de sustentación En la tabla siguiente se muestran los resultados de los cálculos realizados por las simulaciones, datos experimentales y de otros software de referencia:
Tabla 3.3 – Coeficiente de sustentación en función del ángulo de ataque alfa -12 -10 -5 0 5 10 12
Experimental -1,25 -1,00 -0,55 0,00 0,55 1,05 1,24
OpenFOAM -1,17 -1,03 -0,55 0,00 0,55 1,03 1,17
MultiFoil -1,40 -1,17 -0,59 0,00 0,59 1,17 1,40
XFLR5 -1,28 -1,09 -0,55 0,00 0,55 1,09 1,28
Error Relativo 6,10% 2,65% 0,38% 0,00% 0,38% 2,24% 5,35%
El error relativo calculado con los valores experimentales y el valor obtenido con el solver de OpenFOAM, es pequeño incluso para valores elevados del ángulo de ataque. En la figura 3.35 se puede observar el comportamiento del coeficiente de sustentación en función del ángulo de ataque.
42
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes 1,5
NACA0009
CL
1,0
0,5
alfa 0,0 -12
-7
-2
3
8
-0,5
Experimental -1,0
OpenFOAM MultiFoil XFLR5
-1,5
Figura 3.35 – Coeficiente de sustentación en función del ángulo de ataque
En la figura 3.35 se aprecia que el modelo simulado funciona muy bien para ángulos de ataque bajos y que recién para ángulos de ataque superiores a 10º se notan pequeñas diferencias en cuanto a los resultados obtenidos.
3.3.6 Coeficiente de resistencia En el cálculo del coeficiente de resistencia se debe tener especial cuidado en el modelado de la región que está afectada a los efectos de la viscosidad (capa límite). En el presente trabajo se utilizó un mallado básico, más fino en la región cercana al perfil y al borde de fuga sin tener en cuenta la región de la estela. Es probable que por esas razones, el
43
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes valor del coeficiente de resistencia esté alejado del valor correcto para el número de Reynolds de la simulación. En la tabla siguiente se muestran los resultados:
Tabla 3.4 – Coeficiente de resistencia para distintos valores del Cl Cl -1,17 -1,03 -0,55 0,00 0,55 1,03 1,17
Experimental 0,019 0,014 0,008 0,006 0,008 0,014 0,019
OpenFOAM 0,127 0,090 0,033 0,015 0,033 0,090 0,127
XFLR5 0,016 0,013 0,007 0,004 0,007 0,013 0,016
1,50
NACA0009 Cl 1,00 Experimental OpenFOAM
0,50
XFLR5
0,00 0,000
0,020
0,040
0,060
0,080
0,100
0,120
Cd -0,50
-1,00
-1,50
Figura 3.36 – Coeficiente de resistencia para distintos Cl
Cabe destacar que los errores relativos no se calcularon ya que la diferencia de las simulaciones con los datos experimentales era notable.
44
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes Según la figura 3.36, la magnitud de los resultados numéricos no coincide con los datos experimentales, pero se puede ver que la tendencia de la curva trata de copiar a los mismos.
Figura 3.37 – Campo de velocidades para perfil NACA 0009 para 0º, 5º, 10º y 12º
3.3.7 Conclusiones Si bien los resultados obtenidos mediante la simulación numérica con OpenFOAM difieren del experimental en cuanto al cálculo del coeficiente de resistencia, la curva del coeficiente de sustentación en función del ángulo de ataque tiene una tendencia muy similar al experimental e incluso los errores relativos son pequeños. La curva del coeficiente de sustentación en función del ángulo de ataque se puede tomar como válida mientras que la del coeficiente de resistencia en función del coeficiente de sustentación requiere una nueva modelación. Una mejora que se le puede realizar al modelo es aplicar otro tipo de malla en la región de la capa límite y también realizar simulaciones con otros modelos de turbulencia.
45
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
3.4
Perfil aerodinámico NACA 0012
Otro perfil que se ha simulado con OpenFOAM es el NACA 0012, que es un perfil simétrico con un espesor máximo del 12% de la cuerda, también es de la serie 4, para los distintos ángulos de ataque (0º, 5º, 10º y 12º) a un número de Reynolds de 3x106. Los resultados son comparables con los datos experimentales del coeficiente de sustentación y de resistencia del libro Theory of Wing Sections (Abbott y Doenhoff, 1959), con el software de referencia XFLR5 (Drela XFLR5, 2010) que utiliza métodos integrales y con el Java Applet Multifoil (MultiFoil, 2007) que utiliza el método de los paneles para flujo potencial, son estos también de uso gratuito.
3.4.1 Geometría Cantidad de puntos: 412 Cantidad de líneas: 21 Cantidad de superficies: 9 Cantidad de volúmenes: 1 Cantidad de grupos físicos (Physical Groups): 7 (arriba, abajo, entrada, salida, perfil, laterales e internalField) Ancho: 1 Alto: 2 Largo: 3 Distancia al borde de ataque desde la entrada: 1 Cuerda del perfil: 1 Origen del eje de coordenadas: en el borde de ataque
3.4.2 Malla Cantidad de divisiones en las caras superior e inferior: 50 Cantidad de divisiones en las áreas de entrada y de salida: 50 Cantidad de divisiones del contorno del perfil: 300 Escala puntual de mallado del perfil: 0.01 Cantidad de Nodos en las líneas: 992 Cantidad de Nodos en las superficies: 21082 Cantidad de Triángulos: 43170 Cantidad de Cuadriláteros: 503 Cantidad de Prismas: 21585
46
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
Figura 3.38 – Geometría y contorno del perfil NACA 0012
Figura 3.39 – Malla del perfil NACA 0012
47
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
3.4.3 Condiciones de contorno Se aplica la condición de no deslizamiento sobre las paredes del perfil, la superficie superior e inferior del volumen de control tiene la condición de deslizamiento y tenemos la entrada y la salida del flujo.
3.4.4 Ejecuciones realizadas El perfil se ensayó bajo distintos ángulos de ataque y para un número de Reynolds de 3x106 con el solver simpleFoam y se obtuvieron los datos del coeficiente de resistencia y el coeficiente de sustentación en función del ángulo de ataque del perfil. El solver simpleFoam puede configurarse tanto para flujo laminar como para flujo turbulento, el mismo cuenta con varios modelos de turbulencia que se pueden configurar para aplicarse al caso en cuestión. En este caso y debido al elevado número de Reynolds, se utilizó el modelo de turbulencia de Spalart-Almaras (Blazek, 2001), que es un modelo de turbulencia de una sola ecuación.
3.4.5 Coeficiente de sustentación En la tabla siguiente se muestran los resultados de los cálculos realizados por las simulaciones, datos experimentales y otros software de referencia:
Tabla 3.5 – Coeficiente de sustentación en función del ángulo de ataque alfa -12 -10 -5 0 5 10 12
Experimental -1,25 -1,05 -0,52 0,00 0,56 1,10 1,25
OpenFOAM -1,18 -1,03 -0,55 0,00 0,55 1,03 1,18
MultiFoil -1,43 -1,20 -0,60 0,00 0,60 1,20 1,43
XFLR5 -1,30 -1,12 -0,55 0,00 0,55 1,12 1,30
Error Relativo 5,78% 1,97% 6,70% 0,00% 0,92% 6,43% 5,78%
El error relativo calculado con los valores experimentales y el valor obtenido con el solver de OpenFOAM, es pequeño incluso para valores elevados del ángulo de ataque. En la figura 3.40 se puede observar el comportamiento del coeficiente de sustentación en función del ángulo de ataque.
48
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes 1,5
NACA0012
CL
1,0
0,5
alfa 0,0 -12
-7
-2
3
8
-0,5
Experimental -1,0
OpenFOAM MultiFoil XFLR5
-1,5
Figura 3.40 – Coeficiente de sustentación en función del ángulo de ataque
En la figura 3.40 se aprecia que el modelo simulado funciona bien para ángulos de ataque bajos y positivos, para ángulos de ataque superiores a 10º se notan pequeñas diferencias en cuanto a los resultados, para ángulos de ataque negativos existen diferencias del orden del 6%, lo cual es aceptable.
3.4.6 Coeficiente de resistencia Cuando se obtiene el coeficiente de resistencia se debe tener especial cuidado en el modelado de la región que está afectada a los efectos de la viscosidad (capa límite). En el presente trabajo se utilizó un mallado básico, más fino en la región cercana al perfil y al borde de fuga sin tener en cuenta la región de la estela. Es probable que por esas razones, el
49
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes valor del coeficiente de resistencia esté alejado del valor correcto para el número de Reynolds de la simulación. En la tabla siguiente se muestran los resultados:
Tabla 3.6 – Coeficiente de resistencia para distintos valores del Cl Cl -1,18 -1,03 -0,55 0,00 0,55 1,03 1,18
Experimental 0,022 0,014 0,008 0,005 0,008 0,014 0,022
OpenFOAM 0,105 0,074 0,031 0,017 0,031 0,074 0,105
XFLR5 0,014 0,011 0,007 0,005 0,007 0,011 0,014
1,50
NACA0012 Cl 1,00
Experimental OpenFOAM
0,50
XFLR5
0,00 0,000
0,020
0,040
0,060
0,080
0,100
0,120
Cd -0,50
-1,00
-1,50
Figura 3.41 – Coeficiente de resistencia para distintos Cl
Al igual que el caso anterior, los errores relativos no se calcularon ya que la diferencia de las simulaciones con los datos experimentales es evidente.
50
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes Según la figura 3.41, la magnitud de los resultados numéricos no coincide con los datos experimentales, pero se puede ver que la tendencia de la curva trata de copiar a los mismos, igual que el caso del perfil NACA 0009.
Figura 3.42 – Campo de velocidades para perfil NACA 0012 para 0º, 5º, 10º y 12º
3.4.7 Conclusiones Los resultados obtenidos mediante la simulación numérica con OpenFOAM difieren del experimental en cuanto al cálculo del coeficiente de resistencia, pero la curva del coeficiente de sustentación en función del ángulo de ataque tiene una tendencia similar incluso en el orden de magnitud con errores de hasta un 7%. Una mejora que se le puede realizar al modelo es aplicar otro tipo de malla en la región de la capa límite y del perfil, como así también realizar simulaciones con otros modelos de turbulencia para otros números de Reynolds.
51
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
3.5
Perfil aerodinámico NACA 4412
También, en el presente trabajo se han simulado con OpenFOAM las condiciones de flujo alrededor del perfil NACA 4412, es un perfil de la serie 4, asimétrico y con un espesor máximo del 12% ubicado al 40% de la cuerda a distintos ángulos de ataque (-12º, -10º, -5º, 0º, 5º, 10º y 12º) a un número de Reynolds de 3x106. Los resultados son comparables con los datos experimentales del coeficiente de sustentación y de resistencia del libro Theory of Wing Sections (Abbott y Doenhoff, 1959), con el software de referencia XFLR5 (Drela XFLR5, 2010) que utiliza métodos integrales y con el Java Applet Multifoil (MultiFoil, 2007) que utiliza el método de los paneles para flujo potencial, son estos también de uso gratuito.
3.5.1 Geometría Cantidad de puntos: 412 Cantidad de líneas: 21 Cantidad de superficies: 9 Cantidad de volúmenes: 1 Cantidad de grupos físicos (Physical Groups): 7 (arriba, abajo, entrada, salida, perfil, laterales e internalField) Ancho: 1 Alto: 2 Largo: 3 Distancia al borde de ataque desde la entrada: 1 Cuerda del perfil: 1 Origen del eje de coordenadas: en el borde de ataque
3.5.2 Malla Cantidad de divisiones en las caras superior e inferior: 50 Cantidad de divisiones en las áreas de entrada y de salida: 50 Cantidad de divisiones del contorno del perfil: 300 Escala puntual de mallado del perfil: 0.01 Cantidad de Nodos en las líneas: 992 Cantidad de Nodos en las superficies: 20596 Cantidad de Triángulos: 42198 Cantidad de Cuadriláteros: 503 Cantidad de Prismas: 21099
52
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
Figura 3.43 – Geometría y contorno del perfil NACA 4412
Figura 3.44 – Malla del perfil NACA 4412
53
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
3.5.3 Condiciones de contorno Se aplica la condición de no deslizamiento sobre las paredes del perfil, la superficie superior e inferior del volumen de control tiene la condición de deslizamiento y tenemos la entrada y la salida del flujo.
3.5.4 Ejecuciones realizadas El perfil se ensayó bajo distintos ángulos de ataque y para un número de Reynolds de 3x106 con el solver simpleFoam y se obtuvieron los datos del coeficiente de resistencia y el coeficiente de sustentación en función del ángulo de ataque del perfil. El solver simpleFoam puede configurarse tanto para flujo laminar como para flujo turbulento, el mismo cuenta con varios modelos de turbulencia que se pueden configurar para aplicarse al caso en cuestión. En este caso y debido al elevado número de Reynolds, se utilizó el modelo de turbulencia de Spalart-Almaras (Blazek, 2001), que es un modelo de turbulencia de una sola ecuación.
3.5.5 Coeficiente de sustentación En la tabla siguiente se muestran los resultados de los cálculos realizados por las simulaciones, datos experimentales y otros software de referencia:
Tabla 3.7 – Coeficientes de sustentación en función del ángulo de ataque alfa -12 -10 -5 0 5 10 12
Experimental -0,76 -0,63 -0,10 0,44 0,95 1,35 1,48
OpenFOAM -0,70 -0,56 -0,10 0,48 1,02 1,51 1,66
MultiFoil -0,93 -0,73 -0,02 0,52 1,12 1,70 1,95
XFLR5 -0,86 -0,64 -0,09 0,48 1,03 1,49 1,63
Error Relativo 8,05% 10,97% 1,43% 8,52% 7,55% 11,91% 12,08%
El error relativo calculado con los valores experimentales y el valor obtenido con el solver de OpenFOAM, es pequeño incluso para valores elevados del ángulo de ataque. En la figura 3.45 se puede observar el comportamiento del coeficiente de sustentación en función del ángulo de ataque.
54
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes 2,0
NACA4412
CL
1,5
1,0
0,5
alfa 0,0 -12
-7
-2
3
-0,5
8
Experimental OpenFOAM MultiFoil XFLR5
-1,0
Figura 3.45 – Coeficiente de sustentación en función del ángulo de ataque
En la figura 3.45 se aprecia que el modelo simulado funciona muy bien para ángulos de ataque bajos y que para ángulos de ataque superiores a 10º se notan pequeñas diferencias en cuanto a los resultados. También se puede notar que el coeficiente de sustentación nula para la simulación es muy similar al experimental (error relativo del 9%). A pesar de que este es un perfil asimétrico, los resultados tienden a seguir con la curva experimental.
3.5.6 Coeficiente de resistencia En el cálculo del coeficiente de resistencia se debe tener especial cuidado en el modelado de la región que está afectada a los efectos de la viscosidad (capa límite). En el presente trabajo se utilizó un mallado
55
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes básico, más fino en la región cercana al perfil y al borde de fuga sin tener en cuenta la región de la estela. Es probable que por esas razones, el valor del coeficiente de resistencia esté alejado del valor correcto para el número de Reynolds de la simulación. En la tabla siguiente se muestran los resultados.
Tabla 3.8 – Coeficiente de resistencia para distintos valores de Cl Cl -1,66 -1,51 -1,02 0,48 1,02 1,51 1,66
Experimental 0,021 0,008 0,008 0,008 0,021
OpenFOAM 0,109 0,083 0,037 0,021 0,037 0,083 0,109
XFLR5 0,017 0,014 0,006 0,006 0,007 0,011 0,013
2,00
NACA4412 1,50
Cl
1,00
Experimental OpenFOAM XFLR5
0,50
0,00 0,000
0,020
0,040
0,060
0,080
0,100
0,120
Cd -0,50
-1,00
-1,50
-2,00
Figura 3.46 – Coeficiente de resistencia para distintos valores de Cl
56
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes Cabe destacar que los errores relativos no se calcularon ya que la diferencia de las simulaciones con los datos experimentales era notable. Según la figura 3.46, la magnitud de los resultados numéricos no coincide con los datos experimentales, pero se puede apreciar que la tendencia de la curva trata de copiar a los mismos.
Figura 3.47 – Campo de velocidades para perfil NACA 4412
3.5.7 Conclusiones Si bien los resultados obtenidos mediante la simulación numérica con OpenFOAM difieren del experimental en cuanto al cálculo del coeficiente de resistencia, la curva del coeficiente de sustentación en función del ángulo de ataque tiene una tendencia similar incluso en el orden de magnitud aún con errores relativos del orden del 12% (máximo). En la figura que muestra el campo de movimiento, se ve que el patrón del flujo alrededor del cuerpo, copia bastante bien su forma y que a medida que se aumenta el ángulo de ataque se forma una estela por detrás del mismo.
57
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes Una mejora que se le puede realizar al modelo es aplicar otro tipo de malla en la región de la capa límite y también realizar simulaciones con otros modelos de turbulencia.
58
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
APENDICE A – Software OpenFOAM A.1
Instalación
La instalación de OpenFOAM requiere de conocimientos previos acerca del uso de un sistema operativo basado en Linux (p.e. Ubuntu) y de los comandos básicos de la consola (ó terminal) para la ejecución, instalación y acciones sobre archivos, permisos, configuración del sistema, etc (Stutz, 2004; Blum, 2008; Negus y Caen, 2008). En el presente trabajo, se ha utilizado como sistema operativo a Ubuntu 10.04 en su versión de 32bits (aunque el hardware sea de 64bits) y la versión de 32bits de los software de cálculo, simulaciones y post-proceso. Los archivos de instalación del sistema operativo como del solver CFD, se podrán descargar de sus respectivas páginas web oficiales: http://www.ubuntu.com/ http://www.openfoam.com/
(ó desde su repositorio)
http://sourceforge.net/projects/foam/files/
(repositorio)
Para la instalación de OpenFOAM-1.6 se requiere realizar distintas tareas, tanto en entorno gráfico y consola ó solamente desde la consola, recomendado solo para los usuarios avanzados (Stutz, 2004).
A.2
Pasos a seguir
Ingresar en el sitio web de OpenFOAM (ó repositorio) y descargar los siguientes archivos:
1º) 2º) 3º) 4º) 5º)
OpenFOAM-1.6.General.gtgz OpenFOAM-1.6.linuxGccDPOpt.gtgz OpenFOAM-1.6.linuxGccSPOpt.gtgz ThirdParty-1.6.General.gtgz ThirdParty-1.6.linuxGcc.gtgz
El directorio de usuario en Linux se encuentra en:
/home por ende si el usuario se llama dario, el directorio del usuario será:
59
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
/home/dario Esta carpeta es la que se utilizará como base para la instalación de OpenFOAM. Se sigue con la creación de un directorio llamado OpenFOAM dentro del directorio del usuario para que quede de la siguiente manera:
/home/dario/OpenFOAM donde dario es el nombre del usuario actual, podría ser otro, p.e. pepito y quedaría de la siguiente manera:
/home/pepito/OpenFOAM La creación del directorio OpenFOAM se puede hacer mediante entorno gráfico o por consola. Por consola:
mkdir OpenFOAM Una vez realizado esto, hay que copiar (o mover) los cinco archivos descargados anteriormente dentro de la carpeta OpenFOAM ya creada Por consola mediante el comando cp para copiar o mv para mover:
cp /home/Descargas/*.gtgz /home/dario/OpenFOAM ó
mv /home/Descargas/*.gtgz /home/dario/OpenFOAM Ahora hay que proceder a descomprimir los archivos que están en el formato .gtgz para que se pueda ejecutar el software. Si se tiene la aplicación instalada, se puede hacer desde el entorno gráfico, sino mediante la consola con el comando tar y las opciones zxf respetando el orden indicado:
tar tar tar tar tar
zxf zxf zxf zxf zxf
OpenFOAM-1.6.General.gtgz OpenFOAM-1.6.linuxGccDPOpt.gtgz OpenFOAM-1.6.linuxGccSPOpt.gtgz ThirdParty-1.6.General.gtgz ThirdParty-1.6.linuxGcc.gtgz
60
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes Una vez realizado este procedimiento, hay que verificar que se hayan creado las siguientes carpetas:
/home/dario/OpenFOAM/OpenFOAM-1.6
(y más carpetas dentro)
/home/dario/OpenFOAM/ThirdParty-1.6
(y más carpetas dentro)
/home/dario/OpenFOAM/dario-1.6
(y más carpetas dentro)
En el siguiente paso, lo que se hace es direccionar las variables de entorno que usa OpenFOAM que están en el archivo bash.bashrc en:
/home/dario/OpenFOAM/OpenFOAM-1.6/etc Esto se logra editando el archivo .bashrc que está dentro del directorio:
/home/dario Notar que el archivo .bashrc es un archivo oculto (por eso tiene un punto delante de su nombre), por ende si estamos en el entorno gráfico, hay que activar una opción para que se vean los archivos ocultos (Ctrl+H), o mediante la consola sería:
cd /home/dario ls -al Cuando se localiza el mencionado archivo, se puede abrir mediante el editor gedit haciendo doble clic sobre el archivo o mediante la consola:
sudo gedit .bashrc
(y poner la contraseña de usuario si se la pide)
Una vez abierto el archivo, hay que agregar al final del mismo (en la última fila) la siguiente línea tal cual como aparece (no olvidar del punto):
. /home/dario/OpenFOAM/OpenFOAM-1.6/etc/bashrc En donde dice dario deberá aparecer el nombre del usuario elegido. Una vez insertada esta línea en el archivo .bashrc, guardarlo y cerrar el editor. Para que tenga efecto, hay que reiniciar el terminal cerrándolo y abriéndolo otra vez, luego de estos pasos, se estaría en condiciones de ejecutar la prueba de instalación.
61
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes Ahora se puede iniciar la prueba de la instalación, ingresar en la terminal al siguiente directorio (con el comando cd):
cd /home/dario/OpenFOAM/OpenFOAM-1.6/bin y ahora se ejecuta la prueba de la instalación escribiendo el script siguiente:
./foamInstallationTest Aparecerán los siguientes datos acerca de la prueba de la instalación: Executing ./foamInstallationTest: Checking basic setup... --------------------------------------------------------------------------Shell: bash Host: dario-desktop OS: Linux version 2.6.32-21-generic --------------------------------------------------------------------------Checking main OpenFOAM env variables... --------------------------------------------------------------------------Environment_variable Set_to_file_or_directory Valid Crit --------------------------------------------------------------------------$WM_PROJECT_INST_DIR /home/dario/OpenFOAM yes yes $WM_PROJECT_USER_DIR /home/dario/OpenFOAM/dario-1.6 no no $WM_THIRD_PARTY_DIR /home/dario/OpenFOAM/ThirdParty-1.6 yes yes ------------------------------------------------------------------------Checking the OpenFOAM env variables set on the PATH... --------------------------------------------------------------------------Environment_variable Set_to_file_or_directory Valid Path Crit --------------------------------------------------------------------------$WM_PROJECT_DIR /home/dario/OpenFOAM/OpenFOAM-1.6 yes yes yes $FOAM_APPBIN ...M-1.6/applications/bin/linuxGccDPOpt yes yes yes $FOAM_SITE_APPBIN .../OpenFOAM/site/1.6/bin/linuxGccDPOpt no no $FOAM_USER_APPBIN ...o-1.6/applications/bin/linuxGccDPOpt no no $WM_DIR /home/dario/OpenFOAM/OpenFOAM-1.6/wmake yes yes yes --------------------------------------------------------------------------Checking the OpenFOAM env variables set on the LD_LIBRARY_PATH... --------------------------------------------------------------------------Environment_variable Set_to_file_or_directory Valid Path Crit --------------------------------------------------------------------------$FOAM_LIBBIN ...nFOAM/OpenFOAM-1.6/lib/linuxGccDPOpt yes yes yes $FOAM_SITE_LIBBIN .../OpenFOAM/site/1.6/lib/linuxGccDPOpt no no $FOAM_USER_LIBBIN ...OpenFOAM/dario-1.6/lib/linuxGccDPOpt no no $MPI_ARCH_PATH ...penmpi-1.3.3/platforms/linuxGccDPOpt yes yes yes --------------------------------------------------------------------------Third party software --------------------------------------------------------------------------Software Version Location --------------------------------------------------------------------------WARNING: gcc version does not match gcc supplied with this release of OpenFOAM Supplied version: 4.3.3 User version : Minimum required: 4.3.1 gcc ...nFOAM/ThirdParty-1.6/gcc-4.3.3/platforms/linux/bin/gcc gzip 1.3.12 /bin/gzip tar 1.22 /bin/tar icoFoam 1.6 ...AM/OpenFOAM-1.6/applications/bin/linuxGccDPOpt/icoFoam --------------------------------------------------------------------------Summary
62
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes ---------------------------------------------------------------------------Base configuration ok. Critical systems ok. done.
Si los siguientes datos son los que nos arroja el terminal, la instalación se ha hecho correctamente, se lo contrario podrían aparecer algún error crítico (CRITICAL ERROR), por ello habrá que revisar los pasos de la instalación para ver que puede estar fallando en la misma, ya sea compatibilidad de software, arquitectura de 64 ó 32 bits, etc. Ahora se puede hacer una prueba del funcionamiento del mismo. Esto se logra ingresando al directorio de los tutoriales, haciendo en la consola:
cd /home/dario/OpenFOAM/OpenFOAM-1.6/tutorials Nuevamente, aquí donde aparece el nombre dario debe ser reemplazado por el nombre del usuario actual. Cabe destacar que OpenFOAM viene con una serie de tutoriales para el uso de los distintos solvers, según sea el problema físico en cuestión. La prueba de ejecución que se muestra a continuación, utiliza el solver
icoFoam que utiliza las ecuaciones de Navier-Stokes para flujo laminar. Una vez dentro del directorio de los tutoriales, ingresar al directorio del caso en estudio, p.e. el de una cavidad simple (cavity) haciendo:
cd /incompressible/icoFoam/cavity Ya dentro del directorio del caso, viene la secuencia de los comandos tanto para el mallador (interno), como para el solver y algún conversor utilizado tanto para el pre-proceso como para el post-proceso. Para el mallador, se crea una malla de la geometría definida en el archivo blockMeshDict, se escribe en la consola:
blockMesh y debería aparecer lo siguiente en la pantalla: /*---------------------------------------------------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ Build : 1.6-53b7f692aa41 Exec : blockMesh
63
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes Date Time Host PID Case nProcs SigFpe
: : : : : : :
Nov 22 2010 22:46:46 dario-desktop 4191 /home/dario/OpenFOAM/OpenFOAM-1.6/tutorials/incompressible/icoFoam/cavity 1 Enabling floating point exception trapping (FOAM_SIGFPE).
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Creating block mesh from "/home/dario/OpenFOAM/OpenFOAM1.6/tutorials/incompressible/icoFoam/cavity/constant/polyMesh/blockMeshDict" Creating blockCorners Creating curved edges Creating blocks Creating patches Creating block mesh topology Default patch type set to empty Check block mesh topology Basic statistics Number of internal faces : 0 Number of boundary faces : 6 Number of defined boundary faces : 6 Number of undefined boundary faces : 0 Checking patch -> block consistency Creating block offsets Creating merge list . Creating points with scale 0.1 Creating cells Creating patches Creating mesh from block mesh Default patch type set to empty Writing polyMesh End
Y no deberían aparecer mensajes de error. Ahora queda por ejecutar el solver solo escribiendo en la consola:
icoFoam y debería aparecer: /*---------------------------------------------------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ Build : 1.6-53b7f692aa41 Exec : icoFoam Date : Nov 22 2010 Time : 22:46:48 Host : dario-desktop PID : 4192 Case : /home/dario/OpenFOAM/OpenFOAM-1.6/tutorials/incompressible/icoFoam/cavity nProcs : 1 SigFpe : Enabling floating point exception trapping (FOAM_SIGFPE). // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time
64
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes Create mesh for time = 0 Reading transportProperties Reading field p Reading field U Reading/calculating face flux field phi Starting time loop Time = 0.005 Courant Number mean: 0 max: 0 DILUPBiCG: Solving for Ux, Initial residual = 1, Final residual = 2.96338e-06, No Iterations 8 DILUPBiCG: Solving for Uy, Initial residual = 0, Final residual = 0, No Iterations 0 DICPCG: Solving for p, Initial residual = 1, Final residual = 7.55402e-07, No Iterations 35 time step continuity errors : sum local = 5.03809e-09, global = 1.94884e-19, cumulative = 1.94884e-19 DICPCG: Solving for p, Initial residual = 0.523591, Final residual = 9.72352e-07, No Iterations 34 time step continuity errors : sum local = 1.07766e-08, global = 4.49324e-19, cumulative = 6.44208e-19 ExecutionTime = 0.02 s ClockTime = 0 s Time = 0.01 Courant Number mean: 0.0514108 max: 0.585722 DILUPBiCG: Solving for Ux, Initial residual = 0.148584, Final residual = 7.15711e06, No Iterations 6 DILUPBiCG: Solving for Uy, Initial residual = 0.256618, Final residual = 8.94127e06, No Iterations 6 DICPCG: Solving for p, Initial residual = 0.379232, Final residual = 3.38648e-07, No Iterations 34 time step continuity errors : sum local = 3.15698e-09, global = 3.18961e-19, cumulative = 9.63169e-19 DICPCG: Solving for p, Initial residual = 0.286937, Final residual = 5.99637e-07, No Iterations 33 time step continuity errors : sum local = 6.08774e-09, global = -3.64249e-19, cumulative = 5.9892e-19 ExecutionTime = 0.03 s ClockTime = 0 s . . . Time = 0.495 Courant Number mean: 0.116925 max: 0.852134 DILUPBiCG: Solving for Ux, Initial residual = 1.99665e-07, Final residual = 1.99665e-07, No Iterations 0 DILUPBiCG: Solving for Uy, Initial residual = 4.36311e-07, Final residual = 4.36311e-07, No Iterations 0 DICPCG: Solving for p, Initial residual = 1.0746e-06, Final residual = 3.53797e07, No Iterations 1 time step continuity errors : sum local = 5.37651e-09, global = -1.46742e-19, cumulative = -1.15743e-18 DICPCG: Solving for p, Initial residual = 6.81574e-07, Final residual = 6.81574e07, No Iterations 0 time step continuity errors : sum local = 8.06059e-09, global = -1.33507e-19, cumulative = -1.29094e-18 ExecutionTime = 0.23 s ClockTime = 0 s Time = 0.5 Courant Number mean: 0.116925 max: 0.852134 DILUPBiCG: Solving for Ux, Initial residual = 1.89493e-07, Final residual = 1.89493e-07, No Iterations 0 DILUPBiCG: Solving for Uy, Initial residual = 4.14522e-07, Final residual = 4.14522e-07, No Iterations 0 DICPCG: Solving for p, Initial residual = 1.06665e-06, Final residual = 3.39604e07, No Iterations 1 time step continuity errors : sum local = 5.25344e-09, global = 8.60268e-20, cumulative = -1.20491e-18 DICPCG: Solving for p, Initial residual = 5.36118e-07, Final residual = 5.36118e-
65
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes 07, No Iterations 0 time step continuity errors : sum local = 6.86432e-09, global = -1.44128e-18, cumulative = -2.64619e-18 ExecutionTime = 0.23 s ClockTime = 0 s End
Si aparece la palabra END y no arroja ningún mensaje de error mientras se estaba ejecutando, salió todo bien. Para ver los resultados, se debe tener de antemano el software Paraview instalado, este software requiere se haga una conversión de formato mediante el siguiente comando:
foamToVTK Esto creará un directorio llamado VTK (dentro del directorio del caso) y dentro de él se encontrarán varios archivos con formato .vtk y algunos directorios. Desde el programa Paraview se debe ingresar a este directorio y abrir los archivos de formato .vtk. Una vez abierto el software Paraview, se aplican filtros y la selección de la variable que el usuario desee, se puede apreciar tanto el campo de velocidades como el de presiones (para este solver en particular).
A.3
Utilización del software OpenFOAM
Tal como se mencionó, el software OpenFOAM viene con una serie de librerías en la cuales se puede programar e integrar dentro de los archivos del caso de estudio para poder calcular magnitudes especiales y derivadas de los datos que el solver calcula.
A.4
Características de OpenFOAM
OpenFOAM® (Open Field Operation and Manipulation) es un paquete de software libre y de código abierto para CFD producido por una compañía llamada OpenCFD Ltd. Esta tiene una vasta experiencia en el campo de las áreas de ingeniería y ciencia tanto para instituciones comerciales como académicas. OpenFOAM tiene un amplio rango de características para calcular desde flujos de fluidos complejos que involucran reacciones químicas, turbulencia y transferencia de calor hasta la dinámica del sólido y electromagnetismo (OpenFOAM, 2010). El núcleo de la tecnología de OpenFOAM se basa en un conjunto muy efectivo de módulos en C++. Estos se utilizan para construir una gran cantidad de solvers para simular problemas específicos en ingeniería, utilidades para realizar tareas de pre y post-proceso desde un rango
66
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes simple de datos hasta la visualización y el mallado, librerías para crear herramientas que se ayudan a diseñar los solvers y las utilidades tales como los modelos físicos, turbulencia, etc. OpenFOAM trae una serie de solvers, utilidades y librerías ya preconfiguradas listas para usar. De todas maneras, como el software es abierto, no solo de código abierto sino de su estructura y diseño jerárquico, tanto los solvers, utilidades y librerías son muy utilizados por programadores e investigadores. OpenFOAM utiliza un esquema de volumen finito para resolver sistemas de ecuaciones diferenciales con derivadas parciales en cualquier malla noestructurada tridimensional de celdas poliédricas. Los solvers para flujos de fluidos se desarrollan para que tengan una solución robusta, implícita e iterativa, aunque se utilizan técnicas alternativas para los solvers de la mecánica del continuo. El proceso de paralelismo por descomposición del dominio es fundamental en el diseño de OpenFOAM, el mismo permite correr casos en que se requiere del uso de varios procesadores en forma paralela aprovechando al máximo el hardware disponible (OpenFOAM, 2010).
A.5
Estructura de un caso de OpenFOAM
Figura A.1 – Estructura de un caso de OpenFOAM
67
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes Para correr un caso del software OpenFOAM, es necesario crear una serie de carpetas o directorios y varios archivos dentro (OpenFOAM-1.6a, 2009). La forma recomendada es hacer una copia de algún caso existente dentro del directorio de los tutoriales y modificarlo según las necesidades del fenómeno en estudio. La estructura de un caso normal es la que aparece en la figura A.1.
A.6
Descripción de las partes de un caso de estudio
/case/: es el nombre que el usuario le da al caso, por ejemplo si se estudia un perfil aerodinámico, su nombre puede ser NACA0009. El resto de los nombres de los archivos y directorios se deben mantener, los archivos se pueden editar pero sus nombres no se deben cambiar.
/case/system/: este directorio contiene toda la configuración en cuanto al control del tiempo de cálculo, los métodos de cálculo y propiedades que afectan al solver. Los archivos que contiene son: controlDict, fvSchemes, fvSolution y además puede contener otros archivos como el
sampleDict.
/case/constant/: este directorio tiene los datos de las constantes utilizadas como ser la viscosidad, densidad, modelo de turbulencia, etc, transportProperties, dentro de los siguientes archivos: turbulenceProperties y RASProperties.
/case/constant/polyMesh/: dentro de este directorio se encuentran los datos de la malla que se distribuyen en varios archivos como ser: cells, cellZones, faces, faceZone, neighbour, owner, points, pointZones y boundary y en otro directorio llamado /case/constant/polyMesh/sets/ en donde se encuentra el archivo internalField que define el volumen de la geometría en estudio y que además pueden figurar otros archivos dependiendo del solver utilizado. /case/0/: es el directorio del tiempo cero (zero time directory), es decir en el cual se encuentran las condiciones iniciales de los campos de presión y de velocidad mediante el nombre de los siguientes archivos p y U respectivamente. También pueden existir otros archivos que denotan las condiciones iniciales de algún modelo de turbulencia. A medida que progresen los cálculos, irán apareciendo más directorios de tiempo /case/0.01/ , /case/0.02/ , etc, acordes a la configuración de escritura e intervalo de cálculo que se haya dado dentro de las opciones del archivo controlDict, luego dentro de estos directorios de tiempo estarán
68
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes los resultados obtenidos del campo de presiones y del campo de velocidades.
A.7
Descripción de solvers utilizados
Los solvers de OpenFOAM utilizados en el presente trabajo fueron seleccionados en cuanto a sus prestaciones, su sencillez de ajustar las variables que los controlan y que además pueden servir para la validación de casos experimentales:
potentialFoam: este es un solver para flujo potencial que puede ser utilizado para generar las condiciones iniciales de los campos de velocidad y presión para las ecuaciones de Navier-Stokes.
icoFoam:
este es un solver para flujo laminar inestacionario e incompresible de fluidos newtonianos, resuelve las ecuaciones de NavierStokes.
simpleFoam: este es un solver para flujo estacionario, incompresible y turbulento.
A.8
Unidades físicas
OpenFOAM utiliza las unidades del sistema internacional para que se obtengan resultados coherentes cuando se realizan operaciones matemáticas entre las magnitudes que intervienen. Los parámetros que requieren datos iniciales (velocidad, presión, temperatura, viscosidad, etc) se le indican mediante un vector los exponentes de las dimensiones a la que se refiere. Por ejemplo, para el caso de la viscosidad cinemática, se define como:
nu
nu [ 0 2 -1 0 0 0 0 ] 0.001;
en donde cada uno de los términos dentro de los corchetes se refieren a las unidades como sigue: masa en kilogramos, longitud en metros, tiempo en segundos, temperatura en grados Kelvin, masa molar en kilogramo-mol, corriente eléctrica en amperes e intensidad luminosa en candelas respectivamente (OpenFOAM-1.6b, 2009).
69
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
APENDICE B – Solvers de OpenFOAM B.1
Solver potentialFoam
El comando potentialFoam es un solver que calcula el campo de movimiento utilizando la teoría de flujo potencial con las simplificaciones que trae, o sea para un flujo incompresible e irrotacional (densidad constante y viscosidad nula) y se utiliza para tener una noción del campo de movimiento en el caso de la dinámica de los fluidos y se obtienen resultados comparables con las ecuaciones analíticas de la teoría de flujo potencial y también con algunos resultados experimentales (bajo ciertas limitaciones). Un caso típico (NACA0009) contiene los siguientes archivos:
B.1.1 /case/system/controlDict /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object controlDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // application potentialFoam; startFrom startTime; startTime 0; stopAt endTime; endTime 1; deltaT 0.1; writeControl timeStep; writeInterval 1; purgeWrite 0; writeFormat ascii; writePrecision 6; writeCompression uncompressed; timeFormat general; timePrecision 6; runTimeModifiable yes; // ************************************************************************* //
Ahora se describen los parámetros utilizados en el presente trabajo:
70
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
application: acá va el nombre del solver. startFrom: se indica el tiempo desde cuando se inician los cálculos, en general se usa la opción startTime, si se usa la opción latestTime, el solver, arranca desde el último tiempo grabado en el directorio del caso, esto sirve cuando uno decide detener los cálculos y retomarlos por ejemplo al día siguiente.
startTime: es el tiempo de inicio de los cálculos, en general vale cero. stopAt: le indica al solver cuando detenerse, en general vale endTime. endTime: es el tiempo de la finalización de los cálculos. deltaT: es el paso de tiempo que el usuario ajusta, es pequeño. writeControl: indica de que manera que se muestra en pantalla los pasos de cálculo.
writeInterval: es muy importante, cuando el endTime es grande y el deltaT es pequeño se tienen muchos directorios de tiempo, este indica cada cuantos deltaT se escriben en el disco rígido. Ayuda a controlar la cantidad de espacio que se ocupa en el disco rígido (OpenFOAM-1.6a, 2009).
B.1.2 /case/system/fvSolution /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSolution; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { p { solver PCG; preconditioner DIC; tolerance 1e-06; relTol 0; } } SIMPLE
71
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes { nNonOrthogonalCorrectors 15; } // ************************************************************************* //
nNonOrthogonalCorrectors: este valor indica la cantidad de iteraciones forzadas para la convergencia y corregir problemas de ortogonalidad de la malla, por ello se utiliza un valor de 10 ó 15 cuando se tiene una malla compleja de varios sectores, si la malla es una región entera, un valor de 3 ó 5 es suficiente (OpenFOAM-1.6b, 2009).
B.1.3 /case/system/fvSchemes /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSchemes; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ddtSchemes { default steadyState; } gradSchemes { default Gauss linear; } divSchemes { default none; } laplacianSchemes { default none; laplacian(1,p) Gauss linear corrected; } interpolationSchemes { default linear; } snGradSchemes { default corrected; } fluxRequired { default no; p ; } // ************************************************************************* //
72
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
En este archivo se encuentran las opciones del solver y los parámetros y esquemas de cálculo (no descriptos en el manual).
B.1.4 /case/system/sampleDict /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: http://www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location system; object sampleDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Set output format : choice of // xmgr // jplot // gnuplot // raw //setFormat raw; // Surface output format. Choice of // null : suppress output // foamFile : separate points, faces and values file // dx : DX scalar or vector format // vtk : VTK ascii format // raw : x y z value format for use with e.g. gnuplot 'splot'. surfaceFormat raw; //interpolationScheme cellPoint; fields ( p U ); sets ( ); surfaces ( one // es el nombre del archivo de salida { type patch; patchName perfil; // nombre del patch en estudio } ); // *********************************************************************** //
Si se incluye este archivo en el directorio /system, se puede extraer el valor de las presiones y de las velocidades (p y U) de la región que se quiera estudiar.
73
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes En este caso, la región a estudiar es sobre el perfil, esto se logra tipeando en la consola:
sample El resultado arroja sendos archivos, p_one.raw y U_one.raw dentro de un directorio llamado surfaces para cada paso de tiempo (dado por writeInterval) Existen otras opciones para el archivo sample no tratadas en el presente trabajo (CFD Online, 2010).
B.1.5 /case/constant/boundary /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class polyBoundaryMesh; location "constant/polyMesh"; object boundary; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 7 ( laterales { type empty; nFaces 253710; startFace 189831; } abajo { type patch; nFaces 99; startFace 443541; } salida { type patch; nFaces 199; startFace 443640; } arriba { type patch; nFaces 99; startFace 443839; } entrada { type patch;
74
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes nFaces startFace } perfil { type nFaces startFace } defaultFaces { type nFaces startFace }
99; 443938;
patch; 407; 444037;
empty; 0; 444444;
) // ************************************************************************* //
En este archivo se encuentran los “parches” llamados patch por OpenFOAM que se refieren a las regiones físicas de la geometría en estudio y sus respectivas condiciones de contorno. Por ejemplo a la entrada del flujo se la llama patch, luego en los archivos de configuración de la entrada en cuanto a las condiciones iniciales (/0/p y /0/U) se le asigna un valor inicial para la presión y para la velocidad. El número 7 que aparece debajo del encabezado es propio para cada caso y se refiere a la cantidad de parches que se tiene en estudio, en este caso se cuenta con laterales, abajo, salida, arriba, entrada, perfil y defaultFaces que en total son 7. El patch del tipo empty indica que sobre esa cara no se calcula nada, por ejemplo OpenFOAM siempre considera al caso como tridimensional, si se tiene un caso bidimensional, el patch llamado “laterales” tiene asignado el tipo empty en donde los laterales son las caras paralelas al flujo, ya que no se requieren cálculos en esa dirección (empty en la dirección z) El patch llamado “defaultFaces” es por defecto del tipo patch y se genera automáticamente cuando se utiliza algún comando de conversión ó importación de la malla (p.e. gmshToFoam). Debe llevar el valor empty para que el caso pueda correr sin problemas (CFD Online, 2010).
B.1.6 /case/0/p /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii;
75
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes class location object
volScalarField; "0"; p;
} // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -2 0 0 0 0]; internalField uniform 0; boundaryField { laterales { type empty; } abajo { type slip; } salida { type fixedValue; value uniform 0; } arriba { type slip; } entrada { type zeroGradient; } perfil { type slip; } defaultFaces { type empty; } } // ************************************************************************* //
Este archivo indica las condiciones iniciales para la presión para cada uno de las superficies que intervienen en la geometría en estudio. Cabe destacar que debe contener la misma cantidad de “parches” que el archivo boundary y los tipos de parches (más usados) pueden ser:
empty: con este tipo de parche se le indica al software que no realice cálculos en la pared que se define con este parche. Se usa para el caso bidimensional y para el parche defaultFaces que aparece luego de una conversión ó importación de la malla.
slip: aplica la condición de deslizamiento sobre esa pared. fixedValue: condiciona que sobre esa pared se tenga un valor fijo especificado, por ejemplo en el caso de arriba se impone que el valor sea de cero (value uniform 0;).
76
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
zeroGradient: impone la condición que tenga un gradiente igual a cero sobre esa pared.
B.1.7 /case/0/U /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volVectorField; location "0"; object U; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -1 0 0 0 0]; internalField uniform (0 0 0); boundaryField { laterales { type empty; } abajo { type slip; } salida { type zeroGradient; } arriba { type slip; } entrada { type fixedValue; value uniform (1 0 0); } perfil { type slip; } defaultFaces { type empty; } } // ************************************************************************* //
En este archivo se indican los valores del campo de velocidades. Tal como el caso anterior de las presiones, los parches tienen asociada su tipología.
77
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes Se puede apreciar que en la entrada se ha tomado un valor unitario en la dirección del eje x, de esta manera se define el vector velocidad mediante sus tres coordenadas (x y z).
B.1.8 Recomendación sobre el archivo U Cuando se corra un caso con el solver potentialFoam, este arroja resultados al archivo U que se encuentra en /0. Por ello, este archivo se llena de información sobre el resultado de los cálculos y estos se escriben entre el encabezado y la definición de los parches dentro del mismo archivo. Por ello se recomienda que antes de correr el caso por primera vez, se genere un archivo de respaldo de U que se puede llamar por ejemplo U.bak. Una vez que se corrió el caso y se obtuvieron los resultados, se puede borrar el archivo U y hacer una copia del archivo U.bak renombrándolo a U para que quede listo para correr una nueva simulación con los cambios realizados.
B.1.9 Generar un archivo de log con los resultados de pantalla Antes de comenzar a correr un caso, se puede generar un archivo de texto en donde se indican los resultados de la simulación. Desde la consola se puede escribir para el caso del solver potentialFoam:
potentialFoam >> log.nombre_del_caso.txt De esta manera el archivo log.nombre_del_caso.txt lleva los resultados que se imprimen en la pantalla. Esto sirve para llevar un control de las simulaciones cuando se dejan corriendo varios casos a la vez y para verificar los posibles errores en la ejecución de los mismos (Stutz, 2004).
B.1.10
Ejecutar automáticamente el solver
Por cuestiones de comodidad y con la experiencia obtenida en el uso de la consola de Linux y de los tipos de archivos, se puede tener un solo archivo que internamente le “ordene” a los diferentes comandos a ejecutarse de manera sucesiva sólo con escribir una sola orden. El archivo creado para el presente trabajo se llama calcular, debe tener permisos de ejecución, lectura y escritura y dentro del mismo contiene: // ************************************************************************* // #!/bin/sh # Source tutorial run functions . $WM_PROJECT_DIR/bin/tools/RunFunctions
78
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes # Indicar el nombre de la aplicacion: application="potentialFoam" # Se indica el orden de ejecucion de la aplicacion: runApplication $application runApplication foamToVTK runApplication sample // ************************************************************************* //
De esta manera se ejecuta el solver potentialFoam y cuando este finalice se ejecutarán los siguientes comandos:
foamToVTK: es un convertidor de formato para que el software del postproceso (ParaView)pueda leer los resultados. sample: ya descripto anteriomente.
79
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
B.2
Solver icoFoam
El comando icoFoam ejecuta el solver para el caso de un flujo laminar e isotérmico, o sea que utiliza las ecuaciones de Navier-Stokes. El mismo otorga resultados básicos para el campo de movimiento especificando las presiones y las velocidades iniciales junto a los parámetros del flujo como ser la viscosidad cinemática. El solver icoFoam se basa en un parámetro muy especial para continuar con sus cálculos del que se debe tener mucho cuidado y ajustar su valor puede llevar tiempo sin las herramientas necesarias, este parámetro es el número de Courant (OpenFOAM-1.6a, 2009):
Co =
∆t ⋅ U ∞ ∆x
(B1)
El mismo establece la relación entre el paso del tiempo (deltaT), la velocidad de la corriente y el tamaño mínimo de la celda de la malla en la dirección de la velocidad.
∆t ∆x U∞
: paso de tiempo dado por deltaT : longitud de la celda en la dirección de la velocidad : magnitud de la velocidad de la corriente fluida
Para una buena precisión y estabilidad numérica, un número de Courant menor a 1 es lo recomendado. Como se puede notar, a medida que se disminuye el paso del tiempo, el número de Courant disminuye y aumenta la precisión y la estabilidad en los cálculos (OpenFOAM-1.6a, 2009). Un caso típico (NACA0009) contiene los siguientes archivos:
B.2.1 /case/system/controlDict /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii;
80
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes class location object
dictionary; "system"; controlDict;
} // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // application icoFoam; startFrom latestTime; startTime 0; stopAt endTime; endTime 20.000; deltaT 0.001; writeControl timeStep; writeInterval 100; purgeWrite 0; writeFormat ascii; writePrecision 6; writeCompression uncompressed; timeFormat general; timePrecision 6; runTimeModifiable yes; // ************************************************************************* //
Ahora se describen los parámetros utilizados en el presente trabajo:
application: acá va el nombre del solver. startFrom: se indica el tiempo desde cuando se inician los cálculos, en general se usa la opción startTime, si se usa la opción latestTime, el solver, arranca desde el último tiempo grabado en el directorio del caso, esto sirve cuando uno decide detener los cálculos y retomarlos por ejemplo al día siguiente.
startTime: es el tiempo de inicio de los cálculos, en general vale cero. stopAt: le indica al solver cuando detenerse, en general vale endTime. endTime: es el tiempo de la finalización de los cálculos. deltaT: es el paso de tiempo que el usuario ajusta, es pequeño. writeControl: indica de que manera que se muestra en pantalla los pasos de cálculo.
writeInterval: es muy importante, cuando el endTime es grande y el deltaT es pequeño se tienen muchos directorios de tiempo, este indica cada cuantos deltaT se escriben en el disco rígido. Ayuda a controlar la cantidad de espacio que se ocupa en el disco rígido. Como el solver icoFoam utiliza las ecuaciones de Navier-Stokes, el valor de la viscosidad entra en juego y por ello se pueden calcular las fuerzas debidas a la presión y a la viscosidad.
81
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes También cuando se requiere calcular los coeficientes de sustentación, resistencia y momento, como así las fuerzas actuantes debidas a la presión y a la viscosidad y también el momento, se agregan las siguientes líneas al archivo controlDict: que se encuentra en el directorio /system del caso a estudiar: // ************************************************************************* // functions { forces { type forces; functionObjectLibs ( "libforces.so" ); // es la librería que usa outputControl timeStep; outputInterval 1; patches ( perfil // ponerle el nombre del patch que se quiera referenciar ); // nombre de los campos pName p; UName U; log true; // para generar un archivo rhoInf 0.1; // densidad del fluido de referencia CofR ( 0.25 0 0 ); // centro de rotacion } forcesCoeffs { type forceCoeffs; functionObjectLibs ( "libforces.so" ); // es la librería que usa outputControl timeStep; outputInterval 1; patches ( perfil // ponerle el nombre del patch que se quiera referenciar ); // nombre de los campos pName p; UName U; log true; // para generar un archivo rhoInf 0.1; // densidad del fluido de referencia CofR ( 0.25 0 0 ); // centro de rotacion liftDir ( 0 1 0 ); // dirección y de la sustentacion dragDir ( 1 0 0 ); // direccion x de la resistencia pitchAxis ( 0 0 1 ); // eje de giro del momento magUInf 1; // magnitud de la Uinf lRef 1; // longitud de referencia Aref 1; // area de referencia } } // ************************************************************************* //
De esta manera, el resultado será un directorio que se llama forces y otro que se llama forcesCoeffs. Dentro de ellos se encuentran los datos buscados para cada intervalo de tiempo en los directorios /forces/deltaT y /forcesCoeffs/deltaT en los archivos forces.dat y forcesCoeffs.dat en donde deltaT es el valor del paso de tiempo elegido (CFD Online, 2010).
82
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes Un ejemplo del contenido del archivo forces.dat es: # Time forces(pressure, viscous) moment(pressure, viscous) 0.001 (((68.3033 0.155526 -1.31231e-21) (0.0123889 -0.00292111 9.70377e-22)) ((0.0777632 34.1517 0.0307939) (0.00146056 0.00619447 0.000445525))) 0.002 (((-4.8413 -0.648302 -2.93701e-21) (0.00816068 -0.00218139 8.70858e-22)) ((0.324151 -2.42065 -0.205813) (0.00109069 0.00408034 0.000629604))) 0.003 (((0.266975 0.114548 4.52036e-22) (0.00662839 -0.00139427 7.72702e-22)) ((0.0572738 0.133487 0.0504445) (0.000697136 0.00331419 0.000919662))) 0.004 (((-0.0052588 0.0241887 5.4967e-22) (0.00546556 -0.00168077 6.42364e-22)) ((-0.0120943 -0.0026294 0.0149819) (0.000840383 0.00273278 0.000493928))) 0.005 (((0.0162225 -0.089377 -1.1007e-21) (0.00453496 -0.00109184 5.63108e-22)) ((0.0446885 0.00811126 -0.0287636) (0.000545922 0.00226748 0.000751038))) … … …
y del archivo forcesCoeffs.dat: # Time 0,001 0,002 0,003 0,004 0,005 … … …
Cd 136,631 -9,6662 0,54720 0,00041 0,04151
Cl 0,30521 -1,3009 0,22630 0,04501 -0,1809
Cm 0,062478 -0,41036 0,102728 0,030951 -0,05602
Estos archivos .dat se pueden editar mediante algún procesador de texto antes de analizarlos con alguna planilla de cálculo ó de lo contrario se podría programar algún script que extraiga los valores que contienen para su posterior análisis.
B.2.2 /case/system/fvSolution /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSolution; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { p { solver PCG;
83
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes preconditioner tolerance relTol
DIC; 1e-08; 0;
solver preconditioner tolerance relTol
PBiCG; DILU; 1e-08; 0;
} U {
} } PISO { nCorrectors 1; nNonOrthogonalCorrectors 1; pRefCell 0; pRefValue 0; } // ************************************************************************* //
Este archivo contiene la información sobre la modalidad de la ejecución de los cálculos como tolerancias y parámetros correctores para estabilizar la solución. Se modifican cuando se quiere mejor precisión y cuando se quiere afinar el resultado. No están descriptos en el manual de usuario.
B.2.3 /case/system/fvSchemes /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSchemes; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ddtSchemes { default Euler; } gradSchemes { default Gauss linear; grad(p) Gauss linear; } divSchemes { default Gauss upwind; div(phi,U) Gauss upwind; } laplacianSchemes {
84
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes default none; laplacian(nu,U) Gauss linear limited 0.7; laplacian((1|A(U)),p) Gauss linear limited 1; } interpolationSchemes { default linear; interpolate(HbyA) linear; } snGradSchemes { default corrected; } fluxRequired { default no; p ; } // ************************************************************************* //
En este archivo se encuentran las opciones del solver y los parámetros y esquemas de cálculo (no descriptos en el manual).
B.2.4 /case/system/sampleDict /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: http://www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location system; object sampleDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Set output format : choice of // xmgr // jplot // gnuplot // raw //setFormat raw; // Surface output format. Choice of // null : suppress output // foamFile : separate points, faces and values file // dx : DX scalar or vector format // vtk : VTK ascii format // raw : x y z value format for use with e.g. gnuplot 'splot'. surfaceFormat raw; //interpolationScheme cellPoint; fields ( p U );
85
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes sets ( ); surfaces ( one // es el nombre del archivo de salida { type patch; patchName perfil; } ); // *********************************************************************** //
Si se incluye el archivo sampleDict en el directorio /system, se puede extraer el valor de las presiones y de las velocidades (p y U) de la región que se quiera estudiar y que se tenga como “parche”. En este caso, la región a estudiar es sobre el perfil, esto se logra tipeando en la consola:
sample El resultado arroja sendos archivos, p_one.raw y U_one.raw dentro de un directorio llamado surfaces para cada paso de tiempo (dado por writeInterval). Existen otras opciones para el archivo sample no tratadas en el presente trabajo (CFD Online, 2010).
B.2.5 /case/constant/boundary /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class polyBoundaryMesh; location "constant/polyMesh"; object boundary; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 7 ( laterales { type empty; nFaces 23546; startFace 17508; } abajo { type patch;
86
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes nFaces startFace } salida { type nFaces startFace } arriba { type nFaces startFace } entrada { type nFaces startFace } perfil { type nFaces startFace } defaultFaces { type nFaces startFace }
49; 41054;
patch; 49; 41103;
patch; 49; 41152;
patch; 49; 41201;
patch; 107; 41250;
empty; 0; 41357;
) // ************************************************************************* //
En este archivo se encuentran los “parches” llamados patch por OpenFOAM que se refieren a las regiones físicas de la geometría en estudio y sus respectivas condiciones de contorno. Por ejemplo a la entrada del flujo se la llama patch, luego en los archivos de configuración de la entrada en cuanto a las condiciones iniciales de la presión p y de la velocidad U (ubicados en /0/p y /0/U) se le asigna un valor inicial para la presión y velocidad para cada parche. El número 7 que aparece debajo del encabezado es propio para cada caso y se refiere a la cantidad de parches que se tiene en estudio, en este caso se cuenta con laterales, abajo, salida, arriba, entrada, perfil y defaultFaces que en total son 7. El patch del tipo empty indica que sobre esa cara no se calcula nada, por ejemplo OpenFOAM siempre considera al caso como tridimensional, si se tiene un caso bidimensional, el patch llamado “laterales” tiene asignado el tipo empty en donde los laterales son las caras paralelas al flujo, ya que no se requieren cálculos en esa dirección (empty en la dirección z) El patch llamado “defaultFaces” es por defecto del tipo patch y se genera automáticamente cuando se utiliza algún comando de conversión ó
87
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes importación de la malla (p.e. gmshToFoam). Debe llevar el valor empty para que el caso pueda correr sin problemas (OpenFOAM-1.6a, 2009).
B.2.6 /case/constant/transportProperties /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "constant"; object transportProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // nu nu [ 0 2 -1 0 0 0 0 ] 0.001; // ************************************************************************* //
Este archivo, a diferencia del caso del solver potentialFoam que no lo incluye entre sus archivos, informa del valor de la viscosidad cinemática utilizada para realizar los cálculos por icoFoam. Una vez establecido este valor, se puede tener una idea del número de Reynolds al cual se está realizando la simulación, teniendo en cuenta que como el solver icoFoam se utiliza para flujo laminar, si se emplea en un caso en donde los datos experimentales y el sentido común indican que es muy probable que haya turbulencia, los resultados serán incorrectos. Para los casos simples en donde se conoce aproximadamente a que número de Reynolds se produce la transición de flujo laminar a turbulento, si se tiene que el número de Reynolds es elevado para un caso del solver icoFoam, se deberá optar por otro solver que incluya un modelo adecuado de turbulencia.
B.2.7 /case/0/p /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii;
88
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes class location object
volScalarField; "0"; p;
} // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -2 0 0 0 0]; internalField uniform 0; boundaryField { laterales { type empty; } abajo { type slip; } salida { type fixedValue; value uniform 0; } arriba { type slip; } entrada { type zeroGradient; } perfil { type slip; } defaultFaces { type empty; } } // ************************************************************************* //
Este archivo indica las condiciones iniciales para la presión para cada uno de las superficies que intervienen en la geometría en estudio. Cabe destacar que debe contener la misma cantidad de “parches” que el archivo boundary y los tipos de parches (más usados) pueden ser:
empty: con este tipo de parche se le indica al software que no realice cálculos en la pared que se define con este parche. Se usa para el caso bidimensional y para el parche defaultFaces que aparece luego de una conversión ó importación de la malla.
slip: aplica la condición de deslizamiento sobre esa pared. fixedValue: condiciona que sobre esa pared se tenga un valor fijo especificado, por ejemplo en el caso del parche arriba se impone que el valor sea de cero (value uniform 0;).
89
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
zeroGradient: impone la condición que tenga un gradiente igual a cero sobre esa pared.
B.2.8 /case/0/U /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volVectorField; location "0"; object U; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -1 0 0 0 0]; internalField uniform (0 0 0); boundaryField { laterales { type empty; } abajo { type slip; } salida { type zeroGradient; } arriba { type slip; } entrada { type fixedValue; value uniform (1 0 0); } perfil { type slip; } defaultFaces { type empty; } } // ************************************************************************* //
En este archivo se indican los valores del campo de velocidades. Tal como el caso anterior de las presiones, los parches tienen asociada su tipología.
90
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes Se puede apreciar que en la entrada se ha tomado un valor unitario en la dirección del eje x, de esta manera se define el vector velocidad mediante sus tres coordenadas (x y z).
B.2.9 Generar un archivo de log con los resultados de pantalla Cuando se estar por correr un caso, se puede generar un archivo de texto en donde van los resultados de la simulación. Desde la consola se puede escribir para el caso del solver icoFoam:
icoFoam >> log.nombre_del_caso.txt De esta manera el archivo log.nombre_del_caso.txt lleva los resultados que se imprimen en la pantalla. Esto sirve para llevar un control de las simulaciones cuando se dejan corriendo varios casos y para verificar los posibles errores en la ejecución (Stutz, 2004).
B.2.10
Ejecutar automáticamente el solver
Por cuestiones de comodidad y con la experiencia obtenida en el uso de la consola de Linux y de los tipos de archivos, se puede tener un solo archivo que internamente le “ordene” a los diferentes comandos a ejecutarse de manera sucesiva sólo con tipear una sola orden. El archivo creado para el presente trabajo se llama calcular, debe tener permisos de ejecución, lectura y escritura. El mismo contiene: // ************************************************************************* // #!/bin/sh # Source tutorial run functions . $WM_PROJECT_DIR/bin/tools/RunFunctions # Indicar el nombre de la aplicacion: application="icoFoam" # Se indica el orden de ejecucion de la aplicacion: runApplication $application runApplication foamToVTK runApplication sample // ************************************************************************* //
De esta manera se ejecuta el solver icoFoam y cuando este finalice se ejecutarán los siguientes comandos:
foamToVTK: es un convertidor de formato para que el software del postproceso pueda leer los resultados.
sample: ya descripto anteriomente.
91
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
B.3
Solver simpleFoam
El comando simpleFoam ejecuta el solver que utiliza las ecuaciones de Navier-Stokes con distintos modelos de turbulencia e incluso sin turbulencia para calcular solamente flujo laminar. El modelo de turbulencia utilizado en el presente trabajo para modelar los perfiles aerodinámicos es el de Spalart-Allmaras, el mismo es un modelo de turbulencia de una sola ecuación y sus constantes se ajustan al problema físico mediante los archivos turbulentProperties y RASProperties. Estos contienen la información de varios modelos de turbulencia que el usuario puede elegir (CFD Online, 2010). La mayoría de los problemas físicos implican cierto grado de turbulencia en su campo de movimiento, por ello el solver simpleFoam es uno de los más utilizados en el campo incompresible de la mecánica de los fluidos del software OpenFOAM. Un caso típico (NACA0009) contiene los siguientes archivos:
B.3.1 /case/system/controlDict /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object controlDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // application simpleFoam; startFrom latestTime; startTime 0; stopAt endTime; endTime 20.000; deltaT 0.001; writeControl timeStep; writeInterval 100; purgeWrite 0; writeFormat ascii; writePrecision 6; writeCompression uncompressed; timeFormat general; timePrecision 6; runTimeModifiable yes;
92
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes // ************************************************************************* //
Ahora se describen los parámetros utilizados en el presente trabajo: application: acá va el nombre del solver.
startFrom: se indica el tiempo desde cuando se inician los cálculos, en general se usa la opción startTime, si se usa la opción latestTime, el solver, arranca desde el último tiempo grabado en el directorio del caso, esto sirve cuando uno decide detener los cálculos y retomarlos por ejemplo al día siguiente.
startTime: es el tiempo de inicio de los cálculos, en general vale cero. stopAt: le indica al solver cuando detenerse, en general vale endTime. endTime: es el tiempo de la finalización de los cálculos. deltaT: es el paso de tiempo que el usuario ajusta, es pequeño. writeControl: indica de que manera que se muestra en pantalla los pasos de cálculo.
writeInterval: es muy importante, cuando el endTime es grande y el deltaT es pequeño se tienen muchos directorios de tiempo, este indica cada cuantos deltaT se escriben en el disco rígido. Ayuda a controlar la cantidad de espacio que se ocupa en el disco rígido. Cuando se requiere calcular los coeficientes de sustentación, resistencia y momento, como así las fuerzas actuantes debidas a la presión y a la viscosidad y también el momento, se agrega la siguiente línea al archivo controlDict:
// ************************************************************************* // functions { forces { type forces; functionObjectLibs ( "libforces.so" ); // es la librería que usa outputControl timeStep; outputInterval 1; patches ( perfil // ponerle el nombre del patch que se quiera referenciar ); // nombre de los campos pName p; UName U; log true; // para generar un archivo rhoInf 0.1; // densidad del fluido de referencia
93
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes CofR ( 0.25 0 0 ); // centro de rotacion } forcesCoeffs { type forceCoeffs; functionObjectLibs ( "libforces.so" ); // es la librería que usa outputControl timeStep; outputInterval 1; patches ( perfil // ponerle el nombre del patch que se quiera referenciar ); // nombre de los campos pName p; UName U; log true; // para generar un archivo rhoInf 0.1; // densidad del fluido de referencia CofR ( 0.25 0 0 ); // centro de rotacion liftDir ( 0 1 0 ); // dirección y de la sustentacion dragDir ( 1 0 0 ); // direccion x de la resistencia pitchAxis ( 0 0 1 ); // eje de giro del momento magUInf 1; // magnitud de la Uinf lRef 1; // longitud de referencia Aref 1; // area de referencia } } // ************************************************************************* //
De esta manera, el resultado será un directorio que se llama forces y otro que se llama forcesCoeffs. Dentro de ellos se encuentran los datos buscados para cada intervalo de tiempo en los directorios /forces/deltaT y /forcesCoeffs/deltaT en los archivos forces.dat y forcesCoeffs.dat en donde deltaT es el valor del paso de tiempo elegido. Un ejemplo del contenido del archivo forces.dat es: # Time forces(pressure, viscous) moment(pressure, viscous) 0.001 (((2.89238 0.164506 7.94817e-23) (3.1511e-07 1.10606e-09 -2.05875e-25)) ((0.0822529 1.44619 0.0606263) (-5.53031e-10 1.57555e-07 7.98014e-10))) 0.002 (((2.87475 0.197828 1.06366e-22) (3.03602e-06 8.99985e-09 -5.09343e-25)) ((-0.0989139 1.43737 0.0692438) (-4.49993e-09 1.51801e-06 6.07087e-09))) 0.003 (((0.392781 0.552849 4.58905e-22) (5.75585e-06 1.47952e-08 -7.67532e-26)) ((-0.276424 0.19639 0.167415) (-7.3976e-09 2.87793e-06 6.72167e-09))) 0.004 (((-1.55923 0.279908 3.0433e-22) (3.32147e-06 8.30987e-09 1.47057e-24)) ((0.139954 -0.779613 0.0732328) (-4.15494e-09 1.66074e-06 -5.17346e-09))) 0.005 (((-1.48112 -0.225088 -9.68711e-23) (-2.31151e-06 -5.71459e-09 1.94856e24)) ((0.112544 -0.740558 -0.0849047) (2.8573e-09 -1.15576e-06 -1.85281e-08))) … … …
y del archivo forcesCoeffs.dat: # Time 0,001 0,002 0,003 0,004
Cd 57,847 57,495 7,8557 -31,184
Cl 3,2901 3,9565 11,057 5,5981
Cm 1,2125 1,3848 3,3482 1,4646
94
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes 0,005 … … …
-29,622 -4,5017 -1,698
Estos archivos .dat se pueden editar mediante algún procesador de texto antes de analizarlo con alguna planilla de cálculo ó de lo contrario se podrá programar algún script que extraiga los valores que contienen (Fortran, C++, etc).
B.3.2 /case/system/fvSolution /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSolution; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { p { solver GAMG; tolerance 1e-06; relTol 0.1; smoother GaussSeidel; nPreSweeps 0; nPostSweeps 2; cacheAgglomeration true; nCellsInCoarsestLevel 10; agglomerator faceAreaPair; mergeLevels 1; } U { solver smoothSolver; smoother GaussSeidel; nSweeps 2; tolerance 1e-08; relTol 0.1; } nuTilda { solver smoothSolver; smoother GaussSeidel; nSweeps 2; tolerance 1e-08; relTol 0.1; }
95
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes } SIMPLE { nNonOrthogonalCorrectors 0; pRefCell 0; pRefValue 0; } relaxationFactors { default 0; p 0.3; U 0.7; nuTilda 0.7; } // ************************************************************************* //
Este archivo contiene la información sobre la modalidad de la ejecución de los cálculos como tolerancias y parámetros correctores para estabilizar la solución. Se modifican cuando se quiere mejor precisión y cuando se quiere afinar el resultado (no están descriptos en el manual de usuario).
B.3.3 /case/system/fvSchemes /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSchemes; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ddtSchemes { default steadyState; } gradSchemes { default Gauss linear; grad(p) Gauss linear; grad(U) Gauss linear; } divSchemes { default none; div(phi,U) Gauss linearUpwind Gauss linear; div(phi,nuTilda) Gauss linearUpwind Gauss linear; div((nuEff*dev(grad(U).T()))) Gauss linear; } laplacianSchemes { default none; laplacian(nuEff,U) Gauss linear corrected;
96
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes laplacian((1|A(U)),p) Gauss linear corrected; laplacian(DnuTildaEff,nuTilda) Gauss linear corrected; laplacian(1,p) Gauss linear corrected; } interpolationSchemes { default linear; interpolate(U) linear; } snGradSchemes { default corrected; } fluxRequired { default no; p ; } // ************************************************************************* //
En este archivo se encuentran las opciones del solver y los parámetros y esquemas de cálculo (no descriptos en el manual de usuario).
B.3.4 /case/system/sampleDict /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: http://www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version format class location object }
2.0; ascii; dictionary; system; sampleDict;
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Set output format : choice of // xmgr // jplot // gnuplot // raw //setFormat raw; // Surface output format. Choice of // null : suppress output // foamFile : separate points, faces and values file // dx : DX scalar or vector format // vtk : VTK ascii format // raw : x y z value format for use with e.g. gnuplot 'splot'. surfaceFormat raw; //interpolationScheme cellPoint; fields ( p
97
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes U ); sets ( ); surfaces ( one { type patchName
patch; perfil;
} ); // *********************************************************************** //
Si se incluye el archivo sampleDict en el directorio /system, se puede extraer el valor de las presiones y de las velocidades (p y U) de la región que se quiera estudiar y que se tenga como “parche”. En este caso, la región a estudiar es sobre el perfil, esto se logra tipeando en la consola:
sample El resultado arroja sendos archivos, p_one.raw y U_one.raw dentro de un directorio llamado surfaces para cada paso de tiempo (dado por writeInterval) Existen otras opciones para el archivo sample no tratadas en el presente trabajo (CFD Online, 2010).
B.3.5 /case/constant/boundary /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class polyBoundaryMesh; location "constant/polyMesh"; object boundary; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 7 ( laterales { type empty; nFaces 42814; startFace 31859; } abajo
98
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes { type nFaces startFace } salida { type nFaces startFace } arriba { type nFaces startFace } entrada { type nFaces startFace } perfil { type nFaces startFace } defaultFaces { type nFaces startFace }
wall; 49; 74673;
wall; 49; 74722;
wall; 49; 74771;
wall; 49; 74820;
wall; 307; 74869;
empty; 0; 75176;
) // ************************************************************************* //
En este archivo se encuentran los “parches” llamados patch por OpenFOAM que se refieren a las regiones físicas de la geometría en estudio y sus respectivas condiciones de contorno. El uso del solver simpleFoam (a diferencia del icoFoam) requiere que las regiones se denominen wall en vez de patch para las distintas zonas en estudio. Por ejemplo a la entrada del flujo se la llama wall, luego en los archivos de configuración de la entrada en cuanto a las condiciones iniciales de la pesión p y de la velocidad U (ubicados en /0/p y /0/U) se le asigna un valor inicial para la presión y velocidad para cada parche. El número 7 que aparece debajo del encabezado es propio para cada caso y se refiere a la cantidad de parches que se tiene en estudio, en este caso se cuenta con laterales, abajo, salida, arriba, entrada, perfil y defaultFaces que en total son 7. El patch del tipo empty indica que sobre esa cara no se calcula nada, por ejemplo OpenFOAM siempre considera al caso como tridimensional, si se tiene un caso bidimensional, el patch llamado “laterales” tiene asignado
99
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes el tipo empty en donde los laterales son las caras paralelas al flujo, ya que no se requieren cálculos en esa dirección (empty en la dirección z) El patch llamado “defaultFaces” es por defecto del tipo patch y se genera automáticamente cuando se utiliza algún comando de conversión ó importación de la malla (p.e. gmshToFoam). Debe llevar el valor empty para que el caso pueda correr sin problemas (OpenFOAM-1.6a, 2009). Es de notar que el comando de conversión gmshToFoam le cambia al archivo boundary todas sus tipologías a la categoría patch, se requiere que el usuario renombre de patch a wall y a las regiones que no se utilizarán, de patch a empty.
B.3.6 /case/constant/transportProperties /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "constant"; object transportProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // transportModel Newtonian; rho rho [ 1 -3 0 0 0 0 0 ] 1; nu nu [ 0 2 -1 0 0 0 0 ] 3.33e-07; CrossPowerLawCoeffs { nu0 nu0 [ 0 2 -1 0 0 0 0 ] 1e-06; nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06; m m [ 0 0 1 0 0 0 0 ] 1; n n [ 0 0 0 0 0 0 0 ] 1; } BirdCarreauCoeffs { nu0 nu0 [ 0 2 -1 0 0 0 0 ] 1e-06; nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06; k k [ 0 0 1 0 0 0 0 ] 0; n n [ 0 0 0 0 0 0 0 ] 1; } // ************************************************************************* //
Este archivo, a diferencia del caso del solver potentialFoam que no lo incluye entre sus archivos, informa del valor de la viscosidad cinemática, de la densidad y del modelo de transporte utilizado para realizar los cálculos por simpleFoam como así también de otras constantes utilizadas por los modelos de transporte.
100
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes Una vez establecido el valor de la viscosidad cinemática y conocida la magnitud de la velocidad y de la longitud de referencia, se puede calcular el número de Reynolds al cual se está realizando la simulación. Como el solver simpleFoam dispone de varios modelos de turbulencia para elegir, el rango de números de Reynolds al cual este puede trabajar es amplio y no se limita como el solver icoFoam que solo es para flujo laminar (CFD Online, 2010).
B.3.7 /case/constant/turbulentProperties /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "constant"; object turbulenceProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // turbulenceModel SpalartAllmaras; turbulence on; laminarCoeffs { } kEpsilonCoeffs { Cmu Cmu [ 0 0 0 0 0 0 0 ] 0.09; C1 C1 [ 0 0 0 0 0 0 0 ] 1.44; C2 C2 [ 0 0 0 0 0 0 0 ] 1.92; alphaEps alphaEps [ 0 0 0 0 0 0 0 ] 0.76923; } RNGkEpsilonCoeffs { Cmu Cmu [ 0 0 0 0 0 0 0 ] 0.0845; C1 C1 [ 0 0 0 0 0 0 0 ] 1.42; C2 C2 [ 0 0 0 0 0 0 0 ] 1.68; alphak alphaK [ 0 0 0 0 0 0 0 ] 1.39; alphaEps alphaEps [ 0 0 0 0 0 0 0 ] 1.39; eta0 eta0 [ 0 0 0 0 0 0 0 ] 4.38; beta beta [ 0 0 0 0 0 0 0 ] 0.012; } NonlinearKEShihCoeffs { Cmu Cmu [ 0 0 0 0 0 0 0 ] 0.09; C1 C1 [ 0 0 0 0 0 0 0 ] 1.44; C2 C2 [ 0 0 0 0 0 0 0 ] 1.92; alphak alphak [ 0 0 0 0 0 0 0 ] 1; alphaEps alphaEps [ 0 0 0 0 0 0 0 ] 0.76932; A1 A1 [ 0 0 0 0 0 0 0 ] 1.25;
101
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes A2 Ctau1 Ctau2 Ctau3 alphaKsi
A2 [ 0 0 0 0 0 0 0 ] 1000; Ctau1 [ 0 0 0 0 0 0 0 ] -4; Ctau2 [ 0 0 0 0 0 0 0 ] 13; Ctau3 [ 0 0 0 0 0 0 0 ] -2; alphaKsi [ 0 0 0 0 0 0 0 ] 0.9;
} LienCubicKECoeffs { C1 C1 [ 0 0 0 0 0 0 0 ] 1.44; C2 C2 [ 0 0 0 0 0 0 0 ] 1.92; alphak alphak [ 0 0 0 0 0 0 0 ] 1; alphaEps alphaEps [ 0 0 0 0 0 0 0 ] 0.76923; A1 A1 [ 0 0 0 0 0 0 0 ] 1.25; A2 A2 [ 0 0 0 0 0 0 0 ] 1000; Ctau1 Ctau1 [ 0 0 0 0 0 0 0 ] -4; Ctau2 Ctau2 [ 0 0 0 0 0 0 0 ] 13; Ctau3 Ctau3 [ 0 0 0 0 0 0 0 ] -2; alphaKsi alphaKsi [ 0 0 0 0 0 0 0 ] 0.9; } QZetaCoeffs { Cmu Cmu [ 0 0 0 0 0 0 0 ] 0.09; C1 C1 [ 0 0 0 0 0 0 0 ] 1.44; C2 C2 [ 0 0 0 0 0 0 0 ] 1.92; alphaZeta alphaZeta [ 0 0 0 0 0 0 0 ] 0.76923; anisotropic no; } LaunderSharmaKECoeffs { Cmu Cmu [ 0 0 0 0 0 0 0 ] 0.09; C1 C1 [ 0 0 0 0 0 0 0 ] 1.44; C2 C2 [ 0 0 0 0 0 0 0 ] 1.92; alphaEps alphaEps [ 0 0 0 0 0 0 0 ] 0.76923; } LamBremhorstKECoeffs { Cmu Cmu [ 0 0 0 0 0 0 0 ] 0.09; C1 C1 [ 0 0 0 0 0 0 0 ] 1.44; C2 C2 [ 0 0 0 0 0 0 0 ] 1.92; alphaEps alphaEps [ 0 0 0 0 0 0 0 ] 0.76923; } LienCubicKELowReCoeffs { Cmu Cmu [ 0 0 0 0 0 0 0 ] 0.09; C1 C1 [ 0 0 0 0 0 0 0 ] 1.44; C2 C2 [ 0 0 0 0 0 0 0 ] 1.92; alphak alphak [ 0 0 0 0 0 0 0 ] 1; alphaEps alphaEps [ 0 0 0 0 0 0 0 ] 0.76923; A1 A1 [ 0 0 0 0 0 0 0 ] 1.25; A2 A2 [ 0 0 0 0 0 0 0 ] 1000; Ctau1 Ctau1 [ 0 0 0 0 0 0 0 ] -4; Ctau2 Ctau2 [ 0 0 0 0 0 0 0 ] 13; Ctau3 Ctau3 [ 0 0 0 0 0 0 0 ] -2; alphaKsi alphaKsi [ 0 0 0 0 0 0 0 ] 0.9; Am Am [ 0 0 0 0 0 0 0 ] 0.016; Aepsilon Aepsilon [ 0 0 0 0 0 0 0 ] 0.263; Amu Amu [ 0 0 0 0 0 0 0 ] 0.00222; } LienLeschzinerLowReCoeffs { Cmu Cmu [ 0 0 0 0 0 0 0 ] 0.09; C1 C1 [ 0 0 0 0 0 0 0 ] 1.44; C2 C2 [ 0 0 0 0 0 0 0 ] 1.92; alphak alphak [ 0 0 0 0 0 0 0 ] 1; alphaEps alphaEps [ 0 0 0 0 0 0 0 ] 0.76923;
102
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes Am Aepsilon Amu
Am [ 0 0 0 0 0 0 0 ] 0.016; Aepsilon [ 0 0 0 0 0 0 0 ] 0.263; Amu [ 0 0 0 0 0 0 0 ] 0.00222;
} LRRCoeffs { Cmu Cmu [ 0 0 0 0 0 0 0 ] 0.09; Clrr1 Clrr1 [ 0 0 0 0 0 0 0 ] 1.8; Clrr2 Clrr2 [ 0 0 0 0 0 0 0 ] 0.6; C1 C1 [ 0 0 0 0 0 0 0 ] 1.44; C2 C2 [ 0 0 0 0 0 0 0 ] 1.92; Cs Cs [ 0 0 0 0 0 0 0 ] 0.25; Ceps Ceps [ 0 0 0 0 0 0 0 ] 0.15; alphaEps alphaEps [ 0 0 0 0 0 0 0 ] 0.76923; } LaunderGibsonRSTMCoeffs { Cmu Cmu [ 0 0 0 0 0 0 0 ] 0.09; Clg1 Clg1 [ 0 0 0 0 0 0 0 ] 1.8; Clg2 Clg2 [ 0 0 0 0 0 0 0 ] 0.6; C1 C1 [ 0 0 0 0 0 0 0 ] 1.44; C2 C2 [ 0 0 0 0 0 0 0 ] 1.92; C1Ref C1Ref [ 0 0 0 0 0 0 0 ] 0.5; C2Ref C2Ref [ 0 0 0 0 0 0 0 ] 0.3; Cs Cs [ 0 0 0 0 0 0 0 ] 0.25; Ceps Ceps [ 0 0 0 0 0 0 0 ] 0.15; alphaEps alphaEps [ 0 0 0 0 0 0 0 ] 0.76923; alphaR alphaR [ 0 0 0 0 0 0 0 ] 1.22; } SpalartAllmarasCoeffs { alphaNut alphaNut [ 0 0 0 0 0 0 0 ] 1.5; Cb1 Cb1 [ 0 0 0 0 0 0 0 ] 0.1355; Cb2 Cb2 [ 0 0 0 0 0 0 0 ] 0.622; Cw2 Cw2 [ 0 0 0 0 0 0 0 ] 0.3; Cw3 Cw3 [ 0 0 0 0 0 0 0 ] 2; Cv1 Cv1 [ 0 0 0 0 0 0 0 ] 7.1; Cv2 Cv2 [ 0 0 0 0 0 0 0 ] 5; } wallFunctionCoeffs { kappa kappa [ 0 0 0 0 0 0 0 ] 0.4187; E E [ 0 0 0 0 0 0 0 ] 9; } // ************************************************************************* //
Este archivo es el que dispone de todos los modelos de turbulencia que puede trabajar el solver simpleFoam. Cada modelo de turbulencia se elige mediante la siguiente línea:
turbulenceModel SpalartAllmaras; turbulence
on;
En este caso, el modelo elegido es el de Spalart-Allmaras, pero podría haber sido otro del listado. Debajo del encabezado del archivo, se encuentra el listado de los modelos y las constantes utilizadas por los modelos de turbulencia, que se pueden cambiar según sea el caso.
103
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes Es de notar que para elegir el nombre del modelo de turbulencia disponible es el nombre sin la palabra Coeffs, por ejemplo el modelo de turbulencia kEpsilon tiene sus constantes en el listado que se llama kEpsilonCoeffs, el modelo SpalartAllmaras hace referencia al listado de coeficientes SpalartAllmarasCoeffs, etc (CFD Online, 2010).
B.3.8 /case/constant/RASProperties /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "constant"; object RASProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // RASModel SpalartAllmaras; turbulence on; printCoeffs on; // ************************************************************************* //
En este archivo se selecciona el modelo RAS de turbulencia (RAS = Reynolds Averaged Stress). La opción turbulence on indica que está activo el modelado de la turbulencia y la opción printCoeffs on indica que se mostrarán en pantalla, la salida de los resultados de la consola, los coeficientes que utiliza el modelo de turbulencia activo, etc.
B.3.9 /case/0/p /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; location "0"; object p; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -2 0 0 0 0]; internalField uniform 0;
104
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes boundaryField { laterales { type empty; } abajo { type slip; } salida { type fixedValue; value uniform 0; } arriba { type slip; } entrada { type zeroGradient; } perfil { type slip; } defaultFaces { type empty; } } // ************************************************************************* //
Este archivo indica las condiciones iniciales para la presión para cada uno de las superficies que intervienen en la geometría en estudio. Cabe destacar que debe contener la misma cantidad de “parches” que el archivo boundary y los tipos de parches (más usados) pueden ser:
empty: con este tipo de parche se le indica al software que no realice cálculos en la pared que se define con este parche. Se usa para el caso bidimensional y para el parche defaultFaces que aparece luego de una conversión ó importación de la malla.
slip: aplica la condición de deslizamiento sobre esa pared. fixedValue: condiciona que sobre esa pared se tenga un valor fijo especificado, por ejemplo en el caso de arriba se impone que el valor sea de cero (value uniform 0;).
zeroGradient: impone la condición que tenga un gradiente igual a cero sobre esa pared.
105
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
B.3.10
/case/0/U
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volVectorField; location "0"; object U; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -1 0 0 0 0]; internalField uniform (0 0 0); boundaryField { laterales { type empty; } abajo { type slip; } salida { type zeroGradient; } arriba { type slip; } entrada { type fixedValue; value uniform (1 0 0); } perfil { type fixedValue; value uniform (0 0 0); } defaultFaces { type empty; } } // ************************************************************************* //
En este archivo se indican los valores del campo de velocidades. Tal como el caso anterior de las presiones, los parches tienen asociada su tipología. Se puede apreciar que en la entrada se ha tomado un valor unitario en la dirección del eje x, de esta manera se define el vector velocidad mediante
106
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes sus tres coordenadas (x y z) y en la región que se desea que la velocidad sea nula, se especifica el valor fijo (0 0 0). Por simplicidad, se toman valores unitarios de la velocidad y de la longitud de referencia, de esta manera el número de Reynolds se calcula con la inversa de la viscosidad cinemática aunque esta parezca ficticia por su magnitud. Es más sencillo obtener un deseado número de Reynolds para un caso determinado de esta manera, que imponer condiciones reales y ajustar la velocidad hasta obtener el número de Reynolds buscado.
B.3.11
/case/0/nuT
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: http://www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; location "0"; object nut; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -1 0 0 0 0]; internalField uniform 0.1; boundaryField { laterales { type empty; } abajo { type slip; } salida { type nutWallFunction; value uniform 0.1; } arriba { type nutWallFunction; value uniform 0.1; } entrada { type nutWallFunction; value uniform 0.1; } perfil { type nutWallFunction;
107
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes value } defaultFaces { type }
uniform 0.1;
empty;
} // ************************************************************************* //
Este archivo es propio del solver simpleFoam para el modelo SpalartAllmaras y tiene una estructura similar al archivo de la velocidad U (ó de la presión p), en el cual se definen tipos de parches para cada región con valores que deben ser ajustados cuidadosamente y se refieren a la viscosidad cinemática turbulenta. En el modelo de Spalart-Allmaras, nut se calcula mediante la multiplicación de nuTilda y una función propia del modelo de turbulencia (CFD Online, 2010).
B.3.12
/case/0/nuTilda
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: http://www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; object nuTilda; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -1 0 0 0 0]; internalField uniform 0.14; boundaryField { laterales { type empty; } abajo { type zeroGradient; } salida { type zeroGradient; } arriba { type zeroGradient; } entrada { type fixedValue; value uniform 0.14; }
108
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes perfil { type } defaultFaces { type }
zeroGradient;
empty;
} // ************************************************************************* //
Este archivo es propio del solver simpleFoam para el modelo SpalartAllmaras y tiene una estructura similar al archivo de la velocidad U (ó de la presión p), en el cual se definen tipos de parches para cada región con valores que deben ser ajustados cuidadosamente y se refieren a la viscosidad cinemática turbulenta modificada, que es necesaria para calcular la viscosidad cinemática turbulenta.
B.3.13
Generar un archivo de log con los resultados de pantalla
Cuando se estar por correr un caso, se puede generar un archivo de texto en donde van los resultados de la simulación. Desde la consola se puede escribir para el caso del solver simpleFoam:
simpleFoam >> log.nombre_del_caso.txt De esta manera el archivo log.nombre_del_caso.txt lleva los resultados que se imprimen en la pantalla. Esto sirve para llevar un control de las simulaciones cuando se dejan corriendo varios casos y para verificar los posibles errores en la ejecución (Stutz, 2004).
B.3.14
Ejecutar automáticamente el solver
Por cuestiones de comodidad y con la experiencia obtenida en el uso de la consola de Linux y de los tipos de archivos, se puede tener un solo archivo que internamente le “ordene” a los diferentes comandos a ejecutarse de manera sucesiva sólo con tipear una sola orden. El archivo creado para el presente trabajo se llama calcular, debe tener permisos de ejecución, lectura y escritura. El mismo contiene: // ************************************************************************* // #!/bin/sh # Source tutorial run functions . $WM_PROJECT_DIR/bin/tools/RunFunctions # Indicar el nombre de la aplicacion: application="simpleFoam" # Se indica el orden de ejecucion de la aplicacion:
109
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes runApplication $application runApplication foamToVTK runApplication sample // ************************************************************************* //
De esta manera se ejecuta el solver simpleFoam y cuando este finalice se ejecutarán los siguientes comandos:
foamToVTK: es un convertidor de formato para que el software del postproceso pueda leer los resultados.
sample: ya descripto anteriomente.
110
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
APENDICE C – Software Gmsh C.1
Introducción a la generación de la malla con Gmsh
Gmsh es un software para generar la geometría y el mallado de figuras bidimensionales y tridimensionales automáticamente. Fue concebido como un software académico para resolver problemas simples, sin embargo a lo largo de los años se ha mejorado lo suficiente para ser utilizado fuera de entornos universitarios. Actualmente Gmsh incluye módulos de pre-procesado (incluido diseño CAD), procesado (conexiones a solvers externos), y post-procesado (visualización de resultados, operaciones vectoriales, etc). Para el presente trabajo se utilizaron principalmente los módulos de diseño de la geometría y del mallado (GMSH, 2010). Estas etapas serán descriptas con ejemplos de los archivos generados. Cabe destacar que Gmsh en la versión para Linux, se puede operar mediante la consola de comandos ó directamente desde el entorno gráfico.
C.2
Instalación de Gmsh
Desde el sitio web oficial de Gmsh se ofrecen ejecutables para el sistema operativo Windows, Mac y Linux. La versión para el sistema operativo Windows es del tipo “portable”, o sea que no requiere instalación sino un directorio de trabajo para que corra el archivo ejecutable. El sitio web oficial es: http://geuz.org/gmsh/ http://geuz.org/gmsh/#Download (lugar de las descargas) Cabe destacar que Gmsh hace uso de las capacidades de aceleración de las placas de video 3D, lo cual es conveniente tener instalados los controladores que permitan sacarle el máximo provecho al hardware, sobre todo en el caso de que se traten de visualizar geometrías o mallas con gran número de elementos.
C.3
Funcionalidades de Gmsh
111
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes Como se ha dicho, Gmsh es un software que ha crecido con el paso de los años. Aunque ha sido conocido principalmente por sus capacidades de diseño y mallado, muchas otras funcionalidades han sido incorporadas. Por una parte existe el modulo de diseño para definir la geometría, que nos permite dibujar visualmente una figura. El mismo resulta intuitivo en su manejo. De hecho el modulo para la creación de la geometría es muy extenso, y es posible crear archivos tipo script (archivos de texto con lenguaje propio Gmsh) en donde se puede definir en forma paramétrica la geometría deseada. El módulo de mallado se apoya en las definiciones geométricas para crear mallados. Es posible hacer mallados en una, dos y tres dimensiones, creando elementos con formas variadas (líneas, triángulos, tetraedros, prismas triangulares y rectangulares, hexaedros y pirámides). Además es posible definir que tipo de algoritmo de mallado queremos. El módulo de post-procesado (relacionado a la visualización) incluye gran número de operaciones diferenciales, vectoriales, herramientas para trabajar con números complejos y funcionalidades para extraer resultados de las distribuciones de datos de entrada (no utilizadas en el presente trabajo).
C.4
Modulo geométrico
El módulo geométrico permite dibujar puntos, líneas, superficies y volúmenes. Además permite seleccionar qué elementos están físicamente presentes en las figuras, puesto que en ocasiones es necesario definir elementos auxiliares sin sentido físico. A partir de la definición de puntos en el espacio es posible ir construyendo líneas, círculos y eclipses. Y con estos elementos se pueden definir las superficies que constituyen a la figura que se busca. Una vez conseguida la figura, es recomendable definir los puntos, líneas y superficies que tienen sentido físico con el nombre de “Physical Groups”, pues así indicaremos al mallador qué partes discretizar. En la web oficial se incluyen algunos vídeos descriptivos para que el usuario pueda familiarizarse en el uso de la aplicación gráfica.
C.4.1 Definir geometría con ficheros de texto La manera más eficiente de crear geometrías en Gmsh es mediante archivos de texto. Utilizando un lenguaje propio en ASCII se pueden crear figuras o incluso incluir bucles cerrados o abiertos Las funciones de Gmsh son muchas y pueden ser encontradas todas en el manual oficial de Gmsh (GMSH, 2010).
112
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes El formato del archivo de la geometría usado en el presente trabajo tiene el formato .geo y el mismo responde a lo siguiente: //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> // // "Modelado de Perfil NACA Gmsh 2.4.2" // Uso posterior: tratarlo con OpenFOAM // Fecha: 26.10.2010 // Autor: Jorge Darío Montes //
[email protected] // Carrera: Ingeniería Aeronáutica // Tesis de Grado // Universidad Nacional de Córdoba // Facultad de Ciencias Exactas, Físicas y Naturales // //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> // Definición de variables de escala puntuales // (el comando Transfinite está por encima de éstos): lc1 = 0.1; lc2 = 0.1; lc = 0.01; bf = 0.1; alfa = 0; // aca se pone el angulo de ataque deseado ang = -alfa/180*Pi; // Definición de Puntos del perfil: p1 = newp; Point(p1) = {1, 0.000945, 0, lc}; p2 = newp; Point(p2) = {0.999753, 0.000971, 0, lc}; p3 = newp; Point(p3) = {0.999013, 0.001049, 0, lc}; p4 = newp; Point(p4) = {0.997781, 0.001178, 0, lc}; p5 = newp; Point(p5) = {0.996057, 0.001359, 0, lc}; p6 = newp; Point(p6) = {0.993844, 0.00159, 0, lc}; p7 = newp; Point(p7) = {0.991144, 0.001872, 0, lc}; . . . . . . . . . p195 = newp; Point(p195) = {0.991144, -0.001872, 0, lc}; p196 = newp; Point(p196) = {0.993844, -0.00159, 0, lc}; p197 = newp; Point(p197) = {0.996057, -0.001359, 0, lc}; p198 = newp; Point(p198) = {0.997781, -0.001178, 0, lc}; p199 = newp; Point(p199) = {0.999013, -0.001049, 0, lc}; p200 = newp; Point(p200) = {0.999753, -0.000971, 0, lc}; p201 = newp; Point(p201) = {1, -0.000945, 0, lc}; // Punto del Borde de fuga: p202 = newp; Point(p202) = {1.009, 0, 0, bf}; //Puntos del contorno: Point(901) = { -1, -1, 0, lc1}; //entrada Point(902) = { 2, -1, 0, lc1}; //salida Point(903) = { 2, 1, 0 , lc2}; //salida Point(904) = { -1, 1, 0 , lc2}; //entrada // Definición de la spline del perfil, debe empezar y // terminar en el mismo punto Spline (1000) = {p1,p2,p3,p4,p5,p6,p7,. . ., . . .,p195,p196,p197,p198,p199,p200,p201}; // Lineas del contorno: Line(4) = {901,902}; Line(5) = {902,903}; Line(6) = {903,904}; Line(7) = {904,901}; Line(8) = {201,202}; Line(9) = {202,1}; Rotate {{0, 0, 1}, {0, 0, 1}, ang} {Line{8,9,1000};} // Líneas cerradas para generar la extrusión: Line Loop(21) = {1000,8,9}; Line Loop(23) = {4,5,6,7};
113
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes // Creación de la superficie sin el perfil: Plane Surface(24) = {23,21}; // Aquí es donde se genera el volumen con el comando que hace // la extrusión: Extrude{0,0,1}{Surface{24}; Layers{1};Recombine;} // Con el comando Transfinite, hacemos que las líneas se dividan en // la cantidad de partes que se deseen: Transfinite Line{1000} = 100; // cantidad de divisiones del perfil Transfinite Line{8,9} = 5; // divisiones del borde de fuga Transfinite Line{4,6,7} = 50; // divisiones de arriba, abajo y entrada Transfinite Line{5} = 50; // cantidad de divisiones de la salida //Agregamos los comentarios en cuanto al creador y otros datos que sean // relevantes para explicar de la mejor manera la geometría en estudio: View "comments" { //10 pixels desde la izquierda y 15 pixels desde arriba: T2(10,15,0){"Archivo creado el 26.10.2010"}; //10 pixels desde ya izquierda y 10 pixels desde abajo: T2(10,-10,0){"Autor: Jorge Dario Montes - Archivo: NACA0009r_a+00.geo"}; //sobre la geometría, según (X,Y,Z,altura de fuente)=(0,0,0,5): T3(0,0.2,0,0){"Perfil"}; T3(-3,0,0,0){"Entrada"}; T3(3.5,0,0,0){"Salida"}; T3(0,2.5,0,0){"Arriba"}; T3(0,-2.5,0,0){"Abajo"}; }; //Color Grey50{ Surface{ 22 }; } Color Black{ Surface {24,1037}; } Color Red{ Line{ 1000 }; } //Color Yellow{ Line{ 15:20 }; } // Definición de las superficies físicas para trabajar con OpenFOAM, se // usa gmsh >Tools>Options>Geometry>Visibility para saber cuales son las // superficies de interés: Physical Surface("laterales") = {24,1037}; Physical Surface("abajo") = {1012}; Physical Surface("arriba") = {1020}; Physical Surface("entrada") = {1024}; Physical Surface("perfil") = {1036,1028,1032}; Physical Surface("salida") = {1016}; // El volumen generado por el comando extrude se lo llama 1 y se le // llama "internalField" para que sea compatible con OpenFOAM: Physical Volume("internalField") = {1}; // Fin.NACA0009r_a+00.geo
En el ejemplo anterior se muestra la creación de un perfil aerodinámico con una serie de 201 puntos definiendo la geometría del perfil en sentido antihorario desde el borde de fuga. El sistema de coordenadas toma como centro al punto que define el borde de ataque y este punto es sobre el cual se realiza la rotación para los diferentes ángulos de ataque.
Gmsh usa variables de escala locales, las mismas se encuentran definidas como una “cuarta” coordenada cuando se define un nuevo punto. En el siguiente ejemplo, se denomina a esa coordenada como lc. p4 = newp; Point(p4) = {0.997781, 0.001178, 0, lc};
114
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes Para la generación de la geometría del perfil aerodinámico bidimensional, se crea una línea que contiene a todos los puntos del perfil. Luego se define un contorno ó borde que define la frontera del modelo. Una vez que se tienen unidos los puntos con líneas curvas, se definen las líneas cerradas, estas serán de utilidad cuando se definan las superficies. Para la creación de la superficie, se utiliza el comando Plane Surface que genera una superficie plana de la línea cerrada a la que se le aplique. Si se quiere crear una superficie con un “hueco” ó un “déficit superficial”, al comando Plane Surface se le indica primero la línea cerrada que denota el contorno externo y luego la línea cerrada que denota el “hueco”, que en este caso es el perfil aerodinámico. Resumiendo, hasta ahora se tiene una superficie rectangular en la cual se le ha recortado una parte de esta, que tiene la forma del perfil aerodinámico en estudio. Cuando ya se tiene la superficie recortada, se procede a usar el comando Extrude, lo que este hace es darle la dimensión de profundidad a la superficie y por ende transformarla en una entidad tridimensional (no es más que una superficie extruida).
C.4.2 Archivos de otros programas Gmsh permite utilizar definiciones de geometría procedentes de otros programas, concretamente archivos con formato IGES, Step y BRep. También es posible importar (mediante una herramienta externa) archivos dxf, pero en tal caso solo se asumirán puntos y líneas, así que será necesario definir superficies y elementos físicos dentro del propio Gmsh (no tratado en el presente trabajo).
C.5
Módulo de mallado
En Gmsh es posible modificar una multitud de parámetros a la hora de crear un mallado. En el presente trabajo, se utilizó el comando Transfinite Line para indicarle al programa Gmsh en cuantas partes se divide una línea especificada. De esta manera y a la hora de mallar, se concentrarán mayor cantidad de elementos en las regiones en la cuales se hayan dividido las líneas en un mayor ó menor número de partes. Es de destacar que el comando Transfinite Line está por encima de las variables de escala locales cuando se realiza un mallado. El comando Extrude, también permite crear capas en el volumen extruido al igual que concentrarlos en uno de los extremos de la geometría generada. Permite generar mallas estructuradas.
115
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes En la figura C.1 se puede observar el resultado del comando Extrude para distintas configuraciones del mismo.
Figura C.1 – Mallado con el comando Extrude
En la figura C.2, se observa el uso de Transfinite Line en una región del borde de fuga del perfil aerodinámico, la línea se dividió en 5 partes, mientras que en la figura C.3, se dividió en 20 partes. Esto demuestra las utilidades del módulo de mallado de Gmsh en el cual, si bien tiene algunas limitaciones respecto a otros paquetes de software comercial, se desempeña bastante bien en cuanto a sus funciones básicas.
116
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
Figura C.2 – Uso del comando Transfinite Line = 5
Figura C.3 – Uso del comando Transfinite Line = 20
En el presente trabajo, la generación de la malla ha sido diseñada para que sea del tipo semi-estructurada, ya que contiene poliedros prismáticos triangulares y no poliedros tetraédricos.
117
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes Como la malla será utilizada por un código CFD para el estudio de un caso bidimensional, los prismas han sido orientados transversalmente para que en la simulación, el flujo de fluido pase en sentido transversal al elemento prisma, de esta manera se obtiene un resultado más homogéneo que no se obtendría con elementos tetraédricos. Se sabe que en una estructura tridimensional pura, los elementos del tipo tetraédricos otorgan el mejor resultado ya que por su forma característica producen un “llenado” más uniforme que si se tratara de elementos prismáticos u otro tipo de elemento de malla. En el presente trabajo, se estudia un caso bidimensional con “profundidad” unitaria, por ello el comando extrude ayuda a generar los prismas en las regiones de interés.
Figura C.4 – Cavidad con malla semi-estructurada con prismas triangulares
Figura C.5 – Cavidad con malla no-estructurada con tetraedros
118
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes En la figura C.4 se puede notar que la malla compuesta por prismas es más homogénea en cuanto a su estructuración, y en la zona de la cavidad presenta un determinado grado de “llenado” de la misma. Por otro lado, la figura C.5, muestra una malla compuesta por elementos tetraédricos en los cuales el “llenado” de la cavidad tiene un grado mayor, por ello se puede concluir que para geometrías que van a ser tratadas como bidimensionales es conveniente que se utilicen prismas como elementos de malla mientras que para estructuras tridimensionales puras, los elementos de malla del tipo tetraédricos son los que producen un mejor copiado de la geometría.
C.6
Compatibilidad con OpenFOAM
La malla creada por Gmsh puede ser leída por el software OpenFOAM mediante un comando de conversión. El mismo crea o actualiza si ya existen archivos dentro del directorio:
/case/constant/polyMesh/
Dentro de este directorio se encuentran los datos de la malla, que se distribuyen en varios archivos como ser: cells, cellZones, faces, faceZone, neighbour, owner, points, pointZones y boundary y en otro directorio llamado /case/constant/polyMesh/sets/ en donde se encuentra el archivo internalField que define el volumen de la geometría en estudio y que además pueden figurar otros archivos dependiendo del solver utilizado. El comando de conversión se llama gmshToFoam y se aplica de la siguiente manera:
gmshToFoam nombre_del_archivo.msh Este comando realiza la conversión del archivo generado por Gmsh con extensión .msh para que el solver de software OpenFOAM pueda leer la discretización espacial generada.
119
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
C.6.1 Error en la conversión del archivo .msh Cuando se ejecuta la conversión con el comando anterior, es probable que se produzca un error en la ejecución cuando la versión del software Gmsh no es compatible con la versión del conversor. Esto se debe a que el encabezado del archivo tiene caracteres que denotan la dimensión de las propiedades físicas de la geometría, por ejemplo si se trata de una pared, aparecerá el número 2 y si se trata de un volumen aparecerá el número 3 en los “Physicals Groups”. El encabezado normal de un archivo .msh puede ser: $MeshFormat 2.1 0 8 $EndMeshFormat $PhysicalNames 7 2 1 "laterales" 2 2 "abajo" 2 3 "arriba" 2 4 "entrada" 2 5 "cilindro" 2 6 "salida" 3 7 "internalField" $EndPhysicalNames $Nodes . . . . . . . . .
El
mismo
puede traer conflictos cuando se ejecute el comando gmshToFoam, por ello deberá editarse mediante algún editor de textos (Gedit, 2010) para que quede de la siguiente manera: 2.1 0 8 $EndMeshFormat $PhysicalNames 7 1 "laterales" 2 "abajo" 3 "arriba" 4 "entrada" 5 "cilindro" 6 "salida" 7 "internalField" $EndPhysicalNames $Nodes . . . . . . . . .
De esta manera de puede ejecutar el comando de conversión sin que traiga inconvenientes. Luego resta que el usuario modifique los archivos necesarios para correr el caso con el solver del software OpenFOAM (CFD Online, 2010).
120
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
APENDICE D – Software ParaView D.1
Post-proceso
El software ParaView es un programa de descarga gratuita y se utiliza para visualizar los datos que se obtienen mediante las simulaciones computacionales (ParaView-3.6.1, 2010). La página oficial del software es la siguiente: http://www.paraview.org/ y la de la descarga del mismo tanto para Windows como para Linux es: http://www.paraview.org/paraview/resources/software.html Luego de la descarga, la instalación es similar a la de cualquier otro software, un usuario con un poco de conocimiento, la podrá realizar sin problemas En el presente trabajo, se ha utilizado el mismo para realizar las visualizaciones del campo de movimiento del fluido cuando este pasa a alrededor de cuerpos bidimensionales como ser un cilindro y un perfil aerodinámico desde las simulaciones numéricas hechas con el software OpenFOAM.
D.2
Formato de archivos
El formato de los archivos que soporta el software ParaView es muy diverso, sin embargo el formato que se utilizó en el presente trabajo es el Legacy VTK con archivos que tienen la extensión .vtk. El formato .vtk se logra mediante un comando de conversión que se llama foamToVTK, el mismo se ejecuta cuando la simulación ha terminado para tomar los datos de la simulación y crear una serie de archivos .vtk que serán leídos por ParaView.
D.3
Apariencia de ParaView
La ventana de trabajo de ParaView tiene la apariencia que se muestra en la figura D.1, en la misma se encuentra la barra de herramientas estándar, un selector de vistas, un grupo de controles de paso del tiempo, las herramientas para utilizar los filtros y el visor de la estructura tipo “árbol” con el o los casos estudiados.
121
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
Figura D.1 – Ventana de trabajo de ParaView
En la figura D.2, se muestra la información sobre un caso de un perfil aerodinámico, en el cual se ha seleccionado el campo de velocidades y se le aplicarán los filtros correspondientes para visualizar los datos.
Figura D.2 – Ventana de trabajo de ParaView con un caso en estudio
122
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
D.4
Barras y ventanas de herramientas
Las barras y ventanas de herramientas más útiles son las que se muestra en las siguientes figuras.
D.4.1 Barra Menu
Figura D.3 – Barra de Menu
Es la barra de comandos del menú. En la misma se encuentran todas las opciones de control del software ParaView.
D.4.2 Barra Main Controls
Figura D.4 – Controles de abrir-guardar-conectar
En la misma se encuentran las opciones de abrir, guardar, conectar, desconectar y ayuda.
D.4.3 Barra Active Variable Control
Figura D.5 – Controles de variable activa
En esta barra de herramientas se encuentran las opciones de visualización de la variable en estudio. En la figura D.5 se muestra seleccionada el campo de la velocidad como magnitud. Otras variables pueden aparecer como opciones, por ejemplo la presión, la temperatura, la vorticidad, etc, según sea el caso de estudio.
D.4.4 Barra Camera Controls
Figura D.6 – Control de la cámara
123
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes En la figura D.6 se muestran las opciones que tiene el usuario para mostrar la entidad en estudio según sean los ejes elegidos. Es muy útil cuando se quiere visualizar desde un lugar fijo, por ejemplo desde el eje z para un caso bidimensional.
D.4.5 Barra VCR Controls
Figura D.7 – Control del tiempo
La barra del control del tiempo permite navegar a través del intervalo de tiempo resuelto por el programa de CFD en todo su rango. Además tiene la opción de ejecutar una simulación del tipo animada (mediante el botón de “play”) del fenómeno en estudio, siempre y cuando el mismo se haya resuelto en intervalos de tiempo En el caso del software OpenFOAM, el solver icoFoam y simpleFoam permiten navegar en el tiempo mientras que el solver potentialFoam solo dispone de un solo intervalo de tiempo.
D.4.6 Ventana Lookmarks
Figura D.8 – Visualización 3D
En la figura D.8, se muestra la visualización del cuerpo en estudio. Esta ventana se puede configurar para mostrar distintas categorías de visualización como ser gráficos 2D, histogramas, tablas, etc.
124
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
D.4.7 Ventana Pipeline Browser
Figura D.9 – Navegador de objetos
El pipeline browser, permite la navegación a través de los objetos en estudio como así también los filtros aplicados, permite que se activen ó se desactiven los mismos para que se visualicen en la ventana de lookmarks.
D.4.8 Ventana Object Inspector
Figura D.10 – Opciones de filtros y vistas
El inspector de objetos permite que se seleccionen las opciones de cada una de los elementos que se muestran en el pipeline browser, como ser
125
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes tipo de filtros, opciones de la configuración propia de los filtros, elementos de análisis de datos, elementos relacionados con las opciones temporales, colores, tipo de gráficos, espesor de líneas, puntos, etc.
D.5
Exportar resultados
El software ParaView permite realizar la operación de exportar los resultados para poder visualizar de una mejor manera los mismos. Algunos de los formatos de imagen pueden ser del tipo JPG, PNG, BMP, TIF e incluso en un PDF. También permite que se realicen animaciones sobre las simulaciones computacionales. Esto permite una visualización muy detallada del comportamiento del fenómeno en estudio a través del tiempo y de poder tener un registro de la simulación de una manera más gráfica. El formato del video generado es AVI y también permite que se genere una secuencia de imágenes JPG ó PNG de cada intervalo de tiempo elegido como si fueran sucesivas capturas.
126
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
APENDICE E – Ejecución de Casos de OpenFOAM E.1
Uso del solver potentialFoam
Para la ejecución de un caso (case) del solver potentialFoam de OpenFOAM, es necesario contar con los siguientes archivos:
/case/script_de_ejecucion (no requerido pero recomendado) /case/nombre_del_archivo.geo /case/nombre_del_archivo.msh /case/0/p /case/0/U (no requerido pero recomendado) /case/0/U.bak /case/constant/polyMesh/boundary /case/constant/polyMesh/cellZones /case/constant/polyMesh/faces /case/constant/polyMesh/faceZones /case/constant/polyMesh/neighbour /case/constant/polyMesh/owner /case/constant/polyMesh/points /case/constant/polyMesh/pointZones /case/constant/polyMesh/sets/highAspectRatioCells /case/constant/polyMesh/sets/internalField /case/constant/polyMesh/sets/twoInternalFacesCells /case/constant/polyMesh/sets/underdeterminedCells /case/system/controlDict /case/system/fvSchemes /case/system/fvSolution (no requerido pero recomendado) /case/system/sampleDict (en donde dice case se refiere al nombre que el usuario le da al caso) Algunos de estos archivos se generarán luego de una serie de comandos, otros ya pueden existir de antemano en el directorio del caso. Los pasos a seguir serían: - Generar el archivo de la geometría (nombre_del_archivo.geo) con Gmsh asegurándose que las superficies ó paredes tengan un nombre único y que tengan significado físico (por ejemplo entrada, salida, etc.), y que el volumen generado, por más que se estudie un caso bidimensional, se llame internalField. - Generar el archivo de la malla (nombre_del_archivo.msh) con el software Gmsh desde la consola o mediante el entorno gráfico (ver APENDICE C)
127
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes - Situarse a través de la consola en el directorio raíz del caso y ejecutar el comando de conversión:
gmshToFoam nombre_del_archivo.msh Si da errores en su ejecución, editarlo como se explica en el APENDICE C. De lo contrario, si sale bien la conversión, seguir con el procedimiento. - Editar el archivo:
/case/constant/polyMesh/boundary En las paredes ó caras que no se quiere que se realicen los cálculos, por ejemplo en los laterales de un caso 2D, se deberá cambiar en donde dice patch por la palabra empty, si en el proceso de conversión aparece una nueva entidad llamada defaultFaces, es necesario cambiarle su tipología de patch a empty. - Editar el archivo
/case/0/U En donde aparecerán y se deberán editar las condiciones iniciales de la velocidad y las condiciones de contorno. Es recomendable que se haga una copia de respaldo una vez impuestas los datos en el archivo U, la copia debería llamarse U.bak para que sea fácil recordarla ya que una ves hecha la simulación, el archivo original U se llena de información, cambiando así su estructura interna. - Editar el archivo:
/case/0/p En este archivo se indican las condiciones iniciales de la presión y de contorno. - Editar el archivo:
/case/system/controlDict Se establece el paso del tiempo y el control de la simulación. - Se editan los archivos en caso de ser necesario (para usuarios avanzados):
/case/system/fvSchemes
128
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
/case/system/fvSolution Verificar que todos los archivos abiertos hayan sido guardados y se deberá tener la cantidad indicada más arriba (en total 22 ó 19 si se sacan los no requeridos). - Se ejecuta el comando del solver en la consola:
potentialFoam - Una vez que finalizó, se podrá ejecutar el comando
sample Siempre y cuando se tenga al archivo sampleDict indicado en el directorio /case/system/sampleDict. - Ejecutar la conversión al formato .vtk mediante el comando:
foamToVTK - Iniciar el software Paraview y abrir los archivos generados con el formato .vtk.
129
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
E.2
Uso del solver icoFoam
Para la ejecución de un caso (case) del solver icoFoam de OpenFOAM, es necesario contar con los siguientes archivos: (no requerido pero recomendado) /case/script_de_ejecucion /case/nombre_del_archivo.geo /case/nombre_del_archivo.msh /case/0/p /case/0/U /case/constant/transportProperties /case/constant/polyMesh/boundary /case/constant/polyMesh/cellZones /case/constant/polyMesh/faces /case/constant/polyMesh/faceZones /case/constant/polyMesh/neighbour /case/constant/polyMesh/owner /case/constant/polyMesh/points /case/constant/polyMesh/pointZones /case/constant/polyMesh/sets/highAspectRatioCells /case/constant/polyMesh/sets/internalField /case/constant/polyMesh/sets/twoInternalFacesCells /case/constant/polyMesh/sets/underdeterminedCells /case/system/controlDict /case/system/fvSchemes /case/system/fvSolution (no requerido pero recomendado) /case/system/sampleDict
(en donde dice case se refiere al nombre que el usuario le da al caso) Algunos de estos archivos se generarán luego de una serie de comandos, otros ya pueden existir de antemano en el directorio del caso. Los pasos a seguir serían: - Generar el archivo de la geometría (nombre_del_archivo.geo) con Gmsh asegurándose que las superficies ó paredes tengan un nombre único y que tengan significado físico (por ejemplo entrada, salida, etc.), y que el volumen generado, por más que se estudie un caso bidimensional, se llame internalField. - Generar el archivo de la malla (nombre_del_archivo.msh) con el software Gmsh desde la consola o mediante el entorno gráfico (ver APENDICE C)
130
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes - Situarse a través de la consola en el directorio raíz del caso y ejecutar el comando de conversión:
gmshToFoam nombre_del_archivo.msh Si da errores en su ejecución, editarlo como se explica en el APENDICE C. De lo contrario, si sale bien la conversión, seguir con el procedimiento. - Editar el archivo:
/case/constant/polyMesh/boundary En las paredes ó caras que no se quiere que se realicen los cálculos, por ejemplo en los laterales de un caso 2D, se deberá cambiar en donde dice patch por la palabra empty, si en el proceso de conversión aparece una nueva entidad llamada defaultFaces, es necesario cambiarle su tipología de patch a empty. - Editar el archivo
/case/0/U En donde aparecerán las condiciones iniciales de la velocidad y de contorno. - Editar el archivo:
/case/0/p En este archivo se indican las condiciones iniciales de la presión y también de contorno. - Editar el archivo:
/case/constant/transportProperties En este archivo se le otorga el valor de la viscosidad cinemática. - Editar el archivo:
/case/system/controlDict Se establece el paso del tiempo y el control de la simulación. Recordar que el número de Courant es muy sensible al paso del tiempo.
131
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes - Se editan los archivos en caso de ser necesario (para usuarios avanzados):
/case/system/fvSchemes /case/system/fvSolution Verificar que todos los archivos abiertos hayan sido guardados y se deberá tener la cantidad indicada más arriba (en total 22 ó 20 si se sacan los no requeridos). - Se ejecuta el comando del solver en la consola:
icoFoam - Una vez que finalizó, se podrá ejecutar el comando
sample siempre y cuando se tenga al archivo sampleDict indicado en el directorio /case/system/sampleDict. - Ejecutar la conversión al formato .vtk mediante el comando:
foamToVTK - Iniciar el software Paraview y abrir los archivos generados con el formato .vtk.
132
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
E.3
Uso del solver simpleFoam
Para la ejecución de un caso (case) del solver simpleFoam de OpenFOAM, es necesario contar con los siguientes archivos:
/case/script_de_ejecucion (no requerido pero recomendado) /case/nombre_del_archivo.geo /case/nombre_del_archivo.msh /case/0/p /case/0/U /case/0/nut /case/0/nuTilda /case/constant/transportProperties /case/constant/turbulenceProperties /case/constant/RASProperties /case/constant/polyMesh/boundary /case/constant/polyMesh/cells /case/constant/polyMesh/cellZones /case/constant/polyMesh/faces /case/constant/polyMesh/faceZones /case/constant/polyMesh/neighbour /case/constant/polyMesh/owner /case/constant/polyMesh/points /case/constant/polyMesh/pointZones /case/constant/polyMesh/sets/highAspectRatioCells /case/constant/polyMesh/sets/internalField /case/constant/polyMesh/sets/twoInternalFacesCells /case/constant/polyMesh/sets/underdeterminedCells /case/system/controlDict /case/system/fvSchemes /case/system/fvSolution /case/system/sampleDict (no requerido pero recomendado) (en donde dice case se refiere al nombre que el usuario le da al caso) Algunos de estos archivos se generarán luego de una serie de comandos, otros ya pueden existir de antemano en el directorio del caso. Los pasos a seguir serían: - Generar el archivo de la geometría (nombre_del_archivo.geo) con Gmsh asegurándose que las superficies ó paredes tengan un nombre único y que tengan significado físico (por ejemplo entrada, salida, etc.), y que el volumen generado, por más que se estudie un caso bidimensional, se llame internalField.
133
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes - Generar el archivo de la malla (nombre_del_archivo.msh) con el software Gmsh desde la consola o mediante el entorno gráfico (ver APENDICE C) - Situarse a través de la consola en el directorio raíz del caso y ejecutar el comando de conversión:
gmshToFoam nombre_del_archivo.msh Si da errores en su ejecución, editarlo como se explica en el APENDICE C. De lo contrario, si sale bien la conversión, seguir con el procedimiento. - Editar el archivo:
/case/constant/polyMesh/boundary En las paredes ó caras que no se quiere que se realicen los cálculos, por ejemplo en los laterales de un caso 2D, se deberá cambiar en donde dice patch por la palabra empty, si en el proceso de conversión aparece una nueva entidad llamada defaultFaces, es necesario cambiarle su tipología de patch a empty. El resto de las tipologías patch deben cambiarse por wall. - Editar el archivo
/case/0/U En donde aparecerán las condiciones iniciales de la velocidad y de contorno. - Editar el archivo:
/case/0/p En este archivo se indican las condiciones iniciales de la presión y también de contorno. - Editar el archivo:
/case/0/nut En este archivo se indican las condiciones iniciales de la viscosidad cinemática turbulenta. Su valor es muy sensible a la inestabilidad en los resultados. - Editar el archivo:
134
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
/case/0/nuTilda En este archivo se editan las condiciones iniciales de la viscosidad cinemática turbulenta modificada. Su valor es muy sensible a la inestabilidad en los resultados. - Editar el archivo:
/case/constant/transportProperties En este archivo se le otorga el valor de la viscosidad cinemática, densidad y modelo de transporte (por default Newtoniano) - Editar el archivo:
/case/constant/RASProperties En este archivo se indica el modelo de turbulencia elegido y si se activa o desactiva el mismo. - Editar el archivo:
/case/constant/turbulenceProperties En este archivo se indica los modelos de turbulencia disponibles junto a las constantes utilizadas por ellos. - Editar el archivo:
/case/system/controlDict Se establece el paso del tiempo y el control de la simulación. - Se editan los archivos en caso de ser necesario (para usuarios avanzados):
/case/system/fvSchemes /case/system/fvSolution Verificar que todos los archivos abiertos hayan sido guardados y se deberá tener la cantidad indicada más arriba (en total 27 ó 25 si se sacan los no requeridos). - Se ejecuta el comando del solver en la consola:
135
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
simpleFoam - Una vez que finalizó, se podrá ejecutar el comando
sample siempre y cuando se tenga al archivo sampleDict indicado en el directorio /case/system/sampleDict. - Ejecutar la conversión al formato .vtk mediante el comando:
foamToVTK - Iniciar el software Paraview y abrir los archivos generados con el formato .vtk.
136
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
NOTA IMPORTANTE: Estos pasos han sido probados con los modelos de geometrías y de mallas hechos con el software Gmsh, por lo tanto los mismos pueden variar levemente en algunos casos si no se reproducen de igual manera. Las referencias utilizadas para la generación de los pasos anteriores han sido tomadas desde el Manual del Programador de OpenFOAM (OpenFOAM1.6b, 2009), la Guía de Usuario de OpenFOAM (OpenFOAM-1.6a, 2009), el foro del sitio web de CFD Online (CFD Online, 2010) y la fuente de mayor provecho: la experiencia compartida entre el autor y el director del presente trabajo.
137
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
Referencias Abbott I.H. and Doenhoff A.E., Theory of Wing Sections, Including a summary of airfoil data, Dover, 1959. Anderson, J.D.Jr, Fundamentals of Aerodynamics, Third Edition. MacGraw Hill Higher Education, 2001. Blazek, J., Computational Fluid Dynamics: Principles and Applications. Elsevier, 2001. Blum, R., Linux Command Line and Shell Scripting Bible, Wiley Publishing, 2008. Calvi, T.R., Mecánica de los Fluidos: Notas Didácticas 1 a 10. Universidad Nacional de Córdoba, 2003. CFD Online, An online center for Computational Fluid Dynamics, 2010. http://www.cfd-online.com/ Drela, M., XFLR5 Documentation, 2010, http://xflr5.sourceforge.net/xflr5.htm Gedit-2.30.1-1, Gedit, Text Editor Of The Gnome Desktop Environment, 2010. http://projects.gnome.org/gedit/ Gmsh-2.4.2, Reference Manual, 2010. http://geuz.org/gmsh/ Kundu, P.K. and Cohen I.M., Fluid Mechanics, Fourth Edition. Elsevier, 2010. MultiFoil, Aplicación del Método de los Paneles, Universidad Nacional de Córdoba, 2007. http://www.efn.unc.edu.ar/departamentos/aero/ NACA Report Nº619, Drag of Cylinders of Simple Shapes, 1937. NACA Report Nº1191, On the Development of Turbulent Wakes from Vortex Streets, 1954. Negus, C. and Caen F., Ubuntu Linux Toolbox, 1000+ Commands for Ubuntu and Debian Power Users, Wiley Publishing, 2008. OpenFOAM, Página Web, 2010, http://www.openfoam.com/
138
Tesis de Grado Título: Ingeniero Aeronáutico Autor: Jorge Darío Montes
OpenFOAM-1.6a, The Open Source CFD Toolbox, User Guide, OpenCFD, 2009. http://www.openfoam.com/ OpenFOAM-1.6b, The Open Source CFD Toolbox, Programmer´s Guide, OpenCFD, 2009. http://www.openfoam.com/ ParaView-3.6.1, Online Documentation, 2010, http://www.paraview.org/ Shames, I.H., Mecánica de los Fluidos, Tercera Edición, 1995. Stutz, M., The Linux Cookbook, Tips and Techniques for Everyday Use, Second Edition, No Starch Press, 2004 Van Dyke, M., Album of Fluid Motion, The Parabolic Press, 1982. Versteeg H.K. and Malalasekera W., An introduction to computacional fluid dynamics, The finite volume method. Longman, 1995.
139