NCAR / DART

Data Assimilation Research Testbed
https://dart.ucar.edu/
Apache License 2.0
197 stars 145 forks source link

Inflation not turned off while using obs_impact tool #777

Open braczka opened 2 days ago

braczka commented 2 days ago

Describe the bug

  1. List the steps someone needs to take to reproduce the bug.

CLM-DART is used to assimilate observations of leaf area (monthly frequency), SIF (monthly frequency) and SWE (daily frequency). We use the obs impact tool to isolate the impact of the leaf area (LAI) observations onto leaf carbon only, the impact of SIF observation onto leaf nitrogen only, and the impact of SWE observations on snow only. During the daily assimilation time step where there is only SWE observations the ensemble spread of the leaf carbon and nitrogen gets exceedingly large because inflation is still applied to these variables. The inflation damping value is set to 0.9 so the inflation >1 is applied for all days of the month. There are no observations to counteract this increased spread for leaf carbon and leaf nitrogen. This spurious spread causes poor forecast performance.

This bug was already mentioned in a separate and concurrent UPDATE and NO_COPY_BACK inflation issue #775

  1. What was the expected outcome?

Because we use the obs impact tool such that leaf carbon and leaf nitrogen are not influenced by SWE observations (and daily obs only include SWE observations) the expectation was that no inflation would be applied during these times to leaf carbon and leaf nitrogen (inflation =1). In other words, when variable localization is applied such that observation A does not influence state variable B, if observation A is the only observation available during a particular timestep, inflation should not be applied (inflation =1) for that state variable B.

  1. What actually happened?
    What actually happens is that inflation is applied for all timesteps for all variables in the DART state regardless of the obs impact tool specifications. This causes huge ensemble spread for leaf nitrogen, and also for leaf area (shown below), because no observation constraint is available to counteract the effect. This produces spurious behavior including: 1) high leaf nitrogen generates high photosynthesis, and 2) large spread in leaf area also promotes the dieoff (LAI =0) of certain ensemble members which destroys the background error covariance.

Screenshots

In below figures the 'LAI SIF DA' simulation gives the expected ensemble spread, whereas 'LAI SIF SWE DA' simulations give the spuriously large ensemble spread. Inflation damping value set to 0.9.

Screen Shot 2024-11-22 at 3 03 27 PM

Screen Shot 2024-11-22 at 3 06 04 PM

Which model(s) are you working with?

CLM5

Version of DART

v11.8.5-14

Have you modified the DART code?

Quick fixes: Manually adjust the input.nml such that for assimilation time steps which only have SWE observations, the leaf carbon and leaf nitrogen state variables are set as 'NO_COPY_BACK' (or these variables are removed from the DART state) so that inflation is not applied. This requires custom/dynamic changes to the CLM shell scripting which must be aware of the time/date.

Bad fix: Perhaps we could adjust the inflation settings such that the damping value is much lower (0.1) thus dramatically decreasing the inflation, however, we would prefer the damping values for the leaf carbon and leaf nitrogen to be different than for SWE. Currently there is no way to apply state variable specific inflation settings so this solution is not ideal.

Permanent fixes: The DART code should recognize the obs_impact tool by automatically setting inflation =1 if there is no relevant observation at that time step on a per variable basis. I think this is the same behavior for spatial localization, where inflation is dampened/removed to reflect the localization distance. At the very least, the documentation has to improve on this -- there is no mention of how inflation interacts with the obs_impact_tool. It's very easy to miss this behavior, unless the user is looking at the ensemble member specific behavior.

braczka commented 2 days ago

Shout out to @XueliHuo for identifying this issue.