Trabajo Fin de Máster

Máster en energía y sostenibilidad

Estudio del comportamiento de
las palas LM19 de un
aerogenerador Bonus 600
Autor: Alejandro García Soto
Directora: Elena Martín Ortega

Julio, curso 2015-2016

Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600

Alejandro García Soto

Resumen
El objetivo de este trabajo es el análisis mediante simulación numérica de mecánica
de fluidos (computational fluid dynamics, CFD en adelante) del comportamiento y el
rendimiento de un aerogenerador de paso fijo para evaluar la conveniencia de añadir
diversos elementos que modifiquen la aerodinámica de las palas.
Normalmente, todos los aerogeneradores dentro de un mismo parque eólico son del
mismo modelo. Ésto se debe a la facilidad de operación y de mantenimiento. A la hora
de escoger un modelo u otro, se busca uno con una curva de potencia que exprima al
máximo los datos del viento de la zona.
Los datos de viento son los de alguna estación cercana existente o una instalada adhoc, pero siempre serán estadísticos y no se dispondrá de los datos exactos de viento en
cada uno de los puntos donde se instalará cada máquina. Ésto provoca que cada
aerogenerador vea un viento ligeramente distinto. Además, las reparaciones y el
mantenimiento necesario van alterando sutilmente la geometría de las palas. Como
resultado, cada aerogenerador entregará energía eléctrica siguiendo una curva de
potencia diferente a la estimada por el fabricante.
Estas desviaciones de la curva de potencia teórica, tanto por exceso como por
defecto, generan una disminución de la energía generada. Cuando esa disminución
supera unos límites, comienza a ser rentable invertir recursos para corregirla.
En los aerogeneradores de paso variable ésto se soluciona variando el paso. En los
antiguos aerogeneradores de paso fijo, sin embargo, la única forma de modificar y
adaptar las necesidades aerodinámicas de cada aerogenerador es mediante elementos
añadidos que modifiquen la geometría de las palas.
La importancia del estudio de éstas modificaciones en modelos antiguos de paso fijo
se debe a la antiguedad de los parques actuales, sobre todo en Galicia. En el norte de
Europa ya se empiezan a reemplazar viejos aerogeneradores por otros más modernos y
más potentes en lo que se conoce como "repowering". Sin embargo, los promotores
siempre van a buscar formas de aumentar la rentabilidad y la vida de los parques al
menor coste.
Es ahí donde este estudio puede resultar una herramienta útil para determinar la
posibilidad o no de aumentar el rendimiento y la rentabilidad de los parques eólicos ya
existentes mediante modificaciones sencillas y baratas sobre las palas de los
aerogeneradores.
Palabras clave: CFD, energía eólica, aerogenerador, aerodinámica, repowering
3

Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600

4

Alejandro García Soto

A Elena Martín Ortiz. A Juanjo.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto Agradecimientos A los compañeros de la empresa IM Future. por ser un ejemplo a seguir profesional y personalmente y por enseñarme y animarme a aprender. 5 . por darme ánimos a su manera cuando los necesitaba. mi tutor durante las prácticas. por aguantar todos los correos y enseñarme a lidiar con OpenFoam. por ser un equipo en el que dá gusto trabajar y por su disponibilidad para enseñarme y aclarar cualquier duda. donde realicé unas prácticas durante 6 meses. Por ser un maestro. A Javier Canosa.

Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 6 Alejandro García Soto .

1 IM Future y el parque eólico Sotavento 18 2.2 Geometría del rotor 20 3 Introducción a la dinámica de fluidos computacional 20 3.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto Índice 1 Resumen 5 Agradecimientos 7 Índice 9 1 Estado del arte 9 1.2 Condiciones de contorno del caso 22 3.1 Carpeta system 38 4.3 Parques eólicos con aerogeneradores de paso fijo 12 1.3 Modelo de turbulencia 23 3.2 Carpeta constant 41 4.1 Aerogeneradores de paso fijo 10 1.4 Definición de la malla 25 4 Caso en OpenFOAM 25 4.1 Simplificaciones en el flujo sobre el rotor 21 3.3 Carpeta 0 47 5 Resultados 48 6 Conclusiones y futuras líneas de investigación 49 7 Bibliografía 7 .4 Soluciones disponibles actualmente 14 2 Descripción del aerogenerador 15 2.2 Aerogeneradores de paso variable 10 1.

Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 8 Alejandro García Soto .

1. El control de la velocidad de giro se produce por la entrada en pérdida de la pala a una velocidad estudiada.1 Aerogeneradores de paso fijo Las palas están atornilladas al buje y no se pueden mover respecto a él. La punta de la pala se puede girar para enfrentarse al viento y evitar el movimiento. 9 . Entrada en pérdida P Parada de la máquina Velocidad del viento Para frenar la máquina normalmente disponen de unos aerofrenos.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto 1 Estado del Arte Actualmente existen dos familias de aerogeneradores dependiendo de la forma en que controlan la velocidad de giro del rotor y en la forma de frenar la máquina.

