5
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

領域気象モデルWRF-ARWのインストール【macOS】

自分のホームページ(google site)を整理しようとしたところ、新しいgoogle siteが使いにくくなっていたため、一旦qiitaに整理する。笑
macでWRFをインストールする手順。

1 環境

1.1 動作環境

OS:macOS High Sierra
プロセッサ:3.5 GHz Intel Core i7
メモリ:32 GB 1600 MHz DDR3
※Library関連は省略。全てmacportsでインストール。
※Libraryは、全て同じバージョンのコンパイラでインストールしたものを使う。

1.2 並列計算について

コンパイル時に4パターンから選択する必要がある。
①serial:For a single processor job (serial)
②smpar:For using OpenMP shared-memory parallelization:共有メモリ型 [OpenMPなど]
③dmpar:For using distributed-memory parallelization (dmpar) options:分散メモリ型 [MPIなど, フリーではMPICH, LAMなど]
smparとdmparはmultiple processors用
④dm+sm:For combination of shared-memory and distributed memory options

1.3 インストールに成功したWRFとコンパイラのバージョンの関係表

コンパイラ/WRF ver. 並列計算 3.2 3.2.1 3.3 3.3.1 3.4 3.4.1 3.5 3.5.1 3.6 3.6.1 3.7 3.7.1 3.8 3.8.1 3.9 3.9.1 3.9.1.1 4
MacPorts gcc5 5.5.0_1 serial
sm
dm
dm+sm
コンパイラ/WPS ver. 並列計算 3.2 3.2.1 3.3 3.3.1 3.4 3.4.1 3.5 3.5.1 3.6 3.6.1 3.7 3.7.1 3.8 3.8.1 3.9 3.9.1 3.9.1.1 4
MacPorts gcc5 5.5.0_1 serial
sm
dm
dm+sm

2 インストール手順

2.1 ソースコードのダウンロード

terminal
$ wget -nc http://www2.mmm.ucar.edu/wrf/src/WRFV3.9.1.TAR.gz
$ wget -nc http://www2.mmm.ucar.edu/wrf/src/WPSV3.9.1.TAR.gz
$ tar -zxf WRFV3.9.1.TAR.gz
$ tar -zxf WPSV3.9.1.TAR.gz

※バージョンは適宜書き換える。
※macのデフォルトtarコマンドで解凍すると、うまくコンパイルできない。gnutarでないといけない模様?
※アカウントを持っていない場合は、ソースをダウンロードする前に登録すること。
WRF Modeling System Download: New User Registration http://www2.mmm.ucar.edu/wrf/users/download/wrf-regist.php

2.2 WRFのインストール

2.2.1 .wrfrcの作成

.profileとか.bash_profileとかに書き込んでも問題はないが、基本的にはWRFをインストールする時だけ読ませれば良いので、.wrfrcを作成して読み込ませるようにしている。

.wrfrc
### jasper-1.900.1
export JASPERBIN="/opt/local/bin"
export JASPERINC="/opt/local/include"
export JASPERLIB="/opt/local/lib"

### NetCDF 
export NETCDF="/opt/local/" 
export LD_LIBRARY_PATH=$NETCDF/lib:

### Compiler 
export FC=gfortran
export F90=gfortran
export F77=gfortran
export CC=gcc
export CXX=g++

### WRF
export WRF_EM_CORE=1 
export WRFIO_NCD_LARGE_FILE_SUPPORT=1 
export OMP_NUM_THREADS=4 

### macOS
export MACOSX_DEPLOYMENT_TARGET=10.13

※OSによって、MACOSX_DEPLOYMENT_TARGETの数字は書き換える。

階層は

ディレクトリ
WRFv3.9.1/
 ├ WPS/
 ├ WRF/
 └ .wrfrc

のようになる。ので、.wrfrcをsourceする。

terminal
$ source .wrfrc

2.2.2 netcdf4を使うために、Makefileを書き換える

terminal
$ source .wrfrc
$ cd ./WRFV3
$ vi external/io_netcdf/makefile
WRFV3/external/io_netcdf/makefile
書き換え前
(7行目) LIBS = -L$(NETCDFPATH)/lib -lnetcdf
書き換え後
(7行目) LIBS = -L$(NETCDFPATH)/lib -lnetcdff -lnetcdf

※行数は参考。

2.2.3 configureの実行

terminal
$ ./configure
(前略)
------------------------------------------------------------------------
Please select from among the following Darwin ARCH options:

  1. (serial)   2. (smpar)   3. (dmpar)   4. (dm+sm)   PGI (pgf90/pgcc)
  5. (serial)   6. (smpar)   7. (dmpar)   8. (dm+sm)   INTEL (ifort/icc)
  9. (serial)  10. (smpar)  11. (dmpar)  12. (dm+sm)   INTEL (ifort/clang)
 13. (serial)               14. (dmpar)                GNU (g95/gcc)
 15. (serial)  16. (smpar)  17. (dmpar)  18. (dm+sm)   GNU (gfortran/gcc)
 19. (serial)  20. (smpar)  21. (dmpar)  22. (dm+sm)   GNU (gfortran/clang)
 23. (serial)               24. (dmpar)                IBM (xlf90_r/cc)
 25. (serial)  26. (smpar)  27. (dmpar)  28. (dm+sm)   PGI (pgf90/pgcc): -f90=pgf90
 29. (serial)  30. (smpar)  31. (dmpar)  32. (dm+sm)   INTEL (ifort/icc): Open MPI
 33. (serial)  34. (smpar)  35. (dmpar)  36. (dm+sm)   GNU (gfortran/gcc): Open MPI

