◦ WRF
De Wiki del OLE2 CMC-LUZ
1.- Descargas:
www.mmm.ucar.edu/wrf/src/WRFV3.3.TAR.gz (WRF como tal) www.mmm.ucar.edu/wrf/src/WPSV3.3.TAR.gz (WPS, el preprocesador)
Data de topografía:
www.mmm.ucar.edu/wrf/src/wps_files/geog.tar.gz
Bibliotecas adicionales necesarias:
www.mmm.ucar.edu/wrf/src/wps_files/jasper-1.701.0.tar.gz www.mmm.ucar.edu/wrf/src/wps_files/libpng-1.2.12.tar.gz www.mmm.ucar.edu/wrf/src/wps_files/zlib-1.2.3.tar.gz
2.- Esos archivos deberían estar, por ejemplo, en una carpeta llamada tars en /. Yo voy a asumir que van en (/TARS). Iniciemos la descompresión. Lo primero es lo extra en este caso:
ZLIB: ----- cd /opt tar -xvzf /TARS/zlib-1.2.3.tar.gz cd zlib-1.2.3 ./configure make make install
JASPER: ------- cd /opt tar -xvzf /TARS/jasper-1.701.0.tar.gz cd jasper-1.701.0 ./configure make make install
LIBPNG: ------- cd /opt tar -xvzf /TARS/libpng-1.2.12.tar.gz cd libpng-1.2.12 ./configure make make install
3.- Ahora vamos con el netcdf. Para evitar rollos de versiones, sugiero descarguemos todos la misma, desde mi servidor:
www.cmc.org.ve/descargas/libs/netcdf.tar.gz
3.1.- Colóquenlo en /TARS (o donde estén colocando los contenedores tar). Descompriman,
tar -xvzf netcdf.tar.gz cd netcdf-3.6.2 export FC=ifort ./configure make; make install
Si el tar no funciona con netcdf.tar.gz, pues escribamos netcdf.tar.Z
NOTA: en algunas circunstancias se pueden presentar problemas en la compilaciòn. En estos casos puede ser ùtil seguir las instrucciones de http://software.intel.com/en-us/articles/performance-tools-for-software-developers-building-netcdf-with-the-intel-compilers/
4.- Comprobemos que esto último, que es crucial para WRF, está bien. Un
ls /usr/local/include/netcdf*
debe mostrar
/usr/local/include/netcdfcpp.h /usr/local/include/netcdf.inc /usr/local/include/netcdf.h /usr/local/include/netcdf.mod /usr/local/include/netcdf.hh
y un
ls /usr/local/lib/libnetcdf*
debe mostrar
/usr/local/lib/libnetcdf.a /usr/local/lib/libnetcdf_c++.la /usr/local/lib/libnetcdf_c++.a /usr/local/lib/libnetcdf.la
4.- Procedan ahora a /datos y creen la carpeta CWRF y descompriman:
mkdir CWRF cd CWRF tar -xvzf /TARS/WRFV3.3.TAR.gz tar -xvzf /TARS/WPSV3.3.TAR.gz
5.- Ahora nos dirigimos a la carpeta WRF3
cd WRF3
Necesitaremos ahora agregar unas nuevas líneas al /etc/bashrc. Son las que se ven a continuación:
export JASPERLIB=/opt/jasper-1.701.0 export JASPERINC=/opt/jasper-1.701.0 ulimit -s unlimited
Para actualizar las variables de ambiente, como es usual:
source /etc/bashrc
Ahora, desde aquí podemos seguir una de dos opciones. La primera es configurar desde cero el WRF, la segunda es descargar mi archivo de configuración (haremos esto si falla la primera opción, en cuyo caso hacer la solicitud por correo). En el mismo directorio escribimos,
./configure
Aparece lo siguiente:
** WARNING: No path to NETCDF and environment variable NETCDF not set. ** would you like me to try to fix? [y]
decimos "y" e incluimos los PATH:
/usr/local/include /usr/local/lib
en cada uno de los casos que pregunta. Si hemos hecho todo bien aparecerá un menú (al principio de todo indica que se han reconocido los caminos a la biblioteca JASPER):
------------------------------------------------------------------------ Please select from among the following supported platforms. 1. Linux i486 i586 i686, gfortran compiler with gcc (serial) 2. Linux i486 i586 i686, gfortran compiler with gcc (smpar) 3. Linux i486 i586 i686, gfortran compiler with gcc (dmpar) 4. Linux i486 i586 i686, gfortran compiler with gcc (dm+sm) 5. Linux i486 i586 i686, g95 compiler with gcc (serial) 6. Linux i486 i586 i686, g95 compiler with gcc (dmpar) 7. Linux i486 i586 i686, PGI compiler with gcc (serial) 8. Linux i486 i586 i686, PGI compiler with gcc (smpar) 9. Linux i486 i586 i686, PGI compiler with gcc (dmpar) 10. Linux i486 i586 i686, PGI compiler with gcc (dm+sm) 11. Linux x86_64 i486 i586 i686, ifort compiler with icc (serial) 12. Linux x86_64 i486 i586 i686, ifort compiler with icc (smpar) 13. Linux x86_64 i486 i586 i686, ifort compiler with icc (dmpar) 14. Linux x86_64 i486 i586 i686, ifort compiler with icc (dm+sm) 15. Linux i486 i586 i686 x86_64, PathScale compiler with pathcc (serial) 16. Linux i486 i586 i686 x86_64, PathScale compiler with pathcc (dmpar)
Enter selection [1-16] : 12
Mi selección es "12". Si lo que quieren es probar el WRF sin paralelismo, escojan 7 (imposibilita crear anidamientos) u 8 (con nidos).
6.- Compilación del WRF. Una vez hecho lo anterior, procedemos con la compilación:
./compile em_real 2>&1 | tee log.log
WRF es legendario por tener una compilación bastante larga. Vayan a hacer algo por lo menos por los próximos 40 minutos. Si desean ver cómo va la compilación, hagan un
vi log.log
en el mismo directorio en cuestión. Algunas notificaciones de la compilación se ven directamente en la concha donde enviamos a hacer el trabajo (no aparecen estos mensajes en el log.log). Los mismos son importantes, en particular si hay un error aparecerá en la pantalla en donde ordenamos el "compile em_real".
NOTA: Si usted llegara a observar mensajes de este tipo:
COMPILING module_first_rk_step_part2.F WITH OMP module_first_rk_step_part2.f90(5): (col. 14) remark: An internal threshold was exceeded: loops may not be vectorized or parallelized. Try to reduce routine sizemodule_first_rk_step_part1.f90(5): (col. 14) remark: An internal threshold was exceeded: loops may not be vectorized or parallelized. Try to reduce routine size.
Usted debe parar la compilación haciendo control-c y editar el archivo configure.wrf , ubique en ese archivo la línea:
FCOPTIM = -O3 (en algunos casos aparece -O2) y cámbiela por esta otra: FCOPTIM = -O3 -mP2OPT_vec_xform_level=103
Guarde los cambios en el archivo y ahora haga: ./clean y luego nuevamente ./compile em_real 2>&1 | tee log.log
7.- Probando el WRF. Si todo ha salido bien, una prueba preliminar es hacer un
ls run
Deben aparecer unos enlaces simbólicos: nup.exe, ndown.exe y sobe todo real.exe y wrf.exe. Si aparecen resaltado en rojo, algo no ha salido nada bien y deben comunicarse conmigo. Si esto aparece bien, haremos una prueba adicional: una ejecución corta del WRF.
Para ello, descargaremos unos datos de prueba ya en formato intermedio WRF.
http://www.mmm.ucar.edu/wrf/src/data/jan00_wps.tar.gz
o bien directamente en el terminal
cd test/em_real wget -c http://www.mmm.ucar.edu/wrf/src/data/jan00_wps.tar.gz tar -xvzf jan00_wps.tar.gz
Tenemos ahora la inicialización del WRF para probar. Si todo va bien, los siguientes comandos no generarán errores:
cp namelist.input.jan00 namelist.input ./real.exe
Cuando finalice (no tarda mucho), corremos el wrf propiamente dicho.
./wrf.exe
Esto tardará unos cuantos minutos. El progreso de la ejecución (24 horas en total) se aprecia en la pantalla. En este ejemplo se hace downscaling modo tiempo con dos dominios. Si al final se aprecia el mensaje
COMPLETED SUCCESFULLY
entonces puede Vd. celebrar su instalación del WRF.
8.- WPS (WRF PREPROCESING SYSTEM) Pasamos ahora a la compilación del WPS.
cd /datos/CWRF/WPS
Encontraremos en este directorio ejecutables semejantes a los que corrimos en WRFV2. Primero
./configure
Tras escoger la opción correspondiente, ejecutamos
./compile
La compilación es considerablemente más corta que la del WRF.
NOTA: Datos disponibles (formato grb) para probar el WPS pueden encontrarse en http://www.mmm.ucar.edu/wrf/users/download/free_data.html
9.- Domain Wizard. Existe una aplicación multiplataforma (en Java) que puede emplearse para hacer todo el preprocesamiento del WRF. Es una especie de GUI para WPS. Puede descargarse de
http://wrfportal.org/domainwizard/WRFDomainWizard.zip
Lo colocamos en la carpeta del WPS o del WRF y lo descomprimimos
gunzip WRFDomainWizard.zip
Y procedemos a correrlo:
./run_DomainWizard
Lo demás creo que es bastante intuitivo. Lo importante es tener claro dónde está cada cosa. Recomiendo crear, al nivel del directorio del WRF (el que contiene el WPS y el WRFV2) un directorio llamado Dominios, donde podamos ir colocando los distintos dominios que se creen.
Si hay algún problema reportarlo a mi correo. Si no, podemos pasar a realizar una ejecución de pronóstico en modo tiempo con WRF.