presentan este tipo de máquinas.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto 1. El control de la velocidad se realiza mediante pequeñas variaciones en el ángulo de ataque de toda la pala.3 Parques eólicos con aerogeneradores de paso fijo Los primeros parques eólicos utilizaban la tecnología existente en el mercado en ese momento.2 Aerogeneradores de paso variable Las palas están sugetas al buje a través de un rodamiento que permite el giro alrededor del eje lonjitudinal de la pala. 10 . En muchos casos. que fueron los aerogeneradores de paso fijo. P Plena carga Velocidad del viento 1. muchos de los parques existentes. Siendo Galicia una pionera en la instalación de este tipo de energía. Para frenar la máquina se posicionan todas las palas en bandera. con más de veinte años en funcionamiento. alineadas con el viento.

otros muchos promotores prefieren exprimir la vida útil de sus máquinas y buscar formas de aumentar la producción. aportando diferentes cantidades de energía a la red. Los parques eólicos normalmente instalan un único modelo de aerogenerador. 2 Sobreproducción: Aerogeneradores que alcanzan la potencia nominal demasiado pronto Un aerogenerador que llegue demasiado pronto a la potencia nominal deberá parar por motivos de seguridad estructural.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto sobre todo en el norte de Europa. es sencillo hacer un seguimiento e identificar diferencias entre los distintos aerogeneradores: 1 Subproducción: Aerogeneradores que nunca llegan a su potencia nominal. Es un fenómeno denominado "repowering". Sobreproducción P Curva típica Potencia nominal Subproducción Velocidad del viento 11 . Pero no todos los puntos dentro del parque van a ser iguales. los promotores de los parques están empezando a reemplazar los viejos aerogeneradores por tecnologías y diseños más modernos y vender los primeros en el mercado de segunda mano. Estas diferencias son propensas a acentuarse con el paso de los años y de las reparaciones y el mantenimiento regular. y las máquinas verán desde el principio vientos ligeramente diferentes. Sin embargo. Cualquiera de los dos casos supone un aerogenerador que está produciendo menos energía de la que se espera. Esto sucede porque se consigue simplificar enormemente tareas tanto de diseño. Siendo todas las máquinas iguales y en un mismo parque. dejando a la máquina fuera de servicio durante los vientos más energéticos para los que estaba diseñado. Se selecciona un aerogenerador que se adecúe lo más posible a los vientos predominantes en la zona. como gestión o mantenimiento del parque.

Con ellas se aumenta ligeramente la cuerda en la sección de la punta. haciendo que tarde más en desprenderse. 12 . por lo que en muchos modelos los VGs forman parte del diseño orginial.4 Soluciones disponibles actualmente Dinotails Pequeñas planchas de plástico. Generadores de vórtices (VGs) Se utilizan con frecuencia en el diseño de las palas. Introducen energía en la capa límite. "alargando" la curva de potencia. nomalmente transparente. Consiguen retardar la entrada en pérdida de la pala.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto 1. Se consigue un aumento de la sustentación en la pala y se "sube" la curva de potencia.

"Bajan" la curva de potencia. adelantando la entrada en pérdida de la pala. 13 . Inducen una pequeña burbuja de recirculación del aire.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto Stall lists Tiras de sección triangular de plástico que se colocan en el borde de ataque de las palas.

Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto 2 Descripción del aerogenerador Para este estudio se ha utilizado como referencia dos aerogeneradores modelo Bonus 600kW situados en el parque eólico de Sotavento. A continuación los datos técnicos del aerogenerador según el fabricante: 14 .

