すべてのプロダクト
Search
ドキュメントセンター

Elastic High Performance Computing:WRF を使用してハイパフォーマンスコンピューティングを実行する

最終更新日:Jan 11, 2025

このトピックでは、気象シミュレーションのために Elastic High Performance Computing (E-HPC) クラスターで Weather Research and Forecasting Model (WRF) を実行する方法について説明します。

背景情報

WRF は、大気研究と運用予報アプリケーションの両方のために設計された次世代メソスケール数値天気予報システムです。 WRF は、実際の大気条件または理想化された条件に基づいてシミュレーションを作成できます。 WRF は、並列計算を可能にし、システムの拡張性を提供するソフトウェアアーキテクチャを使用しています。 このモデルは、幅広い気象アプリケーションで使用できます。 詳細については、WRF 公式 Web サイトをご覧ください。WRF

準備

  1. E-HPC クラスターを作成します。 詳細については、「ウィザードを使用してクラスターを作成する」をご参照ください。

    E-HPC クラスターのパラメーターを構成します。次の表にパラメーターを示します。

    パラメーター

    説明

    ハードウェア設定

    2 つの管理ノード、1 つの計算ノード、および 1 つのログオンノードで構成される標準クラスターをデプロイします。すべてのノードは ecs.c7.large Elastic Compute Service (ECS) インスタンスです。各インスタンスには 2 個の vCPU、4 GiB のメモリ、および 1 つの 2.7 GHz 第3世代 Intel Xeon Scalable (Ice Lake) プロセッサーが搭載されています。

    ソフトウェア設定

    CentOS 7.6 パブリックイメージと Slurm スケジューラーをデプロイします。 VNC をオンにします。

  2. クラスターユーザーを作成します。 詳細については、「ユーザーを管理する」をご参照ください。

    この例では、ユーザー名 wrftest と権限グループ sudo を使用します。

  3. クラスターに WRF と MPICH をインストールします。 詳細については、「ソフトウェアをインストールおよびアンインストールする」をご参照ください。

    次のソフトウェアをインストールします。

    • WRF-MPICH V3.8.1

    • MPICH V3.2

  4. クラスターに NCL をインストールします。

    NCL は、気象データを処理および視覚化するために使用されます。 NCL のインストール方法については、「NCL のインストール」をご覧ください。

    説明

    デフォルトでは、CentOS イメージには以前のバージョンの Python がインストールされています。 NCL をインストールする前に、Python をアップグレードする必要があります。 Python のダウンロード方法については、「Python のダウンロード」をご覧ください。

手順 1:geogrid.exe を実行する

