WRF : instalasi WRF di Ubuntu 16.04


Apa itu WRF model? WRF (Weather Research and Forecasting) model adalah sistem NWP (Numerical Weather Prediction) untuk keperluan forecasting cuaca atau untuk sekedar melakukan simulasi untuk melakukan penelitian. Selengkapnya bisa di baca di sini atau di sini.


Kali ini sebenarnya saya mau berbagai pengalaman saya dalam penginstalan WRF...tidak, bukan tutorial kenapa? Karena dalam postingan ini dalam perjalanannya saya akan merujuk ke tutorial ini. Postingan kali ini saya memakai OS ubuntu 16.04.

Ok, jadi dalam tutorial yang di rujuk kali ini ada 6 sesi penting, yaitu:
-System Environment Test
-Building Libraries
-Library Compatibility Test
-Building WRFV3
-Building WPS
-Static Geography Data
-Real-time Data
-Run WPS and WRVF3

Paling pertama, System Environment Test. Dalam test ini akan mengecek apakah mesin kita memadai untuk menginstal WRF. Syarat-syarat memadainya hanya harus mempunyai compiler fortran (gfortran), C (gcc), dan C preprocessor (cpp). gcc dan cpp sudah tersedia di ubuntu 16.04 secara default, hanya compiler fortran (gfortran) saja yang belum ada. Tentu saja untuk menginstallnya sangat mudah, hanya dengan perintah sudo apt install gfortran dan voila sudah beres. Ikuti tutorialnya secara penuh pada sesi ini seperti membuat direktori Build_WRF dan TEST. Pada percobaan saya, direktori ini saya taruh di sebuh direktori WRF, jadi alamat full untuk kedua direktori itu adalah :
- /home/genomexyz/WRF/Build_WRF
- /home/genomexyz/WRF/TEST

Jika sudah punya 3 itu, dalam System Environment Test tentu akan lulus semuanya. Kemudian lanjut ke sesi selanjutnya yaitu, Building Libraries. Intinya adalah mendownload libraries yang di butuhkan WRF agar bisa berjalan dan di simpan di tempat yang di tentukan. mpich di butuhkan jika komputer yang digunakan menjalankan WRF itu komputer parallel. NetCDF adalah library yang paling wajib, harus di download. Jasper, libpng, dan zlib di butuhkan untuk WPS. WPS ini dijalankan terlebih dahulu sebelum WRF. Ok, pertama-tama penginstallan library yang paling wajib yaitu NetCDF dengan mengikuti tata cara tutorial rujukan, yaitu:
setenv DIR path_to_directory/Build_WRF/LIBRARIES
setenv CC gcc
setenv CXX g++
setenv FC gfortran
setenv FCFLAGS -m64
setenv F77 gfortran
setenv FFLAGS -m64

tar xzvf netcdf-4.1.3.tar.gz     #or just .tar if no .gz present
cd netcdf-4.1.3
./configure --prefix=$DIR/netcdf --disable-dap \
     --disable-netcdf-4 --disable-shared
make
make install
setenv PATH $DIR/netcdf/bin:$PATH
setenv NETCDF $DIR/netcdf
cd ..
 Pada Ubuntu 16.04, shell default yang dipakai adalah bash dan command setenv tentu tidak ada disitu. setenv adalah command untuk shell csh. setenv disini berguna untuk menambahkan atau mengedit environment variable. Oleh karena itu, pada ubuntu command yang saya gunakan adalah seperti:
export DIR=/home/genomexyz/WRF/Build_WRF/LIBRARIES 
export CC=gcc
export CXX=g++
export FC=gfortran
export FCFLAGS=-m64
export F77=gfortran
export FFLAGS=-m64

tar xzvf netcdf-4.1.3.tar.gz    
 cd netcdf-4.1.3
./configure --prefix=$DIR/netcdf --disable-dap \
     --disable-netcdf-4 --disable-shared
make
make install
export PATH=$DIR/netcdf/bin:$PATH
export NETCDF=$DIR/netcdf
cd ..

dan kemudia di lanjutkan dengan penginstallan library selanjutnya sesuai tutorial rujukan. Hal yang paling penting harus di ingat adalah, dalam penginstallan kali ini sampai selesai Jangan pernah ganti shell, karena enviroment variable yang sudah berhasil kita tambahkan dan edit tadi tidak permanen jadi ketika membuka shell baru maka perubahan yang di buat tadi di anggap tidak ada.

