Moving a model from EMS to WRF
Moving a model from EMS to WRF
I have read about some new diagnostics available in WRF 3.6.1 that I would like to use with one of my models. I don't have any experience running regular WRF, just WRF-EMS. I did manage to get WRF 3.7 installed and I was wondering how hard it would be to move my model from EMS to regular WRF. Since I've already run the model in EMS, I already have met_em files and various namelists, can those be pulled over into WRF?
Alternatively, does anyone know when WRF 3.6.1 will be incorporated into EMS?
Thanks,
Jim
Alternatively, does anyone know when WRF 3.6.1 will be incorporated into EMS?
Thanks,
Jim
-
- Posts: 1604
- Joined: Wed Aug 19, 2009 10:05 am
Re: Moving a model from EMS to WRF
Yes you can use domain files from EMS but you will need to do all scripting to automate system, yourself. I guess it will be much easier to update EMS installation to use your WRF binaries.
Re: Moving a model from EMS to WRF
Thank you meteoadriatic. I have looked at the thread on that subject and it isn't very clear--I think even you say you haven't been able to run 3.6.1 in EMS 3.4. Have you since been successful with this approach? Is it more straightforward than that thread implies?
-
- Posts: 1604
- Joined: Wed Aug 19, 2009 10:05 am
Re: Moving a model from EMS to WRF
I never used EMS UPP version with upgraded WRF, I don't know if it will work. For postprocessing I use original UPP. Other than that, it is easy to upgrade. Basically...
- replace wrfems/bin/wrfm_arw.exe wrfm_nmm.exe with your versions
- replace all tables in wrfems/data/tables/wrf with new from run directory in WRF tarball
- add new stuff you want to use in wrfems/data/tables/wrf/namelist.arw and delete anything you don't want from it (keep original backed up)
(optionally) - if everything is compiled statically you don't have to bother with libraries, if not you need to take care to put those libs somewhere and set environment for them correctly through wrfems/etc profile file
You're basically done, if something doesn't work most probably there is issue in namelist.arw (something inside not compatible with new WRF so you need to find what and kick it out).
But if postprocessing isn't how you expect, then you will have to use your own UPP code... not sure really what will you get. Try and see
- replace wrfems/bin/wrfm_arw.exe wrfm_nmm.exe with your versions
- replace all tables in wrfems/data/tables/wrf with new from run directory in WRF tarball
- add new stuff you want to use in wrfems/data/tables/wrf/namelist.arw and delete anything you don't want from it (keep original backed up)
(optionally) - if everything is compiled statically you don't have to bother with libraries, if not you need to take care to put those libs somewhere and set environment for them correctly through wrfems/etc profile file
You're basically done, if something doesn't work most probably there is issue in namelist.arw (something inside not compatible with new WRF so you need to find what and kick it out).
But if postprocessing isn't how you expect, then you will have to use your own UPP code... not sure really what will you get. Try and see

