Kumpulan Error WRF + Solusinya (based on author's experience)


Ok, jadi saya berniat untuk membuat sticky post ini sebagai catatan error-error pada program WRF yang pernah saya hadapi dan bagaimana cara saya mengatasinya. Apa itu WRF? cek di sini. Motivasi utama saya bikin postingan ini karena pengalaman pribadi ketika ketemu error pada suatu program dan saya dapati solusinya dengan susah payah pada hari-hari yang lalu kemudian pada hari-hari selanjutnya saya dapati error yang sama tapi saya lupa bagaimana dulu cara saya mengatasinya...ini sangat menyebalkan dan membuang-buang waktu.

Postingan ini akan terus saya update selama saya masih berjelajah dengan software WRF ini.

CASE #1

Pesan Error:

 $ ./real.exe  
 --- WARNING: traj_opt is zero, but num_traj is not zero; setting num_traj to zero.  
 --- NOTE: sst_update is 0, setting io_form_auxinput4 = 0 and auxinput4_interval = 0 for all domains  
 --- NOTE: grid_fdda is 0 for domain   1, setting gfdda interval and ending time to 0 for that domain.  
 --- NOTE: both grid_sfdda and pxlsm_soil_nudge are 0 for domain   1, setting sgfdda interval and ending time to 0 for that domain.  
 --- NOTE: obs_nudge_opt is 0 for domain   1, setting obs nudging interval and ending time to 0 for that domain.  
 --- NOTE: bl_pbl_physics /= 4, implies mfshconv must be 0, resetting  
 Need MYNN PBL for icloud_bl = 1, resetting to 0  
 --- NOTE: RRTMG radiation is not used, setting: o3input=0 to avoid data pre-processing  
 --- NOTE: num_soil_layers has been set to   4  
 REAL_EM V3.8 PREPROCESSOR  
 DYNAMICS OPTION: Eulerian Mass Coordinate  
   alloc_space_field: domain      1 ,       80509128 bytes allocated  
 Time period #  1 to process = 2017-06-01_00:00:00.  
 Total analysis times to input =  1.  
  -----------------------------------------------------------------------------  
  Domain 1: Current date being processed: 2017-06-01_00:00:00.0000, which is loop #  1 out of  1  
  configflags%julyr, %julday, %gmt:    2017     152  0.00000000    
  metgrid input_wrf.F first_date_input = 2017-06-01_00:00:00  
  metgrid input_wrf.F first_date_nml = 2017-06-01_00:00:00  
 -------------- FATAL CALLED ---------------  
 FATAL CALLED FROM FILE: <stdin> LINE:   864  
  input_wrf.F: SIZE MISMATCH: namelist ide,jde,num_metgrid_levels=     54     37     40 ; input data ide,jde,num_metgrid_levels=     54     37     32  
 -------------------------------------------  
 -------------- FATAL CALLED ---------------  
 FATAL CALLED FROM FILE: <stdin> LINE:   864  
  input_wrf.F: SIZE MISMATCH: namelist ide,jde,num_metgrid_levels=     54     37     40 ; input data ide,jde,num_metgrid_levels=     54     37     32  
 -------------------------------------------  
 STOP wrf_abort  

Solusi:

Error ini disebabkan oleh perbedaan num_metgrid_levels pada namelist.input dan num_metgrid_levels pada met_em.*.nc kita. Oleh karena itu solusinya adalah dengan memperbaiki num_metgrid_levels pada namelist.input untuk disamakan dengan num_metgrid_levels pada file met_em.*.nc kita. Seperti pada screenshoot pesan error di atas, error ini ktia dapati saat menjalankan real.exe . 

Jadi pertama kita cari dulu num_metgrid_levels yang terkandung pada file met_em.*.nc kita, pada kasus ini file met_em.d01.2017-06-01_00:00:00.nc . Caranya

 $ ncdump -h met_em.d01.2017-06-01_00:00:00.nc | grep -i 'num_metgrid_levels'  
      num_metgrid_levels = 32 ;  
      float PRES(Time, num_metgrid_levels, south_north, west_east) ;  
      float GHT(Time, num_metgrid_levels, south_north, west_east) ;  
      float RH(Time, num_metgrid_levels, south_north, west_east) ;  
      float VV(Time, num_metgrid_levels, south_north_stag, west_east) ;  
      float UU(Time, num_metgrid_levels, south_north, west_east_stag) ;  
      float TT(Time, num_metgrid_levels, south_north, west_east) ;  

Terlihat di situ dari command ncdump terlihat num_metgrid_levels yang sebenarnya adalah 32. Kemudian kita ubah file namelist.input pada WRF yaitu variabel num_metgrid_levels, sebagai contoh dari ini

 &domains           
 .  
 .  
 .  
 num_metgrid_levels    = 40,  
 .  
 .  
 .  
 /  

menjadi ini

 &domains           
 .  
 .  
 .  
 num_metgrid_levels    = 32,  
 .  
 .  
 .  
 /  

Pada kasus saya, ini terjadi ketika saya memakai domain wizard untuk running program WPS dan entah kenapa file namelist.input keluaran dari domain wizard ini tidak cocok dengan met_em.*.nc keluaran domain wizard itu sendiri.


CASE #2

Pesan Error:

 $ ./real.exe  
 --- WARNING: traj_opt is zero, but num_traj is not zero; setting num_traj to zero.  
 --- NOTE: sst_update is 0, setting io_form_auxinput4 = 0 and auxinput4_interval = 0 for all domains  
 --- NOTE: grid_fdda is 0 for domain   1, setting gfdda interval and ending time to 0 for that domain.  
 --- NOTE: both grid_sfdda and pxlsm_soil_nudge are 0 for domain   1, setting sgfdda interval and ending time to 0 for that domain.  
 --- NOTE: obs_nudge_opt is 0 for domain   1, setting obs nudging interval and ending time to 0 for that domain.  
 --- NOTE: bl_pbl_physics /= 4, implies mfshconv must be 0, resetting  
 Need MYNN PBL for icloud_bl = 1, resetting to 0  
 --- NOTE: RRTMG radiation is not used, setting: o3input=0 to avoid data pre-processing  
 --- NOTE: num_soil_layers has been set to   4  
 REAL_EM V3.8 PREPROCESSOR  
 DYNAMICS OPTION: Eulerian Mass Coordinate  
   alloc_space_field: domain      1 ,       68959772 bytes allocated  
 Time period #  1 to process = 2017-06-01_00:00:00.  
 Total analysis times to input =  1.  
  -----------------------------------------------------------------------------  
  Domain 1: Current date being processed: 2017-06-01_00:00:00.0000, which is loop #  1 out of  1  
  configflags%julyr, %julday, %gmt:    2017     152  0.00000000    
  metgrid input_wrf.F first_date_input = 2017-06-01_00:00:00  
  metgrid input_wrf.F first_date_nml = 2017-06-01_00:00:00  
 d01 2017-06-01_00:00:00 Timing for input     0 s.  
 d01 2017-06-01_00:00:00     flag_soil_layers read from met_em file is 1  
 d01 2017-06-01_00:00:00 Turning off use of MAX WIND level data in vertical interpolation  
 d01 2017-06-01_00:00:00 Turning off use of TROPOPAUSE level data in vertical interpolation  
 Max map factor in domain 1 = 1.00. Scale the dt in the model accordingly.  
 Using sfcprs3 to compute psfc  
  Converged znw(kte) should be about 0.0 =  -3.90789891E-03  
  z (m)      =  0.0000000000000000     
  z (m) and dz (m) =  56.575875940427252    56.575875940427252     
  z (m) and dz (m) =  137.94396027414436    81.368084333717121     
  z (m) and dz (m) =  244.69885334585342    106.75489307170906     
  z (m) and dz (m) =  377.64062967947041    132.94177633361696     
  z (m) and dz (m) =  546.29320666454760    168.65257698507716     
  z (m) and dz (m) =  761.12152363369387    214.82831696914636     
  z (m) and dz (m) =  1016.1669128542145    255.04538922052060     
  z (m) and dz (m) =  2063.1328474187962    1046.9659345645816     
  z (m) and dz (m) =  3110.0987035559388    1046.9658561371425     
  z (m) and dz (m) =  4157.0648916797636    1046.9661881238246     
  z (m) and dz (m) =  5204.0311456449745    1046.9662539652113     
  z (m) and dz (m) =  6250.9974424252414    1046.9662967802669     
  z (m) and dz (m) =  7297.9634007915301    1046.9659583662883     
  z (m) and dz (m) =  8344.9295567094541    1046.9661559179249     
  z (m) and dz (m) =  9391.8958549878553    1046.9662982784007     
  z (m) and dz (m) =  10438.861937109888    1046.9660821220330     
  z (m) and dz (m) =  11485.828061230417    1046.9661241205288     
  z (m) and dz (m) =  12532.794041726534    1046.9659804961163     
  z (m) and dz (m) =  13579.760037977203    1046.9659962506703     
  z (m) and dz (m) =  14626.725843606109    1046.9658056289061     
  z (m) and dz (m) =  15673.691795079039    1046.9659514729292     
  z (m) and dz (m) =  16720.657603535445    1046.9658084564039     
  z (m) and dz (m) =  17767.623349189256    1046.9657456538146     
  z (m) and dz (m) =  18814.589037935595    1046.9656887463379     
  z (m) and dz (m) =  19861.558665558321    1046.9696276227241     
  dz (m) above fixed eta levels =  1046.9662084835613     
  namelist max_dz (m) =  1000.00000    
  namelist p_top (Pa) =  5000.00000    
 d01 2017-06-01_00:00:00 You need one of three things:  
 d01 2017-06-01_00:00:00 1) More eta levels to reduce the dz: e_vert  
 d01 2017-06-01_00:00:00 2) A lower p_top so your total height is reduced: p_top_requested  
 d01 2017-06-01_00:00:00 3) Increase the maximum allowable eta thickness: max_dz  
 d01 2017-06-01_00:00:00 All are namelist options  
 -------------- FATAL CALLED ---------------  
 FATAL CALLED FROM FILE: <stdin> LINE:  6362  
 dz above fixed eta levels is too large  
 -------------------------------------------  
 -------------- FATAL CALLED ---------------  
 FATAL CALLED FROM FILE: <stdin> LINE:  6362  
 dz above fixed eta levels is too large  
 -------------------------------------------  
 STOP wrf_abort  