Enter selection [1-36] : 36
------------------------------------------------------------------------
Compile for nesting? (1=basic, 2=preset moves, 3=vortex following) [default 1]: 1

Configuration successful! 
------------------------------------------------------------------------

(後略)

※バージョンや並列計算の選択によって、表示される組み合わせが多少異なる。

2.2.4 コンパイル

terminal
$  ./compile em_real &> compile_serial.log
(時間がかかる)
$  ls test/em_real
CAM_ABS_DATA                           RRTM_DATA                namelist.input.fire              ozone_plev.formatted
CAM_AEROPT_DATA                     SOILPARM.TBL             namelist.input.global         real.exe
ETAMPNEW_DATA                        URBPARM.TBL              namelist.input.jan00          run_1way.tar
ETAMPNEW_DATA.expanded_rain VEGPARM.TBL              namelist.input.jun01         run_2way.tar
GENPARM.TBL                              examples.namelist       namelist.input.ndown_1    run_restart.tar
LANDUSE.TBL                               grib2map.tbl               namelist.input.ndown_2     sample.txt
MPTABLE.TBL                               gribmap.txt                 namelist.input.ndown_3     tc.exe
README.grid_fdda                       landFilenames             namelist.input.volc             tr49t67
README.namelist                        namelist.input              ndown.exe                         tr49t85
README.obs_fdda                       namelist.input.4km      nup.exe                              tr67t85
RRTMG_LW_DATA                        namelist.input.chem    ozone.formatted                 wrf.exe
RRTMG_SW_DATA                        namelist.input.diags    ozone_lat.formatted

※wrf.exeなどが実行できる状態であれば成功。

2.3 WPSのインストール

2.3.1 netcdf4を使うために、Makefileを書き換える

terminal
$ cd ../WPS
$ vi util/src/Makefile
WPS/util/src/Makefile
書き換え前
(43行目) -L$(NETCDF)/lib -I$(NETCDF)/include -lnetcdf
書き換え後
(43行目) -L$(NETCDF)/lib -I$(NETCDF)/include -lnetcdff -lnetcdf

※行数は参考。

2.3.2 configureの実行

terminal
$ ./configure
(前略)
------------------------------------------------------------------------
Please select from among the following supported platforms.

   1.  Darwin Intel PGI compiler   (serial)
   2.  Darwin Intel PGI compiler   (serial_NO_GRIB2)
   3.  Darwin Intel PGI compiler   (dmpar)
   4.  Darwin Intel PGI compiler   (dmpar_NO_GRIB2)
   5.  Darwin Intel PGI compiler; optional DM -f90=pgf90   (serial)
   6.  Darwin Intel PGI compiler; optional DM -f90=pgf90   (serial_NO_GRIB2)
   7.  Darwin Intel PGI compiler; optional DM -f90=pgf90   (dmpar)
   8.  Darwin Intel PGI compiler; optional DM -f90=pgf90   (dmpar_NO_GRIB2)
   9.  Darwin Intel Intel compiler   (serial)
  10.  Darwin Intel Intel compiler   (serial_NO_GRIB2)
  11.  Darwin Intel Intel compiler   (dmpar)
  12.  Darwin Intel Intel compiler   (dmpar_NO_GRIB2)
  13.  Darwin Intel g95 compiler     (serial)
  14.  Darwin Intel g95 compiler     (serial_NO_GRIB2)
  15.  Darwin Intel g95 compiler     (dmpar)
  16.  Darwin Intel g95 compiler     (dmpar_NO_GRIB2)
  17.  Darwin Intel gfortran/gcc    (serial)
  18.  Darwin Intel gfortran/gcc    (serial_NO_GRIB2)
  19.  Darwin Intel gfortran/gcc    (dmpar)
  20.  Darwin Intel gfortran/gcc    (dmpar_NO_GRIB2)
  21.  Darwin Intel gfortran/clang    (serial)
  22.  Darwin Intel gfortran/clang    (serial_NO_GRIB2)
  23.  Darwin Intel gfortran/clang    (dmpar)
  24.  Darwin Intel gfortran/clang    (dmpar_NO_GRIB2)
  25.  Darwin PPC xlf    (serial)
  26.  Darwin PPC xlf    (serial_NO_GRIB2)
  27.  Darwin PPC xlf gcc3.3 SystemStubs   (serial)
  28.  Darwin PPC xlf gcc3.3 SystemStubs   (serial_NO_GRIB2)
  29.  Darwin PPC g95    (serial)
  30.  Darwin PPC g95    (serial_NO_GRIB2)
  31.  Darwin PPC g95    (dmpar)
  32.  Darwin PPC g95    (dmpar_NO_GRIB2)

Enter selection [1-32] : 17
------------------------------------------------------------------------
Configuration successful. To build the WPS, type: compile
------------------------------------------------------------------------

※バージョンによって、表示される組み合わせが多少異なる。

2.2.4 コンパイル

terminal
$  ./compile &> compile_serial.log
(時間がかかる)
$  ls 
README        configure                        link_grib.csh                       namelist.wps.global 
Vtable           configure.wps                 metgrid                               namelist.wps.nmm 
arch              configure.wps.backup     metgrid.exe                        ungrib 
clean             configure_old                 namelist.wps                       ungrib.exe 
compile         geogrid                          namelist.wps.all_options     ungrib.log 
compile.log   geogrid.exe                    namelist.wps.fire                util

※metgrid.exeなどが実行できる状態であれば成功。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
5
Help us understand the problem. What are the problem?