Se procedió a instalar de nuevo los elementos aerodinámicos en los dos aerogeneradores. Tras una reparación en dos de los aerogeneradores Bonus 600.es) es una empresa de mantenimiento de parques eólicos. Cuando antes no había valores entregados a partir de los 17m/s. En el AE22 es menos evidente el efecto. IM Future (www. por tanto. Sin embargo. las magnitudes de energía entregada. Los datos procesados tras la instalación son de 3 días comparados con los datos de un mes de su operación sin los elementos.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto 2. comparando la energía esperada con la real. sí que se pueden extraer datos cualitativos bastante demostrativos. el aerogenerador AE18 sobreproducía. Nace como una apuesta por los proyectos de investigación y desarrollo por lo que es el lugar idóneo para realizar un estudio como éste. Siendo la energía del aire proporcional al cuadrado de la velocidad. dejaba de operar demasiado pronto. No se pueden comparar. En el AE18 se observa una aumento claro del rango de generación. Siendo evidente que la curva ha "subido". Anailzando los datos posteriores. Galicia. Pero se observa que el aerogenerador empieza a entregar más energía de la esperada en valores a partir de los 14m/s.1 IM Future y el parque eólico de Sotavento Sotavento es un parque eólico experimental situado en la provincia de Lugo. 15 . decidieron retirar los stall list del AE18 y los dinotails del AE22. se obtiene energía con velocidades mucho mayores. tras la instalación de los stall lists. mientras que el aerogenerador AE22 no llegaba a la prducción nominal. Se presentan en la página siguiente los gráficos de la energía entregada por cada aerogenerador en cada franja de velocidades de viento. Los dos gráficos superiores presentan los datos antes de la instalación de los stall lists en el caso del AE18 y de dinotails en el caso del AE22. junto con el supervisor del parque Sotavento.imfuture. interesa aprovecharlos lo máximo que nos permita la seguridad. y se tienen muy pocos datos con velocidades medio-altas. IM Future.

Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 AE 18 16 Alejandro García Soto .

Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 AE 22 17 Alejandro García Soto .

es necesario generar una malla cerrada. limpia y lo suficientemente densa en lugares críticos como bordes de ataque y salida y punta. FFA-3 en la primera mitad de la pala y NACA 632xx en la segunda mitad hasta la punta. se parte de los perfiles que define el fabricante de las palas: las series FFA-3 y NACA 632xx.2 Geometría del aerogenerador Para generar la geometría de las palas LM19 que conforman el rotor de la Bonus 600.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto 2. se puede recrear una geometría exterior bastante fidedigna de la pala. Una vez definida la geometría a grandes rasgos. 18 . Se disponen una serie de perfiles. Comparando los perfiles con datos obtenidos sobre palas reparadas en suelo.

Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 19 Alejandro García Soto .

3. Se puede asumir una densidad constante. y de que muchos de los términos. 20 . Siendo estas ecuaciones tremendamente complejas de resolver. el primer paso en cualquier cálculo de fluidos es buscar el mayor número posible de simplificaciones sobre éstas ecuaciones. Las ecuaciones fundamentales en la dinámica de fluidos son las ecuaciones de Navier-Stokes: las ecuaciones de conservación de la masa. una vez que pasamos a aplicaciones y flujos específicos. Se analiza el rotor "flotanto" en el aire. siendo el flujo idéntico en los tres sectores resultantes se puede recomponer el fluido posteriormente. Con estas ecuaciones se puede definir y analizar cualquier fluído. Flujo incompresible. Siendo conscientes de ésto. El flujo está muy por debajo de la velocidad del sonido M<<1 ni variación de temperatura.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto 3 Dinámica de fluídos computacional Ya en los años 60 se identificaron los principios y las ecuaciones que rigen la dinámica de fluidos. sin influencia de la torre. Sólo se analiza un tercio del rotor.1 Simplificaciones en el flujo sobre el rotor No hay variación de la temperatura ni reacciones químicas. no se tardó en buscar métodos numéricos por ordenador para buscar soluciones. la cantidad de movimiento y de la energía. apenas tienen influencia sobre el total. pero a costa de una carga de cálculo tremenda. La ecuación de la energía no se aplica.

Se detallan a continuación las geometrías y algunas características clave: Rotor: Se impondrá una velocidad 0.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto Se simula el rotor estático. De este modo se asientan las bases para un estudio posterior implementando la rotación del modelo.2 Condiciones de contorno del caso En este caso. sin rotación. Los extremos del dominio deberán comportarse como si no existiera el rotor. lo que se pretende es generar un flujo alrededor el rotor y estudiar su comportamiento. Entrada: velocidad de viento constante a 5m/s. por eso la necesidad de un campo de fluido tan extenso. 3. 21 . y una modelización de la capa límite.

Para agilizar el cálculo y favorecer la convergencia. 22 . 3. K es la energía cinética turbulenta y Omega es el ratio de disipación de esa energía. es necesario inciar el caso con unos valores de K y Omega coherentes con la física del caso. Este modelo utiliza dos variables para simular el flujo turbulento.3 Modelo de turbulencia En este caso se utiliza un modelo RAS (Reynolds-averaged simulation) k-omega.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto Salida: Presión nula Cilindro externo: Se impone la misma velocidad que en la entrada de 5m/s para favorecer la resolución del caso. Planos de corte: Se impone una condición cíclica donde los valores de un plano son idénticos a los del otro.

Para este caso se provaron diversos programas y formas de mallado. Posteriormente el programa desplaza los vértices para que coincidan perfectamente con la geometría de estudio. y se asegura una densidad máxima de la malla hasta 40cm de distancia alrededor de toda la pala. Al final se utilizó el módulo snappyhexmesh incluído en OpenFoam. se calculan: K= 0.4 Definición de la malla A la hora de crear una malla es importante mantener un equilibirio entre la densidad general de puntos y la definición buscada en el caso. Calculando las intersecciones entre la malla base y la de estudio. Para ello.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto Se utilizan las siguientes ecuaciones: A partir de ellas. Snappyhexmesh parte de dos mallas separadas: una malla de base muy simple y otra con la geometría de estudio. Se definen los parámetros en un archivo dentro de la carpeta "system". el programa va realizando subdivisiones progresivas hasta llegar a los valores definidos en el archivo. es posible obtener mallas con un grado de ortogonalidad muy elevado alrededor de geometrías muy complejas. De esta forma. Como en cualquier caso de flujo sobre objetos. 23 . se calcula un tamaño aproximado de la capa límite en su punto más desarrollado: 20cm en el borde de salida de la zona de la punta de la pala. Siempre se buscará la malla más pequeña y sencilla que pueda aportar la información necesaria. Una malla muy densa normalmente producirá resultados más definidos.7 3. pero puede resultar un gasto en capacidad de computación que no aporte más información útil.093 Omega= 44. la zona que más interesa que esté correctamente definida es la próxima al objeto.

Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 24 Alejandro García Soto .

1 Carpeta "system" En la carpeta "system" se encuentran archivos relativos a los modelos. Los archivos donde se descriven las diferentes opcciones e instrucciones para la simulación se denominan diccionarios.com ) es un programa de código abierto que puede resolver mediante métodos numéricos complejos sistemas de ecuaciones sobre puntos discretos de una malla con una geometría definida.1 controlDict En este archivo se define el modelo de resolverdor a utilizar.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto 4 Caso en OpenFoam OpenFoam ( www. En OpenFoam. 25 . abreviados como "dict". Se utiliza sobre todo para cálculos en dinámica de fluídos. así como los tiempos de simulación y de escritura de los datos.openfoam. como demuestra el gran número de módulos dedicados a éste campo. 4.1. las ecuaciones y la forma de resolverlas. se segrega la información en diferentes archivos de texto organizados en carpetas. El caso es el conjunto de la simulación. 4.

0. writeControl timeStep. stopAt endTime. purgeWrite 0. runTimeModifiable true. timeFormat general. location "system". 26 Alejandro García Soto .org | | \/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2. class dictionary. startFrom startTime.1 | | \ / A nd | Web: www. writeFormat ascii.OpenFOAM. } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // application SimpleFoam.1 | | \ / A nd | Web: www. location "system".3. startTime 0. writeCompression off.org | | \/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2. class dictionary. // ************************************************************************* // 4.2 fvSchemes /*--------------------------------*.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 /*--------------------------------*. object controlDict. endTime deltaT 1000.0.1. format ascii. 1. writeInterval 100.C++ -*----------------------------------*\ | ========= | | | \ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \ / O peration | Version: 2. timePrecision 6. format ascii.OpenFOAM.3. writePrecision 6.C++ -*----------------------------------*\ | ========= | | | \ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \ / O peration | Version: 2.