geogrid.exe プログラムは、シミュレーションドメインを定義し、静的な地理データをドメインに水平方向に補間します。

  1. クラスターにログオンします。

    sudo ユーザーとしてクラスターにログオンします。 詳細については、「クラスターにログオンする」をご参照ください。

  2. WRF の必要なソフトウェアがクラスターにインストールされているかどうかを確認します。

    export MODULEPATH=/opt/ehpcmodulefiles/
    module avail

    次のコードは、返される出力の例を示しています。

    ----------------------------------------------------------------------------------------------------------- /opt/ehpcmodulefiles/ ------------------------------------------------------------------------------------------------------------
    mpich/3.2       vnc             wrf-mpich/3.8.1
  3. WRF ソフトウェア環境を読み込みます。

    module load wrf-mpich/3.8.1 mpich/3.2
    echo $WPSHOME $WRFHOME
  4. インストールされている WRF Preprocessing System (WPS) と WRF ソフトウェアを作業ディレクトリにコピーします。

    説明

    コマンドの $WPSCOPYHOME$WRFCOPYHOME を実際の作業ディレクトリに置き換えます。このトピックでは、/home/wrftest を例として使用します。 WPS ディレクトリと WRFV3 ディレクトリが作業ディレクトリに生成されます。

    cp -r $WPSHOME $WPSCOPYHOME
    cp -r $WRFHOME $WRFCOPYHOME
  5. WPS ディレクトリに移動し、地理データファイルをダウンロードして解凍します。

    説明

    この例では、geog_complete.tar.gz ファイルを使用します。ビジネス要件に基づいて別の地理データファイルをダウンロードできます。 詳細については、WRF 公式 Web サイトをご覧ください。

    cd /home/wrftest/WPS
    wget https://www2.mmm.ucar.edu/wrf/src/wps_files/geog_complete.tar.gz
    tar -zxvf geog_complete.tar.gz
  6. GEOGRID.TBL ファイルをリンクします。

    GEOGRID.TBL ファイルは、&geogrid によって補間されるフィールドを決定します。

    ln -s geogrid/GEOGRID.TBL GEOGRID.TBL
  7. namelist.wps ファイルを編集します。

    namelist.wps ファイルは WPS の共有ファイルです。このファイルは、geogrid.exe、ungrib.exe、metgrid.exe などのメインプログラムのパラメーターを構成するために使用されます。各メインプログラムには、&geogrid、&ungrib、&metgrid という名前の排他的な namelist レコードがあります。3 つのプログラムには、&share という名前のグループレコードがあります。次の例は、必須パラメーターの推奨値を示しています。次の例で説明されていないパラメーターについては、デフォルト値を使用します。 namelist.wps ファイルのパラメーターとパラメーターの説明については、WRF 公式 Web サイトをご覧ください。

    説明
    • この例では、namelist.wps ファイルは /home/wrftest/WPS ディレクトリにあります。

    • ! を使用して namelist.wps ファイルのコメントを示します。

    ! &share のリクエストパラメーター。
    &share   
    ! wrf_core: WRF ダイナミカルコアを指定します。有効な値: ARW と NMM。デフォルト値: ARW。
    wrf_core = 'ARW', 
    ! start_date: シミュレーションの開始時刻を指定します。
    start_date = '2005-08-28_00:00:00',  
    ! end_date: シミュレーションの終了時刻を指定します。
    end_date = '2005-08-29_00:00:00',     
    interval_seconds = 21600,
    ! max_dom: ネストを含むモデルドメインの総数を指定します。この例では、このパラメーターは 1 に設定されています。
    max_dom = 1, 
    ! # io_form_geogrid: geogrid 出力ファイルの形式を指定します。
    io_form_geogrid = 2,    
    /
    
    ! &geogrid のリクエストパラメーター。
    ! # 親ドメイン、親からネストへのドメイン、グリッドサイズ比、地図投影などの情報を指定します。
    &geogrid
    parent_id = 1,
    parent_grid_ratio = 1,
    i_parent_start = 1,
    j_parent_start = 1,
    
    ! 西東方向と南北方向のグリッドポイント数を指定します。この例では、値を 98 と 70 に設定します。
    e_we = 98,       
    e_sn = 70,
    geog_data_res = 'default',
    
    ! 西東方向と南北方向のグリッド長を指定します。単位: メートル。この例では、値を 30000 と 30000 に設定します。
    dx = 30000,     
    dy = 30000,
    
    ! 投影モードを指定します。詳細については、WRF 公式 Web サイトをご覧ください。
    map_proj = 'mercator'
    
    ! ドメイン内の既知の場所の緯度と経度を指定します。
    ref_lat = 25.00,
    ref_lon = -89.00,
    
    ! 地図投影のパラメーターを指定します。値は投影によって異なります。
    truelat1 = 0.0,   
    truelat2 = 0.0,
    stand_lon = -89.0,
    ! geog_data_path = '静的地理データのパス'
    geog_data_path = '/home/wrftest/WPS/geog'
    /
    
    ! &ungrib のリクエストパラメーター。
    &ungrib
    ! out_format: ungrib.exe によって生成され、metgrid.exe で読み取る中間ファイルの形式を指定します。有効な値: WPS、SI、MM5。デフォルト値: WPS。
    out_format = 'WPS', 
    ! prefix: 中間ファイルのプレフィックスを指定します。プレフィックスにはパスを含めることができます。
    prefix = 'FILE'
    /
     
    ! &metgrid のリクエストパラメーター。
    &metgrid  
    ! fg_name: ungrib.exe によって生成されたファイルの名前を指定します。
    fg_name = 'FILE', 
    ! io_form_metgrid: metgrid.exe 出力ファイルの形式を指定します。
    ! 有効な値: 1、2、3。1 は拡張子が .int のバイナリファイルを示します。2 は拡張子が .nc の NetCDF ファイルを示します。3 は拡張子が .gr1 の GRIB1 ファイルを示します。
    ! デフォルト値: 2。
    io_form_metgrid = 2
    /
  8. 静的地理データをモデルドメインに補間します。

    ./geogrid.exe

    geogrid.exe を実行すると、geo_em.d0N.nc ファイルが /home/wrftest/WPS ディレクトリに生成されます。次のコードは、返される出力の例を示しています。

    WRF-1.png

