English
Wind3D  1.0
Cálculo de campos de viento mediante masa consistente
 Todo Estructuras de Datos Archivos Funciones Variables 'typedefs' Enumeraciones 'defines' Páginas
Wind3D

Introducción

El código Wind3D es un programa de simulación de campos de viento 3D sobre orografía irregular con un modelo adaptativo de masa consistente. El código puede usar como entrada tanto datos obtenidos de modelos predictivos, como datos de estaciones de medida experimentales o datos de viento interpolados.

Información

Título: Wind3D
Nº de Solicitud: GC-96-2012.
Nº de Asiento Registral: 00 / 2012 / 2506
Fecha: 23 de febrero de 2012.
Entidad Titular: Universidad de Las Palmas de Gran Canaria.

Autores

Eduardo Rodríguez Barrera, Gustavo Montero García, José María Escobar Sánchez, Rafael Montenegro Armas, Albert Oliver Serra

Licencia

Copyright (C) 2012
ULPGC Universidad de Las Palmas de Gran Canaria
Institute of Intelligent Systems and Numerical Applications in Engineering - SIANI

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Descarga

Aquí se puede encontrar el código fuente del programa Wind3D, junto con un ejemplo para cada tipo de datos de entrada: estaciones, predictivo e interpolado.

Requerimientos para la compilación

Para compilar Wind3D son necesarios los siguientes programas:

  • CMake 2.6 o posterior
    CMake es un programa que se encarga de la generación de los proyectos de compilación las diferentes combinaciones de sistemas operativos, arquitecturas de procesador y compiladores instalados.
  • gcc 4.2 o posterior | Clang 3.0 o posterior
    Compilador de C, con soporte para el estándar C99

De manera opcional, para generar la documentación que acompaña a Wind3D sería necesario tener instalado:

  • Doxygen 1.7.6, recomendado doxygen 1.8.2 (opcional)
    Doxygen es un programa para la generación de documentación de un código fuente. Si el programa está instalado en el sistema, el usuario puede generar la documentación del código en formato HTML.
  • Distribución de LaTeX: MikTex, TexLive,... (opcional)
    LaTeX es un programa de escritura para generar documentos científicos de alta calidad. Si en el sistema se encuentra instalada una distribución de LaTeX, el usuario puede generar un fichero pdf con la documentación de Wind3D.

El código ha sido compilado y probado en los siguientes entornos:

  • GNU/Linux Ubuntu 12.04.3 LTS
  • GNU/Linux Debian testing
  • Mac OS X 10.6.8

Como Wind3D está escrito en lenguaje C, siguiendo el estándar C99, es muy probable que funcione en muchos otros sistemas operativos, siempre que dispongan de los programas mencionados arriba para poder compilarlo.

Compilar el código

En esta sección se detalla cómo compilar el código. Tan sólo se detalla cómo se compila el código mediante la línea de comandos.

  1. Descargar el paquete
  2. Descomprimir el paquete
    unzip package.zip
  3. Crear un directorio de compilación
    cd wind3D
    mkdir Build
    cd Build
  4. Crear un archivo makefile con CMake
    cmake ..
  5. Opcional: modificar las opciones del proyecto. Editar el archivo CMakeLists.txt:
    • Tipo de compilación: variable CMAKE_BUILD_TYPE.
      Los tipos de compilación pueden ser:
      Debug, para desarrollar código.
      Release, para obtener código optimizado para la velocidad.
      RelWithDebInfo para obtener código optimizado para la velocidad y con información de debug.
      MinSizeRel, para obtener código optimizado para el tamaño de los archivos generados.
  6. Compilar el código
    make
  7. Generar documentación del código mediante Doxygen (si se dispone de Doxygen)
    make doc
    La documentación se genera en el directorio build

Uso

El fichero main.c representa un caso típico del uso de la librería Wind3D.

Compilando el programa sin modificar nada, se usa de la siguiente manera desde la línea de comandos:

Uso:
wind3D -c config.dat -f forecast|stations|interpolation -r num |-R fichero [-s fichero] [-l]
Parametros obligatorios:
-c fichero de configuracion
-f Formato de entrada (forecast | stations | interpolation)
-r Valor de rugosidad constante (no compatible con -R)
-R Nombre del fichero de rugosidad (no compatible con -r)
Parametros opcionales:
-s Nombre del fichero con los puntos de salida del modelo
-i Escribir fichero inp del viento interpolado
-n No escribir ficheros inp del viento resultante
-l Calcular el viento en las diferentes capas (10, 20, 50, 100, 150, 200, 300, 400, 500)

