documentaciÓn y simulaciÓn numÉrica de...

88
Escuela Politécnica Superior de Jaén UNIVERSIDAD DE JAÉN Escuela Politécnica Superior Trabajo Fin de Grado DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL Alumno: Rami Boutassghount El Boussmaki Tutor: Prof. D. Patricio Bohórquez Rodríguez de Medina Dpto: Ingeniería Mecánica y Minera Octubre, 2014

Upload: others

Post on 17-Apr-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Escu

ela

Polit

écn

ica S

up

eri

or

de J

n

UNIVERSIDAD DE JAÉN Escuela Politécnica Superior

Trabajo Fin de Grado

DOCUMENTACIÓN Y

SIMULACIÓN NUMÉRICA DE

PROBLEMAS EÓLICOS CON

APLICACIÓN DOCENTE E

INDUSTRIAL

Alumno: Rami Boutassghount El Boussmaki Tutor: Prof. D. Patricio Bohórquez Rodríguez de Medina

Dpto: Ingeniería Mecánica y Minera

Octubre, 2014

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

ÍNDICE0. INTRODUCCIÓN Y MOTIVACIÓN ....................................................................................2

0.1 Objetivos...........................................................................................................................21. INTRODUCCIÓN GENERAL A OPENFOAM....................................................................3

1.1 Características del software.............................................................................................31.2 Eólica y OpenFOAM........................................................................................................31.3 Modo de instalación y uso................................................................................................5

1.3.1 Instalación de Linux en una partición del disco duro...............................................61.3.2 Ejecución directa mediante USB..............................................................................81.3.3 Instalación Virtual...................................................................................................101.3.4 Instalación de OpenFOAM.....................................................................................11

1.4 Post-procesado: paraView..............................................................................................121.5 Aplicaciones de OpenFOAM en Eólica..........................................................................16

2. CAPA LÍMITE TURBULENTA SOBRE UNA PLACA PLANA........................................172.1 Descripción física del problema.....................................................................................172.2 Modelo de turbulencia k – ω..........................................................................................192.3 Mallado del caso.............................................................................................................202.4 Condiciones iniciales, de contorno y propiedades del fluido.........................................242.5 Esquemas numéricos y control de la discretización empleados.....................................272.6 Simulación y resultados..................................................................................................30

3. MALLADO DE TERRENO COMPLEJO............................................................................363.1 Capa límite atmosférica..................................................................................................363.2 Motivación por un buen mallado del terreno..................................................................383.3 Mallado con snappyHexMesh........................................................................................413.4 Mallado con terrainBlockMesh......................................................................................433.5 Introducción de un modelo simplificado de aerogenerador...........................................46

4. DISCO ACTUADOR............................................................................................................484.1 Fundamento teórico........................................................................................................484.2 Modelo de turbulencia ...................................................................................................504.3 Dominio computacional y mallado del problema...........................................................504.4 Condiciones iniciales y de contorno y propiedades del fluido.......................................554.5 Esquemas numéricos y control de la simulación ...........................................................584.6 Simulación y resultados..................................................................................................60

5. MALLADO MÓVIL.............................................................................................................635.1 Introducción teórica........................................................................................................635.2 SRF (Single Rotation Frame).........................................................................................64

5.2.1 Problema transitorio................................................................................................655.2.2 Problema estacionario.............................................................................................68

5.3 MRF (Multiple Rotation Frame)....................................................................................705.3.1 Problema transitorio................................................................................................725.3.2 Problema estacionario.............................................................................................75

6. CONCLUSIONES.................................................................................................................77ANEXO I: ACLARACIONES SOBRE EL DICCIONARIO fvSchemes...............................80ANEXO II: RESOLUCION Y ALGORITMOS DE CONTROL (DICCIONARIO fvSolution)...................................................................................................................................................83BIBLIOGRAFÍA.......................................................................................................................85RECURSOS WEBS..................................................................................................................86

Escuela Politécnica Superior de Jaén 1

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

0. INTRODUCCIÓN Y MOTIVACIÓN

El presente proyecto corresponde a la explicación de la instalación, descripción y desarrollo de aplicaciones del software OpenFOAM, Open Field Operation And Manipulation, presentando un conjunto de casos previstos para la simulación de diversas situaciones frecuentes en el campo de la Mecánica de Fluidos, concretamente nos centraremos en la energía eólica.

El motivo principal que justifica el interés de este proyecto es que OpenFOAM está teniendo una gran base de usuarios en la mayoría del área de la ingeniería y de la ciencia, tanto de las organizaciones comerciales como académicas. El creciente interés de dicho software es evidente por ejemplo analizando el incremento del número de publicaciones JRC por año en que se usa OpenFOAM (4, 13, 15, 27, 54, 118, 154, 192 desde 2006 a 2013, datos de Scopus), también podemos observar que el número de cursos de formación va aumentando a lo largo de los últimos años si visitamos su página web. A nivel nacional se comienza a utilizar el software en diversas universidades y empresas. La tendencia creciente del uso de este software se debe, entre otros motivos, a que la adquisición tanto de OpenFOAM como de Linux solo se limita a tener una buena conexión a internet puesto que se distribuye de manera gratuita y libre (como veremos en el siguiente capítulo). Otras de las ventajas del software son la facilidad para realizar simulaciones en paralelo y la posibilidad de generar mallado en programas externos para su procesado en OpenFOAM. También se ha de destacar que apenas se dispone de documentación sobre OpenFOAM en castellano que pueda servir de ayuda para la inicialización de nuevos usuarios en su manejo, debido a todo esto surge la necesidad de elaborar este documento en forma de Trabajo Fin de Grado.

Por otro lado, nuestro interés en enfocar el TFG en la energía eólica está motivado por su imparable crecimiento en términos producción energética global desde el comienzo de este siglo, sobre todo, en países como Alemania, EEUU o España.

0.1 Objetivos

Los objetivos del presente proyecto son:

1. Documentación de simulaciones numéricas (pre-procesado, procesado y post-procesado) en el ámbito de la Energía Eólica y de la Mecánica de Fluidos mediante el uso del software libre (OpenFOAM y otras aplicaciones).

2. Validación de resultados obtenidos en algunas simulaciones mediante la comparación con los datos procedentes de otros autores.

Para alcanzar los objetivos descritos se detallará la secuencia de comandos a seguir en cada caso, o simulación; configuración de la misma, generación de malla, se indicará los “solvers” a usar en etapa de procesado... También se describirá las aplicaciones de una herramienta de post-procesado como es ParaView.

Escuela Politécnica Superior de Jaén 2

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

1. INTRODUCCIÓN GENERAL A OPENFOAM

1.1 Características del software

OpenFOAM, que trabaja sobre la plataforma Linux, es gratuito y de código abierto. Dispone una gran variedad de herramientas para resolver cualquier flujo complejo, reacciones químicas, turbulencia y transferencia de calor, dinámica de sólidos, electromagnetismo. Incluye herramientas de mallado tales como blockMesh, el mallador por defecto del software, snappyHexMesh para geometrías CAD complejos o terrainBlockMesher para mallado de terrenos complicados.

Puesto que el software es de código abierto ofrece a los usuarios libertad para personalizar y extender las funciones y algoritmos existentes. OpenFOAM viene provisto con numerosos métodos numéricos específicos o solvers preconfigurados, utilerías y librerías y puede ser usado como paquete de simulación. Incluye unos 80 herramientas de cálculo que simula problemas específicos de la Ingeniería Mecánica y 170 utilidades de pre- y post-procesado. La estructura general del software se muestra en la Figura 1.1:

Figura 1.1.- Estructura General de OpenFOAM

1.2 Eólica y OpenFOAM

La energía eólica se ha estado usando como producción de energía mecánica para molinos y bombeo desde la antigüedad. Hasta el siglo XIX, con la llegada al mundo tecnológico de la máquina de vapor, era la única forma de energía de origen no animal junto con la energía hidráulica.

La crisis del petróleo de los años 70 del siglo pasado junto con los

Escuela Politécnica Superior de Jaén 3

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

movimientos en contra de la energía nuclear que tuvieron una década más tarde fueron acontecimientos que ayudaron a impulsar el interés por las energías renovables. A nivel global, los gobiernos empezaron a fomentar programas de investigación y subvenciones para el desarrollo de la energía eólica ya que en aquel momento los aerogeneradores y su instalación eran costos.

Como consecuencia de dichos programas la tecnología eólica progresa positivamente a partir de los años 80. Las primeras turbinas disponían de una potencia de entre 20 y 50 kW, eran ruidosas, pesadas, con difícil regulación y el coste de inversión estaba situado entorno a los 3000 €/kW instalado. Sin embargo, se había consolidado el modelo tripala de velocidad constante y se usaba la regulación por pérdida aerodinámica o stall. Ya en el año 1990, la regulación mejora introduciéndose la regulación aerodinámica por paso variable o pitch, gracias a ello la velocidad de giro de la turbina se convierte variable también. La potencia nominal pasa de unos 300 kW hasta unos unos 1500 kW hasta finales de la década, época de consolidación y gran desarrollo, en la que aumenta el uso de las turbinas con rotor a velocidad constante o semivariable. En el 2005, la potencia se situaba entre 1,5 y 3 MW por aerogenerador, eran más ligeros y disponibles, ofrecían un buen control de regulación y su coste unitario de inversión estaba entre 900 y 1300 €/kW instalado, dependiendo del tipo y tamaño de la turbina y las características del parque eólico donde está emplazada, tal como detalla Villarubia López (2012).

El gráfico de la Figura 1.2 nos muestra visualmente cómo ha ido evolucionando la potencia eólica instalada en España de éstos últimos años (de 1998 hasta 2013).

Figura 1.2.- Potencia eólica instalada en España por años (AEE)

Casi la misma línea evolutiva en crecimiento ha seguido OpenFOAM. El desarrollo original comenzó en los años 80 en el Imperial College de Londres. El objetivo era desarrollar un conjunto de nuevas herramientas de simulación más potentes y versátiles utilizando el lenguaje de programación C++ en lugar de FORTRAN (Formula Translating System). Una versión inicial de FOAM, que era su nombre inicial, fue comercializada por la sociedad Nabla sin éxito. Sin embargo, en

Escuela Politécnica Superior de Jaén 4

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

2004 se decidió su distribución libre creándose la sociedad OpenCFD, cuyo negocio sólo se centró en la formación y soporte. El 15 de Agosto de 2011 la sociedad Silicon Graphics International (SGI) compró la empresa OpenCFD y en septiembre del mismo año ESI Group adquirió los derechos a SGI. Finalmente, se creó la Fundación OpenFOAM para preservar la idea OpenFoam como código abierto y fomentar su utilización y desarrollo.

Figura 1.3.- Publicaciones científicas sobre OpenFOAM en Scorpus

Como ya se ha comentado anteriormente en el anterior capítulo de este TFG, es digno de volver a mencionar el crecimiento del número de publicaciones del software en la plataforma Scopus (una base de datos bibliográfica de resúmenes y citas de artículos de revistas científicas). Dicho crecimiento lo podemos ver representado en la Figura 1.3. El número correspondiente a este año, 2014, se ha obtenido mediante interpolación lineal (a fecha junio hay 111 publicaciones, por lo que a finales del año se estima unas 222).

1.3 Modo de instalación y uso

Para disponer de OpenFOAM en nuestro ordenador, debemos tener instalado en el mismo el sistema GNU/Linux, ya sea virtualmente, mediante un USB con la plataforma CAELinux o en una partición de nuestro ordenador. Para llevar a cabo la primera y última tarea tenemos que decidir qué sistema operativo GNU/Linux queremos instalar. OpenFOAM contempla los siguientes sistemas operativos para la introducción del código fuente del mismo y los binarios:

Escuela Politécnica Superior de Jaén 5

2006 2007 2008 2009 2010 2011 2012 2013 20140

50

100

150

200

250

año

me

ro d

e p

ub

lica

cio

ne

s e

n S

cop

us

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

– Ubuntu Deb Pack es la opción para un usuario que quiere instalar OpenFOAM en un ordenador personal en el que se dispone de Ubuntu Linux. Se puede instalar automáticamente por lo que hace la opción ideal para aquellas personas que no tienen experiencia en Linux.

– SuSE RPM Pack es la opción para un usuario que quiere instalar OpenFOAM en un ordenador personal en el que tiene SUSE Linux.

– Fedora RPM Pack es la opción de un usuario que quiere instalar OpenFOAM en un ordenador personal que disponga de Fedora Linux.

Para la descarga de uno de los sistemas operativos, podemos acceder a las siguientes páginas mostradas en la Tabla 1.1, dependiendo del gusto del usuario instalaremos un sistema u otro. Dentro de cada enlace, debemos seleccionar el paquete que mejor nos convenga según los requerimientos del sistema y la compatibilidad que tendría con nuestro ordenador.

Sistema Enlace web para su descarga

Ubuntu http://www.ubuntu.com/download/desktop

SuSe Linux https://download.suse.com/index.jsp

Fedora (distribución Linux) https://fedoraproject.org/es/get-fedora

Tabla 1.1.- Sistemas operativos a elegir para instalar.

1.3.1 Instalación de Linux en una partición del disco duro.

Nos figuramos como usuarios de Windows que deseamos instalar un sistema operativo de distribución GNU/Linux en nuestro ordenador, para ello podríamos hacer una partición en nuestro disco duro con el fin de disfrutar de ambos sistemas.

Debemos tener en cuenta que cuando se cree particiones en un disco básico usando Administración de discos, los tres primeros volúmenes que cree se formatearán como particiones primarias. A partir del cuarto volumen, los volúmenes se configurarán como unidades lógicas de una partición extendida.

Los pasos a seguir para la realización de la partición, extraídos de la ayuda de Windows, Recurso Web [3], son:

1. Para abrir Administración de equipos, hay que clickear en el botón Inicio , en Panel de control, en Sistema y mantenimiento, en Herramientas administrativas y, a continuación, doble clic en Administración de equipos. En el caso de que se le solicite una contraseña de administrador o una confirmación, escriba la contraseña o facilite la confirmación.

2. En el panel de navegación, en Almacenamiento, clickee en Administración de discos.

3. Clickee con el botón derecho del ratón en una región sin asignar del disco

Escuela Politécnica Superior de Jaén 6

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

duro y, a continuación, debe clickear en Nuevo volumen simple.

4. Haga clic en Siguiente en el Asistente para nuevo volumen simple,

5. Asigne un tamaño del volumen que desea crear en megabytes (MB) o acepte el tamaño máximo predeterminado y, a continuación, clickee de nuevo en Siguiente.

6. Acepte la letra de unidad predeterminada o seleccione una letra de unidad diferente para identificar la partición y, a continuación, haga clic en Siguiente.

7. En el cuadro de diálogo Formatear la partición, realice una de las siguientes acciones:

• Si no desea aplicar formato al volumen ahora mismo, haga clic en No formatear este volumen y, a continuación, haga clic en Siguiente.

• Para formatear el volumen con la configuración predeterminada, haga clic en Siguiente.

8. Revise sus opciones y luego haga clic en Finalizar.

Habiendo seguido los pasos anteriores disponemos de una partición nueva vacía por lo que elegimos un sistema de los tabulados en la Tabla 1.1 y procedemos a su instalación. Para ello, nos bajamos su imagen ISO y la grabamos en un DVD (o en una memoria USB) para posteriormente insertarla en el ordenador e iniciar la instalación del sistema escogido en la partición que hemos realizado.

En caso de que deseamos instalar Ubuntu, una decisión inteligente para un usuario no muy avanzado en Linux, nos aparecería la ventana de la Figura 1.4. Elegiremos primeramente el idioma que deseemos y posteriormente lo instalamos. También podemos darle a la opción de 'probar Ubuntu' en el caso de que no estemos seguros de querer instalarlo en nuestro ordenador.

Para la instalación se recomienda estar conectado a red con el fin de que se bajen algunos drivers automáticamente, no obstante dependiendo del fabricante, la afinidad a un sistema Linux será mejor o peor. Esta afinidad se manifestará una vez instalado el sistema operativo.

Escuela Politécnica Superior de Jaén 7

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

Figura 1.4.- Ventana de bienvenida de Ubuntu para proceder a su instalación