1. div(phi.k) bounded Gauss upwind.C++ -*----------------------------------*\ | ========= | | | \ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \ / O peration | Version: 2.3 fvSolution /*--------------------------------*. } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ddtSchemes { default steadyState. } gradSchemes { default Gauss linear.nuTilda) bounded Gauss upwind.U) bounded Gauss upwind. div((nuEff*dev(T(grad(U))))) Gauss linear. } interpolationSchemes { default linear. div(phi. } snGradSchemes { default corrected.3.Urel) bounded Gauss upwind. } divSchemes { default none. } fluxRequired { default no. p . div(phi. } // ************************************************************************* // 4.1 | | \ / A nd | Web: www.OpenFOAM.org | | \/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile 27 .omega) bounded Gauss upwind. } laplacianSchemes { default Gauss linear corrected.epsilon) bounded Gauss upwind.R) bounded Gauss upwind. div(phi.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto object fvSchemes. div(phi. div(phi. div(phi. interpolate(Urel) linear. div((nuEff*dev(T(grad(Urel))))) Gauss linear. div(R) Gauss linear.

1.0. nPreSweeps 0. mergeLevels 1. } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { p { solver GAMG.1. format ascii. tolerance 1e-5. U 1e-4. } equations { U 0. location "system". } SIMPLE { nNonOrthogonalCorrectors 2. k 0. agglomerator faceAreaPair. "(k|omega)" 1e-4.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 { version 2. smoother GaussSeidel. } } relaxationFactors { fields { p 0. object fvSolution. residualControl { p 1e-3. tolerance 1e-05.4 SnappyHexMesh /*--------------------------------*. } } "(U|k|omega|R|nuTilda)" { solver smoothSolver. smoother symGaussSeidel. relTol 0.1. class dictionary. relTol 0. nCellsInCoarsestLevel 10. cacheAgglomeration on. nPostSweeps 2.1.0.1. omega 0.C++ -*----------------------------------*\ 28 Alejandro García Soto . } } // ************************************************************************* // 4.

// Settings for the castellatedMesh generation. class dictionary.0. name cilindro. name plano2.to specify refinement for any mesh cell intersecting it // . } }. 29 Alejandro García Soto . // Surfaces are used // .obj { type triSurfaceMesh. } plano2. name plano1. All surfaces are of class // searchableSurface.0. object snappyHexMeshDict. maxLocalCells 10000000. } plano1.to specify refinement for any mesh cell inside/outside/near // .1 | | \ / A nd | Web: www. name rotor.obj { type triSurfaceMesh. snap true. Definition of all surfaces. // Geometry.org | | \/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.obj { type triSurfaceMesh.OpenFOAM.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 | ========= | | | \ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \ / O peration | Version: 3. castellatedMeshControls { // Refinement parameters // ~~~~~~~~~~~~~~~~~~~~~ // If local number of cells is >= maxLocalCells on any processor // switches from from refinement followed by balancing // (current method) to (weighted) balancing before refinement. } cilindro.obj { type triSurfaceMesh. } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Which of the steps to run castellatedMesh true.to 'snap' the mesh boundary to the surface geometry { rotor. format ascii. addLayers false.

// Note that this is the number of cells before removing the part which // is not 'visible' from the keepPoint. // The second level is the maximum level. // Allow a certain level of imbalance during refining // (since balancing is quite expensive) // Expressed as fraction of perfect balance (= overall number of cells / // nProcs). The first is the minimum level. // 1 means normal 2:1 refinement restriction. Refinement will stop immediately // upon reaching this number so a refinement level might not complete.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 // Overall cell limit (approximately).10. nCellsBetweenLevels 5. The final number of cells might // actually be a lot less.eMesh". // Surface based refinement // ~~~~~~~~~~~~~~~~~~~~~~~~ // Specifies two levels for every surface. This setting will cause refinement to stop if <= minimumRefine // are selected for refinement. // The surface refinement loop might spend lots of iterations refining just a // few cells. } ). // This is a featureEdgeMesh. // Explicit feature edge refinement // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Specifies a level for any cell intersected by its edges. level 0. maxGlobalCells 20000000.eMesh". } { file "cilindro. refinementSurfaces { rotor { 30 Alejandro García Soto . // Number of buffer layers between different levels. maxLoadUnbalance 0. level 7. } { file "plano1. 0=balance always. // every cell intersecting a surface gets refined up to the minimum level. } { file "plano2. Note: it will at least do one iteration // (unless the number of cells to refine is 0) minRefinementCells 10. larger means slower // refinement. Cells that 'see' multiple // intersections where the intersections make an // angle > resolveFeatureAngle get refined up to the maximum level. level 0. read from constant/triSurface for now. level 0. features ( { file "rotor.eMesh".eMesh".

are allowed. } // Optional specification of patch type (default is wall).outside. No // constraint types (cyclic.43). } } // Resolve sharp angles resolveFeatureAngle 30. even // after refinement. symmetry) etc. 'levels' is only one entry and only the level is used. levels ((0. } } // Mesh selection // ~~~~~~~~~~~~~~ // After refinement patches get added for all refinementSurfaces and // all cells intersecting the surfaces get put into these patches. // .distance.0001 4.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto // Surface-wise min and max refinement level level (7 7). // inGroups (motorBikeGroup). //se asegura una maxima densidad para el desarrollo de la capa límite. always inside a cell. // Whether any faceZones (as specified in the refinementSurfaces) // are only on the boundary of corresponding cellZones or also allow 31 . // } cilindro { level (0 0). refinementRegions { rotor { mode distance. Same but cells outside. } plano1 { level (0 0). // Region-wise refinement // ~~~~~~~~~~~~~~~~~~~~~~ // Specifies refinement level for cells in relation to a surface. 'levels' specifies per distance to the surface the // wanted refinement level. The distances need to be specified in // descending order. // . All // cells inside the surface get refined up to the level. // patchInfo // { // type wall.4 7)). locationInMesh (30. One of // three modes // .inside.0001 0. // NOTE: This point should never be on a face. } plano2 { level (0 0). The // section reachable from the locationInMesh is kept. The surface // needs to be closed for this to be possible.

0. nRelaxIter 5. } //. True distance is this factor times local // maximum edge length.*" { nSurfaceLayers 1. //. // Leave out altogether to disable. addLayersControls { // Are the thickness parameters below relative to the undistorted // size of the refined cell outside layer (true) or absolute sizes (false). 32 Alejandro García Soto . //. // See relativeSizes parameter. implicitFeatureSnap false. nSolveIter 30. // Settings for the snapping.Relative distance for points to be attracted by surface feature point // or edge. // Settings for the layer addition. nFeatureSnapIter 10.Number of patch smoothing iterations before finding correspondence // to surface nSmoothPatch 3. // Feature snapping //. relativeSizes true.Maximum number of snapping relaxation iterations. Should stop // before upon reaching a correct mesh. snapControls { //. // Per final patch (so not geometry!) the layer information layers { "rotor. Not used if there are no faceZones. //.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 } // free-standing zone faces. //. // Relative to undistorted size of cell outside layer. If multiple layers // is the thickness of the layer furthest away from the wall.Number of mesh displacement relaxation iterations.Detect points on multiple surfaces (only for explicitFeatureSnap) multiRegionFeatureSnap false. tolerance 2.Detect (geometric only) features by sampling the surface // (default=false).Number of feature edge snapping iterations.0. //. // Wanted thickness of final added cell layer. allowFreeStandingZoneFaces true. } } // Expansion factor for layer mesh expansionRatio 1.Use castellatedMeshControls::features (default = true) explicitFeatureSnap true.

// Minimum thickness of cell layer. 0 is flat surface.1. // If points get not extruded do nGrow layers of connected faces that are // also not grown. // Note: changed(corrected) w.t 17x! (didn't do anything in 17x) nGrow 0. // Maximum number of snapping relaxation iterations. possibly with an illegal // mesh. If for any reason layer // cannot be above minThickness do not add layer. meshQualityControls { #include "meshQualityDict" 33 Alejandro García Soto . } // Overall max number of layer addition iterations. // Number of smoothing iterations of surface normals nSmoothSurfaceNormals 1.r. slipFeatureAngle 30. This helps convergence of the layer addition process // close to features. nRelaxIter 3. // Number of smoothing iterations of interior mesh movement direction nSmoothNormals 3.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 finalLayerThickness 0. 90 is when two faces // are perpendicular featureAngle 60.3. // Smooth layer thickness over surface patches nSmoothThickness 10. // Relative to undistorted size of cell outside layer. At any undoable phase these determine // where to undo.r. // Advanced settings // When not to extrude surface. nLayerIter 50. minThickness 0. Should stop // before upon reaching a correct mesh. // Generic mesh quality settings. // Create buffer region for new layer terminations nBufferCellsNoExtrude 0. minMedianAxisAngle 90.3. // At non-patched sides allow mesh to slip if extrusion direction makes // angle larger than slipFeatureAngle. // Reduce layer growth where ratio thickness to medial // distance is large maxThicknessToMedialRatio 0. // Angle used to pick up medial axis points // Note: changed(corrected) w. // Stop layer growth on highly warped cells maxFaceThicknessRatio 0.t 17x! 90 degrees corresponds to 130 in 17x. The mesher will exit // if it reaches this number of iterations.5.

extractFromSurfaceCoeffs { // Mark edges whose adjacent surface normals are at an angle less // than includedAngle as features // . mergeTolerance 1e-6. // Note: the write tolerance needs to be higher than this.0. // Merge tolerance.C++ -*----------------------------------*\ | ========= | | | \ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \ / O peration | Version: 3.180: selects all edges includedAngle 150.0 : selects no edges // . } subsetFeatures { // Keep nonManifold edges (edges with >2 connected faces) nonManifoldEdges no.Amount to scale back displacement at error points errorReduction 0. // ************************************************************************* // 4. //.5 SurfaceFeatureExtractDict /*--------------------------------*.75. 34 Alejandro García Soto .obj { // How to obtain raw features (extractFromFile || extractFromSurface) extractionMethod extractFromSurface. Is fraction of overall bounding box of initial mesh. } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // rotor. format ascii. object surfaceFeatureExtractDict.1. // Advanced // Write flags writeFlags ( scalarLevels layerSets layerFields // write volScalarField for layer coverage ). // Keep open edges (edges with 1 connected face) openEdges yes.org | | \/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0.Number of error distribution iterations nSmoothScale 4.OpenFOAM.1 | | \ / A nd | Web: www.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 // Advanced } //. class dictionary.

obj { // How to obtain raw features (extractFromFile || extractFromSurface) extractionMethod extractFromSurface.0 : selects no edges // .obj { // How to obtain raw features (extractFromFile || extractFromSurface) extractionMethod extractFromSurface. extractFromSurfaceCoeffs { // Mark edges whose adjacent surface normals are at an angle less // than includedAngle as features // .Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 } // Write options // Write features to obj format for postprocessing writeObj yes. } cilindro. // Write options // Write features to obj format for postprocessing writeObj yes. } // Keep open edges (edges with 1 connected face) openEdges yes. 35 Alejandro García Soto .0 : selects no edges // . // Write options // Write features to obj format for postprocessing writeObj yes. extractFromSurfaceCoeffs { // Mark edges whose adjacent surface normals are at an angle less // than includedAngle as features // .180: selects all edges includedAngle 150.180: selects all edges includedAngle 150. } subsetFeatures { // Keep nonManifold edges (edges with >2 connected faces) nonManifoldEdges no. } // Keep open edges (edges with 1 connected face) openEdges yes. } subsetFeatures { // Keep nonManifold edges (edges with >2 connected faces) nonManifoldEdges no. } plano1.

0 is straight face. maxInternalSkewness 4. maxBoundarySkewness 20. } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Include defaults parameters from master dictionary //#includeEtc "caseDicts/meshQualityDict" //.1 | | \ / A nd | Web: www. //. } // Keep open edges (edges with 1 connected face) openEdges yes.0. extractFromSurfaceCoeffs { // Mark edges whose adjacent surface normals are at an angle less // than includedAngle as features // . // Set to 180 to disable. //. // ************************************************************************* // 4. // Write options } // Write features to obj format for postprocessing writeObj yes.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 } plano2.Max skewness allowed.Maximum non-orthogonality allowed.org | | \/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2. Is angle (in degrees) below which concavity // is allowed. Set to <0 to disable.0. maxNonOrtho 65. object meshQualityDict.OpenFOAM. Set to 180 to disable.180: selects all edges includedAngle 150. } subsetFeatures { // Keep nonManifold edges (edges with >2 connected faces) nonManifoldEdges no.C++ -*----------------------------------*\ | ========= | | | \ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \ / O peration | Version: 3. 36 Alejandro García Soto . format ascii.Max concaveness allowed.6 MeshQualityDict /*--------------------------------*. <0 would be convex face.0 : selects no edges // . class dictionary.obj { // How to obtain raw features (extractFromFile || extractFromSurface) extractionMethod extractFromSurface.1.

02. // ************************************************************************* // 4. Set to <0 to disable. //minVolCollapseRatio 0.C++ -*----------------------------------*\ | ========= | | | \ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \ / O peration | Version: 3.01.Minimum normalised cell determinant.1. //.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto maxConcave 80. minArea -1.OpenFOAM. Like face twist // but now per (face-centre decomposition) triangle. -1E30) to // disable. //.g.Minimum face twist.05.5) minFaceWeight 0.org | 37 . not collapsed to flat cell). // Set to a sensible fraction of the smallest cell volume expected. // <0 = inside out tet. // Set to very negative number (e.1.Relative position of face in relation to cell centres (0. Set to very negative number (e.If >0 : preserve cells with all points on the surface if the // resulting volume after snapping (by approximation) is larger than // minVolCollapseRatio times old volume (i. Must be >0 for Fluent // compatibility minTriangleTwist -1. //. minVol 1e-13.02. //. // 1 = hex. //. -1E30) to disable. <= 0 = folded or flattened illegal cell minDeterminant 0. Set to <-1 to disable.e. // 0 = flat tet // 1 = regular tet minTetQuality 1e-15.Minimum face area.5) minFaceWeight 0.1 | | \ / A nd | Web: www. It is a measure of how much of the // outside area of the cell is to other cells. Is absolute volume of cell pyramid.0. //. //hasta aqui se copio el codigo //.Minimum pyramid volume. // If <0 : delete always. dot product of face normal // and face centre triangles normal minTwist 0.001. This has to be a positive number for tracking // to work.Per triangle normal compared to average normal.Minimum quality of the tet formed by the face-centre // and variable base point minimum decomposition triangles and // the cell centre.5 for orthogonal // mesh) (0 -> 0. //.Volume ratio of neighbouring cells (0 -> 1) minVolRatio 0. //.minFaceWeight (0 -> 0.g.7 forceCoeffs /*--------------------------------*. The idea is that if all // outside faces of the cell are 'floating' (zeroGradient) the // 'fixedness' of the cell is determined by the area of the internal faces. //. This is the determinant of all // the areas of internal faces.

} // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 6 38 . 4. class polyBoundaryMesh.1 PolyMesh/Boundary /*--------------------------------*. } // ************************************************************************* // 4.0. // Indicates incompressible rhoInf 1.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto | \/ M anipulation | | \*---------------------------------------------------------------------------*/ forceCoeffs1 { type forceCoeffs. location "2/polyMesh". object boundary. timeInterval 1.1 | | \ / A nd | Web: www. // Aref 1520.org | | \/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.2 Carpeta "constant" En la carpeta "costant" se encuentran los archivos de la malla. // irrelevante en este caso dragDir (1 0 0).so" ).2. log /* */ } yes. // output data into 20 bins direction (1 0 0). format ascii. outputControl timeStep.C++ -*----------------------------------*\ | ========= | | | \ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \ / O peration | Version: 2. así como parámetros físicos como el modelo de turbulencia. functionObjectLibs ( "libforces.OpenFOAM. // bin direction cumulative yes. // Centro pitchAxis (1 0 0). magUInf 5. // Redundant for incompressible liftDir (0 0 1). rhoName rhoInf. //dirección del viento CofR (0 0 0).3. patches ( rotor ). lRef 1. // Ara del rotor binData { nBin 20.

startFace 36237010. rotationAxis (1 0 0). rotationAxis (1 0 0).1 | | \ / A nd | Web: www.3. } outlet { type patch. cyclicAMI. nFaces 6692.OpenFOAM. } // ************************************************************************* // 4. transform rotational.C++ -*----------------------------------*\ | ========= | | | \ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \ / O peration | Version: 2. neighbourPatch plano1. nFaces 24766. 21900. ) nFaces 24785. neighbourPatch plano2.2 RASProperties /*--------------------------------*. startFace 36551782.01. rotationCentre (0 0 0). rotationCentre (0 0 0). 36250394. } plano2 { type cyclicAMI. startFace 36243702.2. matchTolerance 0.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto ( inlet { type patch. 36505116.org | | \/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile 39 . transform rotational. patch. } rotor { type nFaces startFace } cilindro { type nFaces startFace } plano1 { type wall.01. matchTolerance 0. nFaces 6692. 254722. startFace 36527016.