Formato del fichero de configuración

El formato del fichero de configuración es el siguiente:

  • Puede contener líneas en blanco
  • Las líneas que empiezan con el carácter # son comentarios
  • Una línea sólo puede contener una asignación
  • La asignación será del tipo nombre_parámetro = valor_parámetro

Parametros a definir

  • ALPHA. Valor usado en la ecuación de masa consistente. Equivale a los parámetros $\alpha_{12}$ y $\alpha_{22}$ de la ecuación (3) del artículo [4]
  • FICH_VIENTO. Ruta al fichero de viento
  • FICH_MALLA. Ruta al fichero de malla
  • EPSILON. Valor usado para interpolar horizontalmente los valores de las estaciones. Es el usado en la ecuación (9) del artículo [4]
  • GAMMA1 y GAMMA2. Valores usados en la interpolación vertical de los valores de las estaciones. Equivalen a $\gamma$ y $\gamma'$ usados en las ecuaciones (14) y (15) respectivamente del artículo [4]
  • CTE_VON_KARMANN. Valor de la constante de Von Karmann. Es adimensional y su valor típico es 0.4
  • LATITUD. Latitud de la zona de estudio, expresada en grados (ver ecuaciones (14) y (15) del artículo [4])
  • PASQUILL. Valor de la estabilidad de Pasquill con la siguiente relación: -3 = Clase A, -2 = Clase B, -1 = Clase C, 0 = Clase D, 1 = Clase E, 2 = Clase F, 3 = Clase G
  • V_GEOSTROFICO_X, V_GEOSTROFICO_Y y V_GEOSTROFICO_Z. Valores x, y, z de la velocidad del viento geostrófico

Formato del fichero de malla

El formato del fichero de malla es el siguiente:

Número_nodos Número_elementos
#lista de coordenadas
X Y Z
. . .
. . .
. . .
#lista de conectividades
N1 N2 N3 N4
. . . .
. . . .
. . . .

Igualmente que en el caso del fichero de configuración, las líneas que comienzan con el carácter # se ignoran, por lo que pueden usarse para comentarios.

Formato del fichero de viento

En función del tipo de problema a resolver, viento en estaciones, predictivo o interpolado, el formato del fichero de viento será diferente.

Formato de los ficheros de datos de estaciones

El formato de los ficheros de estaciones es el siguiente

Número de puntos
Tipo ("modulo" | "componentes")
X Y Z V1 V2
X Y Z V1 V2
. . . . .
. . . . .
. . . . .

El valor de la Z será la altitud sobre el terreno.

En el caso del tipo "modulo", V1 indica el módulo del viento y V2 el ángulo; en caso de tipo "componentes", V1 indica la componente x del viento (Vx) y V2 la componente y (Vy).

Formato del fichero de viento predictivo

El formato de ficheros de viento procedentes de un modelo predictivo es el siguiente:

nx ny nz
X Y Z vx vy vz
. . . . . .
. . . . . .
. . . . . .

donde nx es el número de nodos a lo largo del eje X, ny el número de nodos a lo largo del eje Y y nz el número de capas. El programa espera que el viento predictivo se haya generado mediante un modelo predictivo tipo HARMONIE o WRF con una malla de GRID totalmente estructurada, por lo que espera que el orden de los valores X Y Z vx vy vz se mueva primero por nx, luego por ny y finalmente por nz.

Formato del fichero de viento interpolado

Es posible usar un campo de viento interpolado como entrada a Wind3D. Esto permite obtener un campo de viento resultante de tipo masa consistente a partir de un campo de viento interpolado disponible previamente. En este caso, el fichero de viento ha de tener tantas entradas como elementos tenga la malla que se va a emplear. El orden de las entradas ha de ser el mismo que el de los elementos en el fichero de la malla.

El formato del fichero de viento interpolado es el siguiente:

#Tres componentes de viento por cada elemento de la malla
Vx Vy Vz
. . .
. . .
. . .

Formato del fichero de rugosidad