Ya instalado Ubuntu, debemos instalarnos el programa ya que no viene con el sistema por defecto. Para ello, hay que dirigirse al apartado “1.3.3 Instalación de OpenFOAM” y seguir los pasos para su instalación.

1.3.2 Ejecución directa mediante USB

Para llevar a cabo esta acción primeramente deberemos bajarnos el software OpenFOAM junto con la plataforma Caelinux desde el Recurso Web [1]. Una vez descargada la imagen ISO, procedemos a montar el archivo en la memoria USB, haciéndola autoejecutable o “booteable” (esto es que puede arrancar directamente desde el dispositivo en que esta grabado CAELinux sin intervención del sistema operativo que tenga instalado el ordenador).

Con esta idea se pretende trabajar con la memoria USB como disco externo, de forma que nos evitamos instalar el sistema operativo Linux en nuestro equipo. La memoria mínima del dispositivo de almacenamiento deberá ser de unos 8 GB en el cual estarán contenido los archivos descargados anteriormente (OpenFOAM y Caelinux).

Si queremos que se nos guarde en la memoria USB los archivos que creamos dentro de la plataforma CAELinux y la configuración que modificamos en el sistema, así como el cambio del idioma del teclado o la instalación de los drivers que necesitamos, debemos establecer un espacio (1 GB, por ejemplo) dedicado al

Escuela Politécnica Superior de Jaén 8

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

almacenamiento masivo. Esto se realiza al montar la imagen en el dispositivo seleccionado la opción de persistencia de archivos.

Configurado el dispositivo, debemos reiniciar el sistema y arrancar desde la memoria USB. De manera que se nos abrirá una ventana similar a la de la Figura 1.5. Si percibimos que no arranca, debemos ir a la configuración de la BIOS y ajustarla de tal manera que el ordenador permita arrancar desde una memoria USB.

Pulsando “enter” sobre la opción USB Hard Drive o la análoga a esta opción, dependiendo de la marca y modelo del ordenador, nos aparece la siguiente ventana de la Figura 1.6. El modo de inicio será la opción marcada (live – boot the Llive System). Pulsamos de nuevo “enter” y ya se inicia el sistema CAELinux desde la memoria USB.

Figura 1.5.- arranque del ordenador desde una memoria USB

Escuela Politécnica Superior de Jaén 9

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

Figura 1.6.- Ventana de modo de inicio del CAELinux

1.3.3 Instalación Virtual

Para llevar a cabo esta opción se necesitará una máquina virtual y una imagen ISO del sistema operativo que queremos virtualizar. Un buen software para virtualizar es VMWare Player, que nos lo podemos bajar desde el enlace Recurso web [2] teniendo en cuenta la arquitectura de nuestro ordenador al igual que los sistemas operativos de la Tabla 1.1 que deseemos virtualizar. En la Figura 1.7 podemos ver cómo es el entorno del programa.

Teniendo instalado VMWare Player (o similar) y descargada una imagen ISO de un sistema operativo elegido, podemos proceder de la siguiente manera para virtualizar el SO:

1. Creamos una nueva máquina virtual clikeando en “Create a New Virtual Machine”.

2. Seleccionamos la ISO, elegimos la opción “Installer disk image (iso)”.

3. En “Guest operating sistem” elegimos Linux, y dependiendo nuestro SO elegimos una versión u otra.

4. Ponemos nombre a la máquina y la localizamos en alguna carpeta de nuestro ordenador.

5. Asignamos un tamaño máximo de disco, por ejemplo para Ubuntu 20 GB.

Escuela Politécnica Superior de Jaén 10

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

Con estos pasos nuestra máquina ya estaría creada. Algunos parámetros se nos han configurado por defecto, como son el uso de la memoria RAM, número de procesadores a usar, la presencia o no de dispositivos hardware en la máquina... Éstos parámetros los podemos cambiar clikeando en “Edit virtual machine setting”. Para poner en marcha el sistema operativo virtualizado, sólo tendremos que darle a “Play virtual machine”.

Al igual que ocurre con el apartado 1.3.1, una vez configurado el sistema operativo en la máquina virtual debemos instalarnos OpenFOAM dirigiéndonos al apartado siguiente “1.3.4 Instalación de OpenFOAM” y seguir los pasos para su instalación.

Figura 1.7.- Entorno en Windows de VMWare Player

1.3.4 Instalación de OpenFOAM

La fundación OpenFOAM distribuye el software para los sistemas operativos Linux de la siguiente manera en la siguiente página web del Recurso Web [6]. Las instrucciones de instalación están disponibles clickeando en uno de los paquetes aceptados por el software (Ubuntu Deb Pack, SuSE RPM Pack o Fedora RPM Pack).

Así para el caso de tener el sistema Ubuntu, la instalación del programa se procedería de la siguiente manera:

1. Abrimos la terminal (ctrl+alt+T o Aplicaciones → Accesorios → Terminal). Añadimos a la lista del repertorio el software OpenFOAM, para ello escribimos lo siguiente en la línea de comando:

Escuela Politécnica Superior de Jaén 11

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

VERS=$(lsb_release -cs)

sudo sh -c "echo deb http://www.openfoam.org/download/ubuntu $VERS main > /etc/apt/sources.list.d/openfoam.list"

Se nos pedirá la contraseña del usuario, por lo que la tecleamos para seguir los pasos.

2. Actualizamos la lista del paquete apt para bajarnos el paquete del programa.

sudo apt-get update

3. Una vez descargado, instalamos el programa.

sudo apt-get install openfoam230

4. Instalamos también el programa de pre-procesado ParaView.

sudo apt-get install paraviewopenfoam410

Cuando queramos usar el programa, deberemos abrir la terminal y cargar las variables de entorno del programa tecleando en la misma el siguiente comando:

. /opt/openfoam230/etc/bashrc

Y entonces podremos usar el programa. Se recomienda tener una carpeta para los casos que vayamos a simular dentro de la carpeta del usuario. La sintáxis de la ruta será /home/usuario/OpenFOAM/usuario-2.3.0/run/. De esta manera, sólo tecleando run una vez cargadas las variables de entorno en la terminal nos dirigimos a nuestra carpeta de casos.

1.4 Post-procesado: paraView

Como nos detalla Martínez Beltrán (2013), ParaView es la herramienta que dispone OpenFOAM para visualizar resultados y manejarlos. Para ello deberemos ejecutar el comando paraFoam en la línea de comando de la terminal estando ubicados en la carpeta del caso que queremos visualizar una vez terminada la simulación, mientras se esté ejecutado, o simplemente para visualizar la malla generada antes proceder con la simulación. Dicha interfaz está formada por un conjunto de utilidades para la visualización de los resultados mediante la construcción de diferentes módulos. En la Figura 1.8 podemos observar cómo es el entorno del software. El caso inicial y las modificaciones realizadas al caso que nos encontramos estudiando se encuentran en el bloque señalizado con el indicador A.

Escuela Politécnica Superior de Jaén 12

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

Las propiedades, partes de la malla y la ubicación de las variables del caso se encuentran en el bloque con el indicador B. La ejecución de la simulación se realiza desde el icono con el indicador C. El paso de tiempo o número de iteraciones se muestra en el D.

Figura 1.8.- Entorno de ParaView

Cuando se tiene el primer contacto con el software una de las principales necesidades que surgen es modificar el fondo de color de la pantalla principal. Para realizar esta tarea, nos dirigimos al icono “Edit View Options”, identificador E de la Figura 1.8. Una vez en la pantalla obtenida del anterior icono debemos clickear sobre “Choose Color”. De esta manera podremos elegir el color más adecuado.

Figura 1.9.- Variables, leyenda y contornos de malla en ParaView

La inserción de la leyenda, escala de colores para representar las soluciones y sus configuraciones se efectúan mediante dos iconos identificados con el indicador F de la Figura 1.9. Dentro de estos iconos localizamos el definido como “Toggle Color Leyend Visibility” que nos posibilita representar la leyenda de intensidad de color. Junto a este icono se encuentra “Edit Color Map” cuya ventana nos muestra dos pestañas. La pestaña “Color Scale” nos da la posibilidad de editar el color de los gráficos, fijar límites en la escala y cambiar la resolución de los gráficos entre otras utilidades. Y la otra pestaña “Color Legend” nos permite incluir texto y unidades de la

Escuela Politécnica Superior de Jaén 13

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

leyenda así como elegir tipo, tamaño y color de letra. Una vez ejecutada la simulación mediante el indicador C, para aplicar la solución de la simulación sobre la malla se ha de realizar un ajuste en el icono G. Si queremos mostrar una variable determinada de la simulación en la pantalla principal de la interfaz se ha de seleccionar la variable en el indicador H. Si la variable a visualizar se define a través de un vector (por ejemplo velocidad) en el icono I se puede observar los resultados en sus diferentes direcciones (x,y,z) o la magnitud de éste vector.

Figura 1.10.- Pipeline Browser (A) y Object Inspector (B)

El bloque “Pipeline Browswer”, indicador A, dispone de una pestaña (ojo) que permite activar/desactivar los diferentes módulos o representaciones en la pantalla principal de la interfaz gráfica. Estas representaciones son las diferentes

Escuela Politécnica Superior de Jaén 14

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

modificaciones que el usuario realice sobre el caso inicial. Estas modificaciones pueden ser cortes a la malla, visualización del campo vectorial sobre un plano perpendicular a la malla o cualquier otra modificación que permiten las herramientas de ParaView. Para visualizar en la pantalla principal las diferentes modificaciones hechas en la malla se realiza clic sobre el icono “Apply” señalizado en color verde en la Figura 1.10. El bloque “Object Inspector” (indicador B) en su pestaña “Properties” contiene las partes de la malla (icono K) y las diferentes variables que se han calculado en la simulación (icono L). Como se observa en la Figura 1.10 que para cargar cualquier parte de la malla o variable se debe seleccionar la casilla adjunta mediante una “x” y después clickear sobre el icono “Apply”.

Figura 1.11.- Herramientas de ParaView

En la Figura 1.11 se observan algunas herramientas de ParaView. La calculadora, icono M, nos permite realizar operaciones matemáticas sobre los resultados numéricos obtenidos de la simulación. El icono N nos muestra una representación de contornos en la malla. Mediante el icono “Clip” (Ñ) se puede realizar cortes sobre la malla. Con los iconos “Slice” (O) y “Glyph” (P) nos permiten representar el campo vectorial en una línea o plano de la malla. Y por último el icono “Stream Tracer” (Q) nos otorga la posibilidad de representar líneas de corriente. Con la pestaña “Filters” (ver Figura 1.8) localizada en la parte superior, seleccionando la opción “Alphabetical” se despliega una lista de diferentes aplicaciones además de las citadas anteriormente.

Figura 1.12.- Visualización de ParaView

En la Figura 1.12 se muestra diferentes maneras de visualización de la malla. El icono R realiza un ajuste de la malla centrando ésta en la pantalla principal. Los iconos S nos muestran las diferentes vistas según la dirección cartesiana de

Escuela Politécnica Superior de Jaén 15

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

interés. El icono T incorpora el sistema de ejes coordenadas en la pantalla principal y los iconos U posibilitan el giro de la malla de forma tridimensional.

Además de las aplicaciones que nos permite la interfaz gráfica ParaView de OpenFOAM, una utilidad interesante es poder exportar los datos numéricos generados en la simulación a otros programas externos, por ejemplo a Matlab, para poder manipular los datos numéricos con las posibilidades de gestión de datos que ofrece dicho programa. Matlab es una herramienta muy útil y podría ser un poderoso complemento a OpenFOAM como funcionalidad.

1.5 Aplicaciones de OpenFOAM en Eólica

Llevar a cabo un proyecto eólico es complejo, son muchas las variables a manipular para su ejecución. La variable más importante es la ubicación del parque eólico. Una adecuada colocación de los aerogeneradores permitirá a los operadores de los parques eólicos una buena productividad favorable al mercado eléctrico.

Es por ello, que las organizaciones relacionadas con la eólica inviertan capitales significantes en proyectos de puesta en marcha de diseño de un parque eólico. Así como son el centro tecnológico, CENER (Recurso Web [4]), o la organización alemana IB Fischer CFD+engineering GmbH (Recurso Web [5]).

El CENER, Centro Nacional de Energías Renovables, actualmente se encuentra participando en un proyecto de desarrollo y validación de modelos de viento y estelas basados en OpenFOAM cuyo principal objetivo es la creación de un modelo CFD del viento y el diseño de parques eólicos. Este modelo deberá ser validado mediante una comparación con los datos de campo experimentales y estandarizado con el fin de que los futuros usuarios del modelo puedan evaluar cualquier resultado de la misma forma y con el mismo código. El proyecto pretende integrar en el código un generador de malla de código abierto para terrenos complejos, un modelo de turbulencia a partir de los modelos de segunda generación LES y un algoritmo para la optimización de emplazamiento de máquina basado en CFD. Para llevar a cabo el análisis de estabilidad del código se hará uso del súper ordenador Mare Nostrum con 10240 núcleos ubicado en el Centro de Supercomputación de Barcelona.

Por otro lado, el centro alemán IB Fischer CFD+engineering GmbH ubicado en Munich ha diseñado una interfaz gráfica denominada O.F. Wind para la evaluación de la ubicación de un parque eólico, fácil de usar incluso para el modelado de terreno complejo, como selvas y montañas. Dicha interfaz está basada en OpenFOAM.

Escuela Politécnica Superior de Jaén 16

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

2. CAPA LÍMITE TURBULENTA SOBRE UNA PLACA PLANA

2.1 Descripción física del problema

Puesto que la capa limite atmosférica es turbulenta, y estamos interesados en analizar su dinámica, nos centraremos en este capítulo en el estudio detallado de dicho flujo. Analizaremos el problema de la capa límite sobre una placa plana. Las ecuaciones de Navier Stokes simplificadas, de continuidad (2.1) y de cantidad de movimiento (2.2), para la velocidad de la capa límite sobre una placa plana en la cual el flujo que lo atraviesa es bidimensional e incompresible son las siguientes (Fernández Feria, 2001):

∂U∂ x

+∂V∂ y

=0 (2.1)

U∂U∂ x

+V∂U∂ y

= ∂∂ y

(ν∂U∂ y

−u ' v ' ) (2.2)

donde

u ' v ' son los esfuerzos de turbulencia de Reynolds.

U y V son las velocidades en x e y respectivamente.

ν es la viscosidad cinemática del fluido.

Las condiciones de contorno, de acuerdo a la Figura 2.1, vendrían dadas con las expresiones siguientes, (2.3):

(a) y=0→U=V=0 ; (b) y=∞→U=U e (2.3)

Figura 2.1 Capa límite sobre placa plana

Para la llevar a cabo la solución de este problema se usa un modelo tricapa en la que la capa límite turbulenta se divide en tres regiones o subcapas

Escuela Politécnica Superior de Jaén 17

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

definiéndose primeramente las expresiones que aparecen en (2.4). En primera instancia se supone u tiene orden de la velocidad de las fluctuaciones de mayor tamaño como indica la expresión (2.5).

u ≡(τ p/ρ)

1/2 ; τ p≡μ(∂U∂ y

)y=0

; u≡Uu ; y≡

u⋅yν (2.4)

u 2∼∣u ' v '∣ (2.5)

donde ρ es la densidad y μ la viscosidad dinámica o absoluta del flujo que atraviesa la placa.

Puesto que las demostraciones para cada una de las subcapas se encuentran en los libros de texto, sólo daremos las soluciones finales de las mismas que vienen reflejadas en las ecuaciones (2.6), (2.7) y (2.8) y en la Figura 2.2 de forma visual compaginando las soluciones analíticas con las experimentales:

Figura 2.2.- u frente a y ⁺ ⁺

• subcapa laminar o viscosa

u= y para y<5 (2.6)

• Subcapa intermedia o logarítmica

u≃1κ ln y

+B para 5< y<30 (2.7)

siendo κ la constante de Von-Karman ( κ=0.41 ) y B=4.9

Escuela Politécnica Superior de Jaén 18

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

• Región exterior

U−U e

u ≃ f (yδ) para y>30 (2.8)

