Mapas del modelo GFS hechos a medida

 Alex [email protected] clave. Modelos, GFS, mapas a medida, predicción.IntroducciónLa mayoría de nosotros, estamos acostumbrados a navegar por Internet buscando recursos para nuestra ...

Mapas Del Modelo Gfs Hechos A Medida
 Alex [email protected] clave. Modelos, GFS, mapas a medida, predicción.IntroducciónLa mayoría de nosotros, estamos acostumbrados a navegar por Internet buscando recursos para nuestra afición, ya sean modelos, imágenes de satélite, mapas, etc. Pero no es tan normal poder generar salidas gráficas propias de los modelos según nuestras necesidades y requerimientos.Cada modelo se puede plotear (dibujar, representar) de muchas maneras, por ejemplo, el GFS en el portal wetterzentrale. Pues bien, generar las salidas de un modelo en casa no es difícil, y aunque no tengan la vistosidad de los que podemos encontrar en Internet, hacerlo uno mismo ofrece muchas ventajas. Veamos pues, como se pueden generar y dibujar salidas del GFS en casa.Los requerimientosPara generar los mapas, necesitaremos básicamente un PC con Linux (cualquier distribución vale, en mi caso Kubuntu 5.1) y una buena conexión a Internet, ya que hay archivos que ocupan cerca de 200 Mb. Y algo de paciencia, pues montar todo el sistema no es complicado, pero si algo tedioso cuando no se domina mucho el tema consola. Pero con estas indicaciones, y algo de esfuerzo, se pueden generar modelos en 15 minutos, aproximadamente, una vez montado todo el software.IndicacionesEl software que utilizo es el Grads (http://www.iges.org/grads/ The Grid Analysis and Display System) que tiene soporte para archivos Grib, Netcdf, DODS, etc.En este caso, vamos a utilizar los archivos Grib. Algunos lectores se preguntarán, ¿Qué es un Grib?Grib (Grided Binary) es un formato de datos regulado y estandarizado por la Comisión de Sistemas básicos de la OMM. En este formato, están codificadas todas las variables que se utilizan en los modelos. En pocas palabras, es una salida codificada de un modelo numérico. El Grib es el formato más utilizado y, por lo tanto, encontramos muchos recursos en Internet que lo aprovechan.Pero, por supuesto, la mayoría de estos recursos son de pago. No así el GFS, que ofrece todas sus salidas cada 6 horas (00, 06, 12 y 18 . En este ejemplo se utilizará el GFS de baja resolución (ENS), ya que sólo ocupa unos 4 Mb cada salida. Luego una vez se tenga todo montado, se pueden utilizar los de alta resolución, que ocupan unos 180 Mb por cada 3 horas de simulación¡Nota importante! las rutas indicadas en todos los pasos no son absolutas, es decir, son las rutas según el sistema de directorios personal. Así, donde pone alex se deberá cambiar por el nombre de vuestro usuario.Los pasos a seguir son estos:1. Descargarse el software necesario Grads:ftp://grads.iges.org/grads/1.8/grads-1.8sl11-linux.tar.gz , nos bajamos los binarios ya compilados, así no hay que compilarlo todo y es más rápido. Una vez descargado, lo descomprimimos con la siguiente orden:alex@ubuntu:~/Desktop/$ gunzip grads-1.8sl11-linux.tar.gzalex@ubuntu:~/Desktop/$ tar xvf grads-1.8sl11-linux.tarCon esto, ya tendremos en el escritorio el Grads descomprimido en el escritorio. Si se quiere descomprimir en otro lugar, basta con pasar el archivo comprimido a otro directorio y descomprimirlo allí, pero siempre manteniendo el nombre de carpeta, es muy importante para evitar errores más tarde.Grib2ctl:Es un script en perl que nos creará el archivo ctl, para introducir correctamente el grib en el Grads(Necesitamos el perl en nuestro sistema, para comprobarlo [/usr/local/bin/perl -w]ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib.scripts/grib2ctl.plY lo metemos en la carpeta grads/bin, lo abrimos con un editor de texto, y modificamos las siguientes líneas.Cambiamos esta (comilla simple incluida)$wgrib='wgrib'Por la ruta donde tenemos descomprido el grads/bin$wgrib='/home/alex/Desktop/grads/bin';Mapas y data para GradsEl Grads no lleva los mapas por defecto, así que hay que instalarlosftp://grads.iges.org/grads/data.tar.ZY los descomprimimos en /usr/local/bin/gradsYa está preparado, ahora toca descargarse los modelosDesde el servidor 5 del Nomad, se pueden descargar multitud de modelos, el problema, es que muchos están limitados a la zona de EEUU. Solo el GFS tiene una buena cobertura mundial.Nos bajamos, por ejemplo, la salida del ENS (GFS a resolución simple del 26 de Abril del 2006, salida de las 00zhttp://nomad5.ncep.noaa.gov/pub/ens/archive/Nos vamos al día 23http://nomad5.ncep.noaa.gov/pub/ens/archive/ens20060426Y seleccionamos el ens4n.t00.pgbrf00 (esto significa que es el de la salida 00z válida para las 00 horas)http://nomad5.ncep.noaa.gov/pub/ens/archive/ens20060426/ensn4.t00z.pgrbf00Y el INV tambiénhttp://nomad5.ncep.noaa.gov/pub/ens/archive/ens20060426/ensn4.t00z.pgrbf00.invCon esto, quedan descargados el modelo y el índice de variables.Ahora hay 2 caminos a seguir. Crearse el ctl (archivo para el Grads) uno mismo o bajarlo directamente.Bajarse el ctl sin necesidad de generarlo:El ctl para la salida correspondientehttp://nomad5.ncep.noaa.gov/pub/ens/archive/ens20060426/ensn4_00z.ctlY el idx para la salida correspondientehttp://nomad5.ncep.noaa.gov/pub/ens/archive/ens20060426/ensn4_00z.idxPara hacerlo manualmente:La sintaxis es la siguientealex@ubuntu:~/Desktop/grads-1.8sl11/bin$ /usr/bin/perl /home/alex/Desktop/grads-1.8sl11/bin/grib2ctl.pl /home/alex/Desktop/ens4n.t06z.pgrbf00 > /home/alex/Desktop/ens4n.t06z.pgrbf00.ctlEsto nos crea el ctl correspondiente para el grads en el escritorio, así no vamos perdidos buscando archivos.Ahora, codificaremos el Grib con la utilidad gribmap, que viene dentro del directorio grads/binalex@ubuntu:~/Desktop/grads-1.8sl11/bin$ ./gribmap -i /home/alex/Desktop/ens4n.t06z.pgrbf00.ctlY nos saldrán unas líneas detallando el procesogribmap: Scanning binary GRIB file(s):gribmap: Opening GRIB file /home/alex/Desktop/gfs.t00z.pgrbf00gribmap: Reached EOFgribmap: Writing the map...Ya tenemos el ctl listo para trabajar.Y empezamos ya a trabajar con el gradsConsta de 2 ventanas; la consola y la ventana donde nos saldrá la variable dibujadaalex@ubuntu:~/Desktop/grads-1.8sl11/bin$ ./gradscGrid Analysis and Display System (GrADS) Version 1.8SL11Copyright (c) 1988-2001 by Brian DotyCenter for Ocean-Land-Atmosphere StudiesInstitute for Global Environment and SocietyAll Rights ReservedConfig: v1.8SL11 32-bit little-endian readline printimIssue 'q config' command for more information.Landscape mode? (no for portrait)Presionamos introGX Package Initialization: Size = 11 8.5ga->Ya tenemos el Grads en marcha. Nos queda cargar el ctl y plotear la salida. Para esto, definimos donde está el archivo y lo abrimosga-> open /home/alex/Desktop/ens4n.t06.ctlScanning description file: /home/alex/Desktop/ens4n.t06.ctlData file /home/alex/Desktop/ensn4.t06z.pgrbf06 is open as file 1LON set to 0 360LAT set to -90 90LEV set to 1000 1000Time values set: 2006:4:23:6 2006:4:23:6Ya tenemos el grib correctamente cargado. Para ver los campos que podemos representar, basta con ejecutar la orden "query file"ga-> query fileFile 1 : /home/alex/Desktop/ensn4.t06z.pgrbf06Descriptor: /home/alex/Desktop/ens4n.t06.ctlBinary: /home/alex/Desktop/ensn4.t06z.pgrbf06Type = GriddedXsize = 144 Ysize = 73 Zsize = 26 Tsize = 1Number of Variables = 134no4lftxsfc 0 132 ** surface Best (4-layer) lifted index [K]no5wavaprs 0 230 ** 5-wave geopot. height anomaly [gpm]no5wavhprs 0 222 ** 5-wave geopotential height [gpm]absvprs 26 41 ** Absolute vorticity [/s]acpcpsfc 0 63 ** surface Convective precipitation [kg/m^2]albdosfc 0 84 ** surface Albedo [%]apcpsfc 0 61 ** surface Total precipitation [kg/m^2]capesfc 0 157 ** surface Convective Avail. Pot. Energy [J/kg]cape180_0mb 0 157 ** 180-0 mb above gnd Convective Avail. Pot. Energy [J/kg]cfrzrsfc 0 141 ** surface Categorical freezing rain [yes=1;no=0]cicepsfc 0 142 ** surface Categorical ice pellets [yes=1;no=0]cinsfc 0 156 ** surface Convective inhibition [J/kg]cin180_0mb 0 156 ** 180-0 mb above gnd Convective inhibition [J/kg]clwmrprs 21 153 ** Cloud water [kg/kg]cpratsfc 0 214 ** surface Convective precip. rate [kg/m^2/s]crainsfc 0 140 ** surface Categorical rain [yes=1;no=0]csnowsfc 0 143 ** surface Categorical snow [yes=1;no=0]cwatclm 0 76 ** atmos column Cloud water [kg/m^2]cworkclm 0 146 ** atmos column Cloud work function [J/kg]dlwrfsfc 0 205 ** surface Downward long wave flux [W/m^2]dswrfsfc 0 204 ** surface Downward short wave flux [W/m^2]gfluxsfc 0 155 ** surface Ground heat flux [W/m^2]gpaprs 2 27 ** Geopotential height anomaly [gpm]hgtsfc 0 7 ** surface Geopotential height [gpm]hgtprs 26 7 ** Geopotential height [gpm]hgtpv2 0 7 ** pot vorticity = 2000 units level Geopotential height [gpm]hgtpvneg2 0 7 ** pot vorticity = -2000 units level Geopotential height [gpm]hgthtfl 0 7 ** highest trop freezing level Geopotential height [gpm]hgt0deg 0 7 ** 0C isotherm level Geopotential height [gpm]hgtmwl 0 7 ** max wind level Geopotential height [gpm]hgttrp 0 7 ** tropopause Geopotential height [gpm]hpblsfc 0 221 ** surface Planetary boundary layer height [m]icecsfc 0 91 ** surface Ice concentration (ice=1;no ice=0) [fraction]landsfc 0 81 ** surface Land cover (land=1;sea=0) [fraction]lftxsfc 0 131 ** surface Surface lifted index [K]lhtflsfc 0 121 ** surface Latent heat flux [W/m^2]o3mrprs 6 154 ** Ozone mixing ratio [kg/kg]pevprsfc 0 145 ** surface Potential evaporation rate [W/m^2]potsig995 0 13 ** sig=.995 Potential temp. [K]pratesfc 0 59 ** surface Precipitation rate [kg/m^2/s]pressfc 0 1 ** surface Pressure [Pa]prespv2 0 1 ** pot vorticity = 2000 units level Pressure [Pa]prespvneg2 0 1 ** pot vorticity = -2000 units level Pressure [Pa]preslcb 0 1 ** low cloud base Pressure [Pa]preslct 0 1 ** low cloud top Pressure [Pa]presmcb 0 1 ** mid-cloud base Pressure [Pa]presmct 0 1 ** mid-cloud top Pressure [Pa]preshcb 0 1 ** high cloud base Pressure [Pa]preshct 0 1 ** high cloud top Pressure [Pa]prescvb 0 1 ** convective cld base Pressure [Pa]prescvt 0 1 ** convective cld top Pressure [Pa]presmwl 0 1 ** max wind level Pressure [Pa]prestrp 0 1 ** tropopause Pressure [Pa]prmslmsl 0 2 ** Pressure reduced to MSL [Pa]pwatclm 0 54 ** atmos column Precipitable water [kg/m^2]rhprs 21 52 ** Relative humidity [%]rh2m 0 52 ** 2 m Relative humidity [%]rhsig995 0 52 ** sig=.995 Relative humidity [%]rhsg44_100 0 52 ** sigma=0.44-1.00 layer Relative humidity [%]rhsg72_94 0 52 ** sigma=0.72-0.94 layer Relative humidity [%]rhsg44_72 0 52 ** sigma=0.44-0.72 layer Relative humidity [%]rhsg33_100 0 52 ** sigma=0.33-1.00 layer Relative humidity [%]rh30_0mb 0 52 ** 30-0 mb above gnd Relative humidity [%]rhclm 0 52 ** atmos column Relative humidity [%]rhhtfl 0 52 ** highest trop freezing level Relative humidity [%]rh0deg 0 52 ** 0C isotherm level Relative humidity [%]shtflsfc 0 122 ** surface Sensible heat flux [W/m^2]soilwsoilt 0 144 ** 0-10 cm undergnd Volumetric soil moisture [fraction]soilwdlr 3 144 ** Volumetric soil moisture [fraction]spfh2m 0 51 ** 2 m Specific humidity [kg/kg]spfh30_0mb 0 51 ** 30-0 mb above gnd Specific humidity [kg/kg]tcdcclm 0 71 ** atmos column Total cloud cover [%]tcdcbcl 0 71 ** boundary cld layer Total cloud cover [%]tcdclcl 0 71 ** low cloud level Total cloud cover [%]tcdcmcl 0 71 ** mid-cloud level Total cloud cover [%]tcdchcl 0 71 ** high cloud level Total cloud cover [%]tcdccvl 0 71 ** convective cld layer Total cloud cover [%]tmax2m 0 15 ** 2 m Max. temp. [K]tmin2m 0 16 ** 2 m Min. temp. [K]tmpsfc 0 11 ** surface Temp. [K]tmpprs 26 11 ** Temp. [K]tmp1829m 0 11 ** 1829 m Temp. [K]tmp2743m 0 11 ** 2743 m Temp. [K]tmp3658m 0 11 ** 3658 m Temp. [K]tmp2m 0 11 ** 2 m Temp. [K]tmpsig995 0 11 ** sig=.995 Temp. [K]tmpsoilt 0 11 ** 0-10 cm undergnd Temp. [K]tmpdlr 3 11 ** Temp. [K]tmp30_0mb 0 11 ** 30-0 mb above gnd Temp. [K]tmppv2 0 11 ** pot vorticity = 2000 units level Temp. [K]tmppvneg2 0 11 ** pot vorticity = -2000 units level Temp. [K]tmplct 0 11 ** low cloud top Temp. [K]tmpmct 0 11 ** mid-cloud top Temp. [K]tmphct 0 11 ** high cloud top Temp. [K]tmpmwl 0 11 ** max wind level Temp. [K]tmptrp 0 11 ** tropopause Temp. [K]tozneclm 0 10 ** atmos column Total ozone [Dobson]ugwdsfc 0 147 ** surface Zonal gravity wave stress [N/m^2]uflxsfc 0 124 ** surface Zonal momentum flux [N/m^2]ugrdprs 26 33 ** u wind [m/s]ugrd1829m 0 33 ** 1829 m u wind [m/s]ugrd2743m 0 33 ** 2743 m u wind [m/s]ugrd3658m 0 33 ** 3658 m u wind [m/s]ugrd10m 0 33 ** 10 m u wind [m/s]ugrdsig995 0 33 ** sig=.995 u wind [m/s]ugrd30_0mb 0 33 ** 30-0 mb above gnd u wind [m/s]ugrdpv2 0 33 ** pot vorticity = 2000 units level u wind [m/s]ugrdpvneg2 0 33 ** pot vorticity = -2000 units level u wind [m/s]ugrdmwl 0 33 ** max wind level u wind [m/s]ugrdtrp 0 33 ** tropopause u wind [m/s]ulwrfsfc 0 212 ** surface Upward long wave flux [W/m^2]ulwrftoa 0 212 ** top of atmos Upward long wave flux [W/m^2]uswrfsfc 0 211 ** surface Upward short wave flux [W/m^2]uswrftoa 0 211 ** top of atmos Upward short wave flux [W/m^2]vgwdsfc 0 148 ** surface Meridional gravity wave stress [N/m^2]vflxsfc 0 125 ** surface Meridional momentum flux [N/m^2]vgrdprs 26 34 ** v wind [m/s]vgrd1829m 0 34 ** 1829 m v wind [m/s]vgrd2743m 0 34 ** 2743 m v wind [m/s]vgrd3658m 0 34 ** 3658 m v wind [m/s]vgrd10m 0 34 ** 10 m v wind [m/s]vgrdsig995 0 34 ** sig=.995 v wind [m/s]vgrd30_0mb 0 34 ** 30-0 mb above gnd v wind [m/s]vgrdpv2 0 34 ** pot vorticity = 2000 units level v wind [m/s]vgrdpvneg2 0 34 ** pot vorticity = -2000 units level v wind [m/s]vgrdmwl 0 34 ** max wind level v wind [m/s]vgrdtrp 0 34 ** tropopause v wind [m/s]vvelprs 21 39 ** Pressure vertical velocity [Pa/s]vvelsig995 0 39 ** sig=.995 Pressure vertical velocity [Pa/s]vwshpv2 0 136 ** pot vorticity = 2000 units level Vertical speed shear [1/s]vwshpvneg2 0 136 ** pot vorticity = -2000 units level Vertical speed shear [1/s]vwshtrp 0 136 ** tropopause Vertical speed shear [1/s]watrsfc 0 90 ** surface Water runoff [kg/m^2]weasdsfc 0 65 ** surface Accum. snow [kg/m^2]Todos estos son los campos que podemos representar. Para hacer una prueba, vamos a plotear la presión en superficie.Primero, definimos las coordenadas (Coordenadas de la península ibérica en este caso).ga-> set lon -10 4LON set to -10 4ga-> set lat 36 44LAT set to 36 44Y ploteamos la presión regulada en superficie (SFC) . Para ellos, buscamos como se llama en el listado del query file.pressfc 0 1 ** surface Pressure [Pa]Ejecutamos la orden Display ( d ) con el nombre de la variable.Mapa de la presión regulada en superficie para las 00z del día 26-04-2006. Se puede observar, como, al ser el modelo en baja resolución, las isobaras son muy toscas.Y ya hemos ploteado nuestro propia salida del GFS.Cuando se quiera volver a plotear una variable, conviene ejecutar el comando.ga-> clearPara borrar el mapa. De esta forma, se puede volver a plotear sobre un entorno limpio.Manejo básico del programaVamos a ver como utilizar el Grads de forma muy básica.Si no tenemos introducidas las coordenadas, las introducimos ahora. Para la península Ibérica:ga-> set lon -10 4LON set to -10 4ga-> set lat 36 44LAT set to 36 44Vamos plotear los niveles de humedad en superficie. Asignamos el valor de 1000 hPa.ga-> set lev 1000LEV set to 1000 1000Buscamos en el query file como se denomina la variable de la humedad.rhprs 21 52 ** Relative humidity [%]ga-> d rhprsContouring: 45 to 100 interval 5Mapa con la humedad relativa (Rojo 100%, azul 45%) a las 00z del día 26-04-2006, representado con isopletas.Ahora, vamos a mejorar el aspecto del mapa. Basta con introducir esta línea de código.ga-> set gxout shadedLa orden gxout indica al grads como quiere que genere la salida. En este caso, shaded, es decir, rellena de color o sombreado.Vamos a ver el resultado.ga-> clearMismo mapa que el anterior, esta vez representado con colores de relleno. Este tipo de mapa demuestra ser mucho más grafico y de una visión más simple que el anteriorMucho mejor ahora, pero claro, los valores numéricos se han perdido, no hay problema. Basta con volver a dibujar la variable encima.ga-> set gxout contourMapa con la humedad relativa de las 00z del día 26-04-06, esta vez representado de las 2 formas, por isolíneas y colores de rellenoAl no borrar con clear la salida anterior, se marcan ahora los valores numéricos.¿Como guardar los mapas?El Grads nos ayuda también en esto. Una vez generado el mapa, introducimos la siguiente expresión:ga-> printim /home/alex/Desktop/xxxx.jpgDonde xxxx es el nombre que queráis generar en la imagen. Pero no todo acaba aquí, vamos a ver un ejemplo de la potencia del Grads. Introducimos los siguientes comandosga-> clearga-> d tmpprsTemperatura al nivel de 1000 hPa en la escala Kelvin.Nos da la temperatura en grados Kelvin del nivel antes indicado (1000 hPa).Para pasar la temperatura a grados Celcius, basta con restar 273,16 grados.ga-> clearga-> d tmpprs - 273.16Temperatura al nivel de 1000 hPa en la escala Celsius o Centígrada.Con esto, podemos generar todas las variables y cálculos sobre las variables que queramos.En el próximo trabajo, se tratarán temas como plotear salidas para diferentes alturas, como utilizar Grib's no solo como análisis, sino como previsión (Salidas hasta 384 horas), cortes verticales, etc.Un saludo, para cualquier duda,[email protected]http://meteoviladecans.ar.nuBibliografia:Página oficial del proyecto Gradshttp://www.iges.org/gradsServidor del modelo numérico del NOAA (GFS-AVN)NOMADS: NCEP server 5Utilidad del NOAA Grib2tclhttp://www.cpc.ncep.noaa.gov/products/wesley/grib2ctl.html

Esta entrada se publicó en Reportajes en 16 Jun 2006 por Francisco Martín León