Solusi:

Well, pada pesan error dari real.exe sudah diberitahu solusinya sangat jelas. Tapi yah, terkadang kita menjadi sangat malas hanya untuk membaca beberapa baris pesan error. Sesuai yang di beritahukan pada pesan itu. Kita harus menambah variabel e_vert agar nilai dz tidak melebihi max_dz atau tidak melebihi batas maksimum eta level untuk grid vertikalnya (err, u know...dx, dy, dz...ini semua tentang resolusi grid dalam hal ini grid spasial vertikal yang tidak boleh lebih kasar daripada yang ditentukan). So, misal dalam kasus saya, saya ubah file namelist.input saya dari ini

 &domains           
 .  
 .  
 .  
 e_vert          = 28,  
 .  
 .  
 .  

menjadi ini

 &domains           
 .  
 .  
 .  
 e_vert          = 30,  
 .  
 .  
 .  


CASE #3

Pesan Error:


 $ ./wrf.exe  
 --- WARNING: traj_opt is zero, but num_traj is not zero; setting num_traj to zero.  
 --- NOTE: sst_update is 0, setting io_form_auxinput4 = 0 and auxinput4_interval = 0 for all domains  
 --- NOTE: grid_fdda is 0 for domain   1, setting gfdda interval and ending time to 0 for that domain.  
 --- NOTE: both grid_sfdda and pxlsm_soil_nudge are 0 for domain   1, setting sgfdda interval and ending time to 0 for that domain.  
 --- NOTE: obs_nudge_opt is 0 for domain   1, setting obs nudging interval and ending time to 0 for that domain.  
 --- NOTE: bl_pbl_physics /= 4, implies mfshconv must be 0, resetting  
 Need MYNN PBL for icloud_bl = 1, resetting to 0  
 --- NOTE: RRTMG radiation is not used, setting: o3input=0 to avoid data pre-processing  
 --- NOTE: num_soil_layers has been set to   4  
 WRF V3.8 MODEL  
 DYNAMICS OPTION: Eulerian Mass Coordinate  
   alloc_space_field: domain      1 ,       49894828 bytes allocated  
  med_initialdata_input: calling input_input  
 Timing for processing wrfinput file (stream 0) for domain    1:  0.00788 elapsed seconds  
 INPUT LandUse = "MODIFIED_IGBP_MODIS_NOAH"  
  LANDUSE TYPE = "MODIFIED_IGBP_MODIS_NOAH" FOUND     33 CATEGORIES      2 SEASONS WATER CATEGORY =      17 SNOW CATEGORY =      15  
 INITIALIZE THREE Noah LSM RELATED TABLES  
 Skipping over LUTYPE = USGS  
  LANDUSE TYPE = MODIFIED_IGBP_MODIS_NOAH FOUND     20 CATEGORIES  
  INPUT SOIL TEXTURE CLASSIFICATION = STAS  
  SOIL TEXTURE CLASSIFICATION = STAS FOUND     19 CATEGORIES  
 Timing for Writing wrfout_d01_2017-06-01_00:00:00 for domain    1:  0.17287 elapsed seconds  
 -------------- FATAL CALLED ---------------  
 FATAL CALLED FROM FILE: mediation_integrate.b LINE:  1955  
  med_latbound_in: error opening wrfbdy_d01 for reading. IERR =    -1021  
 -------------------------------------------  
 -------------- FATAL CALLED ---------------  
 FATAL CALLED FROM FILE: mediation_integrate.b LINE:  1955  
  med_latbound_in: error opening wrfbdy_d01 for reading. IERR =    -1021  
 -------------------------------------------  
 Note: The following floating-point exceptions are signalling: IEEE_UNDERFLOW_FLAG IEEE_DENORMAL  
 STOP wrf_abort  