Una noción importante en este capítulo es el efecto de la rugosidad de la pared ( ϵ ), ya que en un flujo turbulento se hace notar debido a que es la responsable de promover la turbulencia y de suprimir la subcapa laminar originando un perfil de velocidad distinto en dicha subcapa.

Para la obtención de la solución se requiere echar mano del análisis dimensional, al igual que la expresión resultante (2.8). De forma que podemos expresar u tal que:

u≡Uu≡ fun(

y⋅u

ν ,ϵ⋅u

ν )≡ fun( y ,ϵ) (2.9)

La función fun( y ,ϵ) debe ser tal que se acople con la solución de la capa intermedia. Por tanto en presencia de rugosidad alta ( ϵ

>5 ) la constante B

de la expresión (2.7) se modificaría pasando a ser función de ϵ :

u≃1κ ln y

+ f r(ϵ

) (2.10)

donde f r(ϵ)=5.5 si ϵ

<5 ó f r(ϵ

)=B−Δ B si ϵ

>5

Experimentalmente se obtiene que para valores de ϵ≫70 Δ B sigue la

expresión (2.11), mientras para valores intermedios de ϵ (entre 5 y 70) están más dispersos.

Δ B≃1κ ln ϵ

−3.5 (2.11)

Las funciones de pared antedichas para la capa límite turbulenta están actualmente implementadas en OpenFOAM aunque en este proyecto se realizará una simulación numérica directa (DNS) que será usada para la validación de las mismas. Además, compararemos los resultados obtenidos por la simulación (coeficiente de fricción en la pared) con los experimentales de la NASA.

2.2 Modelo de turbulencia k – ω

En este primer caso se va a usar el modelo k-ω para el cálculo del tensor los esfuerzos de turbulencia de Reynolds, u ' v ' . Este modelo está descrito por Menter y Esch (2001) y Hellsten (1998), aunque también podemos encontrar información sobre el modelo en el Recurso Web [7].

Ecuación para ω :

∂ω∂ t

+⋅(U⃗ ω)=2[(ν+νtσω1)ω ]+

γω

kτ ij

∂ ui∂ x j

−βω2+2(1−F1)σω2

1ω κω+P sas

(2.12)

Ecuación para k :

Escuela Politécnica Superior de Jaén 19

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

∂k∂ t

+⋅(U⃗ k )=2[(ν+νtσk 1)k ]+τ ij

∂ ui∂ x j

−βω k (2.13)

donde

P sas=1.25max(T 1−T 2 ,0) ; T 1=1.755κ S2 LLν K

;

T 2=3k max(1

ω3ω⋅ω ,

1

k 2 k⋅ k )

L=k1 /2

ω cμ1 /4 ; Lν K=κ

S

∣2U⃗∣

; νT=a1 k

max (a1ω ,ΩF 2);

F 2=tanh [[max (2√ kβ

ω y

,500 νy2ω

)] ²] ; F 1=tanh [[min(max(√k

βω y

,500 νy2ω

) ,4σω2 k

CDkω y2 )]

4

]

CDkω=max(2ρσω 21ω

∂ k∂ x i

∂ω∂ x i

,10−10)

Los coeficientes por defecto del modelo correspondiente son los siguientes:

αK1=0.85034 αK2=1.0 αω1=0.5 αω2=0.85616 β1=0.075 β2=0.0828β

=0.09 γ1=0.5532 γ1=0.5532 γ2=0.4403 a1=0.31 b1=1.0

c1=10.0

Nótese que en la implementación en el programa (/opt/openfoam230/.../kOmegaSST.H) está escrita con los coeficientes alpha de los términos difusivos, preferible al uso de los coeficientes sigma (alpha=1/sigma), ya que los primeros son consistentes con los términos difusivos de los modelos k-epsilon y k-omega.

2.3 Mallado del caso

OpenFOAM siempre trabaja en las tres coordenadas cartesianas y la geometría que se genera debe ser en tres dimensiones. Sin embargo, para problemas bidimensionales existe la posibilidad de imponer una condición de contorno empty (vacía) que hace eliminar una de las direcciones ya que su solución no es necesaria, como se manifiesta en la guía del usuario del programa (User Guide, 2014).

Para este primer caso, estudiaremos el flujo a través de una placa plana de dimensiones 5 m x 1 m. La velocidad a la entrada es U=68,8m / s . La geometría que se va a usar en la simulación será: dos primas de dimensiones,en metros, 0,5x1x0,8 y 5x1x0,8 colocados de forma que formen otro prisma, tal como se representa en la Figura 2.4. La placa está ubicada en el segundo prisma formada por los nodos 4, 5, 1 y 0. El primer prisma es necesario para una mejor calidad en la simulación ya que es recomendable dejar margen con el que el flujo se desarrolle.

Escuela Politécnica Superior de Jaén 20

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

Figura 2.3.- Dominio espacial del problema de la capa límite turbulenta

En el mallado de la geometría se hará uso del generador de malla por defecto de OpenFOAM, blockMesh, que parte del archivo blockMeshDict ubicado en la carpeta constant/polyMesh/ para la generación de la malla. Las entradas del archivo están implementadas tal que:

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //convertToMeters 1;vertices // Se definen las coordenadas cartesianas de los nodos.( (0 0 0) //0 (5 0 0) //1 (5 0.8 0) //2 (0 0.8 0) //3 (0 0 1) //4 (5 0 1) //5 (5 0.8 1) //6 (0 0.8 1) //7 (-0.5 0 0) //8 (-0.5 0 1) //9 (-0.5 0.8 0) //10 (-0.5 0.8 1) //11);blocks//Aquí definimos los primas mediante el número asignado por los

//nodos, el número de celdillas en cada dirección y su distribución.( hex (0 1 2 3 4 5 6 7) (190 180 1) simpleGrading (100 4000 1) hex (8 0 3 10 9 4 7 11) (70 180 1) simpleGrading (.1 4000 1));edges //Los contornos de las geometrías 3D (prismas en nuestro caso) se

//indican aquí y se define también su tipo.();

patches( symmetryPlane top (

(3 2 6 7) (10 3 7 11)

) patch inlet

Escuela Politécnica Superior de Jaén 21

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

( (8 10 11 9)

) patch outlet (

(2 1 5 6) ) wall plate (

(0 4 5 1) ) symmetryPlane symmBound (

(8 9 4 0) ) empty frontAndBack (

(3 0 1 2) (7 6 5 4) (10 8 0 3) (11 7 4 9)

));mergePatchPairs ();// ********************************************************************* //

En la Tabla 2.1 se expone el significado para cada una de las condiciones impuestas a los contornos del dominio computacional especificado en el archivo blockMeshDict.

CondiciónNombres de los

contornos asociadas a la condición

Significado

symmetryPlane top, symmBoundEs usada para un plano con solución simétrica

patch inlet, outlet

Se usa para indicar que no hay geometría o

información topológica sobre la malla

wall plate Función de pared

empty frontAndBack

Condición para trabajar en dos dimensiones,

eliminando la dirección perpendicular

Tabla 2.1.- Significado de las condiciones para los contornos del dominio

Corriendo blockMesh en la terminal estando ubicados en el directorio raíz del caso y tecleando únicamente el nombre del generador de malla conseguimos que

Escuela Politécnica Superior de Jaén 22

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

ésta se genere. Una vez ejecutado, se muestra por pantalla el estado de funcionamiento. En el caso de producirse un error se avisará por la terminal, por lo que revisaremos el archivo blockMeshDict para realizar las modificaciones necesarias. Podemos ver en detalle las siguientes figuras (2.4 y 2.5) la malla generada para este problema:

Figura 2.4.- Malla generada, en 3D, para la capa límite turbulenta

Escuela Politécnica Superior de Jaén 23

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

Figura 2.5.- Mallado en detalle

2.4 Condiciones iniciales, de contorno y propiedades del fluido.

Las condiciones iniciales y de contorno se ubican en la carpeta 0/ en forma de ficheros de todas las variables a simular en el caso. En esta carpeta se detallan las variables, cada una definida en un archivo, para tiempo inicial ( t=0 s ). En las tablas 2.2 y 2.3 adjuntas podemos observar dichas variables de este caso.

U p

Variable (unidad)

Velocidad (m/s) Presión atmosférica (N/m²)

Tipo Vector Escalar

Valor inicial en celdillas

internas68,8 en dirección x 0 (de forma uniforme)

Condiciones de contorno

toptype symmetryPlane;

Flujo totalmente desarrollado

Inlet type fixedValue; type zeroGradient;

Escuela Politécnica Superior de Jaén 24

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

value uniform (68.8 0 0);

Impuesto con un determinado valor: 68,8 m/s en dirección x

de forma uniforme

value uniform 0;

Flujo completamente desarrollado. Se impone el valor 0

uniformemente

oulet

type zeroGradient;

Flujo totalmente desarrollado (condición de contorno tipo

Neumann)

type fixedValue;value uniform 0;

Esto es una presión fijada uniformemente como nula (condición tipo Dirichlet)

plate

type fixedValue;value uniform (0 0 0);

Impuesto con un determinado valor. Se indica que la

velocidad es nula, ya que se trata de la placa.

type zeroGradient;

Flujo completamente desarrollado(condición de contorno tipo

Neumann)

symmBoundtype symmetryPlane;

Flujo totalmente desarrollado

fronAndBlack

type empty;

Condición para trabajar en dos dimensiones, eliminando la dirección perpendicular

Tabla 2.2.- Descripción de los ficheros U y p correspondientes a condiciones de contorno e iniciales

k omega nut

Variable(unidad)

Presión dinámica turbulenta

(m²/s²)

Disipación turbulenta específica

(s ¹)⁻

Viscosidad dinámica

(m²/s)

Tipo Escalar

Valor inicial en celdillas

internasuniform 17.7504; uniform 92.222; uniform 0;

Condiciones de contorno

toptype symmetryPlane;

Flujo totalmente desarrollado

Inlet type fixedValue; type fixedValue; type calculated;

Escuela Politécnica Superior de Jaén 25

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

value uniform 17.7504;

El valor de k se fija uniformemente a lo

largo de todo el área de entrada

value uniform 92.222;

Condición tipo Dirichlet, valor determinado

uniformemente distribuido

value uniform 0;

Condición tipo Dirichlet, valor

inicial nulo uniformemente distribuido. Los

valores siguientes se calcularán

Oulet

type zeroGradient;

Flujo completamente desarrollado (condición de contorno tipo Neumann)

Plate

type kqRWallFunction;

Cmu 0.0895;kappa 0.41;E 9.8;value uniform 1e-11;

Esta condición de contorno se emplea

para flujos turbulentos con un elevado Re

usando la función de pared

type omegaWallFunction; value uniform 0.1;

Esta condición se impone con un valor

uniforme para el modelo de turbulencia

k-omega

type nutkWallFunction; value uniform 0;

Se mantiene la condición de viscosidad cinemática

turbulenta en éste área usando las

funciones de pared y basándose en la energía cinética

turbulenta

symmBoundtype symmetryPlane;

Flujo totalmente desarrollado

fronAndBlack

type empty;

Condición para trabajar en dos dimensiones, eliminando la dirección perpendicular

Tabla 2.3.- Descripción de los ficheros k, omega y nut correspondientes a condiciones de contorno e iniciales

Por otro lado, dentro de la carpeta constant/ encontramos dos archivos a parte del directorio PolyMesh/; RASproperties, en el que se indica el modelo de turbulencia o si se trata de una simulación laminar, y transportProperties, el cual nos permite definir si el fluido es Newtoniano o no.

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //RASModel kOmegaSST;

turbulence on;

printCoeffs on;

Escuela Politécnica Superior de Jaén 26

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

// ******************************************************************** //Como podemos observar, para nuestro caso, se trata de una simulación

turbulenta en la que se usa el modelo kOmegaSST, cuyas ecuaciones vienen definidas en (2.12) y (2.13).

En cuanto a la relación de la viscosidad absoluta del fluido con el movimiento del mismo es independiente, se trata de un fluido Newtoniano con viscosidad constante como podemos observar en el archivo transportPropeties:

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //transportModel Newtonian;

nu nu [0 2 -1 0 0 0 0] 1.478e-5;// ********************************************************************* //

2.5 Esquemas numéricos y control de la discretización empleados

Para este caso, encontramos en la carpeta system/ los archivos controlDict (control de iteraciones y discretización), fvSchemes (métodos de interpolación y interpolación usados para diferentes términos), fvSolutions (para controlar las resoluciones de las ecuaciones, tolerancia y los algoritmos usados), y sampleDict (para tomar datos después de la ejecución de la simulación). Este último lo necesitamos para representar posteriormente y ⁺ frente a u ⁺ y el factor de fricción frente a la coordenada y que los usaremos para validación como ya se ha mencionado anteriormente. A continuación explicaremos, en orden, cada uno de los archivos conforme los hemos nombrando comenzando con el controlDict:

Parámetro Valor Significado

Application simpleFoam Aplicación a usar

startFrom latestTime; Instante inicial a partir del cual inicia la simulación

startTime 0; Tiempo inicial específico

stopAt endTime; Instante final en el que la simulación termina

endTime 100000; Tiempo final específico

writeControl RunTime; Controla el tiempo de escritura de salida en el archivo

deltaT 1; Paso de tiempo o iteración

Escuela Politécnica Superior de Jaén 27

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

writeInterval 5000; Intervalo de almacenamiento de datos

purgeWrite 0; Entero que representa un limite en el número de los directorios temporales que se almacenan de forma cíclica

writeFormat ascii; Formato de salida de los resultados

writePrecision 12; Precisión de escritura

writeCompression compressed; Compresión o no de los datos

timeFormat general; Formato para el directorio temporal

timePrecision 12; Precisión temporal

Tabla 2.4.- Detalle del archivo controlDict

Los esquemas numéricos para los diferentes términos de las ecuaciones empleados están tabulados en la siguiente tabla:

Término Configuración Significado

∂∂ t

stedyState No se tiene en cuenta el término temporal

⋅(Φ) Bounded Gauss upwind Se usa una discretización guasiana hacia delante para la divergencia

²Φ Gauss linear corrected Discretización gausiana corregida para la laplaciana

(Φ) f Linear Interpolación lineal para la interpolación entre la interpolación entre punto y punto

⊤Φ corrected Discretización corregida para

componente de gradiente normal a la cara de la celdilla

Tabla 2.5.- Detalle del archivo fvSchemes

Como vemos en la dicretización la divergencia ( ⋅(Φ) ) se usa la interpolación gausiana hacia delante, donde Φ es cualquier término, excepto para Φ=Rturb que se usa Gauss linear (discretización gausiana lineal).

Se consultar el ANEXO I, si se desea ver los diferentes esquemas usa OpenFOAM. Todo lo relativo al diccionario fvSchemes.

Escuela Politécnica Superior de Jaén 28

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

Mientras que en el ANEXO II se encuentra lo relativo a los “solvers” y precondicionadores que se emplean. En este caso, ver Tabla 2.6, se emplea PCG (solver para gradiente conjugado precondicionado de matrices simétricas) para la presión; y PbiCG (Solver de gradientes doblemente conjugados precondicionados de matrices asimétricas).

Solvers

Variables Solver Precondicionador Tolerancia

p PCG DIC 1e-12

U, k, epsilon, R, omega

PBiCG DILU 1e-14

SIMPLE

Número de correctores no ortogonales

0 Control de residuales (para todas las variables)

1e-6

potentialFlow

Número de correctores no ortogonales 5

relaxationFactors

Para variables Para ecuaciones

p 0.5 nuTilda 0.7

CmuStar 1.0 U, k, epsilon, R, omega 0.7

Tabla 2.6.- Detalle del archivo fvSolution

Para el almacenamiento de datos con sample para su posterior representación se ha seleccionado seis segmentos en el plano z=0.5 a lo largo del eje x entre valores de y comprendidos entre 0≤ y≤δ con el fin de obtener la y ⁺ . Para hallar el esfuerzo cortante, se ha tomado un segmento a lo largo del eje

y entre los valores 0≤x<5m . Observar Figura 2.6.

Figura 2.6.- Segmentos para la recogida de datos con sample

Escuela Politécnica Superior de Jaén 29

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

