Seeking Help with WRF-Hydro Soil Moisture Assimilation Workflow

69 views
Skip to first unread message

zed li

unread,
Mar 19, 2025, 9:55:54 PM3/19/25
to wrf-hydro_users

HI,everyone,

I am currently facing a challenge in my WRF-Hydro research and would greatly appreciate your insights.

Recently, I have been studying soil moisture data assimilation to improve flood simulation accuracy in WRF-Hydro. After reading several papers on this topic, I attempted to replicate their methods. However, I observed that the difference in streamflow simulations before and after assimilation is minimal—typically only around 10 m³/s.

Here is my detailed workflow:

  1. Update soil moisture variables (SMCSH2Osmc1sh2xo1) in two RESTART files, focusing solely on surface soil moisture (as suggested in the literature).

  2. In hydro.namelist, set rst_typ = 1 ("Overwrite LSM soil states from the high-res routing restart file").

  3. Run the simulation, stop at fixed time intervals to output RESTART files, assimilate updates into these files, adjust the time settings in the namelist, then restart the simulation. This cycle repeats until the flood event concludes.

Despite these efforts, the assimilation appears ineffective. To debug, I conducted tests: Manually increased all soil moisture variables by 0.1 in the RESTART files and ran a flood simulation without further updates. Result: Slight peak flow increase (~10 m³/s), but negligible changes elsewhere. Increased soil moisture variables by 0.3. Result: Significant initial rise in simulated discharge, later converging with the baseline.

However, real-world assimilation differences between observed and simulated soil moisture rarely exceed 0.1, which makes the results puzzling. Key questions:

  1. Is my update method flawed?

    • Could the RESTART file update cycle (stop-modify-restart) introduce unintended resets?

    • Are the targeted variables (SMCSH2O, etc.) truly affect in runoff generation?

  2. Is WRF-Hydro insensitive to realistic soil moisture changes?

    • Do soil hydraulic parameters (e.g., saturation conductivity) or routing schemes (e.g., bucket vs. kinematic wave) limit sensitivity?

  3. Are there overlooked thresholds (e.g., soil moisture saturation levels) that govern hydrological responses?

 Any suggestions, references, or shared experiences would be invaluable. Thank you for your time and expertise!

Best regards,

zed li屏幕截图 2025-03-20 095103.png屏幕截图 2025-03-20 095508.png


Arezoo RafieeiNasab

unread,
Apr 1, 2025, 1:34:42 PM4/1/25
to wrf-hyd...@ucar.edu
Hi Zed 

I have added my thoughts and comments in your text below in color blue. I probably asked more question than answering your questions, your work is interesting and I would like to know more about it. 

Thanks!
Arezoo

On Wed, Mar 19, 2025 at 6:55 PM zed li <ddlw...@gmail.com> wrote:

HI,everyone,

I am currently facing a challenge in my WRF-Hydro research and would greatly appreciate your insights.

Recently, I have been studying soil moisture data assimilation to improve flood simulation accuracy in WRF-Hydro. After reading several papers on this topic, I attempted to replicate their methods. However, I observed that the difference in streamflow simulations before and after assimilation is minimal—typically only around 10 m³/s.

Here is my detailed workflow:

  1. Update soil moisture variables (SMCSH2Osmc1sh2xo1) in two RESTART files, focusing solely on surface soil moisture (as suggested in the literature).

I am just curious myself why only the top surface, and admit that I have not done a literature review on the topic. The top soil in WRF-Hydro is just the top 10 cm of soil. What observation are you using to assimilate? Are you assimilating streamflow, updating soil moisture or actually assimilating soil moisture?  

As for the variables, I think you want to pick one of the restart files and only do one or another. If you have the rst_type = 1 as you state below, that means the model ignores the soil moisture in the RESTART files from LSM, and therefore you do not need to update the LSM RETART files, and only update the HYDRO side. Unfortunately, I have to look at the code to be able to answer your question about whether to update both smc1 and sh2ox1 or just sh2ox1. I have old notes that we just need to update the sh2ox1 and not both of them, but if I want to confirm it I would need to check the code which will take time for me to do. 
  1. In hydro.namelist, set rst_typ = 1 ("Overwrite LSM soil states from the high-res routing restart file").


As I mentioned, setting this to 1 means bypassing the RESTART files, and reading the soil moisture state from HYDRO_RST files.  
  1. Run the simulation, stop at fixed time intervals to output RESTART files, assimilate updates into these files, adjust the time settings in the namelist, then restart the simulation. This cycle repeats until the flood event concludes.

Despite these efforts, the assimilation appears ineffective. To debug, I conducted tests: Manually increased all soil moisture variables by 0.1 in the RESTART files and ran a flood simulation without further updates. Result: Slight peak flow increase (~10 m³/s), but negligible changes elsewhere. Increased soil moisture variables by 0.3. Result: Significant initial rise in simulated discharge, later converging with the baseline.

However, real-world assimilation differences between observed and simulated soil moisture rarely exceed 0.1, which makes the results puzzling. Key questions:

  1. Is my update method flawed?

    • Could the RESTART file update cycle (stop-modify-restart) introduce unintended resets?

I am not aware of it, if it does. 
    • Are the targeted variables (SMCSH2O, etc.) truly affect in runoff generation?

I think you have it right, I would try once also with only updating the  sh2xo1. 
  1. Is WRF-Hydro insensitive to realistic soil moisture changes?

    • Do soil hydraulic parameters (e.g., saturation conductivity) or routing schemes (e.g., bucket vs. kinematic wave) limit sensitivity?