Solusi:

Ini terjadi karena run_days/run_hours/run_minutes/run_seconds yang di deklarasikan di namelist.input tidak sesuai dengan yang ada pada wrfinput_*. Pada kasus ini wrfinput_d01 karena saya hanya ingin melakukan downscalling pada 1 timestep pada data grib2 GFS jadinya run_days/run_hours/run_minutes/run_seconds harus di deklarasikan menjadi 0. Jadi dari ini

 &time_control        
 run_days         = 0,  
 run_hours        = 12,  
 run_minutes       = 0,  
 run_seconds       = 0,  
 .  
 .  
 .  

Menjadi ini

 &time_control        
 run_days         = 0,  
 run_hours        = 0,  
 run_minutes       = 0,  
 run_seconds       = 0,  
 .  
 .  
 .  


Intinya, run_* ini harus sesuai dengan timestep pada wrfinput yang ingin running untuk simulasi berapa lama.

referensi:
http://forum.wrfforum.com/viewtopic.php?f=9&t=2781, diakses pada 11 Juni 2017
http://forum.wrfforum.com/viewtopic.php?f=6&t=5668, diakses pada 12 Juni 2017

Komentar

  1. DYNAMICS OPTION: Eulerian Mass Coordinate
    alloc_space_field: domain 1 , 463762388 bytes allocated
    metgrid input_wrf.F first_date_input = 2019-03-17_00:00:00
    metgrid input_wrf.F first_date_nml = 2019-03-17_00:00:00
    d01 2019-03-17_00:00:00 Timing for input 0 s.
    d01 2019-03-17_00:00:00 flag_soil_layers read from met_em file is 1
    d01 2019-03-17_00:00:00 Turning off use of MAX WIND level data in vertical interpolation
    d01 2019-03-17_00:00:00 Turning off use of TROPOPAUSE level data in vertical interpolation
    Max map factor in domain 1 = 1.12. Scale the dt in the model accordingly.
    Using sfcprs3 to compute psfc
    d01 2019-03-17_00:00:00 flag value of flag_qnwfa is 0
    d01 2019-03-17_00:00:00 No average surface temperature for use with inland lakes
    Assume Noah LSM input
    -------------- FATAL CALLED ---------------
    FATAL CALLED FROM FILE: LINE: 2947
    grid%tsk unreasonable
    -------------------------------------------
    application called MPI_Abort(MPI_COMM_WORLD, 1) - process 0

    solusinya gimana bang?

    BalasHapus

Posting Komentar