Saludos.
No existe una receta en la construcción de WRF y WPS que sea universal, cada sistema presenta sus propias complejidades, sin embargo, este pequeño tutorial expone una forma de implementar este modelo en una plataforma discreta, destinada al desarrollo de proyectos e instrudicir a niños al mundo de la electrónica.
La Raspberry Pi 3B+ tiene una configuración discreta:
Estos puertos USB son la clave para lograr la compilacion del model WRF y pricipalmente su ejecución.
REQUISITOS
Hardware:
Software
Compiladores:
Librerías que se deben compilar en la Raspberry Pi 3B+:
Configuració del hardware: Esta configuración aseguara un flujo de datos sin quiebres durante la compilación y ejecución.
Compilación (TARDA MUCHO TIEMPO PERO SE LOGRA) SE REQUIERE MUCHA PACIENCIA. TOMARÁ HORAS.
La compilación es sencilla se recomienda tomar las cosas con calma y leer las notas de instalación dentro de cada tar.gz y seguir la guía oficial:
Compiling WRF
Una vez que se tengan todas las librerias listas en momento de setear el entorno:
archivo: ~/.bashrc
#LIBRERIAS WRF
export DIR=/home/israelmp/a/librerias
#WRF
export WRF_DIR=../WRF
#Static Geography Data
export geog_data_path=/home/israelmp/a/WPS_GEOG
#FLAGS
export FFLAGS=-aarch64
export FCFLAGS=-aarch64
#GRIB2
export JASPERLIB=$DIR/grib2/lib
export JASPERINC=$DIR/grib2/include
export LDFLAGS="-L$DIR/grib2/lib -Wl,-rpath -Wl,$DIR/mpich/lib"
export CPPFLAGS=-I$DIR/grib2/include
#HDF5 (opcional)
export HDF5=$DIR/hdf5
export PATH=$DIR/hdf5/bin:$PATH
export LD_LIBRARY_PATH=$DIR/hdf5/lib:$LD_LIBRARY_PATH
export LD_RUN_PATH=$DIR/hdf5/lib:$LD_RUN_PATH
#NETCDF
export NETCDF=$DIR/netcdf
export PATH=$DIR/netcdf/bin:$PATH
export LD_LIBRARY_PATH=$DIR/netcdf/lib:$LD_LIBRARY_PATH
export LD_RUN_PATH=$DIR/netcdf/lib:$LD_RUN_PATH
#MPICH opcional
#export PATH=$DIR/mpich/bin:$PATH
#export LD_LIBRARY_PATH=$DIR/mpich/lib:$LD_LIBRARY_PATH
#export LD_RUN_PATH=$DIR/mpich/lib:$LD_RUN_PATH
#OPEN-MPI
export PATH=$DIR/openmpi/bin:$PATH
export LD_LIBRARY_PATH=$DIR/openmpi/lib:$LD_LIBRARY_PATH
export LD_RUN_PATH=$DIR/openmpi/lib:$LD_RUN_PATH
export LDFLAGS="-Wl,-rpath -Wl,$DIR/openmpi/lib"
IMPORTANTE: Reinciar el sistema y proceder a compilar WRF
Construcción de WRF
git clone --recurse-submodules GitHub - wrf-model/WRF: The official repository for the Weather Research and Forecasting (WRF) model && cd WRF
./configure
./compile em_real | tee LOG.COMPILE
Si todo sale bien
==========================================================================
build started: Tue Sep 27 16:24:30 UTC 2022
build completed: Wed Sep 28 11:10:57 UTC 2022
---> Executables successfully built <---
-rwxr-xr-x 1 israelmp israelmp 31604016 Sep 28 11:10 main/ndown.exe
-rwxr-xr-x 1 israelmp israelmp 31684968 Sep 28 11:10 main/real.exe
-rwxr-xr-x 1 israelmp israelmp 31157496 Sep 28 11:10 main/tc.exe
-rwxr-xr-x 1 israelmp israelmp 38078472 Sep 28 10:38 main/wrf.exe
==========================================================================
ls -la main/*.exe
-rwxr-xr-x 1 israelmp israelmp 31604016 Sep 28 11:10 main/ndown.exe
-rwxr-xr-x 1 israelmp israelmp 31684968 Sep 28 11:10 main/real.exe
-rwxr-xr-x 1 israelmp israelmp 31157496 Sep 28 11:10 main/tc.exe
-rwxr-xr-x 1 israelmp israelmp 38078472 Sep 28 10:38 main/wrf.exe
Es importante mencionar que no lo gré a la primera, fueron muchos, muchos intentos.
Compilación de WPS
git clone --recurse-submodules GitHub - wrf-model/WPS: The official repository for the WRF Preprocessing System (WPS) && cd WPS
export WRF_DIR=../WRF
nano configure.wps
aseguarse de editar las linea WRF_LIB y poneral final de la linea: -fopenmp :
WRF_LIB = -L$(WRF_DIR)/external/io_grib1 -lio_grib1 \
-L$(WRF_DIR)/external/io_grib_share -lio_grib_share \
-L$(WRF_DIR)/external/io_int -lwrfio_int \
-L$(WRF_DIR)/external/io_netcdf -lwrfio_nf \
-L$(NETCDF)/lib -lnetcdff -lnetcdf -fopenmp
./compile | tee LOG.COMPILE
YES!!!
ls -la *.exe
lrwxrwxrwx 1 israelmp israelmp 23 Sep 28 14:26 geogrid.exe -> geogrid/src/geogrid.exe
lrwxrwxrwx 1 israelmp israelmp 23 Sep 28 14:30 metgrid.exe -> metgrid/src/metgrid.exe
lrwxrwxrwx 1 israelmp israelmp 21 Sep 28 14:28 ungrib.exe -> ungrib/src/ungrib.exe
Consideración final
El debate si es de utilidad o no manipular el Modelo WRF en una Raspberry Pi 3B+ está abaierto y queda en cada uno y no es el objetivo de está aportación.
En el caso de quien suscribe este documento, se realiza el proceso con el fines de apredizaje e introducir a un niño inquieto en este mundo de la meteorología, con la compilación de pequeñes dominios locales no anidados.
Las deliberacion sobre su utilidad dependerán de cada interesado y sus habilidades.
Este tutorial es PRODUCTO intentar construir WRF en este pequeño dispositivo durante algunas semanas, no se logró al primer intento.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Título: Tutorial Buil WRF in Raspberry Pi 3B+
Autor: Israel Martínez Peñaflor
Email: israelmp@msn.com
Localidad: Coyoacán, Ciudad de México.
Premera Edición: 24/OCTUBRE/2022
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
No existe una receta en la construcción de WRF y WPS que sea universal, cada sistema presenta sus propias complejidades, sin embargo, este pequeño tutorial expone una forma de implementar este modelo en una plataforma discreta, destinada al desarrollo de proyectos e instrudicir a niños al mundo de la electrónica.
La Raspberry Pi 3B+ tiene una configuración discreta:
- SoC: Broadcom BCM2837B0 quad-core A53 (ARMv8) 64-bit @ 1.4GHz
- GPU: Broadcom Videocore-IV
- RAM: 1GB LPDDR2 SDRAM
- Buy a Raspberry Pi 3 Model B+ – Raspberry Pi
Estos puertos USB son la clave para lograr la compilacion del model WRF y pricipalmente su ejecución.
REQUISITOS
Hardware:
- Placa Raspberry Pi 3B+
- Tarjeta micro SD clase 10 mayor a 64 GB para sistema. (En mi caso use Kingston Canvas calse 10 de 128 GB)
- Tarjeta micro SD clase 10 mayor a 64 GB para sistema como unidad A. (En mi caso use Kingston Canvas clase 10 de 128 GB)
- Tarjeta micro SD clase 10 mayor a 32 GB para sistema como unidad B. (En mi caso use Kingston Canvas clase 10 de 128 GB)
- Tarjeta micro SD clase 10 mayor a 32 GB configurada como SWAP. (En mi caso use Kingston Canvas clase 10 de 32 GB)
Software
- Raspi Debian sin inerfaz gráfica, 2022.01.21, 11 (Bullseye), 3, 3B+
- Tested images
Compiladores:
- GNU Fortran (Debian 10.2.1-6) 10.2.1 20210110 (apt install gfortran)
- gcc (Debian 10.2.1-6) 10.2.1 20210110 (apt install gcc)
- cpp (Debian 10.2.1-6) 10.2.1 20210110 (apt install cpp)
- g++ (Debian 10.2.1-6) 10.2.1 20210110 (apt install g++)
- openmpi-4.1.4 (debe compialarse) (Open MPI: Open Source High Performance Computing) o bien (apt install openmpi-bin openmpi-common)
Librerías que se deben compilar en la Raspberry Pi 3B+:
- openmpi-4.1.4 (también es posible compilar mpich-4.0.2 MPICH | High-Performance Portable MPI) (make instal in $DIR/openmpi o bien $DIR/mpich)
- hdf5-1.12.2 (opcional) Download HDF5® - The HDF Group (make instal in $DIR/hdf5)
- netCDF-Fortran 4.6.0 netCDF Downloads (make instal in $DIR/netcdf)
- netCDF-C 4.9.0 netCDF Downloads (make instal in $DIR/netcdf)
- NOTA: Tanto neccdf-c como netcdf-fortran deberan tener el mismo directorio destino ( $DIR/netcdf)
- jasper-1.900.1 https://ece.engr.uvic.ca/~frodo/jasper/#download (También puede ser JasPer 2.0.14) (make instal in $DIR/grib2)
- libpng-1.6.38 https://download.sourceforge.net/libpng (make instal in $DIR/grib2)
- szip-2.1.1 Index of /ftp/lib-external/szip (make instal in $DIR/grib2)
- zlib-1.2.12 zlib Home Site (make instal in $DIR/grib2)
- WRF Model Version 4.4.1 GitHub - wrf-model/WRF: The official repository for the Weather Research and Forecasting (WRF) model
- WRF Pre-Processing System Version 4.4 GitHub - wrf-model/WPS: The official repository for the WRF Preprocessing System (WPS)
- Datos terrestres alta resolución Static Data Downloads
Configuració del hardware: Esta configuración aseguara un flujo de datos sin quiebres durante la compilación y ejecución.
- Setear Raspi Debian en micro sd con Balena balenaEtcher - Flash OS images to SD cards & USB drives
- Formatear tarjetas microSD como ext4
- Crear uidad SWAP con tarjeta de 32 GB How to Add Swap Space on Debian 10 Linux usar los 32 gb como swap
- Destina microsSD como unidad A
- Destina microsSD como unidad B
- Montar unidades en archivo FSTAB mediante UIDD
- La unidad A estará destina a contener: librerias ($DIR/brib2, $DIR/netcdf, $DIR/openmpi, etc), WRF, WPS, DATA y WPS_GEOG
- La unidad B estará destina a contener: TODOS los descargables los tar.gz, zip que serán compilados y usados.
Compilación (TARDA MUCHO TIEMPO PERO SE LOGRA) SE REQUIERE MUCHA PACIENCIA. TOMARÁ HORAS.
La compilación es sencilla se recomienda tomar las cosas con calma y leer las notas de instalación dentro de cada tar.gz y seguir la guía oficial:
Compiling WRF
Una vez que se tengan todas las librerias listas en momento de setear el entorno:
archivo: ~/.bashrc
#LIBRERIAS WRF
export DIR=/home/israelmp/a/librerias
#WRF
export WRF_DIR=../WRF
#Static Geography Data
export geog_data_path=/home/israelmp/a/WPS_GEOG
#FLAGS
export FFLAGS=-aarch64
export FCFLAGS=-aarch64
#GRIB2
export JASPERLIB=$DIR/grib2/lib
export JASPERINC=$DIR/grib2/include
export LDFLAGS="-L$DIR/grib2/lib -Wl,-rpath -Wl,$DIR/mpich/lib"
export CPPFLAGS=-I$DIR/grib2/include
#HDF5 (opcional)
export HDF5=$DIR/hdf5
export PATH=$DIR/hdf5/bin:$PATH
export LD_LIBRARY_PATH=$DIR/hdf5/lib:$LD_LIBRARY_PATH
export LD_RUN_PATH=$DIR/hdf5/lib:$LD_RUN_PATH
#NETCDF
export NETCDF=$DIR/netcdf
export PATH=$DIR/netcdf/bin:$PATH
export LD_LIBRARY_PATH=$DIR/netcdf/lib:$LD_LIBRARY_PATH
export LD_RUN_PATH=$DIR/netcdf/lib:$LD_RUN_PATH
#MPICH opcional
#export PATH=$DIR/mpich/bin:$PATH
#export LD_LIBRARY_PATH=$DIR/mpich/lib:$LD_LIBRARY_PATH
#export LD_RUN_PATH=$DIR/mpich/lib:$LD_RUN_PATH
#OPEN-MPI
export PATH=$DIR/openmpi/bin:$PATH
export LD_LIBRARY_PATH=$DIR/openmpi/lib:$LD_LIBRARY_PATH
export LD_RUN_PATH=$DIR/openmpi/lib:$LD_RUN_PATH
export LDFLAGS="-Wl,-rpath -Wl,$DIR/openmpi/lib"
IMPORTANTE: Reinciar el sistema y proceder a compilar WRF
Construcción de WRF
git clone --recurse-submodules GitHub - wrf-model/WRF: The official repository for the Weather Research and Forecasting (WRF) model && cd WRF
./configure
./compile em_real | tee LOG.COMPILE
Si todo sale bien
==========================================================================
build started: Tue Sep 27 16:24:30 UTC 2022
build completed: Wed Sep 28 11:10:57 UTC 2022
---> Executables successfully built <---
-rwxr-xr-x 1 israelmp israelmp 31604016 Sep 28 11:10 main/ndown.exe
-rwxr-xr-x 1 israelmp israelmp 31684968 Sep 28 11:10 main/real.exe
-rwxr-xr-x 1 israelmp israelmp 31157496 Sep 28 11:10 main/tc.exe
-rwxr-xr-x 1 israelmp israelmp 38078472 Sep 28 10:38 main/wrf.exe
==========================================================================
ls -la main/*.exe
-rwxr-xr-x 1 israelmp israelmp 31604016 Sep 28 11:10 main/ndown.exe
-rwxr-xr-x 1 israelmp israelmp 31684968 Sep 28 11:10 main/real.exe
-rwxr-xr-x 1 israelmp israelmp 31157496 Sep 28 11:10 main/tc.exe
-rwxr-xr-x 1 israelmp israelmp 38078472 Sep 28 10:38 main/wrf.exe
Es importante mencionar que no lo gré a la primera, fueron muchos, muchos intentos.
Compilación de WPS
git clone --recurse-submodules GitHub - wrf-model/WPS: The official repository for the WRF Preprocessing System (WPS) && cd WPS
export WRF_DIR=../WRF
nano configure.wps
aseguarse de editar las linea WRF_LIB y poneral final de la linea: -fopenmp :
WRF_LIB = -L$(WRF_DIR)/external/io_grib1 -lio_grib1 \
-L$(WRF_DIR)/external/io_grib_share -lio_grib_share \
-L$(WRF_DIR)/external/io_int -lwrfio_int \
-L$(WRF_DIR)/external/io_netcdf -lwrfio_nf \
-L$(NETCDF)/lib -lnetcdff -lnetcdf -fopenmp
./compile | tee LOG.COMPILE
YES!!!
ls -la *.exe
lrwxrwxrwx 1 israelmp israelmp 23 Sep 28 14:26 geogrid.exe -> geogrid/src/geogrid.exe
lrwxrwxrwx 1 israelmp israelmp 23 Sep 28 14:30 metgrid.exe -> metgrid/src/metgrid.exe
lrwxrwxrwx 1 israelmp israelmp 21 Sep 28 14:28 ungrib.exe -> ungrib/src/ungrib.exe
Consideración final
El debate si es de utilidad o no manipular el Modelo WRF en una Raspberry Pi 3B+ está abaierto y queda en cada uno y no es el objetivo de está aportación.
En el caso de quien suscribe este documento, se realiza el proceso con el fines de apredizaje e introducir a un niño inquieto en este mundo de la meteorología, con la compilación de pequeñes dominios locales no anidados.
Las deliberacion sobre su utilidad dependerán de cada interesado y sus habilidades.
Este tutorial es PRODUCTO intentar construir WRF en este pequeño dispositivo durante algunas semanas, no se logró al primer intento.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Título: Tutorial Buil WRF in Raspberry Pi 3B+
Autor: Israel Martínez Peñaflor
Email: israelmp@msn.com
Localidad: Coyoacán, Ciudad de México.
Premera Edición: 24/OCTUBRE/2022
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Last edited: