Ejemplo WRF
Ejecución de WRF mediante el uso de módulos
Este documento tiene por objetivo guiar a los usuario del Laboratorio Nacional de Supercomputación NLHPC en en el proceso de ejecución de una simulación del modelo WRF mediante la cargar los módulos disponibles en nuestro [Gestor de Módulos LMOD https://wiki.nlhpc.cl/Lmod].
Los pasos necesarios para realizar una simulación son los siguientes:
Realizar la carga de módulos correspondiente a la versión de WRF/WPS deseada por el usuario
En este paso, el usuario podrá buscar mediante el sistema gestor de módulos LMOD las versiones de WRF y WPS disponibles, considerando que para una correcta ejecución de una simulación las versiones de WRF y WPS deben ser lo mas parecidas posibles.
Para realizar la búsqueda de módulos WRF y WPS, el usuario deberá ejecutar los comandos ml spider WRF
y ml spider WPS
. Lo que mostrará la siguiente información
(base) [usuario@leftraru1 run]$ ml spider WRF ------------------------------------------------------------------------------------------------------------------- WRF: ------------------------------------------------------------------------------------------------------------------- Description: The Weather Research and Forecasting (WRF) Model is a next-generation mesoscale numerical weather prediction system designed to serve both operational forecasting and atmospheric research needs. Versions: WRF/3.7.1-dm+sm-polar WRF/3.7.1-dm+sm WRF/3.9.1-dm+sm+chem WRF/3.9.1-dm+sm-polar WRF/3.9.1-dmpar+chem WRF/4.0.3-dm+sm WRF/4.1-dm+sm WRF/4.1.2-dm+sm+oasis WRF/4.1.2-dm+sm WRF/4.1.3-dmpar WRF/4.1.5-dm+sm WRF/4.1.5-dmpar WRF/4.2.1-dmpar+xios+oasis WRF/4.2.2-dm+sm+chem WRF/4.2.2-dm+sm WRF/4.2.2-dmpar+chem WRF/4.3-dmpar WRF/4.3.1-dmpar+da WRF/4.3.2-dm+sm+chem WRF/4.3.2-dm+sm WRF/4.3.2-dmpar+chem WRF/4.3.2-dmpar WRF/4.3.3-dmpar WRF/4.4-dm+sm+chem+kpp WRF/4.4-dm+sm+chem WRF/4.4-dmpar+chem WRF/4.4-dmpar Other possible modules matches: CALWRF WRFDA WRFPLUS ------------------------------------------------------------------------------------------------------------------- To find other possible module matches execute: $ module -r spider '.*WRF.*' ------------------------------------------------------------------------------------------------------------------- For detailed information about a specific "WRF" module (including how to load the modules) use the module's full name. For example: $ module spider WRF/4.3.3-dmpar -------------------------------------------------------------------------------------------------------------------
Mismo procedimiento para el caso de WPS
(base) [usuario@leftraru1 run]$ ml spider WPS ------------------------------------------------------------------------------------------------------------------- WPS: ------------------------------------------------------------------------------------------------------------------- Description: WRF Preprocessing System (WPS) for WRF. The Weather Research and Forecasting (WRF) Model is a next-generation mesoscale numerical weather prediction system designed to serve both operational forecasting and atmospheric research needs. Versions: WPS/3.7.1-dmpar WPS/4.0.3-dmpar WPS/4.1-dmpar WPS/4.2-dmpar WPS/4.3.1-dmpar ------------------------------------------------------------------------------------------------------------------- For detailed information about a specific "WPS" module (including how to load the modules) use the module's full name. For example: $ module spider WPS/4.3.1-dmpar -------------------------------------------------------------------------------------------------------------------
Ahora bien, una vez elegidos los módulos indicados, se procede a su carga en el sistema
ml WRF/4.1.3-dmpar ml WPS/4.2-dmpar
Crear un directorio de trabajo para alojar la versión de WRF/WPS cargados previamente.
cd ~ mkdir TEST_WRF cp -rv /home/lmod/software/WRF/4.1.3-intel-2019b-dmpar/WRF-4.1.3 ~/TEST_WRF cp -rv /home/lmod/software/WPS/4.2-intel-2019b-dmpar/WPS-4.2 ~/TEST_WRF
Descargar y descomprimir el archivo WPS_GEOG
cd ~/TEST_WRF/WPS-4.2 wget https://www2.mmm.ucar.edu/wrf/src/wps_files/geog_high_res_mandatory.tar.gz tar -xvzf geog_high_res_mandatory.tar.gz
Editar el archivo namelist.wps, de manera que pueda linkear apropiadamente los datos de geografía
&share wrf_core = 'ARW', max_dom = 1, start_date = '2021-01-30_12:00:00','2021-01-30_12:00:00', end_date = '2021-01-30_18:00:00','2021-01-30_21:00:00', interval_seconds = 10800 / &geogrid parent_id = 1, 1, parent_grid_ratio = 1, 3, i_parent_start = 1, 53, j_parent_start = 1, 25, e_we = 150, 220, e_sn = 130, 214, geog_data_res = 'default','default', dx = 27000, dy = 27000, map_proj = 'lambert', ref_lat = -33.00, ref_lon = -80.00, truelat1 = -32.0, truelat2 = -34.0, stand_lon = -71.0, geog_data_path = './WPS_GEOG/' / &ungrib out_format = 'WPS', prefix = 'FILE', / &metgrid fg_name = 'FILE' /
En este ejemplo se ha descargado la data geog mandatoria, pero existe data opcional en caso de ser necesaria.
WPS_GEOG se descargó en /home/nombre_usuario/TEST_WRF/WPS-4.2
pero cada usuario puede descargarla donde desee. Y como se puede apreciar, la ruta geog_data_path
es la que debe apuntar a esta carpeta.
Enlazar simbólicamente la Vtable a utilizar, el cual debe quedar en la ruta donde está el preprocesador WPS
cd ~/TEST_WRF/WPS-4.2 ln -s ungrib/Variable_Tables/Vtable.GFS Vtable
Ejecutar el comando geogrid.exe, el cual nos permitirá generar nuestro dominio.
srun geogrid.exe
Descargar datos de CI y CB para realizar el preproceso de datos
En este caso, clonaremos desde el git NLHPC datos de prueba, los cuales nos permitirán ejecutar los procesos de ungrib.exe y metgrid.exe respectivamente. En este proceso, copiaremos los datos y desde la carpeta de WPS realizaremos el proceso de linkeo a dichos datos mediante el script link_grib.csh. Finalmente ejecutaremos ungrib.exe y metgrid.exe
cd ~/TEST_WRF/ wget https://github.com/nlhpc-training/Tutorial-WRF/archive/refs/heads/main.zip unzip main.zip cd ~/TEST_WRF/WPS-4.2/ ./link_grib.csh ~/TEST_WRF/Tutorial-WRF-main/ srun ungrib.exe srun metgrid.exe
En este ejemplo se ha ejecutado interactivamente el preproceso de datos ya que el dominio y la data han sido pensados para un ejercicio de poca duración. Ahora bien, en el caso de que el usuario deba preprocesar información de largo aliento, se recomienda crear un script y lanzarlo mediante sbatch.
Crear el archivo de configuración namelist.input según lo requerido
Para este caso, ingresamos a la carpeta run de WRF y editaremos el archivo namelist.input
cd ~/TEST_WRF/WRF-4.1.3/run/ vi namelist.input
De manera tal que quede como el siguiente.
&time_control run_days = 0, run_hours = 6, run_minutes = 0, run_seconds = 0, start_year = 2021, 2021, start_month = 01, 01, start_day = 30, 29, start_hour = 12, 00, end_year = 2021, 2021, end_month = 01, 02, end_day = 30, 01, end_hour = 18, 00, interval_seconds = 10800 input_from_file = .true.,.true., history_interval = 60, 60, frames_per_outfile = 1, 1, restart = .false., restart_interval = 7200, io_form_history = 2 io_form_restart = 2 io_form_input = 2 io_form_boundary = 2 / &domains time_step = 60, time_step_fract_num = 0, time_step_fract_den = 1, max_dom = 1, e_we = 150, 220, e_sn = 130, 214, e_vert = 45, 45, dzstretch_s = 1.1 p_top_requested = 5000, num_metgrid_levels = 34, num_metgrid_soil_levels = 4, dx = 27000, dy = 27000, grid_id = 1, 2, parent_id = 0, 1, i_parent_start = 1, 53, j_parent_start = 1, 25, parent_grid_ratio = 1, 3, parent_time_step_ratio = 1, 3, feedback = 1, smooth_option = 0 / &physics physics_suite = 'CONUS' mp_physics = -1, -1, cu_physics = -1, -1, ra_lw_physics = -1, -1, ra_sw_physics = -1, -1, bl_pbl_physics = -1, -1, sf_sfclay_physics = -1, -1, sf_surface_physics = -1, -1, radt = 15, 15, bldt = 0, 0, cudt = 0, 0, icloud = 1, num_land_cat = 21, sf_urban_physics = 0, 0, fractional_seaice = 1, / &fdda / &dynamics hybrid_opt = 2, w_damping = 0, diff_opt = 2, 2, km_opt = 4, 4, diff_6th_opt = 0, 0, diff_6th_factor = 0.12, 0.12, base_temp = 290. damp_opt = 3, zdamp = 5000., 5000., dampcoef = 0.2, 0.2, khdif = 0, 0, kvdif = 0, 0, non_hydrostatic = .true., .true., moist_adv_opt = 1, 1, / scalar_adv_opt = 1, 1, / gwd_opt = 1, 0, / &bdy_control spec_bdy_width = 5, specified = .true. / &grib2 / &diags diag_nwp2 = 1 / &namelist_quilt nio_tasks_per_group = 0, nio_groups = 1, /
Ejecución de real.exe
En este punto, debemos linkear los datos met_em resultantes del proceso metgrid.exe
y posteriormente ejecutar el comando real.exe
.
cd ~/TEST_WRF/WRF-4.1.3/run/ ln -s ~/TEST_WRF/WPS-4.2/met_em.d01.2021-01-30_1* . srun real.exe
Realizar un Script de ejecución de WRF, de tal manera que se pueda enviar esta tarea al gestor SLURM para su procesamiento
Creamos el archivo lanza-wrf-sh
y lo editamos de la siguiente manera.
#!/bin/bash #---------------Script SBATCH - NLHPC ---------------- #SBATCH -J TestJob_wrf #SBATCH -p slims #SBATCH -n 20 #SBATCH --ntasks-per-node=20 #SBATCH -c 1 #SBATCH --mem-per-cpu=2300 #SBATCH --mail-user=usuario@nlhpc.cl #SBATCH --mail-type=ALL #SBATCH -o asd_%j.out #SBATCH -e asd_%j.err #-----------------Toolchain--------------------------- ml purge ml intel/2019b # ----------------Modulos---------------------------- ml WPS/4.2-dmpar WRF/4.1.3-dmpar # ----------------Comando-------------------------- cd ~/TEST_WRF/WRF-4.1.3/run/ time mpiexec wrf.exe
Finalmente ejecutamos este script mediante el comando sbatch
sbatch lanza-wrf.sh