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

negative Q2 value

This post was from a previous version of the WRF&MPAS-A Support Forum. New replies have been disabled and if you have follow up questions related to this post, then please start a new thread from the forum home page.

Hi Xun,
With this magnitude of negative Q2, I don't think it is round off error. There must be something wrong in the physics.
Please tell us more details about your case, e.g., grid interval, physics and dynamic option, WRF version, forcing data, etc.
 
Dear Ming,

thanks for your reply.

I am using ERA5 as forcing data. My domain is over High Mountain Asia. I did several sensitivity studies to different physical parameterization schemes for January and July 2011. I attached the namelist.wps and namelist.input for my reference experiment.
Code:
&share
 wrf_core = 'ARW',
 max_dom = 2,
 start_date = '2011-06-30_12:00:00','2011-06-30_12:00:00',
 end_date = '2011-07-02_00:00:00','2011-07-02_00:00:00',
 interval_seconds = 3600,
 io_form_geogrid = 2,
 debug_level = 0,
/

&geogrid
 parent_id         =   1,   1,  2,   
 parent_grid_ratio =   1,   3,  5, 
 i_parent_start    =   1,  85,  202,
 j_parent_start    =   1,  84,  115, 
 e_we              =  281, 382, 711, 
 e_sn              =  217, 253, 296,
 geog_data_res = 'usgs_lakes','usgs_lakes', 'usgs_lakes',
 dx = 30000,
 dy = 30000,
 map_proj = 'lambert',
 ref_lat   =  32,
 ref_lon   =  83,
 truelat1  =  32,
 truelat2  =  38,
 stand_lon =  83,
 geog_data_path = '/home/wang/Data/WPS_GEOG/',
 !opt_geogrid_tbl_path = 'geogrid/'

/

&ungrib
 out_format = 'WPS',
 prefix = 'ERA5_pl',
/

&metgrid
 fg_name = '/home/wang/Data/WPS_FILES/ungrib/hourly/WRFV4.0.3/ERA5_pl/ERA5_pl','/home/wang/Data/WPS_FILES/ungrib/hourly/WRFV4.0.3/ERA5_sfc/ERA5_sfc',
 constants_name = './TAVGSFC',
 io_form_metgrid = 2, 
/

Code:
&time_control
 run_days = 1, 
 run_hours = 12, 
 run_minutes = 0, 
 run_seconds = 0, 
 start_year = 2011,2011,2011,
 start_month = 01, 01, 01, 
 start_day = 01, 01, 01, 
 start_hour = 12, 12, 12, 
 start_minute = 00, 00, 00,
 start_second = 00, 00, 00, 
 end_year = 2011,2011,2011,
 end_month = 01, 01, 01, 
 end_day = 03, 03, 03, 
 end_hour = 00, 00, 00, 
 end_minute = 00, 00, 00, 
 end_second = 00, 00, 00, 
 interval_seconds = 3600, 
 input_from_file = .true., .true., .true., 
 history_interval = 180, 60, 60, 
 frames_per_outfile = 1000, 1000, 1000, 
 restart = .false., 
 restart_interval = 5000, 
 io_form_history = 2, 
 io_form_restart = 2, 
 io_form_input = 2, 
 io_form_boundary = 2, 
 debug_level = 0,  
 auxinput4_inname = "wrflowinp_d<domain>",
 auxinput4_interval = 60,
 io_form_auxinput4 = 2,
/