soil moisture has an impact on the runoff generation. If you check out the example case, you would see that you could miss a runoff response to large events like hurricane Irene if you do not have the initial soil moisture set properly.  
  1. Are there overlooked thresholds (e.g., soil moisture saturation levels) that govern hydrological responses 

 Any suggestions, references, or shared experiences would be invaluable. Thank you for your time and expertise!

The plot below shows the model simulations are pretty close to the observed event. I do not know what DA technique you are using but is it possible that the response is so close that DA is not doing anything?  How does the observation uncertainty versus model uncertainty is being defined? Could you test this assimilation for an event that the model is not reproducing the observation well and see whether DA has an impact for such an event? 

Best regards,

zed li屏幕截图 2025-03-20 095103.png屏幕截图 2025-03-20 095508.png


--
You received this message because you are subscribed to the Google Groups "wrf-hydro_users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to wrf-hydro_use...@ucar.edu.
To view this discussion visit https://groups.google.com/a/ucar.edu/d/msgid/wrf-hydro_users/7baa595b-d15e-4ef6-98d2-230d28682705n%40ucar.edu.


--
Arezoo Rafieei Nasab, Ph.D.
NCAR/RAL Project Scientist II
office: 303-497-2888

aubrey

unread,
Apr 22, 2025, 7:10:35 PM4/22/25
to wrf-hydro_users, Arezoo RafieeiNasab
Hi Zed:
Just a couple of follow-ups to Arezoo 's nice detailed response.

1) When you manually ran with modified soil moisture states, you did see a response in the streamflow, but when you used a DA workflow you did not? Is the difference between these experiments the values you are assimilating (uniform global shifts vs. "observed"), or the frequency of the restart update process, or is something else different in the DA workflow?

2) Are you running with all lateral routing components activated (meaning overland and subsurface routing)?

3) Are you seeing differences in the soil moisture states after your DA experiences, but not streamflow? Or neither?

Checking the code, these are the restart variables that are read in when rst_typ = 1. These are on the coarse (LSM) grid but are in the HYDRO_RST file.
stc (temperature), smc (total soil moisture content), sh2ox (liquid soil moisture content), infxsrt (infiltration excess), sfcheadrt (total surface head), soldrain (subsurface drainage)

Then, if you have the lateral routing modules activated, the model will also read in these variables on the high-res routing grid (also in the HYDRO_RST file):
infxswgt (weights for the infiltration excess), sfcheadsubrt (high-res surface head), sh2owgt (weights for soil moisture)

The weight variables specify how the coarse grid variables get mapped to the high-res grid.

So for soil moisture DA, I think you should be updating both the smc and sh2ox variables (the difference between these values is the frozen component).

Obviously there are also lots of interactions between soil moisture and other parameters & model states. Top layer soil moisture is going to be pretty short-lived - it will either generate surface runoff (if pushing close to saturation and rainfall occurs) or drain into the soil column. This partitioning will depend on your soil parameters and starting wetness levels. Closing off the "slope" parameter will put more emphasis on soil processes, since more water will stay in the column (vs. draining into baseflow). If you are in a fast draining soil, extra water may just drain instead of generating runoff. If your RETDEPRTFAC is high, that may also inhibit runoff generation from small soil moisture changes. And you definitely want to make sure you are starting from spunup "warm" states, otherwise the model will only be responding to poorly specified initial conditions.

I recommend looking at your soil moisture values over the simulation to see how different they are as a gut check that things are behaving as expected. 

Let us know how it goes.

Thanks!
Aubrey


To unsubscribe from this group and stop receiving emails from it, send an email to wrf-hydro_users+unsubscribe@ucar.edu.

zed li

unread,
Apr 23, 2025, 4:18:00 AM4/23/25
to wrf-hydro_users, aubrey, Arezoo RafieeiNasab

Thank you for your response.

  1. Regarding your first point: The differences between these experiments lie solely in the values of the soil moisture. All other parameters and the restart frequency remain identical.

  2. For your second question: I have activated both subsurface and overland routing by setting OVRTSWCRT = 1 and SUBRTSWCRT = 1.

  3. On your third point: Through data assimilation, the soil moisture content in the RESTART file does change. However, since the observed and simulated soil moisture values are already quite similar, the differences pre- and post-assimilation are minimal. I’ve attached a figure showing the average soil moisture content across grid cells over time

Additionally:

  • The parameter RETDEPRTFAC is set to 1. I’m unsure if this is considered a high value, as I have not modified the Fulldom_hires.nc file.

  • The simulation was initialized from a "warm" state, with a 10-20 day spin-up period prior to the simulation period. The flood simulations performed well, with all evaluation metrics meeting acceptable standards.

Looking forward to your reply.

Best regards,

zed

SM.png


To unsubscribe from this group and stop receiving emails from it, send an email to wrf-hydro_use...@ucar.edu.

aubrey

unread,
Apr 23, 2025, 8:51:30 AM4/23/25
to wrf-hydro_users, zed li, aubrey, Arezoo RafieeiNasab
Thanks for the additional detail. So the top-layer soil moisture values are very similar between the model and the "observations", so they would not be expected to change streamflow estimates very much. And if you force the "observations" to me more different, then you do see a response. That all makes sense to me.

Re the spinup, we generally recommend longer spinup times (months to years), but that will vary based on your location (wet vs. dry, quickflow vs. baseflow dominant) and how you are initializing the model (i.e., from reanalysis vs. uniform global values).

Thanks!
Aubrey

To unsubscribe from this group and stop receiving emails from it, send an email to wrf-hydro_users+unsubscribe@ucar.edu.
Reply all
Reply to author
Forward
0 new messages