Scheduled Downtime
On Friday 21 April 2023 @ 5pm MT, this website will be down for maintenance and expected to return online the morning of 24 April 2023 at the latest

WRF-ARW: No snow on lakes?

cwaigl

New member
I run WRF-ARW with ERA5 as an output, with two nested domains over Alaska (12 and 4 km). I use sf_lake_physics = 1 and use_lakedepth = 1 with MODIS lakes and the optional lake depth data. The snow inputs are also from ERA5, but with some custom pre-processing. Suffice it to say we've put a lot of thought into our snow inputs.

We originally neglected to switch on lake physics and just did some successful troubleshooting of temperature anomalies over lakes (lakes much too warm in the winter). At the WPS stage, I run
avg_tsfc.exe between ungrib and metgrid, and pick up the field TAVGSFC via constants_name = 'TAVGSFC' in namelist.wps. We're now happy with the skin temperatures over our lakes - this is not the problem I'm asking about.

All of this works as described. The one odd thing when I closely inspect the output data is that over the areas that get landuse class 21 ("lake"), the value for SNOW is always 0. Even if there is adjacent snow, even if there is snow accumulation. Is this normal, and/or is there a way for me to make it snow on frozen lakes?

I copy my template for namelist.input below for all the physics options etc. (It gets filled by a Python script.)

Code:
 &time_control
 run_days                            = 0,
 run_hours                           = 54,
 run_minutes                         = 0,
 run_seconds                         = 0,
 start_year                          = {startyear:s}, {startyear:s},
 start_month                         = {startmonth:s},   {startmonth:s},
 start_day                           = {startday:s},   {startday:s},
 start_hour                          = {starthours:s},   {starthours:s},
 end_year                            = {endyear:s}, {endyear:s},
 end_month                           = {endmonth:s},   {endmonth:s},
 end_day                             = {endday:s},   {endday:s},
 end_hour                            = {endhours:s},   {endhours:s},
 interval_seconds                    = 10800
 input_from_file                     = .true.,.true.,
 iofields_filename                   = 'iovars_d01.txt', 'iovars_d02.txt',
 ignore_iofields_warning             = .true.,
 history_interval                    = 60,  60,
 frames_per_outfile                  = 6, 6,
 restart                             = .false.,
 restart_interval                    = 7200,
 io_form_history                     = 2
 io_form_restart                     = 2
 io_form_input                       = 2
 io_form_boundary                    = 2
 io_form_auxinput4                   = 2
 auxinput4_inname                    = 'wrflowinp_d<domain>',
 auxinput4_interval                  = 180, 180,
 /

 &domains
 time_step                           = {timestep:s},
 time_step_fract_num                 = 0,
 time_step_fract_den                 = 1,
 max_dom                             = 2,
 e_we                                = 265, 421,
 e_sn                                = 205, 451,
 e_vert                              = 50,    50,
 p_top_requested                     = 5000,
 num_metgrid_levels                  = 38,
 num_metgrid_soil_levels             = 4,
 dx                                  = 12000, 4000,
 dy                                  = 12000, 4000,
 grid_id                             = 1,     2,
 parent_id                           = 0,     1,
 i_parent_start                      = 1,     68,
 j_parent_start                      = 1,     27,
 parent_grid_ratio                   = 1,     3,
 parent_time_step_ratio              = 1,     3,
 parent_time_step_ratio              = 1,     3,
 feedback                            = 1,
 smooth_option                       = 0
 /

 &physics
 mp_physics                          = 10,     10,
 ra_lw_physics                       = 4,      4,
 ra_sw_physics                       = 4,      4,
 radt                                = 5,      5,
 sf_sfclay_physics                   = 91,     91,
 sf_surface_physics                  = 2,      2,
 bl_pbl_physics                      = 1,      1,
 bldt                                = 0,      0,
 cu_physics                          = 3,      0,
 cudt                                = 0,      0,
 icloud                              = 1,
 num_land_cat                        = 21,
 sf_lake_physics                     = 1,      1,
 lakedepth_default                   = 10.,    10.,
 use_lakedepth                       = 1,
 sf_urban_physics                    = 0,      0,
 fractional_seaice                   = 1,
 sst_update                          = 1,
 /

 &fdda
 grid_fdda                           = 2
 gfdda_inname                        = "wrffdda_d<domain>"
 gfdda_interval_m                    = 360
 gfdda_end_h                         = 54
 io_form_gfdda                       = 2
 fgdt                                = 0
 if_no_pbl_nudging_uv                = 0
 if_no_pbl_nudging_t                 = 0
 if_no_pbl_nudging_q                 = 0
 if_no_pbl_nudging_ph                = 0
 if_zfac_uv                          = 0
 k_zfac_uv                           = 10
 if_zfac_t                           = 0
 k_zfac_t                            = 10
 if_zfac_q                           = 0
 k_zfac_q                            = 10
 if_zfac_ph                          = 0
 k_zfac_ph                           = 10
 guv                                 = 0.0003
 gt                                  = 0.0003
 gq                                  = 0.0003
 gph                                 = 0.0003
 dk_zfac_uv                          = 1
 dk_zfac_t                           = 1
 dk_zfac_ph                          = 1
 xwavenum                            = 3
 ywavenum                            = 3
 if_ramping                          = 0
 dtramp_min                          = 60.0
 /

 &dynamics
 hybrid_opt                          = 2,
 w_damping                           = 0,
 diff_opt                            = 2,      2,
 km_opt                              = 4,      4,
 diff_6th_opt                        = 0,      0,
 diff_6th_factor                     = 0.12,   0.12,
 base_temp                           = 290.
 damp_opt                            = 3,
 zdamp                               = 5000.,  5000.,
 dampcoef                            = 0.2,    0.2,
 khdif                               = 0,      0,
 kvdif                               = 0,      0,
 non_hydrostatic                     = .true., .true.,
 moist_adv_opt                       = 1,      1,
 scalar_adv_opt                      = 1,      1,
 gwd_opt                             = 1,      0,
 /

 &bdy_control
 spec_bdy_width                      = 5,
 specified                           = .true.
 /

 &grib2
 /

 &namelist_quilt
 nio_tasks_per_group = 0,
 nio_groups = 1,
 
You Don't get snow until the lake is frozen, do you?
I don't think there is a variable that says whether the lake is frozen (is there?). The skin temperature of the lakes are in the 250 K in winter, and I hope that the sf_lake_physics model is correctly taking into account the thermodynamics of water starting above freezing to freezing.

I would not expect snow on lakes when the lakes are still partly open water. But in December and January I would expect snow on the lakes, and it's 0. (It's not 0 in the ERA5 data I'm driving it with).
 
Top