Escolar Documentos
Profissional Documentos
Cultura Documentos
Resumen
El objetivo de este trabajo es el anlisis mediante simulacin numrica de mecnica
de fluidos (computational fluid dynamics, CFD en adelante) del comportamiento y el
rendimiento de un aerogenerador de paso fijo para evaluar la conveniencia de aadir
diversos elementos que modifiquen la aerodinmica de las palas.
Normalmente, todos los aerogeneradores dentro de un mismo parque elico son del
mismo modelo. sto se debe a la facilidad de operacin y de mantenimiento. A la hora
de escoger un modelo u otro, se busca uno con una curva de potencia que exprima al
mximo los datos del viento de la zona.
Los datos de viento son los de alguna estacin cercana existente o una instalada adhoc, pero siempre sern estadsticos y no se dispondr de los datos exactos de viento en
cada uno de los puntos donde se instalar cada mquina. sto provoca que cada
aerogenerador vea un viento ligeramente distinto. Adems, las reparaciones y el
mantenimiento necesario van alterando sutilmente la geometra de las palas. Como
resultado, cada aerogenerador entregar energa elctrica siguiendo una curva de
potencia diferente a la estimada por el fabricante.
Estas desviaciones de la curva de potencia terica, tanto por exceso como por
defecto, generan una disminucin de la energa generada. Cuando esa disminucin
supera unos lmites, 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 aerodinmicas de cada aerogenerador es mediante elementos
aadidos que modifiquen la geometra 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 ms modernos y
ms 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 elicos ya
existentes mediante modificaciones sencillas y baratas sobre las palas de los
aerogeneradores.
Palabras clave: CFD, energa elica, aerogenerador, aerodinmica, repowering
3
Agradecimientos
A los compaeros de la empresa IM Future, donde realic unas prcticas durante 6
meses, por ser un equipo en el que d gusto trabajar y por su disponibilidad para
ensearme y aclarar cualquier duda.
A Javier Canosa, mi tutor durante las prcticas, por ser un ejemplo a seguir
profesional y personalmente y por ensearme y animarme a aprender. Por ser un
maestro.
A Juanjo, por darme nimos a su manera cuando los necesitaba.
A Elena Martn Ortiz, por aguantar todos los correos y ensearme a lidiar con
OpenFoam.
ndice
1
Resumen
Agradecimientos
ndice
10
10
12
14
15
18
21
22
23
25 4 Caso en OpenFOAM
25
38
41
4.3 Carpeta 0
47 5 Resultados
48 6 Conclusiones y futuras lneas de investigacin
49 7 Bibliografa
7
Entrada en prdida
Parada de la mquina
Plena carga
sobre todo en el norte de Europa, los promotores de los parques estn empezando a
reemplazar los viejos aerogeneradores por tecnologas y diseos ms modernos y
vender los primeros en el mercado de segunda mano. Es un fenmeno denominado
"repowering". Sin embargo, otros muchos promotores prefieren exprimir la vida
til de sus mquinas y buscar formas de aumentar la produccin.
Los parques elicos normalmente instalan un nico modelo de aerogenerador. Esto
sucede porque se consigue simplificar enormemente tareas tanto de diseo, como
gestin o mantenimiento del parque.
Se selecciona un aerogenerador que se adece lo ms posible a los vientos
predominantes en la zona. Pero no todos los puntos dentro del parque van a ser iguales,
y las mquinas vern desde el principio vientos ligeramente diferentes, aportando
diferentes cantidades de energa a la red. Estas diferencias son propensas a acentuarse
con el paso de los aos y de las reparaciones y el mantenimiento regular.
Siendo todas las mquinas iguales y en un mismo parque, es sencillo hacer un
seguimiento e identificar diferencias entre los distintos aerogeneradores:
1 Subproduccin: Aerogeneradores que nunca llegan a su potencia nominal.
2 Sobreproduccin: 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, dejando a la mquina fuera de servicio durante los
vientos ms energticos para los que estaba diseado.
Cualquiera de los dos casos supone un aerogenerador que est produciendo menos
energa de la que se espera.
Sobreproduccin
Curva tpica
Potencia
nominal
Subproduccin
11
12
Stall lists
Tiras de seccin triangular de plstico que se colocan en el borde de ataque de las
palas. Inducen una pequea burbuja de recirculacin del aire, adelantando la entrada en
prdida de la pala. "Bajan" la curva de potencia.
13
14
15
AE 18
16
AE 22
17
18
19
Con estas ecuaciones se puede definir y analizar cualquier fludo, pero a costa de
una carga de clculo tremenda. Siendo conscientes de sto, y de que muchos de los
trminos, una vez que pasamos a aplicaciones y flujos especficos, apenas tienen
influencia sobre el total; el primer paso en cualquier clculo de fluidos es buscar el
mayor nmero posible de simplificaciones sobre stas ecuaciones.
Se simula el rotor esttico, sin rotacin. De este modo se asientan las bases para
un estudio posterior implementando la rotacin del modelo.
21
Planos de corte: Se impone una condicin cclica donde los valores de un plano son
idnticos a los del otro.
22
Snappyhexmesh parte de dos mallas separadas: una malla de base muy simple y otra
con la geometra de estudio. Se definen los parmetros en un archivo dentro de la
carpeta "system". Calculando las intersecciones entre la malla base y la de estudio, el
programa va realizando subdivisiones progresivas hasta llegar a los valores definidos en
el archivo. Posteriormente el programa desplaza los vrtices para que coincidan
perfectamente con la geometra de estudio. De esta forma, es posible obtener mallas con
un grado de ortogonalidad muy elevado alrededor de geometras muy complejas.
Como en cualquier caso de flujo sobre objetos, la zona que ms interesa que est
correctamente definida es la prxima al objeto. Para ello, se calcula un tamao
aproximado de la capa lmite en su punto ms desarrollado: 20cm en el borde de salida
de la zona de la punta de la pala, y se asegura una densidad mxima de la malla hasta
40cm de distancia alrededor de toda la pala.
23
24
4 Caso en OpenFoam
OpenFoam ( www.openfoam.com ) es un programa de cdigo abierto que puede
resolver mediante mtodos numricos complejos sistemas de ecuaciones sobre puntos
discretos de una malla con una geometra definida. Se utiliza sobre todo para clculos en
dinmica de fludos, como demuestra el gran nmero de mdulos dedicados a ste
campo.
El caso es el conjunto de la simulacin. En OpenFoam, se segrega la informacin en
diferentes archivos de texto organizados en carpetas. Los archivos donde se descriven
las diferentes opcciones e instrucciones para la simulacin se denominan diccionarios,
abreviados como "dict".
SimpleFoam;
startFrom
startTime;
startTime
0;
stopAt
endTime;
endTime
deltaT
1000;
1;
writeControl timeStep;
writeInterval 100;
purgeWrite
0;
writeFormat
ascii;
writePrecision 6;
writeCompression off;
timeFormat
general;
timePrecision 6;
runTimeModifiable true;
// ************************************************************************* //
4.1.2 fvSchemes
/*--------------------------------*- C++ -*----------------------------------*\
| =========
|
|
| \\ / F ield
| OpenFOAM: The Open Source CFD Toolbox
|
| \\ / O peration | Version: 2.3.1
|
| \\ / A nd
| Web: www.OpenFOAM.org
|
| \\/ M anipulation |
|
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class
dictionary;
location "system";
26
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default
steadyState;
}
gradSchemes
{
default
Gauss linear;
}
divSchemes
{
default
none;
div(phi,Urel) bounded Gauss upwind;
div(phi,U) bounded Gauss upwind;
div(phi,k) bounded Gauss upwind;
div(phi,epsilon) bounded Gauss upwind;
div(phi,omega) bounded Gauss upwind;
div(phi,R) bounded Gauss upwind;
div(R)
Gauss linear;
div(phi,nuTilda) bounded Gauss upwind;
div((nuEff*dev(T(grad(Urel))))) Gauss linear;
div((nuEff*dev(T(grad(U))))) Gauss linear;
}
laplacianSchemes
{
default
Gauss linear corrected;
}
interpolationSchemes
{
default
linear;
interpolate(Urel) linear;
}
snGradSchemes
{
default
corrected;
}
fluxRequired
{
default
no;
p
;
}
// ************************************************************************* //
4.1.3 fvSolution
/*--------------------------------*- C++ -*----------------------------------*\
| =========
|
|
| \\ / F ield
| OpenFOAM: The Open Source CFD Toolbox
|
| \\ / O peration | Version: 2.3.1
|
| \\ / A nd
| Web: www.OpenFOAM.org
|
| \\/ M anipulation |
|
\*---------------------------------------------------------------------------*/
FoamFile
27
version 2.0;
format ascii;
class
dictionary;
location "system";
object fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
p
{
solver
GAMG;
tolerance
1e-5;
relTol
0;
smoother
GaussSeidel;
nPreSweeps
0;
nPostSweeps 2;
cacheAgglomeration on;
agglomerator faceAreaPair;
nCellsInCoarsestLevel 10;
mergeLevels 1;
}
"(U|k|omega|R|nuTilda)"
{
solver
smoothSolver;
smoother
symGaussSeidel;
tolerance
1e-05;
relTol
0.0;
}
SIMPLE
{
nNonOrthogonalCorrectors 2;
residualControl
{
p
1e-3;
U
1e-4;
"(k|omega)" 1e-4;
}
}
relaxationFactors
{
fields
{
p
0.1;
}
equations
{
U
0.1;
k
0.1;
omega
0.1;
}
}
// ************************************************************************* //
4.1.4 SnappyHexMesh
/*--------------------------------*- C++ -*----------------------------------*\
28
| =========
|
|
| \\ / F ield
| OpenFOAM: The Open Source CFD Toolbox
|
| \\ / O peration | Version: 3.0.1
|
| \\ / A nd
| Web: www.OpenFOAM.org
|
| \\/ M anipulation |
|
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class
dictionary;
object snappyHexMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Which of the steps to run
castellatedMesh true;
snap
true;
addLayers
false;
// Geometry. Definition of all surfaces. All surfaces are of class
// searchableSurface.
// Surfaces are used
// - to specify refinement for any mesh cell intersecting it
// - to specify refinement for any mesh cell inside/outside/near
// - to 'snap' the mesh boundary to the surface
geometry
{
rotor.obj
{
type triSurfaceMesh;
name rotor;
}
cilindro.obj
{
type triSurfaceMesh;
name cilindro;
}
plano1.obj
{
type triSurfaceMesh;
name plano1;
}
plano2.obj
{
type triSurfaceMesh;
name plano2;
}
};
29
30
cilindro
{
level (0 0);
}
plano1
{
level (0 0);
}
plano2
{
level (0 0);
}
}
// Resolve sharp angles
resolveFeatureAngle 30;
// Region-wise refinement
// ~~~~~~~~~~~~~~~~~~~~~~
// Specifies refinement level for cells in relation to a surface. One of
// three modes
// - distance. 'levels' specifies per distance to the surface the
// wanted refinement level. The distances need to be specified in
// descending order.
// - inside. 'levels' is only one entry and only the level is used. All
// cells inside the surface get refined up to the level. The surface
// needs to be closed for this to be possible.
// - outside. Same but cells outside.
refinementRegions
{
rotor
{
mode distance;
levels ((0.4 7)); //se asegura una maxima densidad para el desarrollo de la capa lmite.
}
}
// Mesh selection
// ~~~~~~~~~~~~~~
// After refinement patches get added for all refinementSurfaces and
// all cells intersecting the surfaces get put into these patches. The
// section reachable from the locationInMesh is kept.
// NOTE: This point should never be on a face, always inside a cell, even
// after refinement.
locationInMesh (30.0001 4.0001 0.43);
// Whether any faceZones (as specified in the refinementSurfaces)
// are only on the boundary of corresponding cellZones or also allow
31
32
finalLayerThickness 0.3;
// Minimum thickness of cell layer. If for any reason layer
// cannot be above minThickness do not add layer.
// Relative to undistorted size of cell outside layer.
minThickness 0.1;
// If points get not extruded do nGrow layers of connected faces that are
// also not grown. This helps convergence of the layer addition process
// close to features.
// Note: changed(corrected) w.r.t 17x! (didn't do anything in 17x)
nGrow 0;
// Advanced settings
// When not to extrude surface. 0 is flat surface, 90 is when two faces
// are perpendicular
featureAngle 60;
// At non-patched sides allow mesh to slip if extrusion direction makes
// angle larger than slipFeatureAngle.
slipFeatureAngle 30;
// Maximum number of snapping relaxation iterations. Should stop
// before upon reaching a correct mesh.
nRelaxIter 3;
// Number of smoothing iterations of surface normals
nSmoothSurfaceNormals 1;
// Number of smoothing iterations of interior mesh movement direction
nSmoothNormals 3;
// Smooth layer thickness over surface patches
nSmoothThickness 10;
// Stop layer growth on highly warped cells
maxFaceThicknessRatio 0.5;
// Reduce layer growth where ratio thickness to medial
// distance is large
maxThicknessToMedialRatio 0.3;
// Angle used to pick up medial axis points
// Note: changed(corrected) w.r.t 17x! 90 degrees corresponds to 130 in 17x.
minMedianAxisAngle 90;
// Create buffer region for new layer terminations
nBufferCellsNoExtrude 0;
// Overall max number of layer addition iterations. The mesher will exit
// if it reaches this number of iterations; possibly with an illegal
// mesh.
nLayerIter 50;
33
// Advanced
// Advanced
// Write flags
writeFlags
(
scalarLevels
layerSets
layerFields // write volScalarField for layer coverage
);
// Merge tolerance. Is fraction of overall bounding box of initial mesh.
// Note: the write tolerance needs to be higher than this.
mergeTolerance 1e-6;
// ************************************************************************* //
4.1.5 SurfaceFeatureExtractDict
/*--------------------------------*- C++ -*----------------------------------*\
| =========
|
|
| \\ / F ield
| OpenFOAM: The Open Source CFD Toolbox
|
| \\ / O peration | Version: 3.0.1
|
| \\ / A nd
| Web: www.OpenFOAM.org
|
| \\/ M anipulation |
|
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class
dictionary;
object surfaceFeatureExtractDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
rotor.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
// - 0 : selects no edges
// - 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;
34
}
// Write options
// Write features to obj format for postprocessing
writeObj
yes;
cilindro.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
// - 0 : selects no edges
// - 180: selects all edges
includedAngle 150;
}
subsetFeatures
{
// Keep nonManifold edges (edges with >2 connected faces)
nonManifoldEdges
no;
// Write options
// Write features to obj format for postprocessing
writeObj
yes;
plano1.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
// - 0 : selects no edges
// - 180: selects all edges
includedAngle 150;
}
subsetFeatures
{
// Keep nonManifold edges (edges with >2 connected faces)
nonManifoldEdges
no;
// Write options
// Write features to obj format for postprocessing
writeObj
yes;
35
}
plano2.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
// - 0 : selects no edges
// - 180: selects all edges
includedAngle 150;
}
subsetFeatures
{
// Keep nonManifold edges (edges with >2 connected faces)
nonManifoldEdges
no;
// Write options
// ************************************************************************* //
4.1.6 MeshQualityDict
/*--------------------------------*- C++ -*----------------------------------*\
| =========
|
|
| \\ / F ield
| OpenFOAM: The Open Source CFD Toolbox
|
| \\ / O peration | Version: 3.0.1
|
| \\ / A nd
| Web: www.OpenFOAM.org
|
| \\/ M anipulation |
|
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class
dictionary;
object meshQualityDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Include defaults parameters from master dictionary
//#includeEtc "caseDicts/meshQualityDict"
//- Maximum non-orthogonality allowed. Set to 180 to disable.
maxNonOrtho 65;
//- Max skewness allowed. Set to <0 to disable.
maxBoundarySkewness 20;
maxInternalSkewness 4;
//- Max concaveness allowed. Is angle (in degrees) below which concavity
// is allowed. 0 is straight face, <0 would be convex face.
// Set to 180 to disable.
36
maxConcave 80;
//- Minimum pyramid volume. Is absolute volume of cell pyramid.
// Set to a sensible fraction of the smallest cell volume expected.
// Set to very negative number (e.g. -1E30) to disable.
minVol 1e-13;
//- Minimum quality of the tet formed by the face-centre
// and variable base point minimum decomposition triangles and
// the cell centre. This has to be a positive number for tracking
// to work. Set to very negative number (e.g. -1E30) to
// disable.
// <0 = inside out tet,
// 0 = flat tet
// 1 = regular tet
minTetQuality 1e-15;
//- Minimum face area. Set to <0 to disable.
minArea -1;
//- Minimum face twist. Set to <-1 to disable. dot product of face normal
// and face centre triangles normal
minTwist 0.02;
//- Minimum normalised cell determinant. This is the determinant of all
// the areas of internal faces. It is a measure of how much of the
// outside area of the cell is to other cells. 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.
// 1 = hex, <= 0 = folded or flattened illegal cell
minDeterminant 0.001;
//- Relative position of face in relation to cell centres (0.5 for orthogonal
// mesh) (0 -> 0.5)
minFaceWeight 0.05;
//- Volume ratio of neighbouring cells (0 -> 1)
minVolRatio 0.01;
//- Per triangle normal compared to average normal. Like face twist
// but now per (face-centre decomposition) triangle. Must be >0 for Fluent
// compatibility
minTriangleTwist -1;
//- 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.e. not collapsed to flat cell).
// If <0 : delete always.
//minVolCollapseRatio 0.1;
//hasta aqui se copio el codigo
//- minFaceWeight (0 -> 0.5)
minFaceWeight 0.02;
// ************************************************************************* //
4.1.7 forceCoeffs
37
| \\/ M anipulation |
|
\*---------------------------------------------------------------------------*/
forceCoeffs1
{
type
forceCoeffs;
functionObjectLibs ( "libforces.so" );
outputControl timeStep;
timeInterval 1;
log
/*
*/
}
yes;
patches ( rotor );
rhoName rhoInf; // Indicates incompressible
rhoInf 1;
// Redundant for incompressible
liftDir (0 0 1); // irrelevante en este caso
dragDir (1 0 0); //direccin del viento
CofR
(0 0 0); // Centro
pitchAxis (1 0 0);
magUInf 5;
lRef
1;
//
Aref
1520;
// Ara del rotor
binData
{
nBin
20;
// output data into 20 bins
direction (1 0 0); // bin direction
cumulative yes;
}
// ************************************************************************* //
38
(
inlet
{
type
patch;
nFaces
6692;
startFace
36237010;
}
outlet
{
type
patch;
nFaces
6692;
startFace
36243702;
}
rotor
{
type
nFaces
startFace
}
cilindro
{
type
nFaces
startFace
}
plano1
{
type
wall;
254722;
36250394;
patch;
21900;
36505116;
cyclicAMI;
nFaces
24766;
startFace
36527016;
matchTolerance 0.01;
transform
rotational;
neighbourPatch plano2;
rotationAxis (1 0 0);
rotationCentre (0 0 0);
}
plano2
{
type
cyclicAMI;
nFaces
24785;
startFace
36551782;
matchTolerance 0.01;
transform
rotational;
neighbourPatch plano1;
rotationAxis (1 0 0);
rotationCentre (0 0 0);
}
// ************************************************************************* //
4.2.2 RASProperties
39
version 2.0;
format ascii;
class
dictionary;
location "constant";
object RASProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
RASModel
kOmegaSST;
turbulence
on;
printCoeffs
on;
// ************************************************************************* //
4.2.3 TransportProperties
nu [ 0 2 -1 0 0 0 0 ] 1.5e-05;
CrossPowerLawCoeffs
{
nu0
nu0 [ 0 2 -1 0 0 0 0 ] 1e-06;
nuInf
nuInf [ 0 2 -1 0 0 0 0 ] 1e-06;
m
m [ 0 0 1 0 0 0 0 ] 1;
n
n [ 0 0 0 0 0 0 0 ] 1;
}
BirdCarreauCoeffs
{
nu0
nu0 [ 0 2 -1 0 0 0 0 ] 1e-06;
nuInf
nuInf [ 0 2 -1 0 0 0 0 ] 1e-06;
k
k [ 0 0 1 0 0 0 0 ] 0;
n
n [ 0 0 0 0 0 0 0 ] 1;
}
// ************************************************************************* //
40
4.3 Carpeta 0
Se necesita una carpeta de tiempo con la que iniciar el clculo. Normalmente se usa
un tiempo 0. El programa ir escribiendo los resultados en sucesivas carpetas de
tiempo.
4.3.1 Presin
/*--------------------------------*- C++ -*----------------------------------*\
| =========
|
|
| \\ / F ield
| OpenFOAM: The Open Source CFD Toolbox
|
| \\ / O peration | Version: 2.3.1
|
| \\ / A nd
| Web: www.OpenFOAM.org
|
| \\/ M anipulation |
|
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class
volScalarField;
location "0";
object p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions
[ 0 2 -2 0 0 0 0 ];
internalField uniform 0;
boundaryField
{
inlet
{
type
}
outlet
{
type
value
}
rotor
{
type
}
cilindro
{
type
}
plano1
{
type
}
plano2
{
type
}
zeroGradient;
fixedValue;
uniform 0;
zeroGradient;
zeroGradient;
cyclicAMI;
cyclicAMI;
// ************************************************************************* //
4.3.2 Velocidad
41
[ 0 1 -1 0 0 0 0 ];
internalField uniform ( 5 0 0 );
boundaryField
{
inlet
{
type
value
}
outlet
{
type
}
cilindro
{
type
value
}
rotor
{
type
value
}
plano1
{
type
}
plano2
{
type
}
}
fixedValue;
uniform ( 5 0 0 );
zeroGradient;
fixedValue;
uniform ( 5 0 0 );
fixedValue;
uniform ( 0 0 0 );
cyclicAMI;
cyclicAMI;
// ************************************************************************* //
4.3.3 K
42
format ascii;
class
volScalarField;
location "0";
object k;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions
[ 0 2 -2 0 0 0 0 ];
}
plano1
{
type
value
}
plano2
{
type
value
}
fixedValue;
uniform 0.093;
zeroGradient;
kqRWallFunction;
uniform 0.093;
zeroGradient;
cyclicAMI;
uniform 0.093;
cyclicAMI;
uniform 0.093;
// ************************************************************************* //
4.3.4 Omega
[ 0 0 -1 0 0 0 0 ];
43
}
plano1
{
type
value
}
plano2
{
type
value
}
cyclicAMI;
uniform 44.7;
cyclicAMI;
uniform 44.7;
// ************************************************************************* //
4.3.5 Epsilon
[ 0 2 -3 0 0 0 0 ];
44
value
}
outlet
{
type
}
rotor
{
type
U
value
}
cilindro
{
type
}
plano1
{
type
}
plano2
{
type
}
uniform 14.855;
zeroGradient;
epsilonWallFunction;
Urel;
uniform 14.855;
zeroGradient;
cyclicAMI;
cyclicAMI;
// ************************************************************************* //
4.3.6 Nut
[ 0 2 -1 0 0 0 0 ];
internalField uniform 0;
boundaryField
{
inlet
{
type
value
}
outlet
{
type
value
}
rotor
{
calculated;
uniform 0;
calculated;
uniform 0;
45
type
U
value
}
cilindro
{
type
value
}
plano1
{
type
value
}
plano2
{
type
value
}
nutkWallFunction;
Urel;
uniform 0;
calculated;
uniform 0;
cyclicAMI;
uniform 0;
cyclicAMI;
uniform 0;
// ************************************************************************* //
46
5 Resultados
La idea inicial del proyecto era simular el comportamiento con y sin los diferentes
elementos aerodinmicos modificando la geometra del rotor. Sin embargo, slo se ha
podido simular el caso en esttico, sin rotacin del rotor, y asentar las bases para una
futura simulacin completa del caso.
Las fuerzas resultantes de la simulacin en parado, cuando el aerogenerador an no
ha empezado a girar y con 5m/s resultan:
47
7 Bibliografa
www.cfd.direct
www.cfdonline.com
Bonus MK 600kW TECHNICAL DESCRIPTION
Ris-R-1065(EN) Airfoil Characteristics for Wind Turbines.
FF A TN 1990-15 COORDINATES AND CALCULATIONS FOR THE FFA-Wlxxx, FFA-W2-xxx AND FFA-W3-xxx SERIES OF AIRFOILS FOR HORIZONTAL
AXIS WIND TURBINES. 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