手順 2:ungrib.exe を実行する

ungrib.exe プログラムは、GRIB ファイルから気象フィールドを抽出します。

  1. ハリケーン・カトリーナの気象データファイルをダウンロードして解凍します。

    説明

    この例では、Katrina.tar.gz ファイルを使用します。 Katrina.tar.gz をダウンロードするには、Katrina.tar.gz をクリックします。ビジネス要件に基づいて別の地理データファイルをダウンロードできます。 詳細については、WRF 公式 Web サイトをご覧ください。

    cd /home/wrftest/WPS
    wget http://www2.mmm.ucar.edu/wrf/TUTORIAL_DATA/Katrina.tar.gz
    tar -zxvf Katrina.tar.gz
  2. 次の link_grib.csh スクリプトを実行して、気象データをリンクします。

    ./link_grib.csh /home/wrftest/WPS/Katrina/avn*
  3. データファイルの Vtable をリンクします。

    この例では、Vtable.GFS を使用します。ビジネス要件に基づいて別の Vtable を選択できます。

    ln -sf ungrib/Variable_Tables/Vtable.GFS Vtable
  4. 必要な気象フィールドを抽出します。

    ./ungrib.exe

    ungrib.exe を実行すると、FILE:YYYY-MM-DD_hh* ファイルが /home/wrftes/WPS ディレクトリに生成されます。次のコードは、返される出力の例を示しています。

    WRF-2.png

手順 3:metgrid.exe を実行する

metgrid.exe プログラムは、geogrid.exe によって決定されたモデルドメインに気象フィールドを水平方向に補間します。

  1. GEOGRID.TBL ファイルをリンクします。

    GEOGRID.TBL ファイルは、metgrid.exe が気象フィールドをモデルドメインに水平方向に補間する方法を定義します。

    cd /home/wrftest/WPS
    ln -s metgrid/METGRID.TBL.ARW METGRID.TBL
  2. geogrid.exe によって決定されたモデルドメインに気象フィールドを水平方向に補間します。

    ./metgrid.exe

    metgrid.exe を実行すると、met_em.d0N.yyyy-mm-dd_hh:mm:ss.nc ファイルが /home/wrftes/WPS ディレクトリに生成されます。次のコードは、返される出力の例を示しています。

    WRF-3.png

手順 5:wrf.exe を実行する