El fichero de rugosidad tiene información de los valores de rugosidad del terreno. El terreno se representa mediante una retícula equiespaciada en X y en Y. Para cada punto del terreno representado en la retícula se proporcionan sus coordenadas UTMX y UTMY, su altura y su longitud de rugosidad. El fichero de rugosidad debe tener el siguiente formato:

xmin
xmax
ymin
ymax
deltax
deltay
X Y Z rugosidad
. . . .
. . . .
. . . .

La cabecera del fichero está formada por las siguientes líneas:

  • xmin: Coordenada UTMX mínima del fichero
  • xmax: Coordenada UTMX máxima del fichero
  • ymin: Coordenada UTMY mínima del fichero
  • ymax: Coordenada UTMY máxima del fichero
  • deltax: Incremento de X
  • deltay: Incremento de Y

Cada línea restante representa un punto del terreno y contiene los siguientes campos:

  • X, Y: Coordenadas UTMX y UTMY
  • Z: Altura del terreno
  • rugosidad: Rugosidad del terreno

La versión actual de Wind3D no usa la altura del terreno (Z), así que si no se dispone de esa información, puede usarse cualquier valor arbitrario para la Z.

Formato de los ficheros de puntos de salida

Los puntos de salida son localizaciones (X, Y, Z) del dominio en las que se desea conocer el viento resultante. Típicamente son puntos de interés que no pertenecen a los nodos de la malla.

El fichero de puntos de salida especifica el número y localización de puntos de salida que desean usarse en una ejecución de Wind3D. La ruta del fichero de salida debe especificarse mediante la opción "-s".

El formato del fichero de puntos de salida es el siguiente:

Número de puntos
Tipo ("terreno" | "mar")
X Y Z
. . .
. . .
. . .

"Tipo" determina la forma de interpretar Z. Si "Tipo" es "mar", Z representa la altura del punto sobre el nivel del mar. Si "Tipo" es "terreno", Z representa la altura del punto sobre el terreno.

Wind3D escribe un fichero con el valor del campo de viento en los puntos de salida especificados. El nombre del fichero es el mismo que el de entrada, con el sufijo "_out" . El formato de este fichero es el siguiente:

Número de puntos
Tipo ("terreno" | "mar")
X Y Z Vx Vy Vz |V|
. . . . . . .
. . . . . . .
. . . . . . .

donde la primera línea es el número de puntos de salida que contiene el fichero. A continuación hay una línea por cada punto de salida. Cada línea tiene los siguientes campos:

  • X Y: Coordenadas UTMX y UTMY del punto
  • Z: Altura del terreno en ese punto
  • Vx Vy Vz: Componentes de la velocidad del viento
  • |V|: Módulo de la velocidad del viento

Agradecimientos

Este trabajo ha sido financiado por el Gobierno de España y las ayudas FEDER: CSD2006-00032C, CGL2011-29396-C03-01.

También queremos agradecer la inestimable colaboración de los EPOs del proyecto: Agencia Estatal de Meteorología (AEMET), Instituto Tecnológico de Canarias (ITC), Desarrollos Eólicos S.A. (DESA) y Red Eléctrica de España (REE).

Citas

Si usas Wind3D en alguna publicación de investigación, por favor cita el código como se indica a continuación:

\@misc{Wind3Dcode,
author = "Eduardo Rodr\'{\i}guez and Gustavo Montero and Jos\'e Mar\'{\i}a
Escobar and Rafael Montenegro and Albert Oliver",
title = "{Wind3D}",
howpublished = "http://www.dca.iusiani.ulpgc.es/Wind3D",
year = "2012"
}

Y, por favor, incluya al menos unos de las siguientes publicaciones:

