Wednesday, September 13, 2017

Research Note #8 - Running WRF Simulation (No Chem WPS)

To run WRF model (for this case, v.3.8.1), there are basically 3 main steps: Pre-processing/WPS (geogrid, ungrib, metgrib), WRF simulation (real, wrf) and post-processing (UPP, grib2ctl, gribmap). This post assumes that :
  • Only single/coarse domain created for this simulation.
  • Meteorological simulation only, no chem wps included.
  • ARW core used.
  • GrADS will be used to plot the output and UPP is used for post-processing (because ARWpost is .. ehmm .. troublesome) 
  • All utilities (UPP, wgrib, and gribmap) have been installed and paths are set
  • WRF history interval is 1 hour because UPP could only process output interval >= 1 hour (for now).
For more detail info:


WPS --> Prepare data for WRF
-----------------------------
1. GEOGRID --> Setting domain with geogrid
   - Edit namelist.wps
       &share  :    wrf_core (core model)
                         max_dom (coarse=1, nested > 1)
                      io_form_geogrid (output format, 2 for NC format)
      &geogrid:  e_we, e_sn (grid numbers in w-e and s-n components),
                        dx, dy (grid res in meters)
                     map_proj (projection type) --> low latitude --> mercator
                     ref_lat, ref_lon (center coordinates of domain)
                     truelat1 (true latitude) --> 30 for mercator
                     geog_data_path (path of geo data)
   - Run geogrid.exe --> make sure 'successful ..' message shown.
   - Output file --> geo_em_dxx.nc in NC format(xx --> domain number id)
 
2. UNGRIB --> Extracting meteorological fields from met data into intermediate data
   - Download met data files and put in a directory
   - Make symbolic link of Vtable --> e.g. GFS data --> ln -sf ungrib/Variable_Tables/Vtable.GFS Vtable
   - Run link_grib.csh to the met data --> ./link_grib.csh /home/data/gfs/gfs.t00z (put parts of filename, DONT PUT ONLY path there)
   - Edit namelist.wps
        &share  : start_date (start date of unpacking, not related to any domain hence only 1st column will be processed)
                         end_date (idem)
                         interval_seconds (frequency of data in seconds, hourly --> 3600, 3hourly --> 10800, 6hrly --> 21600 and so on)
         &ungrib : out_format (WPS)
   - Run ungrib.exe --> make sure 'successful ..' message shown.
   - Output files --> FILE:YYYY-MM-DD_HH
 
3. METGRIB --> Horizontally interpolates extracted met data onto model domain 
   - Edit namelist.wps
       &metgrid : io_form_metgrid (output format, 2 for NC format)
   - Run metgrid.exe --> make sure 'successful ..' message shown.
   - Output files --> met_em.dxx.YYYY-MM-DD_hh:mm:ss.nc

 