CrossPowerLawCoeffs { nu0 nu0 [ 0 2 -1 0 0 0 0 ] 1e-06. } // ************************************************************************* // 40 Alejandro García Soto . format ascii. n n [ 0 0 0 0 0 0 0 ] 1.0. n n [ 0 0 0 0 0 0 0 ] 1. } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // RASModel kOmegaSST.OpenFOAM. location "constant". format ascii. class dictionary. printCoeffs on.5e-05.C++ -*----------------------------------*\ | ========= | | | \ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \ / O peration | Version: 2.org | | \/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2. object RASProperties. turbulence on.2. // ************************************************************************* // 4. nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06. nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06.3 TransportProperties /*--------------------------------*. m m [ 0 0 1 0 0 0 0 ] 1.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 { version 2. nu nu [ 0 2 -1 0 0 0 0 ] 1. location "constant". } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // transportModel Newtonian. k k [ 0 0 1 0 0 0 0 ] 0. } BirdCarreauCoeffs { nu0 nu0 [ 0 2 -1 0 0 0 0 ] 1e-06.1 | | \ / A nd | Web: www.0.3. object transportProperties. class dictionary.

OpenFOAM. class volScalarField. internalField uniform 0.3. cyclicAMI.org | | \/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2. cyclicAMI. format ascii.2 Velocidad 41 . location "0".3 Carpeta 0 Se necesita una carpeta de tiempo con la que iniciar el cálculo.3. } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 0 2 -2 0 0 0 0 ]. boundaryField { inlet { type } outlet { type value } rotor { type } cilindro { type } } plano1 { type } plano2 { type } zeroGradient.1 | | \ / A nd | Web: www. Normalmente se usa un tiempo 0. uniform 0. El programa irá escribiendo los resultados en sucesivas carpetas de tiempo.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto 4. zeroGradient. 4. // ************************************************************************* // 4. zeroGradient.C++ -*----------------------------------*\ | ========= | | | \ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \ / O peration | Version: 2. object p.0.1 Presión /*--------------------------------*.3. fixedValue.