&domains
 max_dom = 2, 
 time_step = 120, 
 time_step_fract_num = 0, 
 time_step_fract_den = 1, 
 s_we = 1, 1, 1, 
 e_we = 281, 382, 711, 
 s_sn = 1, 1, 1, 
 e_sn = 217, 253, 296, 
 s_vert = 1, 1, 1, 
 e_vert = 28, 28, 28, 
 eta_levels = 1.000000,0.993000,0.983000,0.970000,0.954000,0.934000,0.909000,0.880000,0.829576,0.779151,0.728727,0.678303,0.591744,0.513694,0.443454,0.380375,0.323853,0.273326,0.228273,0.188210,0.152689,0.121294,0.093643,0.069378,0.048173,0.029725,0.013753,0.000000,
 num_metgrid_levels = 38, 
 dx = 30000, 10000, 2000, 
 dy = 30000, 10000, 2000, 
 grid_id = 1, 2, 3, 
 parent_id = 1, 1, 2, 
 i_parent_start = 1, 85, 202, 
 j_parent_start = 1, 84, 115, 
 parent_grid_ratio = 1, 3, 5, 
 parent_time_step_ratio = 1, 3, 5, 
 feedback = 1, 
 smooth_option = 0,
 hypsometric_opt =1,
 interp_theta = .true.,
 lagrange_order = 1,
 /

&physics
 mp_physics = 8, 8, 8, 
 ra_lw_physics = 1, 1, 1, 
 ra_sw_physics = 1, 1, 1, 
 radt = 30, 10, 2, 
 sf_sfclay_physics = 2, 2, 2, 
 sf_surface_physics = 2, 2, 2, 
 bl_pbl_physics = 2, 2, 2, 
 bldt = 0, 0, 0, 
 cu_physics = 5, 5, 0, 
 cudt = 5, 1, 1, 
 isfflx = 1, 
 icloud = 1, 
 surface_input_source = 1, 
 num_soil_layers = 5, 
 mp_zero_out = 0, 
 maxiens = 1, 
 maxens = 3, 
 maxens2 = 3, 
 maxens3 = 16, 
 ensdim = 144, 
 num_land_cat = 28, 
 sst_update = 1, 
 usemonalb = .false., 
 rdmaxalb = .true., 
 seaice_threshold = 271, 
/

&fdda
/

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

&bdy_control
 spec_bdy_width = 5, 
 spec_zone = 1, 
 relax_zone = 4, 
 specified = .true., .false., .false., 
 nested = .false., .true., .true., 
/

&namelist_quilt
 nio_tasks_per_group = 0, 
 nio_groups = 1, 
/

&grib2
/

Negative Q2 values occur in every sensitivity experiment, but just for January (this makes me think that it could be something related to the snow depth). This issue exists in both WRF v4.0.3 and WRF v4.1.

How is Q2 diagnosed? I checked the 3d QVAPOR value and it also has negative values, but the magnitude is e-5.

Best regards,
Xun
 
Hi Xun,
T2 and Q2 are diagnosed based on similarity theory in atmospheric surface layer (sf_sfclay_physics). There are slight differences between different schemes. I have talked to our experts and we don't have an immediate answer to your question of large negative Q2. We will look into this issue and I will keep you updated if we figure out something. Meanwhile, we do rely on our users to help debug possible problems in the modeling system. Please keep me informed if you have more information or solutions to this issue. Thanks in advance.
 
hello,

I am running multi-physics ensemble using ERA5 and had large negative Q2 values in some simulations. I traced the problem of not properly processing the ERA5 files in ungrib.exe which propagated all the way down to wrfinput files without any error messages. I can provide more details if needed.

So if you are still having large negative Q2 values, I suggest to check the wrfinput files to make sure there is nothing wrong in the initial conditions.

Cheers

Charles Jones
 
Hi Charles,
Thanks for the kind message. Would you please clarify the issue in ungrib and how you fix the problem? Thanks again.
Ming
 
hi Ming,

I do not know if this is the same case of Xu, but this was my error.

I am running several multi-physics cases in cheyenne. As you know, the ERA5 data are available at NCAR. For the upper level fields, there are a lot of individual files, one for each variable. In order to run the link_grib.csh to ungrib the upper level fields, I created symbolic links pointing to the temperature, winds, geop. height and specific humidity files, but I forgot to create symbolic links to the relative humidity files as well. So ungrib ran fine for the upper level fields, but the intermediate files did not have the proper relative humidity values. I also ran the ungrib for the surface fields.