El archivo sampleDict consta de lo siguiente:

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //surfaceFormat foamFile;setFormat raw;interpolationScheme cellPointFace; → ESQUEMA DE INTERPOLACIÓN fields( U wallShearStress yPlus → VARIABLES A MUESTREAR);sets( station1 →SEGMENTO NECESARIO PARA LA Y⁺ { type uniform; → FORMA DE CAPTURAR LOS DATOS

name station1; → NOMBRE axis y; → EJE start (0.0870 0.0 0.5); → PUNTO INICIAL end (0.0870 2.77E-03 0.5); → PUNTO FINAL nPoints 1200; → NÚMERO DE PUNTOS...

station22 { type uniform;

name station22; axis y; start (4.687 0.00E+00 0.5); end (4.687 3.77E-02 0.5); nPoints 1200;

} frictionFactor →SEGMENTO NECESARIO PARA CALCULO DE ESFUERZO EN LA PARED { type uniform;

name frictionFactor; axis x; start (0 0 0.5); end (4.98722904 0 0.5); nPoints 1200;

});

surfaces();// ********************************************************************* //

2.6 Simulación y resultados

Una vez configurada la simulación se ejecuta desde la terminal (ctrl+alt+T), mediante la introducción de una serie de comandos que se detallan a continuación:

1. Cargamos las variables de entorno del programa introduciendo el siguiente comando:

Escuela Politécnica Superior de Jaén 30

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

. /opt/openfoam230/etc/bashrc

2. Para acceder directamente a la carpeta donde disponemos de nuestros casos podemos teclear run:

run

3. Podemos ver el contenido de run/ ejecutando ls y accedemos a la carpeta del caso de la capa límite turbulenta subiendo de nivel con cd:

ls

cd CapaLimiteTurbulenta

4. Mallamos con blockMesh:

blockMesh

5. Comprobamos si la malla está correcta.

checkMesh

Debe aparecer el mensaje “Mesh OK” al final de la secuencia para seguir con la simulación. En caso de que haya algún error debemos revisar el fichero BlockMeshDict, y en caso de no haber ninguno se puede visualizar la malla con el comando paraFoam y se abre el programa ParaView.

6. Ejecutamos simpleFoam, que resuelve las ecuaciones de Navier-Stokes para una simulación turbulencia estacionaria e incompresible basado en algoritmo de Patankar:

simpleFoam

Una vez finalizada la simulación o detenida por el usuario (ctrl+C) podemos seguir con los siguientes comandos.

7. Con el comando paraFoam se abre Paraview y podemos visualizar la simulación.

paraFoam

Gracias a Paraview podemos ver la solución final de la simulación, así en la Figura 2.8 se representan los vectores velocidad a lo largo de la placa. Para

Escuela Politécnica Superior de Jaén 31

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

obtenerlos se ha realizado cinco cortes a la malla mediante el icono Slice. El primero con origen en el punto (0 0.4 0.5), el segundo en (0.0001 0.4 0.5)... y el último en (0.0005 0.4 0.5). Todos con un plano normal (1 0 0). Posteriormente para cada corte se ha pulsado en Gryph. Se han ajustado los parámetros relativos al vector y escala para una mejora de su visualización.

Figura 2.7.- Perfiles de velocidad en el inicio de la placa

Hasta aquí, la etapa de simulación concluye. Sin embargo, vamos a realizar una serie de operaciones adicionales:

8. Accediendo a la terminal de nuevo, tecleamos wallShearStress que evalúa y almacena el esfuerzo cortante que actúa sobre contornos tipo wall (pared). Se crea un archivo llamado “wallShearStrees” en cada directorio de tiempo.

wallShearStress

9. Ejecutamos yPlusRAS que evalúa y almacena el valor de y en los⁺ modelos tipo RAS. Al igual que ocurre con el anterior se genera un fichero llamado “yPlusRAS” en cada directorio de cada instante de tiempo.

yPlusRAS

10. Renombramos la carpeta del último instante de tiempo con el nombre “latestTime”, y exportamos los datos generados por OpenFOAM a ficheros tipo texto, legibles para otras aplicaciones, ejecutando sample:

Escuela Politécnica Superior de Jaén 32

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

sample

Se genera ficheros tal como el siguiente (ver Figura 2.8). Las variables que se han tabulado son empezado por la primera columna: el valor de la coordenada y, velocidad en x ( U x ), en y ( U y ), en z ( U z ), tensión cortante en x ( τx ) y en z ( τ z ).

Figura 2.8 Archivo generado por sample

11. Comparamos la solución numérica con los resultados experimentales.

gnuplot OF-C_f.gpl

En el archivo OF-C_f.gpl se describen una serie de secuencias y cálculos, para llevar a cabo la comparativa con la aplicación gnuplot: se recogen y representan datos experimentales del coeficiente de fricción de un fichero (cf.dat). Ésta se hace mediante el coeficiente de fricción adimensional (2.14) a lo largo de la placa en dirección longitudinal. Para llevar a cabo la comparativa entre lo experimental y lo simulado se representan también los datos de la simulación exportados por sample.

C f=τ

0.5ρU ∞2 (2.14)

donde

ρ=1.204 kg /m³ es la densidad del fluido (aire)

U ∞=68.8m / s es la velocidad para y≫δ

Las órdenes y sentencias necesarias para la representación se describen a continuación:

resetset terminal postscript enhanced eps font 'Helvetica, 18'set output "Cf.eps"

set key inside bottom right vertical Leftset pointsize 1.5

#Cf(tau, rho, c) = tau / (-0.5*rho*c*c) rho wird gekuerzt, da mit rho multipliziert werden mussCf(tau, rho, c) = tau / (-0.5*c*c)rhoAir = 1.204

Escuela Politécnica Superior de Jaén 33

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

Uinf = 68.8

set xr [0:5]set yr [0:0.006]set xlabel 'x [m]'set ylabel 'Cf [-]'

plot 'cf.dat' u ($1):($2) t 'Experimental' w points pt 2,\ 'postProcessing/sets/25000/frictionFactor_U_wallShearStress.xy' u ($1):(Cf($5, rhoAir, Uinf)) t 'OF SimpleFOAM C_f' w l

Figura 2.9.- Validación de capa límite turbulenta

Como podemos observar los puntos recopilados del resultado de la simulación directa se asemejan bastante a los experimentales obtenidos por la NASA.

12. Usando Matlab, podemos representar u frente a y en las distintas⁺ ⁺ segmentos (“stations”).

Se importa los datos generados por sample, como el de la Figura 2.8, y se representan los valores de la columna 2 multiplicados por 1/u frente a los de la columna 1 multiplicados por y /ν . Y así tenemos u frente a y (ver Figura 2.10).⁺ ⁺ El código empleado para su presentación es el siguiente:clear allcd postProcessing/setscd 95896station10=importdata('station10_U_wallShearStress.xy');station18=importdata('station18_U_wallShearStress.xy');

Escuela Politécnica Superior de Jaén 34

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

station22=importdata('station22_U_wallShearStress.xy');semilogx(station10(:,1),station10(:,2))semilogx(station10(:,1)/(1.478e-5)*sqrt(-station10(1,5)),station10(:,2)/sqrt(-station10(1,5)))hold onsemilogx(station18(:,1)/(1.478e-5)*sqrt(-station18(1,5)),station18(:,2)/sqrt(-station18(1,5)),'ko')semilogx(station22(:,1)/(1.478e-5)*sqrt(-station22(1,5)),station22(:,2)/sqrt(-station22(1,5)),'r+')xlabel('y^+')ylabel('u^+')ylam = logspace(-1,1,100);semilogx( ylam, ylam, 'r-')yext = logspace(1,3,100);semilogx( yext, 2.44*log(yext)+4.9, 'g-')axis([1e-1 1e3 0 25])cd .. cd ..cd ..

Figura 2.10.- u frente a y (de las diferentes secciones de la CLT y de⁺ ⁺ soluciones analíticas)

La semejanza física de las diferentes secciones (station10, station18 y station22) es evidente, como se puede observar, las curvas para cada “station” confluyen en una misma. Además, éstas siguen bastante bien la solución analítica para la zona laminar. Para la zona logarítmica hay un error del 5%, que es relativamente pequeño. En conclusión, podemos añadir que siendo un simulación directa, DNS, la capa límite se ajusta bastante bien a las funciones de pared.

Escuela Politécnica Superior de Jaén 35

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

3. MALLADO DE TERRENO COMPLEJO

3.1 Capa límite atmosférica

La Capa Límite Atmosférica (o Atmospheric Boundary Layer, ABL) está definida como la parte más baja de la troposfera y su comportamiento está directamente influido por la presencia de la superficie de la Tierra. Fenómenos como los efectos de fricción y térmicos (calentamiento y enfriamiento de la superficie) provocan flujos en la atmósfera que transportan calor, momento, humedad, o materia (Stull, 2009).

Además de la definición anterior, existen otras más ambiguas y generalistas como es la de Nieuwstadt y Duynkerke (1995). Éstos la definen como “aquella región de la atmósfera en la que los valores de las magnitudes atmosféricas como la humedad, viento o la temperatura se ajustan desde sus valores en la atmósfera libre a aquellos que tienen en la superficie”. O la de Garrantt (1992) que la expresa a partir de las características que el flujo atmosférico presenta en su interior: “altamente rotacional, tridimensional, disipativo (para que la turbulencia no desaparezca debe existir un aporte incesante de energía), trayectorias detalladas de las partículas no predecibles con exactitud, velocidad de transporte y mezcla varios órdenes de magnitud superior respecto a la difusión molecular”.

La capa límite atmosférica tiene la peculiaridad de poseer un grado de estabilidad variable en espacio y tiempo que se da según tres estados de estabilidad estática, denominados estados básicos de estratificación: estable, inestable y neutra. De forma generalizada podemos decir que la estabilidad o inestabilidad de la ABL depende de la distribución de temperaturas en el eje vertical (z):

– Estable (Figura 3.1a): el gradiente de la temperatura en altura es negativo, por lo que el flujo de aire no sufre variaciones en esa dirección. Las condiciones de estabilidad de la ABL se dan, normalmente, de noche cuando no se dispone de aportación energética del Sol, lo cual provoca la formación de inversiones térmicas en la proximidad del suelo. En presencia de viento o el calentamiento de la superficie al amanecer tiene lugar la activación turbulenta desarrollándose una mezcla que tiende a homogeneizar el fluido llegando a debilitarse la estratificación estable. El valor típico del espesor de la ABL para el estado estable suele ser del orden de 100 m.

– Inestable (Figura 3.1b): la distribución de temperaturas es creciente hasta una altura determinada, a medida que avancemos en altura la temperatura baja. La estratificación inestable comienza a revelarse a la salida del Sol cuando se destruye la inversión térmica producida por la noche. En estas condiciones el aire se mueve cíclicamente en forma de remolinos debido a la intensa agitación vertical que presenta. La altura máxima de la capa de agitación es del orden de 1000 m aunque podríamos encontrarnos con valores que duplican o triplican ese valor.

Escuela Politécnica Superior de Jaén 36

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

– Neutra: las temperaturas son uniformes a lo largo de la altura, este caso suele ser poco frecuente, se puede dar en el mar de noche o con una neblina uniforme y persistente. La estratificación neutra está asociada a vientos fuertes, escaso calentamiento y una disminución del espesor de la capa límite. En ella tiene lugar la llamada capa límite residual, constituida por una mezcla de aire y contaminantes estancados originada durante el proceso de estratificación inestable. También se denomina capa de mezcla débil (Berljaars, 1992), sin embargo otros como Stull no la consideran una capa límite, ya que no presenta “contacto” directo con el suelo.

(Núñez Crespí, 2002)

Figura 3.1.- Estabilidad (a) e inestabilidad (b) de la ABL

En eólica, a la hora de diseñar un aerogenerador, se dimensiona éste para un estado de estratificación neutra de la ABL, ya que es la situación más desfavorable. Las fuerzas, cargas, velocidades, etc. que se producen sobre la turbina son siempre mayores en dicho estado que en los otros dos casos.

Definiéndose el parámetro de Coriolis, f =2Ωsin (∣λ∣) , donde Ω es la velocidad de giro de la Tierra y λ la latitud terrestre, salvo en el trópico donde

Escuela Politécnica Superior de Jaén 37

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

λ=22.5º , podemos parametrizar el espesor de la capa límite para una atmósfera neutra con la siguiente expresión (3.1):

h=u

6 f(3.1)

Siendo

u

u(z )= κ

ln(zz0)+Ψ

(3.2)

Donde

κ es la constante de Von-Karman ( κ=0.41 )

z , zo cota de altura y rugosidad superficial respectivamente

Ψ=34.5f zu (Esbu, 1985)

Con las expresiones anteriores podemos obtener, entonces, el perfil de velocidades (3.3):

u (z )=u

κ [ln (u

f z0)−ln 6+5.75] (3.3)

3.2 Motivación por un buen mallado del terreno

Con el fin de capturar la capa límite sobre un terreno complejo y preparar una buena simulación para su procesado se necesita un mallador adecuado. Por ello, Iberdrola en colaboración con el Centro Nacional de Energías Renovables y el Centro Nacional de Supercomputación están desarrollado un mallador automático, que desafortunadamente no está disponible para su descarga. Dicho mallador se denomina windMesh.

Tal y como se menciona en su “paper” (M. Avila y colaboradores, 2011), dicho mallador se ha implementado primeramente para la creación de una malla estructurada en elementos hexaédricos en un terreno complejo con el objeto de poder mallar a partir de los formatos estándar que usa la mayoría de la industria de elevación del terreno y la rugosidad de la superficie, y exporta la malla resultante a varios formatos estándar. Se usa un código (windMesh) para generar una malla de fondo, que contiene la topografía en alta resolución (el tamaño de las rejillas es el orden de decenas de metros en la horizontal) que tiene las siguientes características:

– Podemos diferenciar tres zonas (Figura 3.2). La zona externa es plana y compuesta con elementos regulares, la zona de transición tiene elementos de tamaño variable y la zona interna contiene elementos más finos regulares. Estas dos últimas disponen de topología y rugosidad, mientras que la externa no, ya que está diseñada para adaptarse a las condiciones de flujo de entrada.

– La distribución vertical de los elementos puede ser lineal o seguir una progresión geométrica con el fin de aumentar la resolución cerca de la superficie del

Escuela Politécnica Superior de Jaén 38

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

suelo (Figura 3.2f). A su vez, en los casos con altos gradientes topográficos, la distribución vertical de los nodos se puede modificar mediante un suavizador elíptico para tener ortogonalidad y evitar la distorsión de los elementos.

– La elevación del terreno y los contornos de rugosidad se pueden leer archivos en formato MAP o STL. Ambos tipos son interpolados usando una triangulación de Delauney y opcionalmente se puede suavizar los contornos topográficos, también pueden ser girados para alinearse con el ángulo de ataque del viento.

– Los resultados de windMesh pueden exportarse en varios formatos estándar, incluyendo a un archivo kmz para visualizar el emplazamiento y las propiedades de la malla con GoogleEarth (Figura 3.2a).

Figura 3.2.- Mallado con WindMesh (M. Avila y colaboradores, 2011)

Escuela Politécnica Superior de Jaén 39

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

WindMesh genera una malla en el fondo. Los aerogeneradores se ubican en la zona de mayor resolución aguas abajo (para capturar las estelas que producen). Posteriormente se “juntan” las geometrías del terreno con un modelo simplificado (disco actuador) de aerogenerador mediante el método Chimera.

Gracias a la malla generada por windMesh se procedió a realizar una validación del simulador que utilizan. Usando un modelo de turbulencia k−ϵ se obtuvo los perfiles de velocidad que se ven la Figura 3.3. Éstos se han comprado con datos experimentales y como se observa el mallador captura con bastante acierto la capa límite atmosférica.

Figura 3.3.- Validación (M. Avila y colaboradores, 2011)

Puesto que dicho de mallador no es accesible, en este trabajo emplearemos las alternativas que nos ofrece actualmente OpenFOAM para llevar acabo un pre-procesado de aplicación en eólica. En los siguientes apartados describiremos el uso de: snappyHexMesh y terrainBlockMesh. Analizaremos cada uno de ellos y compararemos las mallas resultantes de cada mallador.