OpenFOAM. internalField uniform ( 5 0 0 ). fixedValue.C++ -*----------------------------------*\ | ========= | | | \ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \ / O peration | Version: 2.0.3. object Urel.1 | | \ / A nd | Web: www. uniform ( 5 0 0 ). format ascii. fixedValue.OpenFOAM. uniform ( 5 0 0 ).3. 42 Alejandro García Soto . location "0". cyclicAMI.3 K /*--------------------------------*. class volVectorField.C++ -*----------------------------------*\ | ========= | | | \ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \ / O peration | Version: 2.0. boundaryField { inlet { type value } outlet { type } cilindro { type value } rotor { type value } plano1 { type } plano2 { type } } fixedValue. zeroGradient. cyclicAMI.3.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 /*--------------------------------*.org | | \/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2. uniform ( 0 0 0 ).1 | | \ / A nd | Web: www. // ************************************************************************* // 4. } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 0 1 -1 0 0 0 0 ].org | | \/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.

093. class volScalarField. kqRWallFunction.4 Omega /*--------------------------------*.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto format ascii. boundaryField { inlet { type value } outlet { type } rotor { type value } cilindro { type } } plano1 { type value } plano2 { type value } fixedValue.093. } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 0 2 -2 0 0 0 0 ].org | | \/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2. zeroGradient. cyclicAMI. cyclicAMI.OpenFOAM.093. uniform 0.093. object omega. class volScalarField. zeroGradient. } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 0 0 -1 0 0 0 0 ].C++ -*----------------------------------*\ | ========= | | | \ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \ / O peration | Version: 2.3. location "0". uniform 0. internalField uniform 0. format ascii. location "0". uniform 0.1 | | \ / A nd | Web: www. // ************************************************************************* // 4.0. 43 . uniform 0. object k.093.3.

OpenFOAM. location "0". 44 Alejandro García Soto .0.855.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 internalField uniform 44. } outlet { type zeroGradient. value uniform 44.7. internalField uniform 14. cyclicAMI.5 Epsilon /*--------------------------------*. class volScalarField.7. object epsilon. // ************************************************************************* // 4. boundaryField { inlet { type fixedValue.1 | | \ / A nd | Web: www. U Urel.7.7.C++ -*----------------------------------*\ | ========= | | | \ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \ / O peration | Version: 2. value uniform 44. } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 0 2 -3 0 0 0 0 ].3. format ascii. boundaryField { inlet { type fixedValue. } rotor { type omegaWallFunction. uniform 44.org | | \/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2. } } plano1 { type value } plano2 { type value } cyclicAMI. uniform 44.7.3. } cilindro { type zeroGradient.

cyclicAMI. uniform 14. boundaryField { inlet { type value } outlet { type value } rotor { calculated.3.855. uniform 0.0.OpenFOAM.1 | | \ / A nd | Web: www. location "0". 45 . epsilonWallFunction. zeroGradient. format ascii.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 value } outlet { type } rotor { type U value } cilindro { type } } plano1 { type } plano2 { type } Alejandro García Soto uniform 14.6 Nut /*--------------------------------*. cyclicAMI. internalField uniform 0.855. class volScalarField. Urel.3. uniform 0. calculated. zeroGradient. object nut. // ************************************************************************* // 4.org | | \/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.C++ -*----------------------------------*\ | ========= | | | \ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \ / O peration | Version: 2. } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 0 2 -1 0 0 0 0 ].

uniform 0. Urel. uniform 0. calculated. cyclicAMI. uniform 0. uniform 0. cyclicAMI. // ************************************************************************* // 46 Alejandro García Soto .Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 type U value } } cilindro { type value } plano1 { type value } plano2 { type value } nutkWallFunction.

sólo se ha podido simular el caso en estático. sin rotación del rotor. Sin embargo. cuando el aerogenerador aún no ha empezado a girar y con 5m/s resultan: 47 . y asentar las bases para una futura simulación completa del caso.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto 5 Resultados La idea inicial del proyecto era simular el comportamiento con y sin los diferentes elementos aerodinámicos modificando la geometría del rotor. Las fuerzas resultantes de la simulación en parado.

Además. 48 . Se deben añadir algunos archivos definiendo esta característica. Sin embargo. tras la obtención de un caso estable. se han asentado las bases y los modelos a utilizar para una futura simulación incluyendo el giro del aerogenerador. en las condiciones de contorno del rotor se incluía una componente de velocidad angular simulando el giro del rotor. se debería determinar la sensibilidad de los resultados a la calidad y densidad de la malla. Así como por diversas geometrías del dominio computacional y condiciones de contorno.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto 6 Conclusiones y futuras líneas de investigación No se han podido extraer datos reveladores sobre los dispositivos aerodinámicos a partir de la simulación del rotor en parada. pero la definición del caso es muy similar al caso sin rotación. Se ha intentado la simulación con el SRFSimpleFoam (Simple Rotating Frame) pero no se ha conseguido un resultado estable. En el caso. También sería interesante evaluar el caso con un flujo compresible.

Anders Bjorck Risø-R-1370(EN) CFD Study of a NACA 63-415 Aerofoil Fitted with Stall Strips Risø-R-1193(EN) Wind Tunnel Tests of the NACA 63-415 and a Modified NACA 63-415 Airfoil 49 . FFA-W2-xxx AND FFA-W3-xxx SERIES OF AIRFOILS FOR HORIZONTAL AXIS WIND TURBINES.com Bonus MK 600kW TECHNICAL DESCRIPTION Risø-R-1065(EN) Airfoil Characteristics for Wind Turbines.Estudio del comportamiento de las palas LM19 de un aerogenerador Bonus 600 Alejandro García Soto 7 Bibliografía www.cfdonline. FF A TN 1990-15 COORDINATES AND CALCULATIONS FOR THE FFA-Wlxxx.direct www.cfd.