Re: Moving a model from EMS to WRF
Thanks for the instructions Meteoadriatic. First attempt failed in a segmentation fault. I'll have to debug and try again.
Re: Moving a model from EMS to WRF
I have successfully used ifort compiled binaries for 3.5.x. 3.6.x and 3.7.0 in WRF-EMS.
Make sure you copy over the new vegparm table and use the EMS 3.4 WPS binaries.
Make sure you copy over the new vegparm table and use the EMS 3.4 WPS binaries.
-
- Posts: 1604
- Joined: Wed Aug 19, 2009 10:05 am
Re: Moving a model from EMS to WRF
I did upgrade WPS also.
Re: Moving a model from EMS to WRF
I moved over all the tables (not just vegparm) and tried to follow the instructions. When I run there is a problem. Here is what run_real.log says:
This seems to happen even with the old namelist.arw.
Any ideas? Thanks.
Code: Select all
------ ERROR while reading namelist physics ------
------ ERROR while reading namelist physics ------
------ ERROR while reading namelist scm ------
------ ERROR while reading namelist scm ------
-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE: <stdin> LINE: 10207
ERRORS while reading one or more namelists from namelist.input.
-------------------------------------------
-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE: <stdin> LINE: 10207
ERRORS while reading one or more namelists from namelist.input.
-------------------------------------------
-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE: <stdin> LINE: 10207
ERRORS while reading one or more namelists from namelist.input.
-------------------------------------------
-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE: <stdin> LINE: 10207
ERRORS while reading one or more namelists from namelist.input.
Any ideas? Thanks.
-
- Posts: 1604
- Joined: Wed Aug 19, 2009 10:05 am
Re: Moving a model from EMS to WRF
Sure, your namelist is incorrect. I think there is something compatible ONLY with EMS WRF build inside original master namelist file.
Here you are, tested, cleaned-up, working version for 3.7 ARW, from myself:
If it still won't work, try this one, nice short and clean, operationally running MeteoAdriatic models with 3.6.1 ARW:
As always, after model begin to work, double check resulting namelist.input inside runs/domain (or runs/domain/static/namelist.wrfm) to see final resulting namelist file. It might not be exactly what you want, so some additional hacks of perl configuration files (strc/ems_run/Models/WRF/ARWconf/NLphysics.pm) might be neccessary to get exatly what you want.
Here you are, tested, cleaned-up, working version for 3.7 ARW, from myself:
Code: Select all
&time_control
start_year = 2003
start_month = 02
start_day = 30
start_hour = 12
start_minute = 00
start_second = 00
end_year = 2003
end_month = 02
end_day = 31
end_hour = 12
end_minute = 00
end_second = 00
interval_seconds = 10800
input_from_file = T
history_interval = 60
history_outname = "wrfout_d<domain>_<date>"
frames_per_outfile = 1
io_form_history = 2
io_form_input = 2
io_form_restart = 2
io_form_boundary = 2
io_form_auxinput2 = 2
restart = F
restart_interval = 100000
auxhist1_outname = "auxhist1_d<domain>_<date>"
auxhist1_interval = 0
frames_per_auxhist1 = 1
io_form_auxhist1 = 5
auxhist2_outname = "auxhist2_d<domain>_<date>"
auxhist2_interval = 0
output_diagnostics = 0
auxhist3_outname = "wrfxtrm_d<domain>_<date>"
auxhist3_interval = 0
frames_per_auxhist2 = 1
io_form_auxhist2 = 2
auxinput4_inname = "wrflowinp_d<domain>"
auxinput4_interval = 360
io_form_auxinput4 = 2
fine_input_stream = 2
adjust_output_times = T
reset_simulation_start = F
cycling = F
iofields_filename = "my_iofields_list.txt"
ignore_iofields_warning = T
diag_print = 0
debug_level = 0
/
&domains
time_step = 180
time_step_fract_num = 0
time_step_fract_den = 1
time_step_dfi = 60
max_dom = 1
s_we = 1
e_we = 151
s_sn = 1
e_sn = 151
s_vert = 1
e_vert = 45
dx = 6000
dy = 6000
grid_id = 1
parent_id = 0
i_parent_start = 1
j_parent_start = 1
parent_grid_ratio = 3
parent_time_step_ratio = 1
feedback = 1
smooth_option = 1
grid_allowed = T
max_dz = 1000.
tile_sz_x = 0,
tile_sz_y = 0,
numtiles = 1,
nproc_x = -1,
nproc_y = -1,
num_metgrid_soil_levels = 4
num_metgrid_levels = 27
interp_type = 2
extrap_type = 2
t_extrap_type = 2
use_levels_below_ground = T
use_surface = T
lagrange_order = 1
zap_close_levels = 500
lowest_lev_from_sfc = F
force_sfc_in_vinterp = 1
sfcp_to_sfcp = F
smooth_cg_topo = T
use_tavg_for_tsk = F
aggregate_lu = F
p_top_requested = 5000
eta_levels =
use_adaptive_time_step = F
step_to_output_time = T
target_cfl = 1.2,1.2,1.2
target_hcfl = 0.84,0.84,0.84
max_step_increase_pct = 5, 51, 51
starting_time_step = -1,-1,-1
max_time_step = -1,-1,-1
min_time_step = -1,-1,-1
hypsometric_opt = 2
interp_theta = F
/
&physics
cu_physics = 1
cudt = 0
kfeta_trigger = 1
cu_rad_feedback = T
mp_physics = 2
bl_pbl_physics = 1
bldt = 0
grav_settling = 0
topo_wind = 0
sf_sfclay_physics = 0
sf_surface_physics = 2
sf_surface_mosaic = 1
num_land_cat = 24
num_soil_cat = 16
num_soil_layers = 4
rdlai2d = F
ra_lw_physics = 1
ra_sw_physics = 2
radt = 30
icloud = 1
sst_skin = 0
sst_update = 0
tmn_update = 0
/
&noah_mp
dveg = 2
opt_crs = 1
opt_sfc = 1
opt_btr = 1
opt_run = 1
opt_frz = 1
opt_inf = 1
opt_rad = 1
opt_alb = 2
opt_snf = 1
opt_tbot = 2
opt_stc = 1
/
&dynamics
non_hydrostatic = T
gwd_opt = 0
rk_ord = 3
h_mom_adv_order = 5
h_sca_adv_order = 5
v_mom_adv_order = 3
v_sca_adv_order = 3
moist_adv_opt = 1
scalar_adv_opt = 1
chem_adv_opt = 1
tke_adv_opt = 1
diff_opt = 1
km_opt = 4
w_damping = 1
diff_6th_opt = 0
diff_6th_factor = 0.12
damp_opt = 3
zdamp = 5000.
dampcoef = 0.2
khdif = 0
kvdif = 0
smdiv = 0.1
emdiv = 0.01
epssm = 0.1
/
&bdy_control
spec_bdy_width = 5
spec_zone = 1
relax_zone = 4
specified = T, F, F
nested = F, T, T
/
&namelist_quilt
nio_tasks_per_group = 0
nio_groups = 1
/
If it still won't work, try this one, nice short and clean, operationally running MeteoAdriatic models with 3.6.1 ARW:
Code: Select all
&time_control
start_year = 2003
start_month = 02
start_day = 30
start_hour = 12
start_minute = 00
start_second = 00
end_year = 2003
end_month = 02
end_day = 31
end_hour = 12
end_minute = 00
end_second = 00
interval_seconds = 10800
input_from_file = T
history_interval = 60
history_outname = "wrfout_d<domain>_<date>"
frames_per_outfile = 1
io_form_history = 2
io_form_input = 2
io_form_restart = 2
io_form_boundary = 2
io_form_auxinput2 = 2
restart = F
restart_interval = 100000
auxhist1_outname = "auxhist1_d<domain>_<date>"
auxhist1_interval = 0
frames_per_auxhist1 = 1
io_form_auxhist1 = 5
auxhist2_outname = "auxhist2_d<domain>_<date>"
auxhist2_interval = 0
frames_per_auxhist2 = 1
io_form_auxhist2 = 5
fine_input_stream = 0
adjust_output_times = T
debug_level = 0
iofields_filename = "myoutfields.txt", "myoutfields.txt"
ignore_iofields_warning = T
/
&domains
time_step = 180
time_step_fract_num = 0
time_step_fract_den = 1
max_dom = 1
s_we = 1
e_we = 151
s_sn = 1
e_sn = 151
s_vert = 1
e_vert = 45
dx = 6000
dy = 6000
grid_id = 1
parent_id = 0
i_parent_start = 1
j_parent_start = 1
parent_grid_ratio = 3
parent_time_step_ratio = 1
feedback = 1
smooth_option = 1
grid_allowed = T
max_dz = 1000.
tile_sz_x = 0,
tile_sz_y = 0,
numtiles = 8,
nproc_x = -1,
nproc_y = -1,
num_metgrid_soil_levels = 4
num_metgrid_levels = 27
interp_type = 2
extrap_type = 2
t_extrap_type = 2
use_levels_below_ground = T
use_surface = T
lagrange_order = 1
zap_close_levels = 500
lowest_lev_from_sfc = F
force_sfc_in_vinterp = 1
sfcp_to_sfcp = F
smooth_cg_topo = F
use_tavg_for_tsk = F
p_top_requested = 5000
eta_levels =
use_adaptive_time_step = F
step_to_output_time = T
target_cfl = 1.2,1.2,1.2
max_step_increase_pct = 5, 51, 51
starting_time_step = -1
max_time_step = -1
min_time_step = -1
hypsometric_opt = 2
interp_theta = F
lagrange_order = 2
/
&physics
mp_physics = 3, 6
cu_physics = 1
cugd_avedx = 3
kfeta_trigger = 2
cudt = 5
sf_sfclay_physics = 1
sf_surface_physics = 2
num_soil_layers = 4
num_land_cat = 21
num_soil_cat = 16
bl_pbl_physics = 1
topo_wind = 2, 2
bldt = 0
ra_lw_physics = 1
ra_sw_physics = 1
radt = 12
sst_skin = 1
rdlai2d = F
sf_lake_physics = 0
icloud = 1
cu_rad_feedback = T
swint_opt = 1
grav_settling = 2, 2
sf_surface_mosaic = 1
/
&dynamics
rk_ord = 3
w_damping = 1
diff_opt = 1
km_opt = 4
diff_6th_opt = 2
diff_6th_factor = 0.12
base_temp = 290.
damp_opt = 3
zdamp = 5000, 5000
dampcoef = 0.2, 0.2
khdif = 0
kvdif = 0
smdiv = 0.1
emdiv = 0.01
epssm = 0.2
non_hydrostatic = T
gwd_opt = 1
h_mom_adv_order = 5
h_sca_adv_order = 5
v_mom_adv_order = 3
v_sca_adv_order = 3
moist_adv_opt = 1
scalar_adv_opt = 1
chem_adv_opt = 0
tke_adv_opt = 0
/
&bdy_control
spec_bdy_width = 5
spec_zone = 1
relax_zone = 4
specified = T, F, F
nested = F, T, T
/
&namelist_quilt
nio_tasks_per_group = 0
nio_groups = 1
/
As always, after model begin to work, double check resulting namelist.input inside runs/domain (or runs/domain/static/namelist.wrfm) to see final resulting namelist file. It might not be exactly what you want, so some additional hacks of perl configuration files (strc/ems_run/Models/WRF/ARWconf/NLphysics.pm) might be neccessary to get exatly what you want.
Re: Moving a model from EMS to WRF
Thank you again Meteoadriatic. I tried both, but neither seemed to work. The longer one gave a bunch of warnings
W A R N I N G : Problem opening my_iofields_list.txt
Which seemed odd because I have a my_iofields_list.txt
It finished at
real_em: SUCCESS COMPLETE REAL_EM INIT
Timing for output 0 s.
Timing for loop # 6 = 1 s.
real_em: SUCCESS COMPLETE REAL_EM INIT
When I ran the shorter one, then run_real.log had the following error 4 times:
-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE: <stdin> LINE: 139
--- ERROR: Both km_opt and diff_opt need to be set in the namelist.input file.
I didn't understand that because they do seem to be set in the namelist.arw file.
I need to study up WRF...unfortunately this is all completely confusing to me
W A R N I N G : Problem opening my_iofields_list.txt
Which seemed odd because I have a my_iofields_list.txt
It finished at
real_em: SUCCESS COMPLETE REAL_EM INIT
Timing for output 0 s.
Timing for loop # 6 = 1 s.
real_em: SUCCESS COMPLETE REAL_EM INIT
When I ran the shorter one, then run_real.log had the following error 4 times:
-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE: <stdin> LINE: 139
--- ERROR: Both km_opt and diff_opt need to be set in the namelist.input file.
I didn't understand that because they do seem to be set in the namelist.arw file.
I need to study up WRF...unfortunately this is all completely confusing to me