The metgrid program also ran without errors, but using intermediate files without proper humidity. Likewise, real ran without errors, but the initial and boundary conditions were not correct because of the humidity. Then wrf also ran without errors but the initial state and boundary conditions were incorrect. The model ran but gave incorrect and negative Q2.

I just re-ran all my multi-physics cases and Q2 is always positive.

That is why I suggested for Xu to check the metgrid and wrfinput etc. files to rule out the possibility that the negative Q2 came from incorrectly processing the reanalysis.

Please let me know if you have any questions

Cheers,

Charles.
 
Charles,
Many thanks for the detailed description of the problem. I guess I understand what is wrong in this case. You have specific humidity included in the intermediate files, but there is no relative humidity. As a result, in the initial and lateral boundary files, atmospheric water vapor content is zero. This will lead to negative Q2 and, I guess, little precipitation. Please let me know if I am wrong.

I just have one more question: the default Vtable.ECMWF doesn't include specific humidity. Did you modify this Vtable to make it able to extract specific humidity? Also, I suppose you include 2m RH in the intermediate file, is this right?

Thanks again. Have a good evening.

Ming
 
Hi Ming,
I did not modify the Vtable. I think my intermediate files had bogus RH and no specific humidity. I re-did everything. I can't give more details, since the files were overwritten.

if you want to see the ERA5 input links, they are in /glade/work/cjones/WPS/era5.prs/
I only linked to z t u v and r.
I did that because there are so many era5 hourly grib files for any given day and variable. I think ungrib takes a lot longer if it has to scan all files/variables.
If you have another suggestion, I would be glad to hear it.

Cheers,

Charles.
 
Hi Charles,

It is annoying that ERA5 have so many different files. I actually struggled the first time when I used it.

I guess I understand the WRF problem induced by missing RH field in the forcing data. We will caution our users for this issue.

Thanks again !

Ming
 
Hi Charles, hi Ming,

thank you so much for the information and discussion!

Following Charles' suggestion, I checked my intermediate files, and there are already negative values of relative humidity there. Then I traced back to my ERA5 grib file and I found strange value ranges of relative humidity. For example, the value range of relative humidity (from all pressure levels) on 1993-11-10 is -6.79 - 163.36%. So the negative values of humidity already start in the ERA5 files. I got the ERA5 data from the Climate Data Store.

Cheers,
Xun
 
Hi Xun,
Would you please try to get ERA5 data from NCAR CISL website? here is the link:
https://rda.ucar.edu/datasets/ds630.0/

To find the variables in each file, please see https://apps.ecmwf.int/codes/grib/param-db

Note that ec_rec_len = 26214508 must be set in namelist.wps

Please let me know if you have any trouble to process the ERA5 data archived by CISL.
 
Hi Ming,

thanks for your reply. What is the difference between ERA5 data from NCAR CISL and from the Climate Data Store? Under which section of namelist.wps should I add ec_rec_len and what does it mean?

Cheers,
Xun
 
Hi Xun,
I don't know the data in Climate Data Store, but I guess that it should have the same source as that archived in NCAR CISL.
To answer your question of ec_rec_len, some high-resolution EC data stored in a non-standard grib file. The record-length is larger than can be stored by the 3-byte header record, so EC created a hack to the header which breaks ungrib. To make ungrib works, we use wgrib to determine the record-length and feed that to ungrib. This is done via the new ec_rec_len namelist variable (default of zero).
You don't have to turn on this option if you have a data from different resources because the data structure might be different.
Ming
 
Hi Ming,

thanks for your reply and explanation!

We also have some old simulations over Central Europe driven by ERA-interim data using WRF V3.7.1 and WRF V3.4.1. We also found negative values of Q2 in simulations produced by WRF V3.7.1 but not in WRF V3.4.1.