wrf.exe プログラムは、予報データを保存します。

  1. WPS の処理結果をインポートします。

    cd /home/wrftest/WRFV3
    ln -s /home/wrftest/WPS/met_em.d01.2005-08-2*.
  2. namelist.input ファイルを編集します。

    cd /home/wrftest/WRFV3/run
    vim namelist.input

    namelist.input ファイルの &time_control および &domains に関連するパラメーターは、namelist.wps ファイルのパラメーターと同じである必要があります。このトピックでは、次のサンプル構成が使用されます。 namelist.input ファイルのパラメーターについては、「namelist.input」をご覧ください。

    &time_control
    run_days                            = 0,
    run_hours                           = 12,
    run_minutes                         = 0,
    run_seconds                         = 0,
    start_year                          = 2005, 2005, 2005,
    start_month                         = 08,   08,   08,
    start_day                           = 28,   28,   28,
    start_hour                          = 00,   00,   00,
    start_minute                        = 00,   00,   00,
    start_second                        = 00,   00,   00,
    end_year                            = 2005, 2005, 2005,
    end_month                           = 08,   08,   08,
    end_day                             = 29,   29,   29,
    end_hour                            = 00,   00,   00,
    end_minute                          = 00,   00,   00,
    end_second                          = 00,   00,   00,
    interval_seconds                    = 21600
    input_from_file                     = .true.,.true.,.true.,
    history_interval                    = 180,  60,   60,
    frames_per_outfile                  = 1000, 1000, 1000,
    restart                             = .false.,
    restart_interval                    = 5000,
    io_form_history                     = 2
    io_form_restart                     = 2
    io_form_input                       = 2
    io_form_boundary                    = 2
    debug_level                         = 0
    iofields_filename                   = "extraoutput_d01.txt"
    /
    
    &domains
    time_step                           = 180,
    time_step_fract_num                 = 0,
    time_step_fract_den                 = 1,
    max_dom                             = 1,
    e_we                                = 98,    112,   94,
    e_sn                                = 70,    97,    91,
    e_vert                              = 30,    30,    30,
    p_top_requested                     = 5000,
    num_metgrid_levels                  = 27,
    num_metgrid_soil_levels             = 4,
    dx                                  = 30000, 10000,  3333.33,
    dy                                  = 30000, 10000,  3333.33,
    grid_id                             = 1,     2,     3,
    parent_id                           = 0,     1,     2,
    i_parent_start                      = 1,     31,    30,
    j_parent_start                      = 1,     17,    30,
    parent_grid_ratio                   = 1,     3,     3,
    parent_time_step_ratio              = 1,     3,     3,
    feedback                            = 1,
    smooth_option                       = 0,
    /
    
    &physics
    mp_physics                          = 6,     6,     6,
    ra_lw_physics                       = 4,     4,     4,
    ra_sw_physics                       = 4,     4,     4,
    radt                                = 10,    10,    10,
    sf_sfclay_physics                   = 1,     1,     1,
    sf_surface_physics                  = 2,     2,     2,
    bl_pbl_physics                      = 1,     1,     1,
    bldt                                = 0,     0,     0,
    cu_physics                          = 0,     0,     0,
    cudt                                = 0,     0,     0,
    isfflx                              = 1,
    ifsnow                              = 0,
    icloud                              = 1,
    surface_input_source                = 1,
    num_soil_layers                     = 4,
    sf_urban_physics                    = 0,     0,     0,
    /
    
    
    
    &fdda
    /
    
    &dynamics
    w_damping                           = 0,
    diff_opt                            = 1,      1,      1,
    km_opt                              = 4,      4,      4,
    diff_6th_opt                        = 0,      0,      0,
    diff_6th_factor                     = 0.12,   0.12,   0.12,
    base_temp                           = 290.
    damp_opt                            = 0,
    zdamp                               = 5000.,  5000.,  5000.,
    dampcoef                            = 0.2,    0.2,    0.2
    khdif                               = 0,      0,      0,
    kvdif                               = 0,      0,      0,
    non_hydrostatic                     = .true., .true., .true.,
    moist_adv_opt                       = 1,      1,      1,     
    scalar_adv_opt                      = 1,      1,      1,     
    /
    
    &bdy_control
    spec_bdy_width                      = 5,
    spec_zone                           = 1,
    relax_zone                          = 4,
    specified                           = .true., .false.,.false.,
    nested                              = .false., .true., .true.,
    /
    
    &grib2
    /
    
    &namelist_quilt
    nio_tasks_per_group = 0,
    nio_groups = 1,
    /
  3. シミュレーションデータを初期化します。

    ./real.exe

    real.exe を実行すると、wrfinput_d01 ファイルと wrfbdy_d01 ファイルが /home/wrftest/WRFV3/run ディレクトリに生成されます。

  4. 予報データをエクスポートします。

    1. ジョブスクリプトを作成します。

      vim wrf.slurm

      次の例は、wrf.slurm の内容を示しています。

      #!/bin/bash
      #SBATCH -N 1
      #SBATCH -n 2
      #SBATCH --cpus-per-task=1
      #SBATCH -J wrf-test
      #SBATCH -o wrf_test.log
      
      module load wrf-mpich/3.8.1 mpich/3.2
      mpirun -np 2 -ppn 1  -bind-to core:1 /home/wrftest/WRFV3/run/wrf.exe
    2. ジョブを送信します。

      sbatch wrf.slurm

      ジョブを実行すると、wrfout_d01_[date] 形式の名前を持つファイルが /home/wrftest/WRFV3/run ディレクトリに生成されます。例: wrfout_d01_2005-08-28_00:00:00。

  5. WRF 結果の NCAR Graphics 画像を作成します。

    サンプルコード:

    WRF