Escuela Politécnica Superior de Jaén 40

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

3.3 Mallado con snappyHexMesh

SnappyHexMesh viene incluido con OpenFOAM y su función principal es generar mallas con elementos hexaédricos a partir de una superficie geométrica de elementos triangulares almacenada en puntos de coordenadas cartesianas en un fichero de formato STL. La malla tiende a adaptarse a la superficie, por lo que las celdas de la malla se hacen más finas en la zona próxima a la superficie.

Para llevar a cabo el mallado de un terreno complejo con SnappyHexMesh se procederá de la siguiente manera:

1. Copiamos el tutorial turbineSiting que se encuentra en incompressible/simpleFoam/ (directorio de tutoriales) a nuestra carpeta de casos ~/OpenFOAM/usuario-2.2.2/run/.

2. Abrimos la terminal (Ctrl+alt+T) y ejecutamos:

. /opt/openfoam222/etc/bashrc

3. Accedemos a la carpeta de los casos:

run

4. Nos dirigimos al caso que hemos copiado:

cd turbineSiting

5. Con blockMesh generamos una malla rectangular del dominio computacional:

blockMesh

6. Hacemos correr el mallador en cuestión. Éste parte de un archivo STL ubicado en constant/triSurface/ y de sus parámetros de entrada que se encuentran en el fichero system/snappyHexMeshDict.

snappyHexMesh -overwrite

7. Por último visualizamos la malla:

paraFoam

Si ejecutamos el comando checkMesh en la terminal obtenemos por en la misma una serie de datos interesantes una vez ejecutado el mallado, así como son los elementos que genera snappyHexMesh (tabla 4.1).

Escuela Politécnica Superior de Jaén 41

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

Tipo de elemento Número correspondiente al elemento

Hexaédrico (“hexahedra”) 107145

Prisma (“prisms”) 742

Prisma triangular (“wedges”) 0

Piramidal (“pyramids”) 0

Prisma triangular regular (“tet wedges”) 22

Tetraédrico (“tetrahedra”) 0

Polihédrico (“polyhedra”) 12337

Tabla 4.1.- Tipos de elementos creados por snappyHexMesh

En la Figura 3.4 podemos visualizar el resultado de la malla generada. Como podemos observar la malla tiene ciertas discontinuidades cerca de la superficie del terreno. Consigue adaptarse adecuadamente a éste aunque no de forma estructurada. En el mallado se observan distintos elementos generados, Tabla 4.1, sobre todo cerca del terreno.

Figura 3.4.- Mallado con snappyHexMesh de un terreno complejo

Escuela Politécnica Superior de Jaén 42

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

3.4 Mallado con terrainBlockMesh

Este mallador, terrainBlockMesher implementado por Jonas Schmidt (2014), no viene incluido en OpenFOAM, sin embargo se puede descargar de Recurso Web [8]. Sus características son las siguientes:

– Genera un diccionario blockMeshDict generalizado en la carpeta constant/polyMesh/.

– Usa “splines” y líneas para adaptarse al terreno.

– Produce una malla totalmente estructurada.

– Permite el uso de “grading” en el mallado de las direcciones vertical y horizontal.

– Relativamente fácil de manejar, sin embargo tiene gran coste computacional en término de número de celdillas.

(H. Nugusse , 2013)

Bajándonos el paquete IWESOL (que contiene librerías y herramientas para C++ y OpenFOAM) podemos instalar terrainBlockMesher. Accediendo al fichero README de la carpeta raíz podemos encontrar más información sobre la herramienta. Para proceder con su instalación debemos seguir estas instrucciones:

1. Nos bajamos openfoam211, para ello abrimos una terminal y ejecutamos el comando:

sudo apt-get install openfoam211

2. Creamos la carpeta de los casos correspondiente a esta versión.

3. Descargamos el archivo comprimido de Recurso Web [8].

4. Lo descomprimimos en la carpeta run.

5. Ejecutamos lo siguiente:

. /opt/openfoam211/etc/bachrc

export IWESOL=/home/usuario/OpenFOAM/usuario-2.1.1/run/terrainBlock-Mesher-master/iwesol

source $IWESOL/etc/bashrc-2.1.1

runcd terrainBlock-Mesher-master/iwesol

make

Escuela Politécnica Superior de Jaén 43

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

TerrainBlockMesher también dispone de un diccionario ubicado en el directorio system en el cual se configuran los parámetros de entrada para la realización del mallado automático:

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //stl{ terrain.stl // Nombre del archivo STL (terreno) { type triSurfaceMesh; }};writeBlockMeshDict true;writePolyMesh true;