Karena perubahan yang tidak permanen tadi, maka ini akan merepotkan library yang baru saja di install seperti NetCDF dan mpich akan sia-sia. di anggap tidak ada. Ini di karenakan keberadaan mereka tidak tercatat pada environmet variable $PATH. hanya command-command yang direktorinya tercata pada $PATH lah yang bisa digunakan secara bebas di direktori manapun di terminal. jadi $PATH disini adalah semacam kumpulan direktori untuk command-command yang sudah tercatat terinstall di komputer. Untuk mengedit $PATH, silahkan buka terminal baru dan masukkan command:
sudo nano /etc/environment
editlah file environment yang awalnya dari ini, dalam kasus saya 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
menjadi begini
PATH="/home/genomexyz/WRF/Build_WRF/LIBRARIES/mpich/bin:/home/genomexyz/WRF/Build_WRF/LIBRARIES/netcdf/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
Lalu silakan log out dulu dari komputer kemudian login lagi agar perubahan $PATH terasa efeknya (untuk itu, perintah export yang sudah sebelumnya di lakukan silahkan di ulangi lagi semuanya seperti DIR, NETCDF dll agar tidak ada miss pada penginstallannya). Kemudian selanjutnya ada Library Compatibility Test yang seharusnya bisa berjalan lancar jika sudah mengikuti petunjuk di sini dari awal. Test ini berguna untuk menguji apakah libraries yang terinstall sudah sempurna atau belum.

Kemudian masuk ke sesi  yaitu sesi penginstallan WRF yang sesungguhnya. Dalam tutorial yang dirujuk, WRF yang digunakan masih versi WRF 3.7, tapi pada uji kali ini saya memakai versi terbaru yaitu WRF 3.8 yang bisa di download di sini. jadi yang pada tutorial yang dirujuk commandnya seperti ini
gunzip WRFV3.7.TAR.gz
tar -xf WRFV3.7.TAR
menjadi
gunzip WRFV3.8.TAR.gz
tar -xf WRFV3.8.TAR
Pada saat konfigurasi penginstallan (./configure), akan disuruh pilih konfigurasi yang sesuai dengan komputer yang akan di pasangi ini. Pada kasus uji kali ini, pada option yang terlihat
Please select from among the following Linux x86_64 options:
Please select from among the following Linux x86_64 options:
  1. (serial)   2. (smpar)   3. (dmpar)   4. (dm+sm)   PGI (pgf90/gcc)
  5. (serial)   6. (smpar)   7. (dmpar)   8. (dm+sm)   PGI (pgf90/pgcc): SGI MPT
  9. (serial)  10. (smpar)  11. (dmpar)  12. (dm+sm)   PGI (pgf90/gcc): PGI accelerator
 13. (serial)  14. (smpar)  15. (dmpar)  16. (dm+sm)   INTEL (ifort/icc)
                                         17. (dm+sm)   INTEL (ifort/icc): Xeon Phi (MIC architecture)
 18. (serial)  19. (smpar)  20. (dmpar)  21. (dm+sm)   INTEL (ifort/icc): Xeon (SNB with AVX mods)
 22. (serial)  23. (smpar)  24. (dmpar)  25. (dm+sm)   INTEL (ifort/icc): SGI MPT
 26. (serial)  27. (smpar)  28. (dmpar)  29. (dm+sm)   INTEL (ifort/icc): IBM POE
 30. (serial)               31. (dmpar)                PATHSCALE (pathf90/pathcc)
 32. (serial)  33. (smpar)  34. (dmpar)  35. (dm+sm)   GNU (gfortran/gcc)
 36. (serial)  37. (smpar)  38. (dmpar)  39. (dm+sm)   IBM (xlf90_r/cc_r)
 40. (serial)  41. (smpar)  42. (dmpar)  43. (dm+sm)   PGI (ftn/gcc): Cray XC CLE
 44. (serial)  45. (smpar)  46. (dmpar)  47. (dm+sm)   CRAY CCE (ftn/cc): Cray XE and XC
 48. (serial)  49. (smpar)  50. (dmpar)  51. (dm+sm)   INTEL (ftn/icc): Cray XC
 52. (serial)  53. (smpar)  54. (dmpar)  55. (dm+sm)   PGI (pgf90/pgcc)
 56. (serial)  57. (smpar)  58. (dmpar)  59. (dm+sm)   PGI (pgf90/gcc): -f90=pgf90
 60. (serial)  61. (smpar)  62. (dmpar)  63. (dm+sm)   PGI (pgf90/pgcc): -f90=pgf90
 64. (serial)  65. (smpar)  66. (dmpar)  67. (dm+sm)   INTEL (ifort/icc): HSW/BDW
 68. (serial)  69. (smpar)  70. (dmpar)  71. (dm+sm)   INTEL (ifort/icc): KNL MIC

Enter selection [1-71] :
Di pilih option 32, maka masukkan option 32 di terminal. Pada waktu penginstallan kali ini, akan disuruh juga memilih penginstallan permodelan yang diinginkan, pada uji kali ini untuk mendukung modeling data real maka command ./compile yang digunakan adalah
./compile em_real >& log.compile
Tunggu beberapa menit (cukup lama) dan selesai. Untuk melihat log penginstallan bisa dengan membuka di file log.compile.

