Scheduled Downtime
On Friday 21 April 2023 @ 5pm MT, this website will be down for maintenance and expected to return online the morning of 24 April 2023 at the latest

Tutorial Buil WRF in Raspberry Pi 3B+

israelmp

New member
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:
Sin embargo posee 4 puertos USB 2.0 con soporte para un máximo de 300 Mbps.

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+:

Configuració del hardware: Esta configuración aseguara un flujo de datos sin quiebres durante la compilación y ejecución.

  1. Setear Raspi Debian en micro sd con Balena balenaEtcher - Flash OS images to SD cards & USB drives
  2. Formatear tarjetas microSD como ext4
  3. Crear uidad SWAP con tarjeta de 32 GB How to Add Swap Space on Debian 10 Linux usar los 32 gb como swap
  4. Destina microsSD como unidad A
  5. Destina microsSD como unidad B
  6. Montar unidades en archivo FSTAB mediante UIDD
  7. La unidad A estará destina a contener: librerias ($DIR/brib2, $DIR/netcdf, $DIR/openmpi, etc), WRF, WPS, DATA y WPS_GEOG
  8. 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.

IMG_20221024_110228291.jpg


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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:
Top