blockManager{

coordinates{

origin (0 0 0); baseVectors ( ( 1 0 0) // vector director terreno 1 ( 0 1 0) // vector director terreno 2 ( 0 0 1) // vector normal al terreno );

}// Especificaciones del dominio. Los valores altos serán ajustados al STL. // p_corner: punto más bajo del dominio por el cual se procede el mallado.// Dimensions: longitudes escalares (Lx,Ly,Lz) del dominio.

p_corner (581321 4.78537e+06 930);dimensions (969 860 570);

p_above (581321 4.78537e+06 3000); // un punto “alto”

Blocks (30 30 1); // Número de “blocks” en los vectores // directores del terreno

cells (5 5 10); // Número de celdillas por bloque

maxDistProj 10000; // Distancia máxima definida para proyección

gradingFactors ( 1 1 10 );;// “grading”

// Nombres de los contornospatch_name_west west;patch_name_east east;patch_name_north north;patch_name_south south;patch_name_sky top;patch_name_ground bottom;

// Tipos de contornospatch_type_west patch;

Escuela Politécnica Superior de Jaén 44

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

patch_type_east patch;patch_type_north patch;patch_type_south patch;patch_type_sky patch;patch_type_ground wall;

}checkMesh true;checkMeshNoTopology false;checkMeshAllGeometry true;checkMeshAllTopology true;// ********************************************************************* //

La aplicación se basa en el mallador blockMesh, realiza varios “blocks” que se deben de especificar en su diccionario, también se debe especificar el número de celdillas por “block” en las tres direcciones del espacio. Una vez configurado terrainBlockMeshDict, ajustándolo al terreno (terrain.stl) e introduciendo los parámetros necesarios para proceder con el mallado, ejecutamos terrainBlockMesher en la terminal y podemos ver la malla con ParaView tecleando el comando paraFoam. En la Figura 3.5 se observa el resultado obtenido.

Figura 3.5.- Mallado con terrainBlockMesher de un terreno complejo

El mallador terrainBlockMesher ofrece una gran calidad para el mallado de un terreno complejo. Tal como podemos observar,la malla generada se adapta perfectamente al terreno, sin perder la cohesión entre celdillas dando lugar a una malla totalmente estructurada, sin discontinuidades y con relaciones de aspecto de

Escuela Politécnica Superior de Jaén 45

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

las celdillas coherentes. Todos los elementos generados ( 2⋅10⁵ ) son hexaédricos, a diferencia de snappyHexMesh que genera elementos de todo tipo (Tabla 4.1).

En el caso de querer tener mayor precisión para capturar la capa límite se debe aumentar el factor de escala (“granding”) de las celdillas en la dirección normal al terreno y añadir más celdillas para evitar error en el mallado, ya que terrainBlockMesher avisaría de un error relativo a la relación de aspecto entre celdillas. Se deberá ajustar en system/TerrainBlockMeshDict el número de celdillas necesario en las todas direcciones y el factor de aspecto introducido para evitar dicho error. Sin embargo, esto tiene un alto coste computacional, y para un ordenador personal nos llevaría bastante tiempo físico. Lo cual no es objeto de este Trabajo, aunque a nivel industrial se podría llevar a cabo.

3.5 Introducción de un modelo simplificado de aerogenerador

Con el objetivo de conocer la distribución de velocidades y presiones en un emplazamiento de un parque eólico lo principal sería saber cómo introducir aerogeneradores en el dominio computacional. Así podemos introducir modelos simplificados de aerogeneradores y llevar a cabo una simulación en la que se incluya turbulencia, rugosidad del terreno, parámetros del modelo simplificado del aerogenerador, y otros datos que el usuario vea relevantes. El modelo simplificado, denominado disco actuador, se explica con más detalle en el capítulo siguiente.

Para introducir los discos actuadores en el dominio deberemos usar otro mallador, a parte de terrainBlockMesher. Usaremos snappyHexMesh para refinar la zona donde ubican los modelos simplificados de las turbinas eólicas, éstas se introducirán mediante la aplicación topoSet que dispone de un diccionario propio system/topoSetDict en el cual se implementan los parámetros necesarios para darle propiedad de “aerogenerador”.

Una vez mallado con terrainBlockMesher se remalla la zona donde se ubican los discos con snappyHexMesh sobrescribiendo la parte de malla generada por el primero con el comando “snappyHexMesh -overwrite”. Una vez acabado el mallado, se le da propiedades a las celdillas de refinamiento con topoSet. El resultado obtenido puede verse en las figuras siguientes (3.6 y 3.7):

Escuela Politécnica Superior de Jaén 46

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

Figura 3.6.- Introducción de disco actuador en terreno complejo

Figura 3.7.- Corte transversal por el centro de un disco

Escuela Politécnica Superior de Jaén 47

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

4. DISCO ACTUADOR

El objetivo de este caso es analizar la interacción entre aerogenerador – viento usando un modelo simplificado de turbina eólica denominado disco actuador en un dominio computacional determinado. Para alcanzar dicho objetivo debemos modelar algunos aspectos a tener en cuenta como son la rugosidad del terreno, la elección de un modelo de turbulencia de capa límite y establecer las condiciones de contorno necesarias.

4.1 Fundamento teórico

Un aerogenerador o turbina eólica es un dispositivo que aprovecha la energía cinética del viento para obtener energía mecánica. Y gracias al mismo, con ayuda de un alternador y otros elementos auxiliares, esa energía mecánica se convierte en eléctrica. Una manera de estudiar la aerodinámica de turbinas eólicas horizontales sin tener en cuenta un diseño determinado es mediante el modelo del disco actuador. Éste reproduce un tubo de corriente de aire (Figura 4.1) que se expande debido a la conservación de la masa (4.1) que circula por dicho tubo.

Figura 4.1.- Modelo del disco actuador

Nótese que la velocidad decrece a lo largo del tubo de corriente, debido a que éste se ensancha. Como el término ρUA debe ser constante a lo largo del tubo de corriente, teniendo en cuenta que la densidad ( ρ ) no varía, se tiene que cumplir:

U ∞A∞=U d Ad=U w Aw (4.1)

donde

U ∞ , A∞ son velocidad y área de paso respectivamente aire arriba.

U d , Ad son velocidad y área de paso respectivamente en el disco.

Escuela Politécnica Superior de Jaén 48

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

U w , Aw son velocidad y área de paso respectivamente aire abajo.

En la bibliografía se hace uso de un término para simplificar el problema, éste es el factor de inducción de flujo axial (4.2), a, que nos indica una pérdida velocidad cuantitativa de valor aU ∞ debido a la presencia del disco:

a≡U ∞−U d

U ∞

=1−U d

U ∞

(4.2)

En base a este coeficiente se formula la ecuación de la cantidad de movimiento en término escalar en la dirección longitudinal al tubo de corriente.

La diferencia de presión ( (Pd ⁺−Pd ⁻ ) ) provoca un cambio de momento en el disco, la cual se puede obtener a través de la ecuación de Bernouilli, aplicándola en dos tramos: aire arriba – disco actuador y disco actuador – aire abajo. Las deducciones necesarias podemos encontrarlas en la bibliografía (Burton, 2011), con lo cual se obtiene (4.3):

(Pd ⁺−Pd ⁻ )=12ρ(U ∞

2−U w

2) (4.3)

donde se ha obtenido también U w=U ∞(1−2a ) . Con esta deducción se limita el coeficiente de inducción de velocidad axial (no podrá ser mayor de 0,5).

Un concepto muy importante también es el coeficiente de potencia que relaciona la potencia disponible con una de referencia ( 1/2ρU ∞

3 Ad ). La primera se obtiene mediante una definición de potencia (fuerza provocada por la diferencia de presión por velocidad en el disco). Así la fuerza (4.4), coeficiente de fuerza (4.5), potencia disponible (4.6) y el coeficiente de potencia (4.7) quedarían definidos así:

T≡(Pd ⁺−Pd ⁻)Ad=2ρ AdU ∞2 a(1−a) (4.4)

cT≡T

12ρU ∞

2 Ad

=...=4a(1−a) (4.5)

P≡F⋅U d=2ρ AdU ∞3 a (1−a) ² (4.6)

c p≡P

12ρU ∞

3 Ad

=...=4 a(1−a) ² (4.7)

Como podemos ver en (4.5), el coeficiente de fuerza depende, solamente, de forma cuadrática del factor de inducción de velocidad axial (a) cuyo máximo se da para cuando a=1/2 , que para dicho valor el coeficiente de fuerza toma valor unidad.

Por otro lado, el coeficiente de potencia (4.7) depende únicamente también de a aunque de forma cúbica. Se define, por lo tanto, el límite Lanchester-Betz el cual sostiene que ninguna turbina eólica puede exceder dicho límite. Éste no tiene nada que ver con el diseño del aerogenerador, ya que no se tiene en cuenta ninguna geometría del mismo. El límite de Lanchester-Betz es debido a la pérdida de energía que sucede durante la expansión del fluido.

Escuela Politécnica Superior de Jaén 49

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

El máximo valor de c p (4.7) se da parad c pd a

=4(1−a)(1−3a)=0 , por lo

que obtenemos C p , max para a=1/3 :

c p ,max=1627

=0.593 (4.7)

4.2 Modelo de turbulencia k−ϵ

Tal como detalla Wilcox (1994) el modelo k−ϵ es el más usado dentro de los que usan dos ecuaciones para modelar la turbulencia debido a su amplio rango de aplicación. Actualmente, la mayoría de los investigadores usan el modelo estándar desarrollado por Launder y Sharma (1974) cuyos coeficientes son constantes. Para un problema incompresible como el nuestro tenemos las ecuaciones (4.8) para la energía cinética turbulenta k y (4.9) para la disipación turbulenta ϵ :

∂k∂ t

+⋅(U k )=∇2[(ν+ νT

σ k )k ]+τ∂ ui∂ x j

−ϵ (4.8)

∂ϵ∂ t

+∇⋅(U ϵ)=∇2 [(ν+ νT

σ ϵ) k ]+C1

ϵk−C 2

ϵ2

k(4.9)

La viscosidad turbulenta νT se modela tal que νT=Cμ

k 2ϵ y los

coeficientes del modelo estándar son los siguientes:

C1=1.44 C2=1.92 Cμ=0.09 σk=1.0 σϵ=1.3

4.3 Dominio computacional y mallado del problema

El problema del disco actuador lo analizamos en un dominio prismático (Figura 4.2) de dimensiones, en kilómetros, 5x1x1. El cilindro de la figura se trata del disco que se sitúa centrado en el punto (1999,5 500 100) con un radio de 40 m.

Figura 4.2.- Dominio espacial de problema y ubicación del disco

Escuela Politécnica Superior de Jaén 50

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

Para la creación del dominio del problema se usará el generador de malla blockMesh, mientras que para el disco se realiza un refinamiento con snappyHexMesh y posteriormente se le da propiedades de disco actuador a las celdillas generadas por este último mediante la aplicación topoSet cuyo diccionario es system/topoSetDict.

Los parámetros que se definen en el fichero blockMeshDict ubicado en la carpeta constant/polyMesh/ se detallan a continuación:

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //convertToMeters 1000; // Conversión de unidades, esto es para ahorrar

// escritura

Vertices // Se indican los vértices de cada punto (x,y,z) del dominio // computacional

( (0 0 0) // vértice 0 (5 0 0) // vértice 1 (5 1 0) // vértice 2 (0 1 0) // vértice 3 (0 0 1) // vértice 4 (5 0 1) // vértice 5 (5 1 1) // vértice 6 (0 1 1) // vértice 7);blocks( hex (0 1 2 3 4 5 6 7) (100 20 20) simpleGrading (1 1 100) // con los // puntos se hace un box (caja) formada por cada uno de ellos. También se // indica el número de puntos por coordenada y la distribución de los// mismos con simpleGrading);

edges // Aquí se indica las características físicas de cada una de // las caras de la caja

();boundary( desliza { type slip; // Condición de flujo desarrollado, no hay efectos

// viscosos faces ( (4 5 6 7) // Se indican las caras para esta condición “slip” (1 5 4 0) (3 7 6 2) ); } suelo { type wall; // Condición wall, se tiene en cuenta la viscosidad faces ( (0 3 2 1) // Se indican los vértices que constituyen “suelo”

Escuela Politécnica Superior de Jaén 51

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

); } entrada { type patch; // Área de flujo general (entrante) faces ( (0 4 7 3) // Se indican los vértices que constituyen “entrada” ); } salida { type patch; // Área de flujo general (saliente) faces ( (2 6 5 1) // Se indican los vértices que constituyen 'salida' ); });mergePatchPairs();//********************************************************************** //

En el diccionario snappyHexMeshDict se define una geometría que contiene al disco para el refinamiento de la malla en esa zona. Se envuelve el disco con una geometría cilíndrica y cúbica tal como se ve en la Figura 2.3. Los parámetros del diccionario son:

geometry{ Caja { type searchableBox; min (1950 450 25); max (2050 550 175); } TurbinaEolica { type searchableCylinder; point1 (1995 500 100); point2 (2005 500 100); radius 50; }};

Para darle propiedades al disco actuador tenemos que configurar el diccionario topoSetDict que está ubicado en la carpeta system/. Sus parámetros se definen de la siguiente manera:// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //actions( { name DiscoActuador; // actuationDisk1 type cellSet;

Escuela Politécnica Superior de Jaén 52

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

action new; source cylinderToCell;// Introducción de cilindro en celdillas sourceInfo { // Definición de la geometría del cilindro p1 (1999 500 100); p2 (2000 500 100); radius 40; } } { name actuationDisk1; type cellZoneSet; action new; source setToCellZone; sourceInfo { set actuationDisk1; } });// ********************************************************************* //

Figura 4.3.- Detalle de las geometrías añadidas para mallar el contorno del disco

De manera que con tres diccionarios tenemos definido el pre-procesado del problema y la forma de proceder es bien sencilla. Ejecutamos en el siguiente orden los comandos “blockMesh”, “snappHexMesh -overwrite” y “topoSet” en la terminal (habiendo definido los parámetros de cada diccionario correctamente). El resultado obtenido se muestra en la figuras 4.4 y 4.5 siguientes:

Escuela Politécnica Superior de Jaén 53

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

Figura 4.4.- Mallado del problema

Figura 4.5.- Mallado del disco actuador en detalle

Escuela Politécnica Superior de Jaén 54

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

4.4 Condiciones iniciales y de contorno y propiedades del fluido

Los ficheros correspondientes a las condiciones iniciales y de contorno están ubicados en la carpeta 0/. En dicho directorio se almacenan todas las variables a tener en cuenta en la simulación, así como son la velocidad (U) y presión (p) explicadas en la Tabla 4.1, la presión dinámica turbulenta (k), velocidad de disipación de k (epsilon) y la viscosidad dinámica (nut) en la Tabla 4.2:

U p

Variable (unidad)

Velocidad (m/s) Presión atmosférica (Pa)

Tipo Vector Escalar

Condiciones de contorno

suelo

type fixedValue;value uniform (0 0 0);

Velocidad fijada como nula en el contorno suelo

type zeroGradient;

Flujo completamente desarrollado (condición de contorno tipo Neumann)

entrada

type atmBoundaryLayerInletVelocity

Esto es la entrada del flujo, se definen parámetros de la capa límite

atmosférica que están ubicados en 0/include/ABLConditions:

Uref =10; velocidad de referencia

Href =20; altura de referencia

z0 = uniform 0.1; rugosidad del suelo

turbulentKE 1.3; valor de turbulencia

windDirection (1 0 0); dirección y sentido del viento

zDirection (0 0 1); dirección z (altura)

zGround uniform 0.0; elevación del suelo

desliza

type slip;

Se impone la condición tipo slip, con tal que el flujo no atraviese este contorno

Escuela Politécnica Superior de Jaén 55

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

salida

type inletOutlet; inletValue uniform (0 0 0); value $internalField;

Se configura para que haya conservación de la masa, de forma que el tipo es inletOutlet. Para tiempo 0, se

indica que una velocidad nula, posteriormente se calculará con la

condición impuesta

type fixedValue;value uniform 0;

Esto es una presión fijada uniformemente como nula (condición tipo Dirichlet)

Tabla 4.1.- Descripción de U y p

k epsilon nut

Variable

(unidad)

Presión dinámica turbulenta

(m²/s²)

Velocidad de disipación de k

(m²/s³)

Viscosidad dinámica

(m²/s)

Tipo Escalar Escalar Escalar

Condiciones de contorno

suelo

type kqRWallFunction;

value uniform 0;

Se toma el valor de k como cero en el suelo

type epsilonWallFunction;

Cmu 0.09; kappa 0.4;

E 9.8;

value $internalField;

Se indican los parámetros del modelo de turbulencia usada,

k−ϵ , para la resolución de la

ecuación de ϵ , además se usa la función de pared

epsilonWallFunction con el fin de modelar mejor

la capa límite

type nutkAtmRoughWallF

unction;

z0 $z0;

value uniform 0.0;

Aquí se indica la rugosidad superficial atmosférica del suelo

leída de 0/include/ABLConditi

ons

entrada type uniformFixedValue;

uniformValue constant

type atmBoundaryLayerInletE

psilon;

type calculated;

value uniform 0;

Escuela Politécnica Superior de Jaén 56

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

1.3;

El valor de k se toma uniformemente a lo

largo de todo el área de entrada

Al igual que U, usa los parámetros de la ABL

Condición inicial tipo Dirichlet. Para los

siguientes instantes de tiempo, se calcula

desliza

type zeroGradient;

Flujo completamente desarrollado (condición Neumann)

salida

type inletOutlet;

inletValue uniform 1.3;

value $internalField;

Se toma valor de 1.3, posteriormente se calculará su valor

type inletOutlet;

inletValue uniform 0.01;

value $internalField;

Se toma valor de 0.01, posteriormente se

calcula su valor

Tabla 4.2.- Descripción de k, epsilon y nut

Las propiedades del fluido y del tipo de flujo las podemos encontrar en la carpeta constant. Primeramente tenemos el diccionario RASProperties en el cual se detalla el tipo de turbulencia RAS, kEpsilon en nuestro caso, sus coeficientes, etc:

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

RASModel kEpsilon; // Modelo de turbulencia RAS

turbulence on; // Activada la turbulencia

printCoeffs on; // Se muestran los coeficientes en pantalla

kEpsilonCoeffs // Coeficientes para kEpsilon{ Cmu 0.09; C1 1.44; C2 1.92; sigmaEps 1.11; // valor original de sigmaEps = 1.44}// ********************************************************************* //

En transportPropeties podemos ver que se trata de un fluido Newtoniano, tomando la viscosidad un valor constante e igual a ν=1.5⋅10−5m2

/s :

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //transportModel Newtonian;

nu nu [0 2 -1 0 0 0 0] 1.5e-05;// ********************************************************************* //

Escuela Politécnica Superior de Jaén 57

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

4.5 Esquemas numéricos y control de la simulación

Primeramente para este caso analizamos los parámetros del disco actuador definidos en system/fvOptions. En este diccionario se expone; la orientación y área del disco, el coeficiente de potencia y de fuerza, etc. A continuación se detalla el archivo:

disk{ type actuationDiskSource; active on; // On/off (activado/desactivado) selectionMode cellSet; // NellSet, points o cellZone cellSet actuationDisk1; // Nombre cellSet si

// selectionMode=cellSet

actuationDiskSourceCoeffs { fieldNames (U); diskDir (1 0 0); // Orientación espacial del disco Cp 0.386; // Cp, coeficiente de potencia Ct 0.58; // Ct, coeficiente de fuerza diskArea 5000; // Área del disco (radio = 40m) upstreamPoint (1999 500 100); // Punto aire arriba coeffs (0.1 0.5 0.01); // Coeficientes de distribución

// radial }}

El control temporal de la simulación (system/controlDict) se detalla en la tabla siguiente:

Parámetro Valor Significado

Application simpleFoam Aplicación a usar

startFrom latestTime; Instante inicial a partir del cual inicia la simulación

startTime 0; Tiempo inicial específico

stopAt endTime; Instante final en el que la simulación termina

endTime 5000; Tiempo final específico

deltaT 1; Paso de tiempo o iteración

writeControl timeStep; Controla el tiempo de escritura en un archivo (en este caso escribe cada paso de tiempo)

writeInterval 50; Intervalo de almacenamiento de datos

Escuela Politécnica Superior de Jaén 58

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

purgeWrite 0; Entero que representa un limite en el número de los directorios temporales que se almacenan de forma cíclica

writeFormat binary; Formato de salida de los resultados

writePrecision 12; Precisión de escritura

writeCompression uncompressed; Compresión o no de los datos

timeFormat general; Formato para el directorio temporal

timePrecision 6; Precisión temporal

runTimeModifiable yes; Releer diccionarios (por ejemplo controlDict) desde el comienzo de cada paso de tiempo o no

Tabla 4.3.- Detalle del archivo controlDict

En system/fvSchemes se describen los distintos esquemas numéricos para los diferentes términos de las ecuaciones para cada una de las variables empleadas en la simulación (Tabla 4.4 siguiente):

Término Configuración Significado

∂∂ t stedyState

No se tiene en cuenta el término temporal

⋅(Φ)bounded Gauss upwind

Se usa una discretización guasiana hacia la dirección del flujo para la divergencia excepto para “nuEff*dev(T(grad(U)))” que se usa “Gauss linear”

Gauss linearDiscretización gausiana linear para los términos gradiente

2Φ Gauss linear corrected

Discretización gausiana corregida para la laplaciana

(Φ) f linear Interpolación lineal para la interpolación entre la interpolación entre punto y

Escuela Politécnica Superior de Jaén 59

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

punto

⊤Φ limited corrected 0.333

Discretización explícita con corrección para componentes de gradiente normal a la cara de la celdilla

Tabla 4.4.- Detalle del archivo fvSchemes

Finalmente, en la Tabla 4.5 se expone la elección de los solvers, tolerancias y algoritmos de resolución:

Solvers

Variables Solver Homogeneizador Tolerancia

p GAMG GaussSeidel 1e-7

U, k, epsilon smoothSolver GaussSeidel 1e-8

SIMPLE

Número de correctores no

ortogonales

Control de residuales

Variable Tolerancia

0p 1e-3

U, k, epsilon 1e-4

potentialFlow

Número de correctores no ortogonales 5

relaxationFactors

Para variables Para ecuaciones

p 0.3 U, k, epsilon 0.7

Tabla 4.5.- Detalle del archivo fvSolution

4.6 Simulación y resultados

Para empezar a resolver este problema debemos cargar primeramente las variables de openfoam222 que es la versión que usaremos para analizar este caso. Tal como hemos hecho en otros casos debemos abrir la terminal (ctrl+alt+T) y seguir los pasos siguientes:

1. Cargamos las variables de entorno del programa:

. /opt/openfoam222/etc/bashrc

2. Para acceder directamente a la carpeta donde disponemos de nuestros casos podemos teclear run:

run

Escuela Politécnica Superior de Jaén 60

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

3. Accedemos a la carpeta del caso subiendo de nivel:

cd discoActuador

4. Mallamos con blockMesh para generar el dominio del problema:

blockMesh

5. Posteriormente mallamos el volumen “Caja” (ver Figura 4.3) con snappyHexMesh:

snappyHexMesh -overwrite

6. Ejecutamos topoSet con el fin de darle propiedades de disco actuador a las celdillas creadas por snappyHexMesh, esto es que se modifica las ecuaciones de Navier-Stokes en dicho volúmen (un conjunto de celdillas seleccionas) para simular un modelo simplificado de aerogenerador:

topoSet

7. Ejecutamos simpleFoam, que resuelve las ecuaciones de Navier-Stokes para una simulación turbulencia estacionaria e incompresible basado en algoritmo de Patankar:

simpleFoam

8. Una vez terminada la simulación o bien porque el usuario la haya parado pulsando a la vez ctrl+C, podemos ver los resultados con ParaView:

paraFoam

El flujo sufre modificaciones en la zona del disco actuador tanto para el campo de velocidad (Figura 4.6) como el de presión (Figura 4.7). Sin embargo, la presión se restablece más rápidamente que el campo de velocidad. Así a la hora de querer introducir otro disco deberemos guiarnos por el campo de velocidades, ya que condiciona fuertemente la distancia a la que debe colocarse el siguiente aerogenerador. Se busca siempre que la capa límite adquiera el mismo perfil de velocidad que tenía antes de interaccionar con el primer aerogenerador.

Escuela Politécnica Superior de Jaén 61

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

Figura 4.6.- Campo de velocidad cerca del disco actuador

Figura 4.7.- Campo de presión cerca del disco actuador

Escuela Politécnica Superior de Jaén 62

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

5. MALLADO MÓVIL

5.1 Introducción teórica

En ocasiones emplear una malla móvil con referencia a un sistema de coordenadas fijo reduce la complejidad del problema. Esto es, si disponemos de un problema con velocidad de rotación, Ω , es conveniente analizar el movimiento en un sistema de referencia rotatorio y solidario a los elementos que giran, sólo que las ecuaciones de cantidad de movimiento y energía (si procede) sufren ciertas modificaciones al tener que expresarlas en un nuevo sistema de referencia móvil.

Consideramos un sistema de coordenadas que rota con una velocidad Ω⃗relativa al sistema inercial tal como se muestra en la Figura 5.1. La localización de dicho sistema la establece el vector de posición r⃗ 0 .

Figura 5.1.- Sistema fijo y móvil genérico

El dominio computacional se define respecto al sistema móvil. La velocidad del fluido se puede expresar relativamente al sistema móvil con la expresión siguiente:

U⃗ rel=U⃗ abs−Ω⃗× r⃗ (5.1)

donde U⃗ rel es la velocidad relativa al sistema móvil, U⃗ abs velocidad absoluta y el término Ω⃗× r⃗ es la velocidad debida al giro de una partícula fluida.

Escuela Politécnica Superior de Jaén 63

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

Puesto que disponemos de dos sistemas de referencia podemos formular la ecuación de transporte de momento del fluido de dos maneras diferentes, expresándola en términos de velocidad relativa (5.2) o absoluta (5.3):

∇⋅(U⃗ rel U⃗ rel)+2 Ω⃗×U⃗ rel+Ω⃗×(Ω⃗× r⃗ )=−∇ ( pρ )+ν∇⋅∇ (U⃗ rel) (5.2)

∇⋅(U⃗ rel U⃗ abs)+Ω⃗× ⃗U abs=−∇ ( pρ )+ν∇⋅∇( ⃗U abs) (5.3)

En la ecuación (5.2) aparecen dos términos nuevos, el término de aceleración de Coriolis 2 Ω⃗×U⃗ rel y aceleración centrípeta Ω⃗×(Ω⃗× r⃗ ) . Por otro lado, en la formulación (5.3) referida al sistema fijo, los dos términos de aceleración mencionados se convierten en uno, Ω⃗× ⃗U abs . Nótese que en (5.2) y (5.3) hemos supuesto que el flujo es estacionario, por lo que se ha despreciado el término de variación temporal. Sin pérdida de generalidad, se puede añadir el clásico término de variación temporal en el caso de flujos no estacionarios.

En la Mecánica de Fluidos Computacional, podemos abordar un problema con una estructura de referencia con rotación simple (Single Rotating Reference Frame, SRF) o con múltiples estructuras de referencia con rotación (Multiple Rotating Reference Frames) dependiendo del tipo de problema. Teniendo en cuenta (o no) la dependencia del tiempo, podemos clasificar los solvers de OpenFOAM tal como vienen en la siguiente Tabla 5.1:

SRF MRF

Estacionario SRFSimpleFoam SimpleFoam + MRFSource

Transitorio SRFPimpleFoam pimpleDyMFoam

Tabla 5.1.- Solvers de OpenFOAM para mallado móvil

Este tipo de solvers se usa para turbomáquinas, bombas hidráulicas, hélices... Dependiendo del tipo de problema elegiremos un tipo de solver u otro. Por ejemplo si queremos visualizar el funcionamiento de una bomba impulsora podemos usar SRFSimpleFoam, o si deseamos estudiar la puesta en marcha de una turbina y analizar su flujo tanto en el rotor (álabes móviles) como en el estator (álabes directores o fijos) podemos usar pimpleDyMFoam. Estos solvers junto con los generadores de malla se usan para su validación con turbomáquinas, tal como podemos ver en el Recurso Web [9].

5.2 SRF (Single Rotation Frame)

SRF, en inglés Single Rotation Frame. Esto es la malla permanece inmóvil mientras el fluido gira a su alrededor ya que todo el dominio computacional es referido a un sólo sistema fijo. Por lo que las ecuaciones de transporte a resolver son las mismas en todas las celdillas, de ahí el término “single”.

Se procederá ahora a describir una simulación numérica transitoria (sección 5.2.1) y otra estacionaria (sección 5.2.2) realizadas con los algoritmos SRFPimpleFoam y SRFSimpleFoam respectivamente.

Escuela Politécnica Superior de Jaén 64

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

5.2.1 Problema transitorio

Un ejemplo de problema transitorio utilizando un sistema simple de rotación es el caso de OpenFOAM (tutorials/incompressible/SRFPimpleFoam/rotor2D/) que simula un rotor de cuatro aspas en el cual que se encuentra inmerso dentro de un fluido confinado.

El mallado se realiza con blockMesh, con la ayuda de su diccionario se genera el rotor y el dominio cilíndrico (Figura 5.2):

Figura 5.2.- Mallado de rotor 2D con blockMesh

Este caso se lleva a cabo por el sólver SRFPimpleFoam que resuelve las ecuaciones de un problema transitorio para cada instante de tiempo de un flujo incompresible con un sistema de rotación simple usando el algoritmo de resolución híbrido PIMPLE (combinación de PISO y SIMPLE). En esta simulación se incorpora un fichero (constant/SRFProperties) que no hemos mencionado en anteriores casos. Las entradas de éste son las siguientes:

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //SRFModel rpm;axis (0 0 1); // Eje giro y sentidorpmCoeffs{ rpm 60; // magnitud del giro en rpm }// ********************************************************************* //

La secuencia de la simulación, ejecutando en la terminal una vez cargadas

Escuela Politécnica Superior de Jaén 65

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

las variables de entorno, es la siguiente: “blockMesh”, “SRFPimplefoam”, y “paraFoam” (para la visualización de los resultados obtenidos).

Podemos visualizar los resultados en la Tabla 5.2 (campo de velocidad) y en la Tabla 5.3 (contornos de presión). En dichas tablas se muestran varios instantes de tiempo ya que la simulación es transitoria y la solución es varía con el tiempo.

Se ha elegido los instantes de tiempo de t=0.98 s a t=1.26 s de forma arbitraria, ya que la solución es simétrica temporalmente para el campo de velocidad. Si observamos el instante t=1.02 s vemos que empieza a producirse un contorno de velocidad relativamente más alto expandiéndose hasta el instante t=1.22 s . Este ciclo se repite ya que en t=1.26 s vuelve a producirse ese mismo contorno en otra pala del rotor. Con lo que podemos decir que la solución varía en el tiempo por la emisión de vórtices desde la pala del elemento móvil, lo cual nos indica que son capturadas correctas que realiza el simulador.

Los contornos de presión correspondientes a los instantes anteriores tienen una solución menos definida (aleatoria) como podemos observar. Nótese que en el instante t=1.02 s hay una importante sobrepresión y en t=1.26 s una presión baja en todo el dominio cuyo máximo se encuentra en la pala del rotor en la que se produce la emisión de vórtices a alta velocidad.

t=0.98 s t=1.02 s

t=1.06 s t=1.10 s

Escuela Politécnica Superior de Jaén 66

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

t=1.14 s t=1.18 s

t=1.22 s t=1.26 s

Tabla 5.2.- Campo de velocidad ( U⃗ ) de la simulación rotor2D

t=0.98 s t=1.02 s

t=1.06 s t=1.10 s

Escuela Politécnica Superior de Jaén 67

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

t=1.14 s t=1.18 s

t=1.22 s t=1.26 s

Tabla 5.3.- Contorno de presión ( p ) de la simulación rotor2D

5.2.2 Problema estacionario

Para mostrar las capacidades de la simulación 3D, en este caso se ha simulado un mezclador teniendo en cuenta también el flujo en la dirección longitudinal. La malla del caso a estudiar (incompressible/SRFSimpleFoam/mixer) se muestra en la Figura 5.3 y se obtiene tras ejecutar blockMesh. Para su análisis sólo se ha representado la cuarta parte de la geometría, ya que la solución es simétrica, ubicando el aspa en el centro tal como se puede ver:

Escuela Politécnica Superior de Jaén 68

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

Figura 5.3.- Geometría y mallado (por blockMesh) de “mixer”

El solver del procesado es SRFSimpleFoam que resuelve un problema sin tener en cuenta términos temporales en una estructura sólida de rotación simple. Puesto que se trata de una simulación estacionaria, su solución será única. Al igual que el caso anterior rotor2D, éste también dispone del diccionario constant/SRFProperties exactamente con la misma estructura, sólo cambia la magnitud del giro.

Una vez generada la malla con blockMesh y resuelto el problema (SRFSimpleFoam) podemos ver los resultados (paraFoam). En la Figura 5.4 vemos los resultados de la simulación:

Escuela Politécnica Superior de Jaén 69

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

Figura 5.4.- Campo de velocidades absolutas (izquierda) y campo de presión (derecha)

El flujo está condicionado por la presencia de la pala, se observa que hay una importante recirculación de fluido que origina una zona de remanso. Esa recirculación la origina la pala que hace mover el flujo a muy alta velocidad, del orden de 500 m/s. Respecto al campo de presión, ésta es máxima en la zona de arriba del dominio ya que el fluido llega a muy alta velocidad que junto con la presencia de la pala en movimiento origina esa sobrepresión. Mientras que en la parte baja podemos encontrarnos con presiones menores a la atmosférica debido al efecto “succión” que sufre el fluido al ser transportado verticalmente en sentido positivo del eje z.

5.3 MRF (Multiple Rotation Frame)

El modelo MRF, múltiples estructuras de rotación, tiene gran aplicación en problemas donde no todo el dominio es móvil, sino que hay una zona estacionaria. Un buen problema de este modelo podría ser el representado en la Figura 5.5 en la cual hay una zona móvil y otra estacionaria ( Ω⃗= 0̄ ). A la hora de realizar la simulación se emplean diferentes ecuaciones para cada zona, así pues si nos encontramos en la zona estacionaria emplearemos la ecuación (5.2), mientras que si estamos tratando la móvil usaremos la (5.3) disminuyendo así la complejidad del problema.

Escuela Politécnica Superior de Jaén 70

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

Figura 5.5.- problema simple de un modelo MRF

A continuación vamos a analizar un mezclador 2D con el modelo de múltiple estructura de rotación (MRF). La geometría consta de un cilindro anular, con un rotor y estator como el que se muestra en la Figura 5.6. La malla se genera con con blockMesh de nuevo.

Aquí se va a tratar problemas computacionalmente más complejos ya que se las ecuaciones que se emplean no se aplican en todo el dominio como en los casos anteriores y se ha de emplear una técnica para compatibilizar las dos zonas en la interfaz (línea de trazos de la Figura 5.4). Sin embargo, si eliminamos una de las zonas tendríamos un caso equivalente a los anteriores (modelo SRF).

Escuela Politécnica Superior de Jaén 71

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

Figura 5.6.- Geometría y mallado del agitador mixerVesselAMI2D

Estudiaremos el problema teniendo el término temporal primeramente, posteriormente lo analizaremos de forma estacionaria.

5.3.1 Problema transitorio

Se ha cogido el caso incompressible/pimpleDyMFoam/mixerVesselAMI2D de la versión 2.3 de OpenFOAM para analizar un problema con mallado móvil usando el modelo MRF. Se trata de un mezclador que gira a Ω=2π rad / s en la dirección z positiva. Como se ha explicado anteriormente se distinguen dos zonas (móvil y estacionaria) para las cuales se aplican distintas ecuaciones para cada zona, como si se tratasen de problemas distintos. Se compatibilizan los resultados en la interfaz entre las dos zonas, convirtiéndose los resultados de una zona en condiciones de contorno de la otra. Se hace uso de una técnica para compatibilizar la malla móvil con la estacionaria. Ésta es la técnica Arbitrary Mesh Interface (AMI) descrita por Farrell y Maddison (2011) que permite realizar una simulación de unos determinados dominios computacionales desconectados pero adyacentes.

En las condiciones de contorno para el instante de tiempo inicial lo siguiente. La velocidad del flujo se impone nula y la presión toma la condición “zeroGradient” en el rotor y estator. En los contornos circulares (“black” y “front”) se impone la condición “empty” tanto para la presión como velocidad con el fin de hacer el flujo

Escuela Politécnica Superior de Jaén 72

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

bidimensional. Se ha usado un modelo de turbulencia k−ϵ . Los resultados de la simulación se han tabulado en las tablas 5.4 y 5.5 siguientes:

t=0.0 s t=0.2 s

t=0.4 s t=0.6 s

t=0.8 s t=1.0 s

Tabla 5.4.- Campo de velocidad de la simulación mixerVesselAMI2D

Escuela Politécnica Superior de Jaén 73

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

t=0.0 s t=0.2 s

t=0.4 s t=0.6 s

t=0.8 s t=1.0 s

Tabla 5.5.- Campo de presión de la simulación mixerVesselAMI2D

Para este caso se obtienen unas soluciones más homogéneas tanto para el campo de velocidades como el de presión, esto se debe a la alta velocidad de giro del rotor que da lugar a velocidades del fluido altas (del orden de 500 m/s). Lo cual hace que no de tiempo para originarse vórtices. Sin embargo, en la zona del estator donde las velocidades son considerablemente más bajas el simulador capta los remolinos que producen en las aspas inmóviles del estator.

Escuela Politécnica Superior de Jaén 74

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

Respecto a la presión vemos un gradiente creciente a medida que nos alejamos del rotor. Se produce una depresión muy poco significativa en éste y una sobrepresión en el estator.

5.3.2 Problema estacionario

De la misma manera que el caso anterior se puede ver su comportamiento prescendiendo del término temporal. En este caso se ha aumentado la velocidad a Ω=104.72 rad / s y no se ha usado la interfaz AMI, sino un modo de selección de

celdillas. De forma que las internas (pertenecientes al rotor) se le han aplicado las ecuaciones teniendo la rotación (Coliolis y aceleración centrípeta en la ecuación de la cantidad de movimiento). Mientras que en la zona estacionaria se ha aplicado la ecuación (5.3). En ésta no tiene en cuenta los términos mencionados puesto que no hay velocidad de rotación( Ω⃗=0 ), desaparece Ω⃗× ⃗U abs .

Este problema se ha obtenido de la versión extendida de OpenFOAM, concretamente de foam-extend-3.0, ya que no se encuentra en la versión más actualizada (openfoam230). El caso es mixerVessel2D que está ubicado en la carpeta incompressible/MRFSimpleFoam/.

Las condiciones de contorno para el instante de tiempo de inicio de la simulación son idénticas a las del problema anterior. En este caso sólo se dispone de una solución, la del último instante de tiempo, en la que los residuales convergen.

El solver usado es simpleFoam como se indica en la Tabla 5.1, y los resultados obtenidos podemos observarlos en las figuras 5.7 (campo de velocidad) y 5.8 (de presión).

En este caso las soluciones son casi idénticas al caso anterior. La velocidad es máxima en la punta de la pala en la dirección del flujo como el caso anterior pero aquí el simulador no llega a capturar los remolinos que se formaban en la zona del estator. Respecto a la presión se ven diferencias más notables, produciéndose sobrepresiones en la puntas de las palas y el zona del estator la sobrepresión que se da no es tan relativamente alta como en el caso transitorio. Se da una depresión mayor.

Escuela Politécnica Superior de Jaén 75

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

Figura 5.7.- Campo de velocidad de mixerVessel2D

Figura 5.8.- Campo de presión de mixerVessel2D

Escuela Politécnica Superior de Jaén 76

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

6. CONCLUSIONES

Este Trabajo Fin de Grado comprende una serie de casos de la Mecánica de Fluidos Computacional realizados con software libre (OpenFOAM) con relación a la Eólica. Los problemas que se han desarrollado son: capa límite turbulenta sobre placa plana, mallado de terreno complejo, interacción viento-aerogenerador usando el modelo del disco actuador y mallado móvil. La principal importancia de este TFG reside en ser el primer documento en castellano en este ámbito de la ingeniería.

Una vez concluido el TFG se pueden extraer diferentes conclusiones del mismo, pero antes debemos recordar sus objetivos:

1. Documentación de simulaciones numéricas (pre-procesado, procesado y post-procesado) en el ámbito de la Energía Eólica y de la Mecánica de Fluidos mediante el uso del software libre (OpenFOAM y otras aplicaciones).

2. Validación los resultados obtenidos en algunas simulaciones mediante la comparación con los datos procedentes de otros autores.

Los objetivos que buscábamos se han alcanzado con cierto éxito. Así, se ha explicado exhaustivamente una serie de casos tanto de carácter industrial como docente. A continuación nos extenderemos en el desarrollado de este Trabajo.

Primeramente empezamos con el capítulo introductorio en el cual se vio la importancia del software libre y de código abierto como es OpenFOAM. Su crecimiento en términos de publicaciones científicas en Scopus y cursos elaborados por la organización ha crecido bastante desde su fundación. Éstos tienen un coste alrededor de los 1500 euros y su duración es de 2 días. Mientras que este Trabajo se distribuye de manera gratuita y se ofrece como alternativa a dichos cursos.

Por otro lado, la necesidad de enfocar el TFG en la energía eólica es que ésta no ha parado de crecer desde que se produjo un auge en términos de evolución tecnológica y crecimiento a partir de los años 80 gracias a aquellos gobiernos que empezaron a fomentar programas de investigación y subvenciones para el desarrollo de la misma.

Sabemos que llevar a cabo un proyecto eólico es complejo, son muchas las variables a manipular para su ejecución. La variable más importante es la ubicación del parque eólico, por lo que una buena colocación permitirá la generación de una buena productividad favorable al mercado eléctrico. Actualmente para ello existen organizaciones y empresas importantes a nivel internacional trabajando con software libre como OpenFOAM para llevar a cabo sus proyectos de investigación tales como Iberdrola Renovables en colaboración con el CENER y el Centro de Supercomputación de Barcelona con su proyecto “INNPACTO – OpenFOAM” enfocado en la mejora de la previsión y análisis del recurso mediante la optimización de los modelos de análisis computacional.

Posteriormente se ha estudiado el caso de capa límite turbulenta sobre placa plana. Para simplificar el caso impusimos la condición de contorno “empty” (vacía) en

Escuela Politécnica Superior de Jaén 77

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

los contornos adecuados para convertirlo en una simulación 2D, ya que OpenFOAM siempre trabaja en las tres coordenadas cartesianas. Usamos la simulación directa (DNS) sin tener en cuenta las funciones de pared teóricas de la CLT con el objeto de comprobación con resultados experimentales realizados por la NASA y comprobar la teoría de las funciones de pared (que implementa OpenFOAM y otros programas de CFD) con la simulación directa, es decir, sin tener en cuenta dichas funciones. El resultado fue bueno como podemos ver en las figuras 2.9 y 2.10. En la primera figura mencionada pudimos observar que los resultados obtenidos por el simulador son adyacentes a los experimentales. En la Figura 2.10 veíamos que la simulación sigue bastante bien la solución analítica para la zona laminar. Para la zona logarítmica hay un error del 5%, que es relativamente pequeño. El segundo objetivo perseguido del Trabajo se consuma aquí con lo mencionado anteriormente.

En el tercer capítulo, se vio la generación de malla de un terreno complejo cuya información se encontraba en un archivo de formato STL. Para el desarrollo de este capítulo usamos dos herramientas; snappyHexMesh y terrainBlockMesher. La primera de ellas se usa generalmente para geometrías CAD con cierta complejidad y la segunda es específica para terrenos como su nombre en inglés indica. Obviamente pudimos ver el resultado que nos ofrecía cada uno de ellos llegando a la conclusión siguiente: terrainblockMesher da mejores resultados ya que genera mallas muy compactas y totalmente estructurada. También pudimos introducir con éxito un modelo simplificado de aerogenerador en el dominio CFD del caso a una determinada cota. La razón por la que este caso no se llegó a simular es que no era objetivo del Trabajo ya que el caso disponía de muchas celdillas. Sin embargo, a nivel industrial es fácilmente aplicable si se dispone de un buen equipo, no doméstico. Así introduciríamos las características de la capa límite atmosférica (ABL) tales como la rugosidad superficial, latitud terrestre donde nos ubicamos, la estabilidad de la misma, entre otros parámetros que se explicaron al principio del capítulo. Aunque esto se realizó en el caso tercero en un dominio computacional menor con el fin de ahorrar coste computacional. También se introdujo un modelo simplificado de aerogenerador con la herramienta topoSet de OpenFOAM. Aunque esto se explicó con más detalle en el capítulo cuarto del Disco Actuador.

En el tercer caso se simuló el disco actuador, el modelo simplificado de aerogenerador que hemos mencionado anteriormente. En esta simulación se malló el caso con un dominio computacional prismático con el mallador blockMesh. En el centro de dicho domino se ubica el disco actuador. Se detalló como se procede con el mallado del disco: se remalla con snappyHexMesh y posteriormente se introduce las características del disco actuador en el diccionario de la herramienta topoSet. Lo más importante en este caso era la obtención de un buen mallado, con un refinado adecuado en la zona donde se encontraba el modelo para conseguir un buen resultado de interacción viento-aerogenerador. Esto es de vital importancia ya que si se desea colocar un aerogenerador detrás de otro (con interferencia en el flujo de aire) se analizaría el caso con los aerogenerador que se quieran con el objetivo de encontrar la distancia óptima entre los aerogenerador sin afectar a la potencia de los mismos.

En el último capítulo introdujimos la teoría del mallado móvil. Podíamos encontrarnos con dos modelos SRF (rotación simple) y MRF (rotación múltiple).

Escuela Politécnica Superior de Jaén 78

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

Vimos que podíamos encontrarnos con cuatro casos distintos. Dependiendo del tipo de máquina y si tenemos en cuenta el término temporal o no podemos analizar un caso u otro. El mallado móvil se utiliza generalmente en máquinas de rotación tales como hélices, turbinas, bombas hidráulicas, mezcladores... Así en el capítulo se explicó cuatro casos propios de OpenFOAM. Con el modelo SRF dos (un rotor 2D transitorio y un mezclador 3D estacionario) y con el modelo MRF se analizó el problema de un mezclador 2D con estator y rotor tanto teniendo en cuenta la dependencia temporal y no teniéndola. No nos detuvimos en la explicación exhaustiva de cada uno de ellos ya que se encontraban en los tutoriales de OpenFOAM. De forma que analizamos las diferencias entre ambos concluyendo que los simuladores tanto para el modelo SRF como MRF (SRFPimpleFoam y pimpleDyMFoam respectivamente) captan bien los vórtices que originan las palas de la máquina por el movimiento de rotación. Para este capítulo sacamos una conclusión clara, introducir la geometría de un aerogenerador como rotor sería una buena aplicación para la eólica. Así podríamos obtener las estelas generadas por el aerogenerador. Puesto que este TFG tiene carácter docente no hemos realizado esta tarea, llevaría bastante tiempo, requiriendo una etapa de modelado geométrico con superficies complejas. Pero en un futuro se podría llegar a encontrar tutoriales relativos a esto en OpenFOAM, ya sea tratándose de un aerogenerador o una turbomáquina cualquiera.

Aprovechando la forma de entrega de los Trabajos Fin de Grado todos los casos ejecutados se pueden visualizar ya que se han adjuntado en el CD. Así si el lector lo desea deberá seguir las instrucciones de instalación (o virtualización) de un sistema GNU/Linux, que se explicaron en el capítulo primero, para visualizar los casos con ParaView. O simplemente puede navegar en las carpetas para visualizar los archivos sin necesidad de instalación ninguna.

Por último, con el fin de aclarar algunas nociones sobre los esquemas de interpolación usados en OpenFOAM se ha descrito los mismos en los ANEXOS I y II. El primer anexo se explica los distintos esquemas que podemos usar en el diccionario fvSchemes para cada tipo de interpolación (gradientes, laplacianas, interpolación entre punto y punto, etc). Mientras que en el segundo anexo se detalla los métodos de resolución de ecuaciones, algoritmos de control de las simulaciones, los distintos homogeneizadores que se pueden usar en el diccionario fvSolution. Dichos anexos se desarrollan después de este capítulo.

Escuela Politécnica Superior de Jaén 79

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

ANEXO I: ACLARACIONES SOBRE EL DICCIONARIO fvSchemes

En el diccionario fvSchemes ubicado en la carpeta system/ se declaran los esquemas numéricos para cada término, tal como derivadas en ecuaciones. En la Tabla I.1 se tabulan los diferentes términos que se usa OpenFOAM y en la Tabla I.2 los esquemas en sí para cada uno de ellos. Los términos más usados suelen ser el término gradiente , o la interpolación de valores entre punto y punto.∇

Formulación en OpenFOAM Analogía matemática

interpolationSchemes Interpolación entre punto y punto (Φ) f

snGradSchemes Componente de gradiente normal a la cara de la celdilla

gradSchemes Gradiente

divSchemes Divergencia ⋅

laplacianSchemes Laplaciana 2

timeScheme Primera y segunda derivada parcial

temporal ∂∂ t

, ∂2

∂ ² t

fluxRequired Variables que requieren generación de flujo

Tabla I.1 Términos matemáticos usados en OpenFOAM

ESQUEMA DESCRIPCIÓN

Esquemas de interpolación ( (Φ) f )

Esquemas centrados

linear Interpolación lineal (diferenciación centrada)

cubicCorrection Interpolación cúbica

midPoint Interpolación lineal con ponderación simétrica

Esquemas convectivas hacia la dirección del flujo (“upwind”)

upwind Diferenciación centrada

Escuela Politécnica Superior de Jaén 80

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

Li,.nearUpwind Diferenciación lineal

skewLinear Linear con corrección no ortogonal

QUICK Diferenciación cuadrática

Métodos de segundo orden antidispersivos, esquemas TVD (Total Variation Diminishing)

limitedLinear Diferenciación lineal con limitador

vanLeer Limitador de van Leer

MUSCL Limitador MUSCL

limitedCubic Limitador cúbico

Esquemas NVD (Normalized Variable Diagram)

SFCD Direfenciación centrada

Gamma ψ Direfenciación Gamma

Esquemas para gradientes normales a superficies ( ⊤ )

corrected Corrección explícita no ortogonal

uncorrected Sin corrección no ortogonal

limited ψ Corrección no ortogonal con limitador

bounded Corrección acotada a valores escales positivos

fourth De cuarto orden

Esquemas de discretización para gradSchemes (gradiente, )

Gauss <interpolationScheme> Integración gausiana, segundo orden

leastSquares Método de segundo orden basado en mínimos cuadrados

fourth Método de cuarto orden basado en mínimos cuadrados

Comportamiento de esquemas superficies normales usados en laplacianSchemes (laplaciana, 2 )

corrected Método conservativo de segundo orden

Escuela Politécnica Superior de Jaén 81

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

no acotado

uncorrected Método no conservativo de primer orden acotado

limited ψ Combinación de dos anteriores

bounded Primer orden para escalares

fourth Método conservativo de cuarto orden no acotado

Comportamiento para esquemas de interpolación usados en divschemes (divergencia, ⋅ )

linear Segundo orden, no acotado

skewLinear Segundo orden, no acotado, corrección no ortogonal

cubicCorrected Cuarto orden, no acotado

upwind Primer orden, ajustado hacia la dirección de flujo

linearUpwind Primer/Segundo orden, ajustado hacia la dirección del flujo

QUICK Primer/Segundo orden, acotado

TVD schemes Primer/Segundo orden, acotado

SFCD Primer/Segundo orden, acotado

NVD schemes Primer/Segundo orden, acotado

Esquemas para ddtSchemes ( términos temporales ∂∂ t

, ∂2

∂ ² t)

Euler Primer orden, no acotado e implícito

CrankNicholson ψ Crank Nicholson

backward Segundo orden hacia atrás e implícito

steadyState No se tiene en cuenta los términos temporales

Tabla I.2 Discretización usada en los diferentes esquemas

Escuela Politécnica Superior de Jaén 82

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

ANEXO II: RESOLUCION Y ALGORITMOS DE CONTROL (DICCIONARIO fvSolution)

Tal y como se describe en el Manual de Usuario (2014) de OpenFOAM, el usuario puede elegir para cada matriz de ecuaciones generada un método de resolución de ecuaciones lineales (ver Tabla II.1):

Solver Descripción

PBiCG Resuelve gradientes biconjugados precondicionados para matrices asimétricas.

PCG Resuelve gradientes conjugados precondicionados para matrices simétricas.

GAMG Resuelve mediante “multi-grid” algebraico geométrico.

smoothSolver Resuelve usando un homogeneizador para matrices tanto simétricas como asimétricas.

diagonalSolver Resuelve matrices diagonales simétricas y asimétricas.

Tabla II.1.- Resolución de sistemas lineales

El método de resolución GAMG puede resultar útil a veces para resolver la ecuación de la presión. GAMG genera una solución rápida en una malla con un número menor de celdillas; seguidamente mapea la solución basta en la malla original usando una primera aproximación para obtener la solución. De esta manera, mapeando la solución en la malla más fina, se resuelve más rápido que con los métodos convencionales.

Los métodos de resolución son generales por lo que el usuario puede elegir un precondicionador y/o un homogeneizador para cada método de resolución. Entre los distintos precondicionadores se incluyen la diagonal incompleta de Cholesky (DIC) y LU (DILU), y el precondionador GAMG entre otros. Los homogeneizadores incluyen DIC, DILU y Gauss-Seidel; existen variantes del DIC y DILU combinados con la homogeneización Gauss-Seidel tal como indica la Tabla II.2.

Homogeneizador Abreviatura/nombre en OF

Gauss-Seidel GaussSeidel

Diagonalización incompleta de Cholesky DIC

Combinación de ambos DICGaussSeidel

Tabla II.2.- Homogeneizadores

En el diccionario fvSolution se debe incluir también el algoritmo de resolución

Escuela Politécnica Superior de Jaén 83

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

(SIMPLE o PISO). Éstos evalúan soluciones iniciales para las presión y velocidad, corrigiéndola hasta converger ambas con la tolerancia introducida (residualControl). Las diferencias y similitudes de ambos se muestran en la Tabla II.3.

PISO SIMPLE

Los dos algoritmos permiten correcciones

Se basan en la evaluación de soluciones iniciales

Para flujos transitorios Para flujos estacionarios

Requiere más de una corrección Realiza una corrección

Tabla II.3.- Similitudes y diferencias de los algoritmos PISO y SIMPLE

En el subdiccionario SIMPLE o PISO, se elegirá uno adecuándolo al tipo de problema, se incluye la tolerancia de los residuales para cada una de las variables que se evalúan iterativamente en la simulación y el número de correcciones no ortogonales.

Por último, en el subdiccionario relaxingFactors de fvSolution se incluye parámetros de subrelajación de las ecuaciones y “fields” con el fin de mejorar la estabilidad computacional. Debido a que la ecuación de la presión es susceptible de divergir se introduce un parámetro durante el proceso iterativo. También se relajan las ecuaciones para la velocidad tal como menciona Fernández Oro (2012).

El valor óptimo del coeficiente de subrelajación de cada ecuación depende del caso que se esté resolviendo, del tipo de malla, de la intensidad y características de las no linealidades del sistema, etc. Los valores de éstos coeficientes suelen estar comprendidos entre 0,3 y 0,7. Un valor cercano a la unidad acelera el proceso de iterativo, aunque puede llevar a problemas de divergencia de la solución.

Escuela Politécnica Superior de Jaén 84

Rami Boutassghount El Boussmaki TFG dirigido por Patricio Bohórquez Rodríguez de Medina

BIBLIOGRAFÍA

[1] Miguel Villarrubia López. Ingeniería De La Energía Eólica. 2012.

[2] Guía del Usuario OpenFOAM, The open source CFD toolbox. Febrero 2014.

[3] PFC de David Martínez Beltrán; tutor Patricio Bohórquez Rodríguez de Medina. Documentación y simulación numérica con OpenFOAM de problemas fluidomecánicos con aplicación docente e industrial. 2013.

[4] Ramón Fernández Feria. Mecánica de Fluidos. 2011.

[5] Menter, F., Esch, T., "Elements of Industrial Heat Transfer Prediction", 16th Brazilian Congress of Mechanical Engineering (COBEM), Nov. 2001.

[6] Hellsten, A. , "Some Improvements in Menter’s k-omega-SST turbulence model" , 29th AIAA Fluid Dynamics Conference, AIAA-98-2554, June 1998.

[7] Fernández Oro, J.M. Técnicas numéricas en ingeniería de fluidos: Introducción a la dinámica de fluidos computacional (CFD) por el método de volúmenes finitos. Barcelona. Reverté, 2012.

[8] Stull, R. An Introduction to boundary layer meteorology, volume 13 of Atmospheric and Oceanographic Sciences Library. Springer. 2009.

[9] Sánchez Sánchez, E., Nubes De Capa Límite Atmosférica: Estudio Numérico Y Experimental, memoria para optar al grado de doctor dirigida por Joan Cuxart Rodamilans, Madrid, 2004, (http://eprints.ucm.es/5164/1/T26210.pdf).

[10] Lazcano, M.F. Y Yagüe, C., Estudio de las alturas características de la capa límite atmosférica en situaciones estables a partir de sondeos con globo cautivo y de observaciones micrometeorológicas en torre año. 2006.(http://pendientedemigracion.ucm.es/info/Geofis/g-

micromet_varclima/articulos/Lazcano-Yague_VAsamblea06.pdf ).

[11] Tesis Doctoral de Núñez Crespí, S., Altura De La Capa De Mezcla: Caracterización Experimental Y Aplicación De Un Modelo Meteorológico Para El Estudio Dirigida Por Begoña Artiñano Rodríguez de Torres. 2002.

[12] H. Nugusse, C. Peralta, S.P.Kokilavani (FH-Kiel) and J. Schmidt , Validation of RANS solvers in OpenFOAM for the atmospheric boundary layer in complex terrain. Marzo, 2013.

[13] Wind Energy Handbook Tony Burton, Nick Jenkins, David Sharpe, Ervin Bossanyi edicion 2ª, WILEY. 2011

Escuela Politécnica Superior de Jaén 85

DOCUMENTACIÓN Y SIMULACIÓN NUMÉRICA DE PROBLEMAS EÓLICOS CON APLICACIÓN DOCENTE E INDUSTRIAL

RECURSOS WEBS

Recurso Web [1]:

http://sourceforge.net/projects/caelinux/files/CAELinux2013/

Recurso Web [2]: my.vmware.com/web/vmware/free#desktop_end_user_computing/vmware_player/6_0

Recurso Web [3]:

http://windows.microsoft.com/es-es/windows/create-format-hard-disk-partition#create-format-hard-disk-partition=windows-7

Recurso Web [4]:

http://www.cener.com/es/energia-eolica/proyecto_innpacto-openfoam.asp

Recurso Web [5]:

http://www.cfd-ing.de/en/of-wind/01-Overview.php

Recurso Web [6]:

http://www.openfoam.org/download/

Recurso Web [7]:

http://turbmodels.larc.nasa.gov/sst.html

Recurso Web [8]:

https://github.com/jonasIWES/terrainBlockMesher

Recurso Web [9]: http://openfoamwiki.net/index.php/Sig_Turbomachinery_/_Validation_test_cases

Escuela Politécnica Superior de Jaén 86