Ejemplo WRF

De NLHPC
La versión para imprimir ya no se admite y puede contener errores de representación. Actualiza los marcadores del navegador y utiliza en su lugar la función de impresión predeterminada del navegador.

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.

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
-------------------------------------------------------------------------------------------------------------------
    1. 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 ```

    1. 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 ```

    1. 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.

    1. 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 ```

    1. Ejecutar el comando geogrid.exe, el cual nos permitirá generar nuestro dominio.

``` srun geogrid.exe ```

    1. 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.

    1. 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 de manera tal que quede como el siguiente.

``` cd ~/TEST_WRF/WRF-4.1.3/run/ vi namelist.input ```

```

&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,
/

```

    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 ```

    1. 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.

```

  1. !/bin/bash
  2. ---------------Script SBATCH - NLHPC ----------------
  3. SBATCH -J TestJob_wrf
  4. SBATCH -p slims
  5. SBATCH -n 20
  6. SBATCH --ntasks-per-node=20
  7. SBATCH -c 1
  8. SBATCH --mem-per-cpu=2300
  9. SBATCH --mail-user=usuario@nlhpc.cl
  10. SBATCH --mail-type=ALL
  11. SBATCH -o asd_%j.out
  12. SBATCH -e asd_%j.err
  1. -----------------Toolchain---------------------------

ml purge ml intel/2019b

  1. ----------------Modulos----------------------------

ml WPS/4.2-dmpar WRF/4.1.3-dmpar

  1. ----------------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 ```