Then, we conducted two sensitivity runs over the High Mountain Asia region: one with WRF V3.4.1, and another with WRF V4.1. We tried to set all the namelist options the same in both simulations, but I am not sure if there are any changes in the default values of options that are not included in both namelists. Both simulations were forced by the same ERA5 data. Simulation using WRF V3.4.1 did not produce any negative Q2.

Negative values of Q2 always occur (1) over high elevated areas (the Alps in the Central Europ simulations; Pamir-Karakorum, Himalayas in the High Moutain Asia simulations), and (2) in cold seasons, and (3) during nighttime.

We want to ask if you are aware of any updates since WRF V3.4.1 that might affect the diagnosis of Q2. So far, we only found that in WRF V3.5.1, there was an update of Noah LSM in V3.5.1: "Noah: fix for a sudden jump in 2m Qv due to abrupt change in exchange coefficient". And we have put the commented-out code in this update (https://github.com/wrf-model/WRF/commit/a26b4c5f3b0bbfd3895ba7440ff8b40270a77efb) back and recompiled WRF V4.1. But the model still produced negative Q2.

Best regards,
Xun
 
Hi Xun,
I don't think there is any update of Q2 diagnosis except the one that fixes the violent fluctuation of Q2 (WRFv3.5.1).
It remains mysterious why Q2 could be negative in some specific cases. We don't have a solution to this issue yet.

Would you please send me your namelist.wps and namelist.input for the case that output negative Q2, driven by ERA-I data?
By the way, did you use ERA-I pressure level or model level data?

Thanks.
 
Hi Ming,

Here are the namelists. We used ERA-Interim pressure level data.

namelist.wps
Code:
&share
 wrf_core = 'ARW',
 max_dom = 2,
start_date = '2019-01-01_12:00:00', '2019-01-01_12:00:00', '2004-01-01_12:00:00',
end_date = '2019-01-03_00:00:00', '2019-01-03_00:00:00', '2004-01-03_00:00:00',
 interval_seconds = 21600,
 io_form_geogrid = 2,
 debug_level = 0,
/

&geogrid
 parent_id         =   1,   1,  2,
 parent_grid_ratio =   1,   3,  5,
 i_parent_start    =   1,  85,  202,
 j_parent_start    =   1,  84,  115,
 e_we              =  281, 382, 711,
 e_sn              =  217, 253, 296,
 geog_data_res = 'usgs_lakes','usgs_lakes', 'usgs_lakes',
 dx = 30000,
 dy = 30000,
 map_proj = 'lambert',
 ref_lat   =  32,
 ref_lon   =  83,
 truelat1  =  32,
 truelat2  =  38,
 stand_lon =  83,
 geog_data_path = '/sim/wrf_old/static/WRFV3',
 !opt_geogrid_tbl_path = 'geogrid/'

/

&ungrib
 out_format = 'WPS',
prefix = 'CONST',
/

&metgrid
 fg_name = 'ERAI_pl','ERAI_sfc',
 constants_name = './TAVGSFC', 'CONST:1989-01-01_12'
 io_form_metgrid = 2,
/

namelist.input
Code:
&time_control
 run_days = 1,
 run_hours = 12,
 run_minutes = 0,
 run_seconds = 0,
start_year = 2019,2019,2004,
start_month = 01, 01, 01,
start_day = 01, 01, 01,
 start_hour = 12, 12, 12,
 start_minute = 00, 00, 00,
 start_second = 00, 00, 00,
end_year = 2019,2019,2004,
end_month = 01, 01, 01,
end_day = 03, 03, 03,
 end_hour = 00, 00, 00,
 end_minute = 00, 00, 00,
 end_second = 00, 00, 00,
 interval_seconds = 21600,
 input_from_file = .true., .true., .true.,
 history_interval = 180, 60, 60,
 frames_per_outfile = 1000, 1000, 1000,
 restart = .false.,
 restart_interval = 5000,
 io_form_history = 2,
 io_form_restart = 2,
 io_form_input = 2,
 io_form_boundary = 2,
 debug_level = 300,
 auxinput4_inname = "wrflowinp_d<domain>",
 auxinput4_interval = 360,
 io_form_auxinput4 = 2,
 output_diagnostics = 1
 auxhist3_outname = "wrfxtrm_d<domain>_<date>",
 auxhist3_interval = 180, 60, 60,
 frames_per_auxhist3 = 1000, 1000, 1000,
 io_form_auxhist3 = 2
 ! iofields_filename = "add_out_d01.txt", "add_out_d02.txt", "add_out_d03.txt",
 ignore_iofields_warning = .false.,
/

&domains
 max_dom = 2,
 time_step = 120,
 time_step_fract_num = 0,
 time_step_fract_den = 1,
 s_we = 1, 1, 1,
 e_we = 281, 382, 711,
 s_sn = 1, 1, 1,
 e_sn = 217, 253, 296,
 s_vert = 1, 1, 1,
 e_vert = 28, 28, 28,
 eta_levels = 1.000000,0.993000,0.983000,0.970000,0.954000,0.934000,0.909000,0.880000,0.829576,0.779151,0.728727,0.678303,0.591744,0.513694,0.443454,0.380375,0.323853,0.273326,0.228273,0.188210,0.152689,0.121294,0.093643,0.069378,0.048173,0.029725,0.013753,0.000000,
 num_metgrid_levels = 38,
 dx = 30000, 10000, 2000,
 dy = 30000, 10000, 2000,
 grid_id = 1, 2, 3,
 parent_id = 1, 1, 2,
 i_parent_start = 1, 85, 202,
 j_parent_start = 1, 84, 115,
 parent_grid_ratio = 1, 3, 5,
 parent_time_step_ratio = 1, 3, 5,
 feedback = 1,
 smooth_option = 0,
 hypsometric_opt =1,
 interp_theta = .true.,
 lagrange_order = 1,
 /

&physics
 mp_physics = 10, 10, 10,
 ra_lw_physics = 1, 1, 1,
 ra_sw_physics = 1, 1, 1,
 radt = 30, 10, 2,
 sf_sfclay_physics = 1, 1, 1,
 sf_surface_physics = 2, 2, 2,
 bl_pbl_physics = 1, 1, 1,
 bldt = 0, 0, 0,
 cu_physics = 1, 1, 0,
 cudt = 5, 1, 1,
 isfflx = 1,
 icloud = 1,
 surface_input_source = 1,
 num_soil_layers = 4,
 mp_zero_out = 2,
 num_land_cat = 28,
 sst_update = 1,
 usemonalb = .false.,
 rdmaxalb = .true.,
 seaice_threshold = 271,
/

&fdda
/

&dynamics
 ! hybrid_opt= 0,
 rk_ord = 3,
 w_damping = 0,
 diff_opt = 1,
 km_opt = 1,
 diff_6th_opt = 0, 0, 0,
 diff_6th_factor = 0.12, 0.12, 0.12,
 base_temp = 290.,
 damp_opt = 3,
 zdamp = 5000., 5000., 5000.,
 dampcoef = 0.2, 0.2, 0.2,
 khdif = 0, 0, 0,
 kvdif = 0, 0, 0,
 non_hydrostatic = .true., .true., .true.,
 moist_adv_opt = 1, 1, 1,
 scalar_adv_opt = 1, 1, 1,
 !use_theta_m = 0,
 epssm = 0.1, 0.1, 0.5,
/

&bdy_control
 spec_bdy_width = 5,
 spec_zone = 1,
 relax_zone = 4,
 specified = .true., .false., .false.,
 nested = .false., .true., .true.,
/

&namelist_quilt
 nio_tasks_per_group = 0,
 nio_groups = 1,
/

&grib2
/

&diags
/

&fire
/
 
Top