WRF --> Simulate/Run the Model
------------------------------
1. REAL --> Vertically interpolates met_em data (METGRIB's output), creates boundary and initial condition files and does some consistency checks.
   - CD to WRFVx/run
   - Make symbolic links to the met_em files
   - Edit namelist.input
       &time_control : run_* (simulation length, will override end dates if less than end dates)
                                  start_* (start time of simulation)
                                  end_* (end time of simulation, could be overridden by run_*)
                                 interval_seconds (data frequency, must be same with namelist.wps)
                                  history_interval (frequency to write data to wrfout file in minutes, e.g. 60 --> hourly)
                                  frames_per_outfile (how many time periods must be written in a single wrfout file, e.g. 1440 --> could contain 24 hourly history).
                             io_form* (should be 2 for NC)
   &domains      :      time_step (time step for model simulation/integration)
                                 max_dom, e_we, e_sn, dx, dy, grid_id (must be same with namelist.wps)
                                  num_metgrid_levels (number of vertical levels, data-dependent, should be 32 for GFS. Check met_em files with ncdump -h)
   - Run real.exe --> check rsl.out.0000 for the process --> tail -f rsl.out.0000
   - For multi-processor run --> MPI -np x ./real.exe (x = number of processor. e.g 4)
   - Output files --> wrfinput_dxx and wrfbdy_dxx
 
2. WRF --> Generates the model forecast
   - Run wrf.exe --> check rsl.out.0000 for the process --> tail -f rsl.out.0000
   - For multi-processor run --> MPI -np x ./wrf.exe (x = number of processor. e.g 4)
   - Output files --> wrfout_dxx_[initial time], one for each domain
 
 
UPP (Unipost Post Processing) --> Convert wrfout NC file into GRIB data
-------------------------------------------------------------------------------------------
1. RUN_UNIPOST_FRAMES --> Convert single wrfout NC with forecast time frames into GRIB data
   - CD to DOMAINS/postprd/ directory
   - Make symbolic link to wrfout data to DOMAINS/wrfprd/ directory
   - Edit run_unipost_frames
            TOP_DIR (top directory of WRFV3 and UPP)
           DOMAINPATH (domain path)
           WRF_PATH (WRF path)
           UNIPOST_HOME (UPP path)
           POSTEXEC, SCRIPTS (path of UPP binaries and scripts)
           modelDataPath (wrfout file/symbolic link directory --> domains/wrfprd/)
           dyncore (WRF solver, should be 'ARW')
           informat (wrfout format, should be 'netcdf')
           outformat (upp output format, should be 'grib')
           startdate (forecast initial time --> YYYYMMDDHH, should be same as namelist.input)
           fhr (forecast start hour, should be same as namelist.input)
           lastfhr (forecast end hour, should be same as namelist.input)
           incrementhr (history interval, should be same as namelist.input)
   - Run run_unipost_frames --> confirm the messages in case there are errors
   - Output files --> WRFPRS_dxx.hh, one for each history interval
 

GRIB2CTL --> Creates control file for the GRIB data (UPP output) to be read by GrADS
--------------------------------------------------------------------------------------
   - Run grib2ctl.pl script --> perl grib2ctl.pl -verf WRFPRS_d01.%f2 > test.ctl (for domain 01, each forecast hour into a file named test.ctl)
   - Output file --> test.ctl, make sure the t-def parameter in control file corrects with forecast history interval
 
 
GRIBMAP --> Creates GRIB index file to be read by GrADS
--------------------------------------------------------
   - Run gribmap --> gribmap -i test.ctl
   - Output file --> WRFPRS_dxx.00.idx (1 index file for all forecast history interval)

 Once the idx file created, you can open the data with GrADS.

--------------------------------------------------------------------------------------------------------

Some errors which could occurs:

1. WRF crash

The simulation abruptly stopped with messages such as below:

BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES = EXIT CODE: 139 = CLEANING UP REMAINING PROCESSES = YOU CAN IGNORE THE BELOW CLEANUP MESSAGES

Possible causes:

  • Time step is too large compared with the horizontal resolution. Recommended time step is 6*dx in km. For example: dx = 10000 (10 km), then time step should be 6*10 = 60s.

2. WRF freeze

The simulation abruptly stopped without any messages. Possible causes:
  • Memory consumption is too large. Use less processors and set bigger stack size. For example : ulimit -s 20000 or unlimited (not recommended for some cases) 

Thursday, August 24, 2017

Research Note #7 - WRF Chem Installation

Finally getting face to face with this model once more. Here comes summary for its installation. I had quite problems while installing it, but overall, it was an easy procedure.

Library Needed
--------------
1. NetCDF --> for WRF/WPS, NetCDF Fortran, version >=4.4
2. MPICH --> for multiprocessor
3. zlib --> for WPS
4. libpng --> for WPS
5. Jasper --> for WPS 

Download: http://www2.mmm.ucar.edu/wrf/OnLineTutorial/compilation_tutorial.php

Environment Variables
---------------------
1. Before Any/NetCDF Installation
   DIR=/home/ardhi/Build_WRF/LIBRARIES
   CC=gcc
   CXX=g++
   FC=gfortran
   FCFLAGS=-m64
   F77=gfortran
   FFLAGS=-m64
   
2. After NetCDF Installation
   PATH=$DIR/netcdf/bin:$PATH
   NETCDF=$DIR/netcdf
   
3. After MPICH Installation
   PATH=$DIR/mpich/bin:$PATH
   
4. Before zlib Installation
   LDFLAGS=-L$DIR/grib2/lib 
   CPPFLAGS=-I$DIR/grib2/include

Library Compatibility Tests --> http://www2.mmm.ucar.edu/wrf/OnLineTutorial/compilation_tutorial.php
----------------------------------------------------------------------------------------------------
   
Building WRF
------------
1. Without Chem
   setenv WRF_CHEM=0
   setenv J "-j 2"
   setenv LD_LIBRARY_PATH $DIR/mpich/lib64:$DIR/netcdf/lib64 (for 64bit)
   ./configure --> Serial (32)/ dmpar (34), nesting 0 or 1
   configure.wrf --> LIB_EXTERNAL --> -L/home/ardhi/Build_WRF/LIBRARIES/netcdf/lib64 -lnetcdff -lnetcdf (for 64bit)

2. With Chem
   Same WRF version with Chem (e.g. both V.3.8.1)
   setenv WRF_KPP 0
   setenv WRF_CHEM 1
   setenv EM_CORE 1
   setenv NMM_CORE 0
   setenv J "-j 2"
   setenv LD_LIBRARY_PATH $DIR/mpich/lib64:$DIR/netcdf/lib64 (for 64bit)
   ./configure --> Serial (32)/ dmpar (34), nesting 0 or 1 
   configure.wrf --> LIB_EXTERNAL --> -L/home/ardhi/Build_WRF/LIBRARIES/netcdf/lib64 -lnetcdff -lnetcdf (for 64bit)  

Building WPS
-----------
   setenv JASPERLIB $DIR/grib2/lib
   setenv JASPERINC $DIR/grib2/include
   ./configure --> Serial, GRIB2 (1) or dmpar, GRIB2 (3)
   configure.wps --> WRF_LIB -->  -L$(NETCDF)/lib64  -lnetcdff -lnetcdf (for 64bit)  


Some useful LINUX/UNIX commands during installation:

  • setenv (csh,tcsh), export (bash) : sets environment variables
  • setenv (csh,tcsh), env | more/less : shows environment variables
  • . ~/.bashrc (bash) : run configuration script/permanent environment variables 
  • echo $0 : shows the type of current shell 
  • lscpu : shows cpu, core and thread numbers (total cpu=socket x core x thread)
  • uname -r : shows kernel release version
  • uname -m, arch : shows whether linux is 32bit or 64bit
  • lsb_release -a : shows distribution release name


Thursday, June 22, 2017

Gaijin Story #10 - Income Tax Return dan Asuransi Kesehatan Nasional Jepang


Februari 2017 adalah salah satu bulan tersibuk selama saya tinggal di Jepang. Saat itu anak pertama lahir dan saya lumayan kelimpungan mengurus berkas kelahirannya, mulai dari rumah sakit, municipal office, kantor imigrasi sampai KBRI. Ujung-ujungnya, saya melupakan salah satu hal paling penting yang harus dilakukan setiap orang-terutama kepala keluarga-di Jepang setiap tahun: melaporkan pajak pendapatan alias income tax return ke municipal office. 

Laporan ini bisa dilakukan dengan mengisi form yang dikirimkan municipal office ke rumah via pos, atau datang langsung ke kantornya, dan biasanya deadlinenya adalah tanggal 15 Maret. Laporan pajak pendapatan ini wajib dilakukan setiap orang, terlepas apakah ybs memiliki pendapatan atau tidak. Mahasiswa yang hidupnya bergantung pada beasiswa seperti saya termasuk yang tidak memiliki pendapatan, tapi tetap diwajibkan untuk melapor. Tapi seberapa penting laporan pajak ini?

Informasi pendapatan yang ada di laporan tersebut akan menjadi dasar perhitungan berbagai subsidi yang akan diterima dari pemerintah. Salah satunya adalah asuransi kesehatan nasional (NHI/hokensho). Bagi yang tidak memiliki pendapatan (0 Yen income), akan mendapat diskon premi asuransi yang jumlahnya lumayan. Selain itu laporan ini juga dibutuhkan untuk memperoleh subsidi pengobatan anak dari pemerintah kota.  

Saya baru ngeh atas kealpaan melaporkan income tax ini ketika menerima slip pembayaran hokensho terbaru bulan Juni 2017. Tahun lalu, saya membayar sekitar 24,000 Yen untuk premi hokensho selama 10 bulan, untuk dua orang (saya dan istri). Alhasil, matapun terbelalak ketika menerima tagihan baru hokensho sebesar 120,000 Yen untuk 10 bulan. Itu artinya 12,000 Yen per bulan. Bagi mahasiswa MEXT yang beasiswanya pas-pasan seperti saya, tentu tagihan sebanyak itu bisa mencekik leher. 

Slip Premi Hokensho

Income Tax Return Form (Kashiwa-shi)
Kejadian lupa melaporkan income tax seperti ini lumrah terjadi di Jepang, terutama oleh foreigner, dan untungnya, pemerintah kota masih "berbaik hati" memberikan kesempatan kedua bagi orang-orang yang alpa tersebut. Setelah datang langsung ke municipal office dan melaporkan pendapatan ke bagian pajak, saya pun melapor ke bagian asuransi. Pihak asuransi nantinya akan menyesuaikan tagihan premi dan mengirimkan slip baru ke rumah. Berita bagus lainnya, tidak ada denda atau pungutan atas keteledoran saya. Alhamdulillah.

Pelajaran berharganya, kalo anda mahasiswa di Jepang dan tiba-tiba dapat tagihan premi asuransi membengkak, coba cek lagi, apakah income tax anda sudah dilaporkan. Intinya ya jangan sampai lupa lapor pajak setiap tahunnya (=  

Wednesday, June 21, 2017

Gaijin Story #9 - V-Preca, Kartu Kredit Pra-bayar di Jepang


Kartu kredit mungkin adalah metode pembayaran paling populer di dunia saat ini, termasuk di Jepang. Hampir semua transaksi di negeri sakura mendukung pembayaran dengan kartu kredit, baik on-the-spot maupun via online. Namun, mendapatkan kartu kredit di Jepang bukan hal yang mudah, terutama bagi gaijin (foreigner). Selain proses screening yang ketat, aplikasi kartu kredit di bank juga butuh kemampuan bahasa Jepang yang cukup, dan penolakan aplikasi oleh bank juga tidak jarang terjadi. Umumnya, foreigner yang ingin mendapatkan kartu kredit akan membawa temannya yang orang Jepang untuk membantu komunikasi dengan pihak Bank.

Nah, salah satu hal menarik yang saya temui di Jepang adalah kartu kredit pra-bayar. Ya, pra-bayar dan bisa diisi ulang seperti pulsa ponsel yang ada di Indonesia. Kartu kredit jenis ini bisa dibeli dengan mudah di berbagai convenient store dalam beberapa nominal, mulai dari 2000 - 10000 Yen, dan tentu saja, tidak perlu aplikasi yang ribet seperti di bank. Tinggal bayar di kasir, isi via website dan anda langsung bisa menggunakannya untuk berbagai transaksi. Sayangnya, kartu kredit jenis ini hanya bisa digunakan untuk transaksi online.

Voucher V-Preca
Salah satu kartu kredit pra-bayar yang saya gunakan di Jepang adalah V-Preca (Lifecard), yang bisa digunakan untuk transaksi di berbagai merchant online yang menerima pembayaran dengan kartu kredit VISA. Walaupun namanya kartu kredit, tapi V-Preca ini lebih mirip voucher. Untuk bisa menggunakannya, kita perlu melakukan registrasi via website dan memasukkan kode yang ada pada voucher tadi sebelum menggunakannya untuk transaksi. Untuk proses registrasi, anda harus memiliki nomor telepon Jepang yang bisa dihubungi, karena kode konfirmasi akan dikirimkan via SMS.

Kartu V-Preca Gift
Bagi yang tidak punya nomor telepon Jepang, tersedia juga V-Preca Gift dalam bentuk kartu yang bisa langsung digunakan untuk transaksi, namun hanya sekali pakai dan nominalnya berbeda dengan V-Preca biasa.

V-Preca bisa digunakan untuk transaksi online di dalam maupun luar Jepang, misalnya di Amazon.com atau ETS (untuk test TOEFL/GRE). Hal penting yang perlu diperhatikan, pada beberapa situs yang membutuhkan registrasi kartu kredit (untuk pembayaran berkala), V-Preca tidak bisa digunakan, karena nomor kartunya akan berubah setiap kali diisi ulang. 

Keunggulan V-Preca:
  • Bisa dibeli di berbagai convenient store
  • Bisa digunakan pada berbagai merchant online yang menerima pembayaran dengan VISA
  • Registrasi mudah dan disposable, cocok bagi foreigner/mahasiswa asing
  • Tidak ada bunga atau biaya aneh-aneh, jadi tak perlu khawatir belanja berlebihan atau debt collector ;-)
  • Bagi yang tidak punya nomor telepon Jepang, bisa menggunakan V-Preca Gift Card
Kekurangan V-Preca:
  • Hanya untuk transaksi online
  • Nominal yang terbatas
  • Tidak bisa digunakan untuk pembayaran berkala, misal untuk fee registrasi bulanan di Yahoo!Auction.
  • Website untuk registrasi/isi ulang, 90% dalam bahasa Jepang
Website V-Preca : http://vpc.lifecard.co.jp/en/

Monday, June 12, 2017

Melakukan Reset Pada Windows Folder Security

Salah satu hal paling menyebalkan ketika bekerja dengan Windows adalah berurusan dengan security setting pada folder/direktori. Pada UNIX-based OS, konfigurasi security pada direktori bisa dengan mudah dilakukan dengan perintah CHMOD. Di Windows, hal ini jadi lebih rumit, karena selain permission, pengguna juga harus berurusan dengan konfigurasi lain seperti ownership atau auditing, dan masing-masing konfigurasi ini bisa berdiri sendiri. Akibatnya, tidak jarang hal konyol terjadi, misalnya: saya adalah administrator dan pemilik folder "A" , namun karena suatu dan lain hal (misalnya windows explorer error), nama saya tidak tercantum dalam daftar pengguna/grup yang mendapat permission untuk melakukan perubahan pada folder tersebut. Maka saya tidak akan bisa melakukan perubahan, walaupun saya adalah admin sekaligus owner folder. Masalah ini sering muncul ketika kita ingin melakukan perubahan pada media (harddisk) dengan file system NTFS, dengan OS selain Windows.

Cara paling mudah untuk mengatasi hal tersebut adalah dengan melakukan reset pada security setting NTFS melalui command prompt windows. Konfigurasi via security setting (klik kanan) tidak dianjurkan karena berpotensi membingungkan, di mana pengguna harus berurusan dengan konfigurasi permission, ownership dll. Selain itu, proses via dekstop ini cukup menyita waktu, apalagi kalau folder tersebut berisi ribuan file. Jadi, daripada ribet dan lama, lebih baik di-reset saja sekalian.

1. Jalankan command prompt Windows, sebagai Administrator.
2. Masuk ke direktori yang ingin di-reset security-nya.
3. Ambil alih ownership isi folder tersebut dengan perintah berikut:

          takeown /R /F *

4. Reset permission setting seluruh isi folder tersebut dengan perintah tersebut:

          icacls * /T /Q /C /RESET

Tunggu sampai seluruh proses selesai, dan perubahan pada folder akan bisa dilakukan.




Thursday, May 11, 2017

Research Note #2 - draft

2017/05/30:
  • Bila draft dijalankan pada Cygwin 64-bit, akan ada masalah pada sistem permission file. Lebih baik dijalankan pada Cygwin 32-bit. Pastikan menjalankan Cygwin dalam sebagai Administrator di Windows untuk mencegah masalah permission pada file data.
2017/05/11:
<OMG HAMPIR TEPAT SETAHUN SEJAK TULISAN INI DIUPDATE!!>
  • Draft harus dijalankan dengan c-shell (csh). Bila dengan bash, penulisan file binary (file size) akan bermasalah, dan baru ketahuan setelah dijalankan dengan GrADS.
2016/05/13:
  • [Script] Bila proses dilakukan langsung, maka file lama hasil proses akan langsung di overwrite oleh file baru. Jadi file lama tidak perlu dihapus (untuk keperluan tes/ujicoba)
2016/05/12:
  • [Script] File CTL hanya mewakili satu tanggal saja (tiap direktori). Dengan sedikit modifikasi, 1 file CTL bisa dibuat untuk mewakili semua tanggal.
  • [Script] Untuk radar furuno selama IOP 2016, waktu observasi adalah tiap 5 menit, berarti 1 jam ada 12 observasi, atau 288 observasi selama 24 jam. Itu artinya TDEF di file CTL untuk 1 hari observasi adalah 288. Bila 30 hari TDEFnya 8640.
  • [Script] Data yang kosong akan menghasilkan error bila dibuka dengan GrADS. Cara mengatasinya kemungkinan adalah dengan membuat data set baru dengan dimensi yang sama (dengan data yg tidak kosong) dan diberi nilai -999 (no data) untuk waktu observasi tersebut. Masalahnya adalah, bagaimana cara membuat data kosong dengan dimensi yang sama persis dengan data yang dihasilkan draft.
Error pada data kosong

2016/05/11:
  • [Script] Proses untuk 24 jam akan menghasilkan 24 data CAPPI per jamnya dalam format binary GrADS, dengan 1 file CTL.
  • [Script] Proses untuk 24 jam akan tetap menghasilkan 24 data CAPPI, walaupun ada data yang tidak lengkap. Misal data jam 3 tidak ada, maka file data pada jam tersebut akan memiliki ukuran 0 kb.
  • [Script] Seluruh data CAPPI akan diletakkan pada direktori dengan yang sama dengan parameter hasil konversi, misal : /converted/dBuZ/20160124/.
  • [Script] Proses akan menghasilkan direktori data per jamnya dan direktori untuk menampung seluruh file CAPPI. Kedua direktori ini aman dihapus untuk menghemat space.
2016/05/09:
  • Merupakan kumpulan tool yang berfungsi untuk melakukan berbagai proses pada data/file dalam format draft (rt), misalnya membuat data CAPPI atau 3D.
  • Link download source code.
  • Bisa diinstal pada sistem 32-bit maupun 64-bit.
  • Instalasi pada Cygwin 32-bit di Windows 32-bit sudah dicoba berkali-kali dan tidak ada masalah.
  • Instalasi pada Cygwin 32-bit di Windows 64-bit sudah dicoba sekali dan tidak ada masalah.
Instalasi draft pada Cygwin 32-bit di Windows 64-bit
  • Instalasi langsung pada Cygwin 64-bit di Windows 64-bit bermasalah, karena script configure tidak mengenali system build type. Masalah ini (ternyata) bisa diselesaikan dengan menambahkan parameter build dengan nilai 'i686-pc-linux-gnu' pada perintah configure.
./configure F77=gfortran CC=gcc --build=i686-pc-linux-gnu

Error instalasi draft pada Cygwin 64-bit di Windows 64-bit
Penambahan parameter build pada configure untuk mengatasi error ketika instalasi di sistem 64-bit
  • Sebagai catatan, pada Cygwin 32-bit, system build typenya adalah 'i686-pc-cygwin'.
  • Bila draft tetap tidak bisa diinstall, kemungkinan alternatifnya adalah dengan menggunakan (copy) file executable dari tool yang sudah diinstall pada sistem yang berjalan. Tapi ini masih sebatas dugaan karena belum pernah dicoba.