@article{Montero20053,
author = "Gustavo Montero and Eduardo Rodr\'{\i}guez and Rafael
Montenegro and Jos\'e Mar\'{\i}a Escobar and Jos\'e Mar\'{\i}a
Gonz\'alez--Yuste",
title = "Genetic algorithms for an improved parameter estimation with
local refinement of tetrahedral meshes in a wind model",
journal = "Advances in Engineering Software",
volume = "36",
number = "1",
pages = "3--10",
year = "2005",
issn = "0965-9978",
doi = "10.1016/j.advengsoft.2004.03.011",
note = "<ce:title>Evolutionary Optimization of Engineering Problems</ce:title> ",
url = "http://www.sciencedirect.com/science/article/pii/S0965997804000742",
keywords = "Parameter estimation",
keywords = "Genetic algorithms",
keywords = "Wind field modelling",
keywords = "Mass-consistent models",
keywords = "Adaptive mesh refinement",
keywords = "Finite element method"
}
@article{Ferragut10,
author = "Luis Ferragut and Rafael Montenegro and Gustavo Montero and
Eduardo Rodr\'{\i}guez and M.L. Asensio and Jos\'e Mar\'{\i}a Escobar",
title = "Comparison between {2.5-D} and {3-D} realistic models for wind field adjustment",
journal = "Journal of Wind Engineering and Industrial Aerodynamics",
volume = "98",
number = "10-11",
pages = "548--558",
year = "2010",
issn = "0167-6105",
doi = "10.1016/j.jweia.2010.04.004",
keywords = "Wind field modelling",
keywords = "Mass consistent models",
keywords = "Parameter estimation",
keywords = "Genetic algorithms",
keywords = "Adaptive mesh refinement",
keywords = "Finite element method"
url = "http://www.sciencedirect.com/science/article/pii/S0167610510000346"
}
@article{Oliver13,
title = "Adaptive finite element simulation of stack pollutant
emissions over complex terrains ",
journal = "Energy",
volume = "49",
number = "0",
pages = "47--60",
year = "2013",
issn = "0360-5442",
doi = "10.1016/j.energy.2012.10.051",
url = "http://www.sciencedirect.com/science/article/pii/S0360544212008316",
author = "Albert Oliver and Gustavo Montero and Rafael Montenegro and
Eduardo Rodr\'{\i}guez and Jos\'e Mar\'{\i}a Escobar and Agust\'{\i}
P\'erez-Foguet",
keywords = "Power plant emissions",
keywords = "Air quality modelling",
keywords = "Eulerian description",
keywords = "Wind field simulation",
keywords = "Finite element method",
keywords = "Adaptive tetrahedral mesh "
}

Bibliografía

[1] G. Winter, R. Montenegro, G. Montero, J. Estany. Sobre modelización numérica de distribución de velocidades de campos de viento en parques eólicos y aplicaciones. Revista Dinámica 3, 81-82 (1988).
[2] G. Winter, G. Montero, L. Ferragut, R. Montenegro. Adaptive strategies using standard and mixed finite elements for wind field adjustment. Solar Energy 54, 1, 49-56 (1995).
[3] G. Montero, R. Montenegro, J.M. Escobar. A 3-D diagnostic model for wind field adjustment. Journal of Wind Engineering & Industrial Aerodynamics 74-76, 249-261 (1998).
[4] G. Montero, E. Rodríguez, R. Montenegro, J.M. Escobar, J.M. González-Yuste. Genetic algorithms for an improved parameter estimation with local refinement of tetrahedral meshes in a wind model. Advances in Engineering Software 36, 3-10 (2005). http://dx.doi.org/10.1016/j.advengsoft.2004.03.011
[5] R. Montenegro, G. Montero, J.M. Escobar, E. Rodríguez, J.M. González-Yuste. Wind field simulation using adaptive tetrahedral meshes. Innovation in Civil and Structural Engineering Computing, Cap. 8, 159-185, Saxe-Coburg Publications, Stirling, Scotland (2005).
[6] R. Montenegro, G. Montero, E. Rodríguez, J.M. Escobar, J.M. González-Yuste. Aplications of genetic algorithms in realistic wind field. Knowledge-Driven Computing, Knowledge Engineering and Intelligent Computations, Studies in Computational Intelligence, 102, 165-182, Springer-Verlag, Berlin (2008). http://dx.doi.org/10.1007/978-3-540-77475-4_11
[7] L. Ferragut, R. Montenegro, G. Montero, E. Rodríguez, M.I. Asensio, J.M. Escobar. Comparison between 2.5-D and 3-D realistic models for wind field adjustment. Journal of Wind Engineering & Industrial Aerodynamics 98, 548–558 (2010). http://dx.doi.org/10.1016/j.jweia.2010.04.004
[8] A. Oliver, G. Montero, R. Montenegro, E. Rodríguez, J.M. Escobar, A. Pérez-Foguet. Adaptive finite element simulation of stack pollutant emissions over complex terrains. Energy 49(0), 47–60, (2013). http://dx.doi.org/10.1016/j.energy.2012.10.051