Lanjut ke Building WPS yaitu aplikasi untuk proses preprocessing WRF untuk persiapan input WRF. Sama seperti sebelumnya, dalam ./configure akan diminta memilih konfigurasi penginstallan sesuai dengan komputer dan compiler yang digunakan dan pilihan yang tersedia adalah
------------------------------------------------------------------------
Please select from among the following supported platforms.

   1.  Linux x86_64, gfortran    (serial)
   2.  Linux x86_64, gfortran    (serial_NO_GRIB2)
   3.  Linux x86_64, gfortran    (dmpar)
   4.  Linux x86_64, gfortran    (dmpar_NO_GRIB2)
   5.  Linux x86_64, PGI compiler   (serial)
   6.  Linux x86_64, PGI compiler   (serial_NO_GRIB2)
   7.  Linux x86_64, PGI compiler   (dmpar)
   8.  Linux x86_64, PGI compiler   (dmpar_NO_GRIB2)
   9.  Linux x86_64, PGI compiler, SGI MPT   (serial)
  10.  Linux x86_64, PGI compiler, SGI MPT   (serial_NO_GRIB2)
  11.  Linux x86_64, PGI compiler, SGI MPT   (dmpar)
  12.  Linux x86_64, PGI compiler, SGI MPT   (dmpar_NO_GRIB2)
  13.  Linux x86_64, IA64 and Opteron    (serial)
  14.  Linux x86_64, IA64 and Opteron    (serial_NO_GRIB2)
  15.  Linux x86_64, IA64 and Opteron    (dmpar)
  16.  Linux x86_64, IA64 and Opteron    (dmpar_NO_GRIB2)
  17.  Linux x86_64, Intel compiler    (serial)
  18.  Linux x86_64, Intel compiler    (serial_NO_GRIB2)
  19.  Linux x86_64, Intel compiler    (dmpar)
  20.  Linux x86_64, Intel compiler    (dmpar_NO_GRIB2)
  21.  Linux x86_64, Intel compiler, SGI MPT    (serial)
  22.  Linux x86_64, Intel compiler, SGI MPT    (serial_NO_GRIB2)
  23.  Linux x86_64, Intel compiler, SGI MPT    (dmpar)
  24.  Linux x86_64, Intel compiler, SGI MPT    (dmpar_NO_GRIB2)
  25.  Linux x86_64, Intel compiler, IBM POE    (serial)
  26.  Linux x86_64, Intel compiler, IBM POE    (serial_NO_GRIB2)
  27.  Linux x86_64, Intel compiler, IBM POE    (dmpar)
  28.  Linux x86_64, Intel compiler, IBM POE    (dmpar_NO_GRIB2)
  29.  Linux x86_64 g95 compiler     (serial)
  30.  Linux x86_64 g95 compiler     (serial_NO_GRIB2)
  31.  Linux x86_64 g95 compiler     (dmpar)
  32.  Linux x86_64 g95 compiler     (dmpar_NO_GRIB2)
  33.  Cray XE/XC CLE/Linux x86_64, Cray compiler   (serial)
  34.  Cray XE/XC CLE/Linux x86_64, Cray compiler   (serial_NO_GRIB2)
  35.  Cray XE/XC CLE/Linux x86_64, Cray compiler   (dmpar)
  36.  Cray XE/XC CLE/Linux x86_64, Cray compiler   (dmpar_NO_GRIB2)
  37.  Cray XC CLE/Linux x86_64, Intel compiler   (serial)
  38.  Cray XC CLE/Linux x86_64, Intel compiler   (serial_NO_GRIB2)
  39.  Cray XC CLE/Linux x86_64, Intel compiler   (dmpar)
  40.  Cray XC CLE/Linux x86_64, Intel compiler   (dmpar_NO_GRIB2)

Enter selection [1-40] :
pada uji kali ini Karena komputer yang saya pakai adalah laptop biasa dan compiler gfortran maka saya pilih option 1 dan masukkan 1 pada terminal. Setelah konfigurasi ini, compile seperti tutorial rujukan mirip dengan penginstallan WRF sebelumnya.

Setelah ini, sebenarnya kita sudah terhitung sukses menginstall hanya saja pada WPS yaitu geogrid.exe butuh data statis geografi. Untuk itulah step Static Geography Data ada pada tutorial rujukan. Pada intinya step ini adalah mendownload data geografis yang akan di jalankan oleh geogrid.exe. Step Real-time Data  juga sama, yaitu untuk mendownload data grib yang digunakan oleh WPS yang akan di ungrib untuk selanjutnya dipakai oleh WRF. Tapi script cURL yang digunakan pada tutorial rujukan tidak bisa di gunakan. Pada saat saya membuat tulisan ini saya masih belum tau penyebabnya apa.

Langkah terakhir pada tutorial rujukan adalah Run WPS and WRVF3. Ini adalah fase testing WRF. Karena data yang di perlukan untuk testing belum saya punya semuanya, maka langkah ini belum saya coba. Sampai terakhir meluncurkan tulisan ini juga saya masih belum tahu format atau cara mengisi namelist.wps.Postingan selanjutnya mungkin akan membahas testing WRF. Sekian, jika ada kritik ataupun saran silahkan tinggalkan di komentar.

refrensi:
https://en.wikipedia.org/wiki/Weather_Research_and_Forecasting_Model
http://www.wrf-model.org/index.php
http://www2.mmm.ucar.edu/wrf/users/
http://www2.mmm.ucar.edu/wrf/OnLineTutorial/compilation_tutorial.php
https://www.ral.ucar.edu/solutions/products/weather-research-and-forecasting-model-wrf
https://help.ubuntu.com/community/EnvironmentVariables

Komentar